TCP(传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层协议,其核心机制通过三次握手建立连接、四次挥手终止连接,确保数据在不可靠的网络中可靠传输。以下是详细解析:
| 步骤 | 客户端动作 | 服务端动作 | 状态变化 | 关键字段说明 |
|---|---|---|---|---|
| 第一次握手 | 发送 SYN=1, seq=x |
等待连接请求 | 客户端:SYN_SENT服务端: LISTEN |
SYN:同步标志位,表示发起连接请求seq:随机初始序列号 |
| 第二次握手 | 等待确认 | 发送 SYN=1, ACK=1, seq=y, ack=x+1 |
客户端:SYN_SENT服务端: SYN_RCVD |
ACK:确认标志位ack:期望收到的下一个序列号(x+1) |
| 第三次握手 | 发送 ACK=1, seq=x+1, ack=y+1 |
连接建立 | 客户端:ESTABLISHED服务端: ESTABLISHED |
确认服务端的初始序列号,连接正式建立 |
SYN 延迟到达,服务端会误建连接,但客户端已忽略响应,导致服务端资源浪费。| 步骤 | 主动方(客户端)动作 | 被动方(服务端)动作 | 状态变化 | 关键字段说明 |
|---|---|---|---|---|
| 第一次挥手 | 发送 FIN=1, seq=u |
等待关闭请求 | 客户端:FIN_WAIT_1服务端: ESTABLISHED |
FIN:终止标志位,表示无更多数据发送 |
| 第二次挥手 | 等待确认 | 发送 ACK=1, ack=u+1 |
客户端:FIN_WAIT_2服务端: CLOSE_WAIT |
确认客户端的 FIN,服务端可能仍有数据要发送 |
| 第三次挥手 | 等待关闭 | 发送 FIN=1, seq=v |
客户端:TIME_WAIT服务端: LAST_ACK |
服务端完成数据发送,主动关闭连接 |
| 第四次挥手 | 发送 ACK=1, ack=v+1 |
连接关闭 | 客户端:CLOSED服务端: CLOSED |
确认服务端的 FIN,连接完全终止 |
FIN 和 ACK。
CLOSE_WAIT 状态,继续发送剩余数据。seq +100)。ack = 接收到的序列号 + 数据长度(若为 SYN/FIN 报文,则 +1)。SYN:同步序列号,建立连接。ACK:确认报文,表示数据已收到。FIN:终止连接,表示无更多数据发送。RST:重置连接,用于强制终止异常连接。通过理解这些机制,可以更好地排查网络问题(如连接超时、数据丢包)并优化网络编程实践。
声明:
1.本站主要是为了记录工作学习中遇到的问题,可能由于本人技术有限,内容难免有纰漏,一切内容仅供参考。
2.本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!
3.本站所有原创作品,包括文字、资料、图片、网页格式,转载时请标注作者与来源。
------------------------------------------------------------------------------------------------
出处:网际迅联
网址1:https://www.wjxlkj.com
联系方式:
手机号码:13910758317
微信:13910758317
客服QQ:58053012
或下图二维码微信扫码或长按识别添加微信