TCP/UDP 是按顺序发送文件还是随机发送文件?

use*_*231 5 windows tcp udp sockets

TCP/UDP 协议是否总是按顺序发送或接收文件包?是否可以使用套接字 API 选择首先发送哪些数据包?

Dav*_*rtz 9

TCP 和 UDP 都不能保证数据包按顺序到达目的地,因为它们都使用 IP 数据包,而 IP 不做任何排序。

对于 UDP,有两个不同的问题。一个是组成单个数据报的数据包的顺序。你无法控制这一点,我知道的每个实现都会按顺序发送它们。

但是,您可以按您想要的任何顺序发送数据报。组成数据报的各个片段将由接收器重新排序以重建原始数据报。乱序接收的数据报(不是按照发送的顺序)将按照接收的顺序传递给应用程序。当接收到重建数据报所需的最后一个片段时,就认为该数据报已收到。数据报将在完成时传递给应用程序,而不管它们的发送顺序如何。

使用 TCP,实现控制数据包的形成。你根本无法控制它。我知道的每个实现都会按顺序发送它们。如果收到的订单有问题,他们需要重新订购。