标签:图片 完成后 能力 准备 避免 数据传输 vpd 原因 text
TCP是面向连接的协议,其数据传输过程分为建立连接、数据传送、释放连接三个阶段。
建立连接的过程也就是常说的“三次握手”:
客户端应答一个ACK报文,将序号设为x+1,并且ack字段设为y+1,表示已经收到服务器端的SYN报文,期待收到序号为y+1的下一个报文。
注:序列号seq也称ISN(Initial Sequence Number)
之所以要采用三次握手机制而不是两次或四次,要从握手机制的目的说起:
握手主要是为了确认双方的发送、接收能力是否正常,顺带初始化序号seq,为以后的数据传送做好准备,所以:
第一次握手:服务器收到客户端发来的网络包,服务器就明白客户端的发送能力、服务器的接收能力正常;
第二次握手:服务器发包,客户端收到后,客户端就明白服务器的发送、接收,客户端的发送、接收都是正常的;
二次握手后,客户端倒是全明白了,但是服务器端无法确认客户端能否正常接收、服务器是否正常发送,所以两次握手不够;
第三次握手:服务器收到客户端发送的网络包,服务器确认了自己上次的发送正常、客户端接收也正常,所以四次握手是多余的。
服务器发出SYN报文后,处于SYN-RCVD状态,此时不同的连接请求会被放在半连接队列里,三次握手完成后的连接请求被放在全连接队列里。
连接释放的过程也就是常说的“四次挥手”:
P.S. 图中以客户端发起释放请求为例
客户端之所以要等待2MSL时间才关闭,有两个原因:
标签:图片 完成后 能力 准备 避免 数据传输 vpd 原因 text
原文地址:https://www.cnblogs.com/EIMadrigal/p/11560205.html