接收 TCP 数据包时,Socket
会给我重新组装的数据包,以防它们被 IP 分段,因为我保证得到有序的、无间隙的字节流。
当接收 UDP 数据包时,我可能会以与发送不同的顺序接收数据包,或者重复接收数据包,并且其他数据包可能会在此过程中丢失,我希望每个 UDP/IP 数据包在到达时立即“原始”。另一方面,由于我没有得到 IP 标头,我无法自己重新组装数据包。换句话说,我必须依靠Socket
为我做这项工作。但这意味着,对于单独的重组,(分段的)数据包必须被缓冲、排序、重复数据删除和丢弃,如果一个片段没有成功的话。
这在现实中如何运作?