假设我们的客户端以恒定速率发送数据包。现在,如果服务器暂时中断,可能有两种情况
(我们正在使用TCP协议)
1)数据包将不会传送到服务器。因此,该行中的其他数据包必须等待服务器响应。沟通可以从那里进行。
2)数据包将不会被传递并将再次尝试,但其他包将不受此数据包的影响。
说,要传输数据包A,B和C.当我发送数据包A时服务器暂时关闭,然后数据包B和C将在最初安排时发送,或者一旦服务器收到A就会发送。
答案 0 :(得分:2)
TCP是面向流的协议。这意味着如果在单个TCP连接上,您发送A后跟B,那么接收方将从不看到B,直到它看到A。
如果您通过单独的 TCP连接发送A和B,则B可能会在A之前到达。
答案 1 :(得分:1)
当你说“暂时停顿”时,你的意思是什么?我可以看到两种不同的场景。
数据包A正在发送。不幸的是,当它通过电缆缠绕时,一根电缆断开,A丢失。同时,根据TCP窗口算法的确切状态,可以发送或不发送数据包B和C(因为这取决于窗口大小,A / B7C的大小和尚未发送的未确认字节的数量) 。我想这是说你的“1”和“2”可能都是对的吗?
如果已发送B和/或C,则在重新发送之前不会有A的确认。如果它们已被发送,一旦A到达,服务器将按顺序接收到最后一帧的结束(因此,如果是这种情况,则为C)。
如果发生这种情况,所有TCP状态都将丢失,并且必须在服务器重新启动后重新建立连接。