当前位置:网站首页>无线网络、HTTP缓存、IPv6

无线网络、HTTP缓存、IPv6

2022-08-10 14:23:00 花开半朵ོ

无线网络

(我们平时手机用的就是无线网络,那怎么上网呢,假设我们用的是中国移动的卡,首先中国移动会有很多基站,每个基站会有一定的距离,不能太近,也不能太远,这些基站围在一起很像蜂窝,所以,利用手机自带流量就叫做使用蜂窝网络上网) 

电脑上网,WiFi用的也是无线网络,WiFi和我们手机一样,像是有个天线,里面有一个无线AP(Access Point,接入点),利用无线AP,去散播无线信号,去跟设备建立无线连接,无线AP是路由器的一部分,路由器又会去衔接外面的网络。 

所以手机怎么通过WiFi能够上网呢,手机的天线是跟这个无线AP来进行沟通交流,路由器又通过网线的形式,连接到我们的运行商那边,运营商有帮我们连接到因特网。

那两个离得比较远的基站之间怎么传数据呢,基站地下都基本上会有一些类似光纤的东西,铺好一些地缆,然后又会到达另外一个基站,通过有线的方式,离得比较近的基站,可以有好多种方式进行通信,比如可以用微波通信,无线通信,也可以用卫星,也可以通过有线,从4G开始,很多基站之间基本上都光纤化了,基本上都使用光纤传输。

HTTP缓存

当服务器再次发请求去访问同一个资源的时候,浏览器就会检查一下,这里有没有这个缓存,发现在本地缓存过,就会在本地直接展示数据给用户看,这样就不会再发请求给服务器再去索要资源了,可以提高响应速度。

  • 实际上, HTTP的缓存机制远远比上图的流程要复杂
  • 通常会缓存的情况是: GET请求 + 静态资源(比如HTML、 CSS、 JS、图片等)
  • Ctrl + F5:可以强制刷新缓存

缓存 - 响应头 

Pragma:作用类似于Cache-Control, HTTP/1.0的产物
Expires:缓存的过期时间(GMT格式时间), HTTP/1.0的产物
Cache-Control:设置缓存策略

  • no-storage:不缓存数据到本地(几秒就发生变化的数据)
  • public:允许用户、代理服务器缓存数据到本地
  • private:只允许用户缓存数据到本地
  • max-age:缓存的有效时间(多长时间不过期),单位秒
  • no-cache:每次需要发请求给服务器询问缓存是否有变化,再来决定如何使用缓存(几分种会发生变化的数据)

这时是没有发请求给服务器的 


在这3600s期间,无论怎么刷新,都是用浏览器本地的缓存,一旦过了这个时间,浏览器就会再次请求服务器要这个资源;服务器会根据请求的请求头信息和目前最新的文件比对,如果没有变化的,就返回一个304( 这一次响应是没有响应体的,只有响应头。),如果变化了,就返回200 OK.

优先级: Pragma > Cache-Control > Expires

Last-Modified:资源的最后一次修改时间
ETag:资源的唯一标识(根据文件内容计算出来的摘要值)
优先级: ETag > Last-Modified

缓存 - 请求头

If-None-Match

  • 如果上一次的响应头中有ETag,就会将ETag的值作为请求头的值
  • 如果服务器发现资源的最新摘要值跟If-None-Match不匹配,就会返回新的资源(200 OK)
  • 否则,就不会返回资源的具体数据(304 Not Modified)

If-Modified-Since

  • 如果上一次的响应头中没有ETag,有Last-Modified,就会将Last-Modified的值作为请求头的值
  • 如果服务器发现资源的最后一次修改时间晚于If-Modified-Since,就会返回新的资源(200 OK)
  • 否则,就不会返回资源的具体数据(304 Not Modified)

缓存 - Last-Modified vs ETag

Last-Modified的缺陷

  • 只能精确到秒级别,如果资源在1秒内被修改了,客户端将无法获取最新的资源数据
  • 如果某些资源被修改了(最后一次修改时间发生了变化),但是内容并没有任何变化(会导致相同数据重复传输,没有使用到缓存)

ETag可以办到

  • 只要资源的内容没有变化,就不会重复传输资源数据
  • 只要资源的内容发生了变化,就会返回最新的资源数据给客户端

缓存的使用流程

IPv6 

IPv6(Internet Protocol version 6),译为:网际协议第6版

  • 用它来取代IPv4主要是为了解决IPv4地址枯竭问题,同时它也在其他方面对于IPv4有许多改进
  • 然而长期以来IPv4在互联网流量中仍占据主要地位, IPv6的使用增长缓慢
  • 在2019年12月,通过IPv6使用Google服务的用户百分率首次超过30%(因为需要设备、操作系统内核升级支持IPv6)

IPv6采用128位的地址,而IPv4使用的是32位

  • 支持2^128(约3.4 ∗ 10^38 )个地址
  • 就以地球人口70亿人计算,每人平均可分得约4.86 ∗ 1028个IPv6地址

IPv6 - 地址格式

IPv6地址为128bit,每16bit一组,共8组
每组以冒号“:”隔开,每组以4位十六进制方式表示

  • 例如2001:0db8:86a3:08d3:1319:8a2e:0370:7344

类似于IPv4的点分十进制,同样也存在点分十六进制的写法

  • 2.0.0.1.0.d.b.8.8.5.a.3.0.8.d.3.1.3.1.9.8.a.2.e.0.3.7.0.7.3.4.4

每组前面连续的0可以省略。下面的IPv6地址是等价的

  • 2001:0db8:02de:0000:0000:0000:0000:0e13
  • 2001:db8:2de:0:0:0:0:e13

可以用双冒号“::” 表示一组0或多组连续的0,但只能出现一次。下面的IPv6地址是等价的

  • 2001:db8:2de:0:0:0:0:e13
  • 2001:db8:2de::e13

2001::25de::cade是非法的,因为双冒号出现了两次,会造成歧义

  • 2001:0000:0000:0000:0000:25de:0000:cade
  • 2001:0000:25de:0000:0000:0000:0000:cade

::1是本地环回地址(0:0:0:0:0:0:0:1)

IPv6 - 首部格式

  • 有40字节的固定首部

Version(占4bit, 0110):版本号
Traffic Class(占8bit):交通类别

  • 指示数据包的类别或优先级,可以帮助路由器根据数据包的优先级处理流量
  • 如果路由器发生拥塞,则优先级最低的数据包将被丢弃

Payload Length(占16bit):有效负载长度

  • 最大值65535字节
  • 包括了扩展头部、上层(传输层)数据的长度

Hop Limit(占8bit):跳数限制

  • 与IPv4数据包中的TTL相同

Source Address(占128bit):源IPv6地址
Destination Address(占128bit):目的IPv6地址
Flow Label(占20bit):流标签

  • 指示数据包属于哪个特定序列(流)
  • 用数据包的源地址、目的地址、流标签标识一个流

IPv6 - 扩展头部

Next Header(占8bit):下一个头部

  • 指示扩展头部(如果存在)的类型、上层数据包的协议类型(例如TCP、 UDP、 ICMPv6)


补充:

即时通信

即时通信(Instant Messaging,简称IM),平时用的QQ、微信,都属于典型的IM应用
国内的IM开发者社区

IM云服务

常用的协议

  • XMPP、 MQTT、自定义协议

即时通信 - XMPP

XMPP(Extensible Messaging and Presence Protocol)可扩展消息与存在协议,前身是Jabber

  • 基于TCP,默认端口5222、 5269

特点

  • 使用XML格式进行传输,体积较大
  • 比较成熟的IM协议,开发者接入方便

即时通信 - MQTT

MQTT(Message Queuing Telemetry Transport),译为:消息队列遥测传输

  • 基于TCP,默认端口1883、 8883(带SSL/TLS)

特点

  • 开销很小,以降低网络流量,信息冗余远小于XMPP
  • 不是专门为IM设计的协议,很多功能需要自己实现
  • 很多人认为MQTT是最适合物联网(IoT, Internet of Things)的网络协议

  • 发布者:客户端
  • 代理:服务器
  • 订阅者:客户端

流媒体 

流媒体(Streaming Media),又叫流式媒体

  • 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术
  • 此技术使得资料数据包得以像流水一样发送,不使用此技术,就必须在使用前下载整个媒体文件

流媒体 - 常见协议 

RTP(Real-Time Transport Protocol),译为:实时传输协议

RTCP(Real-Time Transport Control Protocol),译为:实时传输控制协议

  • 参考: RFC 3550,基于UDP,使用RTP的下一个端口

RTSP(Real-Time Streaming Protocol),译为:实时流协议

  • 参考: RFC 7820,基于TCP、 UDP的554端口

RTMP(Real-Time Messaging Protocol),译为:实时消息传输协议

  • 由Adobe公司出品,默认基于TCP的1935端口

HLS(HTTP Live Streaming)

  • 基于HTTP的流媒体网络传输协议,苹果公司出品,参考: RFC 8216

tcpdump 

tcpdump是Linux平台的抓包分析工具, Windows版本是WinDump
使用手册
https://www.tcpdump.org/manpages/tcpdump.1.html
不错的教程
https://danielmiessler.com/study/tcpdump/

原网站

版权声明
本文为[花开半朵ོ]所创,转载请带上原文链接,感谢
https://blog.csdn.net/m0_54929728/article/details/126234299