TCP序列号如何在双向通信/滑动窗口中工作?

TCP序列号如何在双向通信/滑动窗口中工作?,tcp,protocols,network-protocols,Tcp,Protocols,Network Protocols,我试图理解TCP是如何工作的(当然不是很详细)。我在网上浏览易于理解的流程图,出现了一个问题,但找不到一个直接的答案 假设我们有一个很好的流程,其中所有内容都是同步的(忽略FIN和交叉数据包的结尾部分): 我想知道如果A和B都希望同时发送数据包会发生什么情况(据我所知,TCP是一种双向协议,因此每个实体可以随时发送数据包)。序列号的基本行为。具有交叉数据包的 我还了解到TCP是一种SWP(滑动窗口协议),我想知道在这种情况下ACK是如何形成的。TCP的响应字节数基本上是Seq number,我

我试图理解TCP是如何工作的(当然不是很详细)。我在网上浏览易于理解的流程图,出现了一个问题,但找不到一个直接的答案

假设我们有一个很好的流程,其中所有内容都是同步的(忽略FIN和交叉数据包的结尾部分):

我想知道如果A和B都希望同时发送数据包会发生什么情况(据我所知,TCP是一种双向协议,因此每个实体可以随时发送数据包)。序列号的基本行为。具有交叉数据包的

我还了解到TCP是一种SWP(滑动窗口协议),我想知道在这种情况下ACK是如何形成的。TCP的响应字节数基本上是Seq number,我真的无法想象在一个窗口中(在这个窗口中,您可以以任何顺序接收)会发生什么。该实现是否对接收方和发送方使用两组序号和两个窗口

欢迎使用任何规范参考或其他有用的资源

我想知道如果A和B都想知道会发生什么 同时发送数据包(据我所知,TCP是一种 双向协议,以便每个实体可以随时发送)。 序列号的基本行为。有交叉数据的 包

TCP连接中的每一方都有自己的序列号。当A侧向B侧发送字节时,它增加其
序列号
字段,B侧增加其
确认
字段,以指示接收了哪些字节。当B侧向A侧发送数据时,情况正好相反-B的
序列号
递增,A的
确认
。两者可以同时发生

我还读到TCP是一个SWP(滑动窗口协议),我想 了解在这种情况下ACK是如何形成的。TCP正在以 字节数基本上和Seq数一样,我真的无法想象 这可能发生在窗口内(您可以在其中以任何顺序接收)。 实现是否使用两组序号和两个窗口 对于接收者和发送者


对。两边都有各自独立的滑动窗口。每一方的发送窗口都根据从另一方接收到的ACK提前,确认收到先前的序列号。

我认为问题不在这里。您要求的规格是标准-。但基本上TCP是一个字节流,发送方ACK指定发送方字节流中的当前位置(有一些初始偏移量-握手中的初始序列号),ACK指出对等方字节流接收的最后位置。窗口与此无关。每个方向都有一个单独的序列号。