我被问到一个与数据报有关的有趣问题,以及它们是如何分段的,即用什么来重新组装原始数据报。
- 我知道每个片段中的 ID 号都是相同的,以表明它们都属于一个更大的数据报。
- 我知道将 FragFlag 设置为 1 意味着途中有更多片段,但是 FragFlag 为 0 的片段意味着它是最终片段。
我还缺少一件事,我认为还必须使用序列号,以便片段知道它们必须放回哪个顺序。但是,如果这是真的,那让我有点困惑,因为数据报使用 UDP,这是假定的不可靠,最终可能会在传输过程中丢失数据包或以错误的顺序发送它们。
相比之下,TCP 被认为是可靠的,并且是保证数据包以正确顺序发送的最佳方式。因为我们处理的是数据报而不是数据包,所以这里的工作方式不同吗?或者只是为了使 UDP 更“可靠”而创建的序列号。
谢谢你的帮助。