AI智能
改变未来

TCP三次握手四次挥手以及为什么三次握手

TCP三次握手
假设有两个主机A和B要传输数据
第一次握手:主机A向主机B发送含有序列号标志位的数据段SYN,向主机B请求简历连接,数据段包含了两个信息,一是请求建立连接,二是主机B的回复应以哪个序列号作为起始数据段;
第二次握手:主机B收到请求,回复一个带有确认应答ACK和同步序列号标志位SYN数据段,该数据段同样包含两个信息,一是已经收到请求可以开始传输数据,二是规定了起始数据段的序列号;
第三次握手:主机A向主机B发送一个确认应答,告知主机B已收到响应,开始发送正式的数据。
三次握手完成,开始传输数据
为什么不能是两次握手
假如是两次握手,在网络不稳定或其他意外情况下,虽然客户端发送的连接请求已经到达服务端,但是服务端的同意连接应答还未到达客户端,这时,客户端会重复发送连接请求,服务端收到后会认为这是新的连接请求,并开启新的进程提供服务,这就造成了资源的浪费。三次握手机制防止了已失效的连接再次传送,从而避免了这种资源的浪费。
四次挥手
传输数据完毕后,主机AB需要断开连接
第一次挥手:主机A将控制位FIN置1,并向主机B发出停止该方向上的连接的请求;
第二次挥手:主机B收到请求,并确认该方向上的连接关闭,ACK置1;
第三次挥手:主机B向主机A发出反方向连接断开的请求,并将FIN置1;
第四次挥手:主机A收到请求,确认关闭并将ACK置1;
经过四次挥手,两个方向上的连接都已关闭。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » TCP三次握手四次挥手以及为什么三次握手