4

我知道在网络中,数据流是在第4层被分成不同的段。每个段然后用端口号和IP地址封装。我发现了一些我想问的令人困惑的问题:

  • 谁负责将数据流分成不同的段。是应用程序还是第 4 层?

  • 我知道 UDP 不支持分段。那么如何将数据流分成不同的段进行发送(如在 VoIP 应用程序中)?

提前致谢

4

3 回答 3

0

TCP 连接是一个字节流。打包由操作系统中的 TCP/IP 堆栈完成。

UDP不是一个流——它只是一堆数据报,不能保证以任何顺序(或根本不)到达。使用 UDP 实现的任何协议都必须以自己特定于应用程序的方式处理这些细节。

于 2013-07-30T05:04:13.740 回答
0

应用层不应该担心段(TCP 通信中的传输层数据包)。因为它是由 TCP 层创建的。理论上Segment大小可以大到65495。但是它会根据你的传出接口的MTU来计算,比如以太网卡。因此,应用层根本不涉及数据流的分割。UDP 也在第 4 层,但它不像 TCP 那样支持可靠性。否则数据报创建(UDP 通信中的传输层数据包)也与 TCP 中的段完全相同。

于 2013-07-30T05:52:39.013 回答
0

第 3 层负责处理数据碎片。MTU 的通常大小为 576 字节。因此,网络层将传输层段拆分为 576 字节的块,添加自己的标头并将其发送到数据链路层。

即使使用 UDP,碎片也是可能的。UDP 不知道碎片的分段和重组,因为它是执行这些的网络层。无论传输层协议如何,超过 576 字节的任何内容都会被分段。

在 VoIP 中,一次处理数据块 (20-30ms) 并作为应用层消息发送。

于 2013-07-30T06:34:56.203 回答