【发布时间】:2021-06-27 20:05:08
【问题描述】:
我试图了解 TCP 的工作原理(当然没有详细说明)。我在网上浏览易于理解的流程图时出现了一个问题,但找不到直接的答案。
假设我们有一个很好的流程,其中所有内容都是同步的(忽略带有 FIN 和交叉数据包的结尾部分):
我想知道如果 A 和 B 都想同时发送数据包会发生什么(据我所知,TCP 是一个双向协议,因此每个实体都可以随时发送)。基本上序列号的行为方式。有交叉数据包。
我还读到 TCP 是一种 SWP(滑动窗口协议),我想知道在这种情况下 ACK 是如何形成的。 TCP 响应的字节数基本上是 Seq 数,我真的无法想象在窗口内会发生这种情况(您可以按任何顺序接收)。是否使用两组 seq 编号和两个窗口作为接收方和发送方的实现?
我们非常欢迎任何规范参考或其他有用的资源。
【问题讨论】:
-
我不认为这个问题是主题。您要求的规范是标准 - RFC 793。但基本上 TCP 是一个字节流,发送方 ACK 指定发送方字节流中的当前位置(有一些初始偏移量 - 握手中的初始序列号),并且 ACK 指出对等方字节流接收到的最后位置。窗口与此无关。
-
每个方向都有一个单独的序号。
标签: tcp protocols network-protocols