当前位置:网站首页>无线网络、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/
边栏推荐
猜你喜欢
PyTorch 多机多卡训练:DDP 实战与技巧
Error: Rule can only have one resource source (provided resource and test + include + exclude)
实现一个深克隆
关于已拦截跨源请求CORS 头缺少 ‘Access-Control-Allow-Origin‘问题解决
Classifying irises using decision trees
雨水中存在的PFAS化学物质对饮用水安全构成了威胁
【Gazebo入门教程】第三讲 SDF文件的静/动态编程建模
1W字详解线程本地存储 ThreadLocal
MySQL - storage engine for databases
第三方软件测评有什么作用?权威软件检测机构推荐
随机推荐
统信 UOS V20 专业版(1050update2)发布:文件共享、全局搜索等优化
Cloud Migration Practice of Redis
IT小白怎么系统的php学习
高数_证明_曲率公式
Vivado crashes or the message is not displayed
Summary of tensorflow installation stepping on the pit
王学岗————直播推流(软便)03x264集成与camera推流
EVE模拟器的使用-带图超详细(学网络用)「建议收藏」
AWS 安全基础知识
[Gazebo Introductory Tutorial] Lecture 3 Static/Dynamic Programming Modeling of SDF Files
awk的简单使用
1W word detailed thread local storage ThreadLocal
镜像瘦身:每一层都不能放过
基于ArcGIS水文分析、HEC-RAS模拟技术在洪水危险性及风险评估
Send a post request at the front desk can't get the data
符合信创要求的堡垒机有哪些?支持哪些系统?
Analysys and the Alliance of Small and Medium Banks jointly released the Hainan Digital Economy Index, so stay tuned!
PCL 最小二乘拟合空间曲线
List集合
【MinIO】工具类使用