美好的一天!
我正在研究OSI模型。
我有一些困惑的问题。
在网络层,数据可以分为多个数据包,然后重新组合。
重组意味着要“按顺序”进行组装,但是数据包在UDP(传输层协议)中可能会乱序。
我的问题是:
答案 0 :(得分:0)
您要混合使用不同的功能和层。
在网络层中,超大数据包可以被分段,由目的地的网络层重新组合。此功能解决了在跳到跳传输期间MTU可能变得小于实际数据包的问题(在IPv4中-IPv6删除了此功能,有利于路径MTU发现)。
在传输层中,存在诸如TCP的(面向连接的)协议,这些协议将连续的数据流划分为可被源和目的地跟踪的段。当所有必要的段均已到达时,数据流将由目标重构。丢失的细分会通过跟踪重新发送。
UDP数据报可能会在此过程中需要分段,从而需要由目的地进行重组。但是,如果其中一个片段丢失,则不会进行重组,也不会将数据报传递给应用程序-它会丢失。
UDP是一种“即发即弃”协议,用于传输数据报。不同的数据报可能采用不同的网络路由,可能导致它们乱序到达。
TCP段丢失时,目的地无法确认。这使源重新发送该段。携带分段的数据包是否需要分段并不重要-仅当所有分段都到达时,重组后的分段才传递给TCP。然后,TCP对该段进行ACK并将数据传递给应用程序。
TCP还可以重建段的顺序,因此数据流与发送的数据完全相同。为此,对段进行编号,并且当它们无序到达时,TCP(传输)层将重新使用它们。