gpt4 book ai didi

tcp - 一个TCP网络包什么时候会在应用层被分片?

转载 作者:太空宇宙 更新时间:2023-11-04 12:04:36 27 4
gpt4 key购买 nike

TCP数据包什么时候会在应用层分片?当从应用程序发送 TCP 数据包时,应用程序层的接收者是否会分两个或多个数据包接收数据包?如果是这样,什么条件导致数据包被分割。似乎数据包在达到 1500 字节的以太网(网络层)限制之前不会被分段。但是,该分段对应用层的接收者来说是透明的,因为网络层会在将数据包发送到下一层之前重新组装这些分段,对吗?

最佳答案

当它到达 MTU 小于数据包大小的网络设备时,它将被拆分。大多数以太网设备是 1500,但它通常可以更小,例如 1492 如果以太网由于额外的路由信息​​而通过 PPPoE (DSL),如果添加第二层(如 Windows Internet 连接共享)甚至更低。而且拨号正常是576!

一般来说,您应该记住 TCP 不是数据包协议(protocol)。它使用最底层的数据包通过 IP 传输,但就任何 TCP 堆栈的接口(interface)而言,它是一种流协议(protocol),不需要为您提供与发送或接收的物理数据包的 1:1 关系(例如,大多数堆栈将保留消息直到某个时间段到期,或者有足够的消息来最大化给定 MTU 的 IP 数据包的大小)

例如,如果您发送了两个“数据包”(调用您的发送函数两次),接收程序可能只会收到 1 个“数据包”(接收 TCP 堆栈可能会将它们组合在一起)。如果通过 TCP 实现消息类型协议(protocol),则应在每条消息的开头包含一个 header (或其他一些 header /页脚机制),以便接收方可以将 TCP 流拆分回单独的消息,或者当消息分两部分接收,或者当多个消息作为一个 block 接收时。

关于tcp - 一个TCP网络包什么时候会在应用层被分片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51142013/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com