Networking TCP和UDP分段

Networking TCP和UDP分段,networking,Networking,我知道在网络中,数据流在第4层被分成不同的部分。然后用端口号和IP地址封装每个段。我发现了一些困惑的问题,我想问: 谁负责将数据流划分为不同的段。是应用程序还是第4层 我知道UDP不支持分段。那个么,如何将数据流分为不同的段进行发送(如在VoIP应用程序中) 提前感谢TCP连接是一个字节流。打包由操作系统中的TCP/IP堆栈完成 UDP不是一个流——它只是一组数据报,不能保证以任何顺序(或根本不能)到达。使用UDP实现的任何协议都必须以自己特定于应用程序的方式处理这些细节。应用程序层不应该担

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

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

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


提前感谢

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


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

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

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

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


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

这不是一个真正的编程问题。可能更适合在。谢谢你的回答。所以您说应用程序负责UDP段的大小。在哪里,对于TCP,操作系统负责。?不,应用程序无法决定数据报的大小,它是传出接口的MTU,这也是操作系统的责任,如果我没有错的话,如果您将4000字节的UDP数据报发送到MTU为1500的链接,它将被分割。