sockets - TCP拥塞会影响其他端口吗?

标签 sockets networking tcp udp

我听说当 TCP 数据包丢失时,一切都会因为拥塞而卡住,直到丢失的数据包最终被收到。例如服务器在同一端口上发送这些数据包:

1(UDP), 2(UDP), 3(TCP), 4(UDP), 5(UDP), 6(UDP)

因此,如果数据包 3 丢失,客户端将无法接收 4、5、6,直到收到数据包 3,对吗?

如果应用程序使用两个端口,一个用于 TCP,另一个用于 UDP,TCP 拥塞是否会影响 UDP 端口性能?我的意思是 UDP 数据包会被卡住吗?

最佳答案

TCP 拥塞应该只影响当前连接(套接字)。

简而言之,对于每个连接,都有一个用于组装数据包的 TCP 滑动窗口。如果一个数据包丢失,同一连接上的其他数据包将被接收并放置在窗口中,除非窗口已满。

https://technet.microsoft.com/cc162519.fig02_L.gif
(来源:microsoft.com)

所以这不应该影响其他连接。

参见TCP window scale option , Congestion windowTCP Receive Window Auto-Tuning .

关于sockets - TCP拥塞会影响其他端口吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34697631/

相关文章:

javascript - 将套接字连接到特定路径

C++/OpenCV 将相机-视频/图像 (MJPEG) 从套接字流式传输到浏览器 (Windows 8.1)

java - 套接字 : cannot read from BufferedReader and/or write to PrintWriter in certain conditions

tcp - Scapy 设置 tcp 流窗口大于 65535

c - TCP套接字,发送文件,客户端服务器,服务器不保存整个文件,C语言

java - C 中 DataOutputStream 和 DataInputStream 的等价物

android - 评估连接速度的最佳方法

java - 线程服务器/客户端在第二个客户端加入后停止

linux - ip变化时通过ping ip检查设备是否在线

java - 通过 TCP 套接字 Java 读/写流式音频