“深入浅出”系列之数通篇:(5)TCP的三次握手和四次挥手 ...

打印 上一主题 下一主题

主题 886|帖子 886|积分 2658

TCP(传输控制协议)的三次握手和四次挥手是TCP连接建立和释放的过程。
一、TCP三次握手
TCP三次握手是为了建立可靠的连接,确保客户端和服务器之间的通讯能力。详细过程如下:
第一次握手:客户端向服务器发送一个带有SYN(Synchronize Sequence Numbers,同步序列编号)标记的数据包,表示必要建立TCP连接。此时,客户端进入SYN_SENT状态,等待服务器的确认。
第二次握手:服务器收到客户端的SYN数据包后,会复兴一个带有SYN/ACK标记的数据包,表示同意建立连接并确认收到了客户端的请求。此时,服务器进入SYN_RECEIVED状态。SYN/ACK数据包中的ACK字段数值是在客户端发送过来的序列号的底子上加1进行复兴的,以便客户端收到信息时,知晓自己的TCP建立请求已得到验证。
第三次握手:客户端收到服务器的SYN/ACK数据包后,会再次复兴一个带有ACK标记的数据包,表示确认收到了服务器的复兴,并准备好进行数据传输。此时,客户端和服务器都进入ESTABLISHED状态,表示TCP连接已经成功建立。
在三次握手过程中,服务器会维护一个未连接队列,为每个客户端的SYN数据包开设一个条目,并等待客户端的确认。假如服务器在发送SYN/ACK数据包后未收到客户端的确认,会进行重传,直到到达最大重传次数为止。
二、TCP四次挥手
TCP四次挥手是为了释放已经建立的连接。由于TCP是全双工通讯,因此每个方向都必须单独进行关闭。详细过程如下:
第一次挥手:客户端想要释放连接时,会向服务器发送一个带有FIN(Finish,竣事)标记的数据包,表示必要关闭客户端到服务器的数据传送。此时,客户端进入FIN_WAIT_1状态。
第二次挥手:服务器收到客户端的FIN数据包后,会复兴一个带有ACK标记的数据包,表示确认收到了客户端的释放连接请求。此时,服务器进入CLOSE_WAIT状态,并准备关闭服务器到客户端的数据传送。客户端收到服务器的ACK数据包后,进入FIN_WAIT_2状态。
第三次挥手:服务器在确认全部传输到客户端的数据已经发送完毕后,会向客户端发送一个带有FIN标记的数据包,表示准备关闭服务器到客户端的数据传送。此时,服务器进入LAST_ACK状态。
第四次挥手:客户端收到服务器的FIN数据包后,会复兴一个带有ACK标记的数据包,表示确认收到了服务器的释放连接请求。此时,客户端进入TIME_WAIT状态,并等待足够的时间(通常为2MSL,即Maximum Segment Lifetime的两倍)以确保服务器接收到确认报文。在TIME_WAIT期间,客户端不会立刻释放连接资源,以防止由于网络延迟等原因导致的重复报文。假如在这段时间内没有收到服务器的任何报文,客户端会进入CLOSED状态,表示连接已经完全释放。服务器在收到客户端的ACK数据包后,也会进入CLOSED状态。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

干翻全岛蛙蛙

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表