一、网络模型
-
应用层
作用:为操作系统或网络应用程序提供访问网络服务的接口,应用层为用户提供应用功能,工作在用户态
代表协议:HTTP、SMTP、FTP等 -
表示层:
作用:确保一个系统的应用层所发送的信息可以被另一个系统的应用层读取,提供格式化的表示和转换数据服务,数据的压缩和解压缩,数据的加密和解密等工作 -
会话层
作用:主要在系统之间发起会话或者接收会话,不参与具体传输,提供包括访问验证和会话管理在内的建立和维护应用之间通信的机制 -
传输层
作用:应用层的数据包会传递给传输层,在传输层根据数据包的大小限制(MSS:TCP最大的报文长度)对数据包进行分块,途中如果有分块丢失了,根据TCP的传输机制,只会重传丢失的分块
代表协议:TCP(由超时重传、序列号与确认序列号、流量控制、拥塞窗口、快速重传等来保证可靠传输)、UDP(尽最大努力交付,常用于视频聊天等可以容忍画面丢失的场景) -
网络层
作用:负责源主机到目的主机数据分组交付,可能穿过多个网络,用于逻辑寻址,路由选择和分组转发
代表协议:IP协议(分为网络号和主机号,网络号用来标识所属的子网,主机号用来标识同一个子网下的不同主机)、APR协议(通过广播的形式把IP地址转成MAC地址) -
数据链路层
作用:负责结点之间的数据传输,加头加尾形成数据帧,为同一链路的主机提供服务,为网络层提供链路级别传输的服务 -
物理层
作用:把数据包转换成电信号,让其可以在物理介质中传输,为数据链路层提供二进制传输的服务
二、TCP三次握手和四次挥手
三次握手
四次挥手
TIME_WAIT:主动断开连接方的状态
为什么主动断开连接的一方需要2MSL的等待时间:①为了让被动断开连接的一方正确的断开;②防止旧数据包被正确接受
三、HTTP
HTTP1.0
- 短连接,可以设置connect = keep-alive把短连接变成长连接;
- 请求需要按照顺序发送,第一个请求发送出去,必须等到其的响应,才可以发送第二个请求
HTTP1.1
- 使用请求 - 应答的通信模式
- 使用长连接
- 使用管道进行网络传输,第一个请求发出去了,不需要等待其响应回来,就可以发送第二个请求,但是会队头阻塞,因为响应需要按照顺序返回
缺点:
-
请求/响应头部,未经压缩就发送,首部信息越大延迟越大,只能压缩body部分
-
重复的首部还是会发送,会浪费资源
-
服务器是按照请求来返回响应,如果服务器响应慢,就会出现对头阻塞
-
没有请求优先级控制
-
请求只能从客户端开始,服务器只能被动响应
HTTP2
- 头部压缩:使用HPACK进行头部压缩,如果同时发出多个请求,他们的头部相似或者一样,那么协议会帮助消除重复的部分,在客户端和服务器同时维护一张头信息表,把字段存储起来,下次发送同样的内容的时候,只需发送索引号
- 二进制格式:以前是纯文本格式,现在使用二进制格式,提高了速度
- 服务器推送:服务器可以主动推送资源,比如:客户端需要访问一个html页面,服务器会把可能会用到的JS、CSS等文件主动发给客户端,提高效率