UDP中的序列号

时间:2013-04-28 12:19:05

标签: tcp udp datagram fragmentation defragmentation

我被问到一个与数据报有关的有趣问题以及它们是如何分段的,即用于重新组装原始数据报的内容。

  • 我知道每个片段中的ID号都是相同的,表明它们都属于一个更大的数据报。
  • 我知道FragFlag设置为1表示路上有更多的片段,但FragFlag为0的片段意味着它是最终片段。

我还缺少一件事,我假设还必须使用序列号,以便片段知道它们必须放回哪个顺序。但是如果这是真的有点混淆我因为数据报使用UDP这应该是不可靠的,并且可能最终丢失传输中的数据包或以错误的顺序发送它们。

相比之下,TCP应该是可靠的,并且保证数据包的最佳方式是以正确的顺序发送。这里的工作方式不同,因为我们处理数据报而不是数据包?或者只是创建序列号以使UDP更“可靠”。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

这里的重要区别是TCP定义了发送方和接收方之间的流量控制,因此双方始终都知道通信的状态是什么,例如:成功/不成功/正在进行/ .... UDP更低级别:发送方只传输一些数据而不关心它是否被接收(当然你可以使用UDP在SW中实现一些更高级别的协议)。

答案 1 :(得分:0)

  

然而,如果这是真的有点让我感到困惑,因为数据报使用的UDP应该是不可靠的,并且可能最终丢失传输中的数据包或以错误的顺序发送它们。

为什么这会令人困惑?如果所有片段到达,则重新组装数据报(在IP层)并传递给应用程序。如果他们不这样做,运气不好。