数据链路层
在两个网络实体之间提供数据链路连接的创建、维持和释放管理。构成数据链路数据单元,并对帧定界、同步、收发顺序的控制。并且包括传输过程中的网络流量控制、差错检测和差错控制等方面。
只提供导线的一端到另一端(本质是点到点)的数据传输。
该层数据以帧的形式进行传输
网络层
提供路由和寻址的功能,使两终端系统能够互连且决定最佳路径,并具有一定的拥塞控制和流量控制的能力。对网络层而言使用IP地址来唯一标识互联网上的各个寻址,网络层依靠IP地址进行相互通信。在网络层也能为主机之间提供无连接和有链接的服务(主机到主机)。
该层数据以包的形式进行传输
运输层
该层的协议为应用进程提供端到端的通信服务(无连接的UDP和有链接的TCP)
应用层
应用层直接和应用程序接口结合,并提供常见的网络应用服务。
web中的网络
连接模型
-
HTTP1.0
- 在HTTP1.0,单一TCP连接内仅执行一个“客户端发送请求—服务器发送应答”周期之后便会释放TCP连接。即每一个请求必须要等到上一次请求得到响应时才能发出,网络利用率较低,响应周期大。虽然可以添加Connection: keep-alive头部开启长连接模式,但默认是会在得到响应后销毁本次连接,在重新建立一个新的连接。
- 无法在一个完整的周期中,无法进行多路复用,如果插入另外一个请求内容,会使HTTP无法分辨这部分内容是来自哪个请求的。
- 且相同的头部会重复的发送多次,比如cookie。这些头部无法压缩,增加了报文的体积。
-
HTTP1.1
- 在http1.1中引入了保持连线的机制并成为默认机制,一个连接可以重复在多个请求/回应使用。持续连线的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新执行TCP握手程序。
- 队头阻塞:当一个请求非常大时,第二个请求即使很小也要等到大的请求得到响应后才能发出
- 支持以管道方式,可以在同时发送多个请求然后按顺序响应,以便降低线路负载,提高传输速度,但是这种方式对队头阻塞并不起作用,而且还有可能出现一些别的安全问题。
- 在http1.1中缓解队头阻塞的主要方式就是把一个打的请求分成许多个小的请求,并将请求分散到多个tcp连接上,但多个tcp连接的成本是很大的,多个连接会分割服务器的带宽,完成一个请求的时间依旧会拉长。因此浏览器会对tcp连接数量进行限制,一般为6个
- HTTP2.0
- 。。。。。。