TCP 是一种可靠且有序的字节流传输协议。它使用 32 位序列号标识每个字节;这些序列号上的算术运算以 2^32 为模。
三次握手 #
建立连接时,客户端发送带有初始序列号 x 的 SYN。服务器回复 SYN+ACK,选择自己的初始序列号 y,并确认 x + 1。客户端发送确认 y + 1 的 ACK。尽管 SYN 不携带应用字节,它仍会占用一个序列号位置。
数据传输与关闭 #
每个 ACK 都报告下一个期望的序列号,因此会累计确认此前的所有字节。TCP 会重传未确认的数据,根据接收方通告的窗口调节发送,并使用拥塞控制避免压垮网络。优雅关闭时,两个方向都使用 FIN 报文段;复位(RST)会中止连接,而不会执行正常的有序关闭。
评论
在 GitHub 上阅读或评论(发表评论需要登录)