TCP/UDP 协议是否总是按顺序发送或接收文件数据包?是否可以使用套接字 API 选择首先发送哪些数据包?
答案1
TCP 和 UDP 都无法保证数据包按顺序到达目的地,因为它们都使用 IP 数据包,而 IP 不进行任何排序。
对于 UDP,有两个不同的问题。一个是组成单个数据报的数据包的顺序。你无法控制这一点,而且据我所知,每个实现都会按顺序发送它们。
但是,您可以按任意顺序发送数据报。接收方将对组成数据报的各个片段进行重新排序,以重建原始数据报。无序接收的数据报(不是按发送顺序)将按接收顺序传递给应用程序。当接收到重建数据报所需的最后一个片段时,即认为数据报已接收。无论数据报的发送顺序如何,都将按完成顺序传递给应用程序。
使用 TCP,实现控制数据包的形成。你根本无法真正控制它。我知道的每个实现都会按顺序发送它们。如果收到的数据包顺序不对,则需要重新排序。