计算机网络模型:
HTTP协议
超文本传输协议,无状态协议,即服务端像客户端发送被请求的文件,而不存储任何关于该客户的状态信息。web应用利用cookie技术作为补充,弥补了HTTP协议无状态带来的可能缺陷。
工作流程:建立连接-发送请求-响应请求-展示数据-断开连接
TCP协议
传输控制协议,面向连接的、可靠的字节流协议。
特点: 1.有连接。2.一条tcp连接只有两个端口。3.tcp提供双向通信,并且接受端和发送端都设有缓存。4.可靠传输(超时重传),流量控制(端到端,发送端控制数据发送速率),拥塞控制(全局性,根据网络拥塞程度来控制)。
UDP协议
用户数据报协议,面向无连接,不可靠的数据报协议。
特点:1.无连接。2.可实现一对一,一对多、多对多之间的通讯。3.首部开销较小,仅8个字节。4.不可靠传输(尽最大努力交付)。5.没有拥塞控制。
区别:
TCP三次握手与四次挥手
三次握手:客户端向服务端发送一个SYN为1报文,表示要和服务端建立连接;服务端收到后发送一个ACK为1,SYN为1的确认消息包给客户端,表示收到了客户端的消息;客户端收到后,再发送一个ACK为1的消息包给服务端,表示收到了服务端的消息。经过三次握手确保了客户端与服务端都能安全地发送和接收消息成功,互相确认了序列号起始值并已收到序列号起始值,就可以建立起可靠的连接了。
四次挥手:客户端向服务端发送一个FIN为1的报文,表示要和服务端断开连接;服务端收到后,可能服务端所有数据还没发送完,只能发送一个ACK为1的报文给客户端,进入半连接(关闭等待)状态,表示收到了客户端的断开请求;当服务端的数据全部发送完之后,向客户端发送FIN为1的报文,表示和客户端断开连接;客户端收到后,向服务端发送一个ACK为1的确认消息包,此时客户端会进入TIME-WAIT状态,等待2MSL(报文最大生存周期)之后,才会断开连接。
为什么三次握手不是两次?因为两次握手,服务端不能确认客户端是否收到了自己发送的消息,序列号得不到确认,导致已失效的连接请求又传送到服务端而产生错误,而三次握手就可以避免这问题,建立起安全的连接。
客户端为什么在TIME-WAIT状态等待2MSL?因为等待2MSL可以保证客户端最后发送的ACK确认报文能够到达服务端;可以使本连接持续时间内产生的报文都从网络中消失