ICode9

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

8、总结描述TCP三次握手四次挥手

2022-06-20 09:04:08  阅读:211  来源: 互联网

标签:断开连接 ACK 握手 TCP server 四次 client 序列号 客户端


TCP三次握手
TCP数据报文结构:

三次握手主要用到了序列号(seq)&确认号(ack)及两个标志位(ACK&SYN):
seq:序列号和确认号ack是tcp传输可靠性的关键部分,序列号的随机取值范围为0-2^32-1 ack:下一个希望收到的序列号且代表之前序列号传输的数据已经被正确的收到,此字段只有ACK标志位为1的时候才有效
ACK:确认标志位,确认序号标志,为1时表示确认号(ack)有效,建立链接后所有数据的ACK都应为1
SYN:同步/链接标志位---->当SYN=1且ACK=0时,代表这是一个连接请求报文,TCP规定SYN=1时不能携带数据,但要消耗一个序号。

三次握手流程:

第一次握手:
客户端向服务器发送一个请求连接报文,进入SYN_SENT状态。
报文数据如下:
SYN=1:我(Client)想跟你(Server)进行连接
seq=100:我(client)这条数据的序列号是100
当Server解析该条报文为连接请求且可以建立连接时触发第二次握手

第二次握手:
服务器向客户端发送同意连接报文,进入SYN_RECV状态。
报文数据内容:
SYN=1:我(server)可以跟你(client)进行连接啦
ACK=1:你(client)的确认号有效
seq=200:我(server)这条数据的序列号是200
ack=101:我(server)已经收到你(client)序列号为100的数据了,下次你(client)给我(server)发的数据序列号应该是101哦
此时client已经知道client发送的数据server可以正常收到,且server发送的数据client也可以正常收到,但是server 并不知道client能不能正常的收到server的数据,由此则衍生出第三次握手.

第三次握手:
client向server发送自己已经收到server发的数据了,可以连接的了,进入ESTABLISHED状态。
报文数据:
ACK=1:你(server)的确认号是有效的
seq=101:我(client)这条数据序列号是你(server)希望我发的101
ack=201:我(client)已经收到你(server)序列号为200的数据了,下次你给我发的数据序列号应该是201哦
至此server也进入ESTABLISHED状态,现在双端已建立稳定的连接了,之后就可以互相发送数据。

简述TCP四次挥手
四次挥手主要用到了两个标志位(ACK&FIN:
ACK:确认标志位,确认序号标志,为1时表示确认号ack有效,建立连接后所有数据的ACK都就为1。
FIN:终止数据传输标志位,当FIN为1的时候代表此数据为终止断开连接的请求。
四次挥手流程:

TCP连接是全双工(full-duplex)模式。

第一次挥手:发送第一次挥手,进入FIN-WAIT状态
客户端向服务器请求断开连接
seq: client这条数据的序列号是300
FIN:client已经没有数据给你发送了 我要断开连接
当服务器收到客户端终止连接请求的时候需要做出响应即第二次挥手

第二次挥手:
Server表示已经收到了Client断开连接的请求,发送第二次挥手确认包,进入CLOSE-WAIT状态;然后Client收到Server的确认ACK包后,进入FIN-WAIT2状态。
ack: server已经收到client序列号为300的数据了
ACK:服务器表示client断开连接的请求server这边已经正确收到了
至此客户端到服务器的连接关闭,但服务器还存在部分数据没有发送给客户端的情况 当服务器发送完成数据会向客户端发送断开连接的请求即第三次挥手

第三次挥手:服务器收到客户端断开连接且已经没有数据需要发送给客户端的时候向客户端请求断开连接。Server主动发送第三次挥手,进入LAST-ACK最后确认状态
seq: Server这条数据的序列号400
FIN: Server已经没有数据给Client发送了,要断开连接
当客户端收到服务器终止连接请求的时候需要做出响应即第四次挥手

第四次挥手:Client表示已经收到了Server断开连接的请求,向Server发送第四次确认包,进入TIME-WAIT状态
ack: Client已经收到Server序列号为400的数据了
ACK: 客户端表示Server断开连接的请求Client这边已经正确收到了

至此服务器到客户端的连接关闭CLOSED,客户端到服务器的连接也关闭CLOSED了。 四次挥手保证了双端正确的断开连接。

标签:断开连接,ACK,握手,TCP,server,四次,client,序列号,客户端
来源: https://www.cnblogs.com/biaoming534/p/16392077.html

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

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

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

ICode9版权所有