当前位置:网站首页>小满网络模型&http1-http2 &浏览器缓存

小满网络模型&http1-http2 &浏览器缓存

2022-07-06 13:43:00 小满zs

应用层

是最靠近应用程序的OSI层。由用户使用相应的接口实现自己的服务。

协议有:HTTP FTP SMTP等

表示层

数据的表示、安全、压缩。可确保一个系统的应用层所发送的信息被另一个系统的应用层读取。格式有: JPEG、ASCII、加密格式等。

在表示层,数据按照网络能理解的方案进行格式化。管理数据的加密与解密。

会话层

建立、管理、终止会话,对应主机进程,指本地主机与远程主机正在进行的会话。负责在网络的两节点之间建立、维持和终止通信。

会话层的功能包括:建立通信链接,保持会话过程通信连接的畅通,同步两个节点之间的对话,决定通信是否被终端以及通信中断时从何处重新发送。

有人会把会话层称为网络通信得到“交通警察"。当通过拨号向你的ISP(因特网服务提供商)请求连接到因特网时,ISP服务器上的会话层向你与你的PC客户机上的会话层进行协商连接。若你的电话线偶然脱落时,会话层将会检测到连接中断并重新发起连接。会话层通过决定节点通信的优先级和通信时间的长短来设置通信期限。

传输层

定义传输数据的协议端口号,以及流控和差错校验。

协议有:TCP UDP等,数据包一旦离开网卡即进入网络传输层。定义了一些传输数据的协议和端口号,如:TCP(传输控制协议,传输效率低,可靠性强,用于传输可靠性要求高,数据量大的数据),UDP(用户数据报协议,用于传输可靠性要求不高,数据量小的数据)。主要是讲从下层接收的数据进行分段和传输,到达目的地后再进行重组。常常把这一层数据叫做段。

OSI模型中最终要的一层。传输协议同时进行浏览控制或是基于接收方可接收数据的快慢程度规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸将较长的数据包进行强制分割。例如,以太网无法接收大于1500字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时对每一数据片安排一个序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组。该过程称作排序。

网络层

进行逻辑地址寻址,实现不同网络之间的路径选择等。协议有:ICMP IGMP IP ARP RARP等。

在位于不同地理位置的网络中的两个主机系统之间提供连接和路径选择。Internet的发展使得从世界各站点访问信息的用户量大大增加,网络层正式管理这种连接的层。

OSI模型的第三层,其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方。

网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中节点A到另一个网络节点B的最佳路径。由于网络层处理,并智能指导数据传送,路由器连接网络各段,所以路由器属于网络层。在网络中,”路由“是基于编址方案、使用模式以及可达性来指导数据的发送。

网络层用于本地LAN网段之上的计算机系统建立通信,它之所以可以这样做,是因为它有自已的路由地址结构,这种结构与第二层机器地址是分开的、独立的。这种协议称为路由或可路由协议。路由协议包括IP、Novell公司的IPX以及AppleTalk协议。

数据链路层

建立逻辑连接、进行硬件地址寻址、差错校验等功能。将比特组合成字节进而组合成帧,用MAC地址访问介质,错误发现但不能纠正。

主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收的数据被分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及检错和控制信息。其中的地址确定了帧将发往何处,而纠错和控制信息则确保帧无差错到达。如果在传送数据时,接收点检测到所传数据中有差错,就要通知发送方重发这一帧。

数据链路层在物理层提供比特流服务的基础上,建立相邻节点之间的数据链路,通过差错控制提供数据帧在信道上无差错的传输,并进行各电路上的动作系列。作用主要是物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

物理层

建立、维护、断开物理连接。

主要定义物理设备标准,如网线的接口类型,光纤的接口类型,各种传输介质的传输速率等。主要作用是传输比特流(就是有1、0转化为电力强弱来进行传输,到达目的地后在转化为1、0)。
 

第二小节http1.1  http2

  1. HTTP/2采用二进制格式而非文本格式
  2. HTTP/2是完全多路复用的,而非有序并阻塞的——只需一个连接即可实现并行
  3. 使用报头压缩,HTTP/2降低了开销
  4. HTTP/2让服务器可以将响应主动“推送”到客户端缓存中

1.二进制分帧层

在二进制分帧层上,HTTP 2.0 会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码 ,其中HTTP1.x的首部信息会被封装到Headers帧,而我们的request body则封装到Data帧里面。

2.多路复用

 从上图可以看出,HTTP的持久连接可以有效减少TCP建立连接和断开连接的次数,这样的好处是减少了服务器额外的负担,并提升整体HTTP的请求时间

3.头部压缩

  • 维护一份相同的静态字典,包含常见的头部名称,以及常见的头部名称和值的组合
  • 维护一份相同的动态字典,可以动态的添加内容
  • 通过静态Huffman编码对传输的首部字段进行编码

演示demoHTTP/2: the Future of the Internet | Akamai

4.客户端缓存

协商缓存

协商缓存就是通过服务器来判断缓存是否可用

Last-Modify搭配If-Modify-Since:浏览器第一次请求一个资源的时候,服务器返回的header中会加上Last-Modify,Last-modify是该资源的最后修改时间;当浏览器再次请求该资源时,request的请求头中会包含If-Modify-Since,该值服务端header中返回的Last-Modify。服务器收到If-Modify-Since后,根据资源的最后修改时间判断是否命中缓存

Etag搭配If-None-Match:web服务器响应请求时,会在header中加一个Etag用来告诉浏览器当前资源在服务器的唯一标识(生成规则由服务器决定)。则再次向web服务器请求时带上头If-None-Match (Etag的值)。web服务器收到请求后将If-None-Match与Etag进行比对,决定是否命中协商缓存;

ETag和Last-Modified的作用和用法,他们的区别:

1.Etag要优于Last-Modified。Last-Modified的时间单位是秒,如果某个文件在1秒内改变了多次,那么他们的Last-Modified其实并没有体现出来修改,但是Etag每次都会改变确保了精度;

2.在性能上,Etag要逊于Last-Modified,毕竟Last-Modified只需要记录时间,而Etag需要服务器通过算法来计算出一个hash值;

3.在优先级上,服务器校验优先考虑Etag。

如果服务器收到的请求没有Etag值,则将If-Modified-Since和被请求文件的最后修改时间做比对,一致则命中协商缓存,返回304;不一致则返回新的last-modified和文件并返回200

强缓存

Expires:值为绝对时间,不过Expires 是HTTP 1.0的东西,现在默认浏览器均默认使用HTTP 1.1

Cache-Control:值为相对时间,如果与Expires同时设置的话,其优先级高于Expires。

cache-control有下面几个比较常用的设置值:

-max-age:设置失效时间,客户端在这个有效期内,如果又请求该资源,就直接读取缓存

-no-cache:不使用本地缓存。需要使用缓存协商,先与服务器确认返回的响应是否被更改,如果之前的响应中存在ETag,那么请求的时候会与服务端验证,如果资源未被更改,则从缓存中取数据

-no-store:直接禁止浏览器缓存数据,每次用户请求该资源,都会向服务器发送一个请求。

-public:可以被所有的用户缓存,包括终端用户和CDN等中间代理服务器。

-private:只能被终端用户的浏览器缓存,不允许CDN等中继缓存服务器对其缓存。

服务器通过设置http中hdader的Expires和cache-control字段告诉浏览器换存的有效期。这种方法会有一个固定时间,所带来的问题是如果服务器数据进行了更新,但是还没有到强缓存的过期时间,则数据无法更新

原网站

版权声明
本文为[小满zs]所创,转载请带上原文链接,感谢
https://xiaoman.blog.csdn.net/article/details/125568128