759 字
4 分钟
TCP 握手、挥手和丢包重传分别解决什么问题
  1. 1计算机网络学习路线与文章导读
  2. 2网络分层模型与数据封装是怎么回事
  3. 3TCP/IP 四层模型与 OSI 七层模型
  4. 4IP 地址与 CIDR 子网怎么理解
  5. 5ARP 是什么?主机如何找到目标 MAC 地址
  6. 6IP 路由与默认网关是如何工作的
  7. 7TCP 和 UDP 有什么区别?如何选择
  8. 8TCP 握手、挥手和丢包重传分别解决什么问题本文
  9. 9TCP 三次握手与四次挥手
  10. 10TCP 流量控制和拥塞控制有什么区别
  11. 11TCP 为什么可靠:流量控制、拥塞控制与局限性
  12. 12TCP 丢包、粘包和拆包是什么
  13. 13HTTP/1.0、HTTP/1.1、HTTP/2 与 HTTP/3 有什么区别
  14. 14HTTP 请求包含哪些内容
  15. 15HTTP 中 GET 和 POST 有什么区别
  16. 16HTTP 方法的安全性与幂等性怎么区分
  17. 17HTTP 状态码与网络故障如何区分排查
  18. 18常见 HTTP 状态码与网站故障排查
  19. 19HTTP 和 HTTPS 有什么区别
  20. 20谈谈对 DNS 和 CDN 的理解
  21. 21从输入网址到网页显示发生了什么
  22. 22TCP 的 TIME_WAIT 状态有什么作用
  23. 23TCP 的 CLOSE_WAIT 状态是什么,过多如何排查
  24. 24TLS 1.3 握手过程是什么
  25. 25HTTPS 如何校验证书
  26. 26HTTP 强缓存和协商缓存怎么工作
  27. 27HTTP Keep-Alive 是什么,连接如何复用
  28. 28WebSocket 和 HTTP 有什么区别
  29. 29服务端如何解析 HTTP 请求的数据
  30. 30NAT 是什么?端口映射如何实现
  31. 31ICMP、ping 和 traceroute 分别做什么
  32. 32网络故障如何分层排查
  33. 33Cookie、Session、Token 与 JWT 有什么区别
  34. 34常见的登录鉴权方式有哪些
  35. 35什么是 SYN Flood 攻击

TCP 是面向连接的可靠字节流协议。三次握手用于建立双方传输状态并同步初始序列号:客户端 SYN,服务端 SYN+ACK,客户端 ACK。双方在连接状态中跟踪发送与接收序列空间,便于后续确认、重传和有序交付。握手不是验证应用账号,也不保证应用服务健康;连接成功只说明传输层建连完成。

TCP 是全双工的,双方发送方向可以独立关闭。典型四次挥手是主动关闭方发送 FIN,对端 ACK;对端处理完剩余数据后发送 FIN,主动关闭方再 ACK。若对端也已准备关闭,ACK 与 FIN 可能合并在一个报文中,所以抓包不一定总看到四个独立报文。FIN 表示发送方不再发送数据,不代表另一方向立即不能继续发送。

可靠传输依靠序列号、确认、校验和及重传等机制。接收方按序列号确认已收到的字节;发送方若在超时前没有收到确认,会根据重传计时器重发未确认数据。出现重复 ACK 等信号时,某些算法会更早重传。网络丢包和乱序可能引起重传及吞吐下降,但应用通常仍看到有序字节流;TCP 不保留应用消息边界。

可靠不等于“永远送达”。网络长期不可达、连接被重置、主机崩溃或重试超出策略后,TCP 会报告失败或超时;应用要处理错误和重连。TCP ACK 也只确认传输层接收情况,不代表对端业务已经提交事务。业务层需要自己的请求 ID、确认语义和幂等设计。不同系统的重传次数与超时参数会变化,不宜背固定秒数。

常见追问#

为什么建立 TCP 连接需要三次握手?#

双方需要互相确认收发能力并交换初始序列号。第三次 ACK 使服务端确认客户端收到自己的 SYN,减少旧请求等异常状态造成的误建连。

TCP 握手时 SYN 绝对不能带数据吗?#

不能如此绝对概括。普通建连通常不依赖 SYN 数据,但扩展和实现可以支持 SYN 数据,例如 TCP Fast Open;数据接受与交付受具体机制约束。第三次 ACK 也可带数据。

为什么挥手常见四次?#

双方分别关闭自己的发送方向;收到 FIN 的一侧可以先确认,但仍继续发送剩余数据,之后再发 FIN。某些情况下 ACK 和 FIN 可合并。

TCP 重传成功是否说明业务一定成功?#

不是。重传成功说明传输层获得确认,不代表应用完成了业务处理或持久化。客户端超时时也可能出现服务端已执行但响应未到的情况。

TCP 握手、挥手和丢包重传分别解决什么问题
https://blog.xqcherry.top/posts/interview/network/tcp-handshake-close-and-retransmission/
作者
xqcherry
发布于
2026-10-12
许可协议
CC BY-NC-SA 4.0