gpt4 book ai didi

networking - tcpip 3 次握手

转载 作者:可可西里 更新时间:2023-11-01 02:31:41 25 4
gpt4 key购买 nike

为什么在 TCP 3 次握手的第 3 部分没有传输数据?例如

(A 到 B)同步

(B 到 A)ACK+SYN

(A 到 B)ACK.... 为什么不能将数据与此 ACK 一起传输?

最佳答案

我一直认为这是将 session 建立阶段与数据传输阶段分开,以便在 session 两端就序列号和 session 达成一致之前没有真正的数据被传输选项,特别是因为到达的数据包可能来自完全不同的、先前的 session ,而该 session 恰好具有相同的端点。

但是,在进一步调查中,我不能完全确定使用握手数据包传输数据是不允许的。我的Internetworking with TCP/IP1 一书中关于 TCP 连接建立的部分包含以下片段:

Because of the protocol design, it is possible to send data along with the initial sequence numbers in the handshake segments. In such cases, the TCP software must hold the data until the handshake completes. Once a connection has been established, the TCP software can release data being held and deliver it to a waiting application program quickly.

因为用SYN(或ACK)数据构造TCP数据包当然是可能的,所以这很可能被允许。我从未在野外见过这种情况,但是,话又说回来,我也从未在野外见过毛耳矮狐猴,尽管我确信它们存在。

可能是套接字软件在 session 完全建立之前阻止数据外出,但 TCP 似乎认为它有效。看来您可以使用 SYN-ACK 数据包发送数据(连接建立的第 2 阶段),因为您有另一端的序列号和选项。同样,使用阶段 3 ACK 数据包发送数据似乎也是可能的。

TCP 软件在握手完全完成之前一直保留数据的原因可能是由于上述原因 - 只有双方就序列号达成一致后,您才能确定数据不是来自先前的数据 session 。


1 Internetworking with TCP/IP Volume 1 Principles, Protocols and Architecture,第 3 版,Douglas E. Comer,ISBN 0-13-216987-8。

关于networking - tcpip 3 次握手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3437569/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com