ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

TCP的三次握手和四次挥手

2021-12-02 00:02:45  阅读:132  来源: 互联网

标签:握手 TCP 四次 序号 FIN 连接 服务端 客户端


TCP报文字段含义

seq:序号,用来标记数据段的顺序,TCP把连接中发送的所有数据字节都编上一个序号,第一个字节的编号由本地随机产生。

ack:确认号,是期望收到对方的下一个报文段的数据的第一个字节的seq序号;只有ACK标志位为1时,确认序号字段才有效,ack=seq+1。


标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
                (A)URG:紧急指针(urgent pointer)有效。
                (B)ACK:确认序号有效。
                (C)PSH:接收方应该尽快将这个报文交给应用层。
                (D)RST:重置连接。
                (E)SYN:发起一个新连接。
                (F)FIN:释放一个连接。

三次握手:建立TCP连接协议时,需要在客户端和服务器之间发送三个包,握手过程中传送的包里不包含数据,三次握手完毕后,客户端与服务器才正式开始传送数据。

 

 

第一次握手
客户端给给服务端说:"我要给你发消息了”---客户端要和服务端进行通信,首先要告知服务端一声,发出一个SYN=1的连接请求信号。
第二次握手
服务端:“我收到了,我已经准备好了,你能连吗现在。”---当服务端接收到客户端的连接请求,此时要给客户端一个确认信息。
第三次握手
客户端:“ok,现在我们开始联通。”---当客户端收到了服务端的确认连接信息后,要告知一下服务端。

四次挥手:由于TCP连接是全双工的,因此每个方向都必须单独进行关闭。这个原则是当一方完成它的数据发送任务后就能发送一个FIN来终止这个方向的连接。收到一个 FIN只意味着这一方向上没有数据流动,一个TCP连接在收到一个FIN后仍能发送数据。首先进行关闭的一方将执行主动关闭,而另一方执行被动关闭。


第一次挥手:客户端进程先向TCP发出链接释放报文段,并停止再发送数据,主动关闭TCP连接。连接释放报文段首部FIN=1。C进入FIN_WAIT_1状态
第二次挥手:服务器收到FIN后 ,发送一个ACK给,确认序号为收到序号+1(与SYN相同,一个FIN占用一个序号),服务器进入CLOSE_WAIT状态 。
第三次挥手:服务器发送一个FIN,用来关闭服务器到客户端的数据传送,服务端进入LAST_ACK状态。
第四次挥手:客户端收到FIN后,客户端进入TIME_WAIT状态,接着发送一个ACK给服务器,确认序号为收到序号+1 , 服务器进入CLOSED状态, 完成四次挥手。


 

 

 

标签:握手,TCP,四次,序号,FIN,连接,服务端,客户端
来源: https://blog.csdn.net/MorningStar_He/article/details/121667278

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有