网络传输中数据为什么要有MTU

抛个问题

在网络传输中,通常会看到MSS,MTU这样的设置,为什么数据需要分段传输?

假如nodeA要给nodeB发送1MB的数据,为什么TCP不直接传送1MB的数据,而是要分段传送,再组装

为什么需要分段传送
  1. 公平使用网络
    组成网络的各种硬件是一种基础设施,为上层应用提供数据传输服务。为了公平,每个数据传输需求应该被被分成合适的大小,再传输。类似cpu时间片
  2. 硬件处理能力
  3. 网络吞吐量,这个领域有许多研究性的paper讨论。行文时暂未深入到这个层面,暂时作罢。
mtu值的影响
  1. 更大的分片,传输的次数变少,但是发生拥堵的情况相对会更加严重
  2. 基础设施的数据处理能力
分段不佳导致的fragmentation(path mtu)

由于发送方定义的mtu大于网络路径上某个节点(比如路由器)的mtu,会导致ip fragmentation。这个会引发:

  1. 节点工作负载增加(fragmentation)
  2. 单个碎片出错,导致整个重传,又重新fragmentaion

如何避免呢?有个path mtu discovery 的策略。本质上就是一种“投石问路”的办法,发送icmp报文去“问”清楚mtu

path mtu discovery
    • 1
      点赞
    • 5
      收藏
      觉得还不错? 一键收藏
    • 0
      评论
    评论
    添加红包

    请填写红包祝福语或标题

    红包个数最小为10个

    红包金额最低5元

    当前余额3.43前往充值 >
    需支付:10.00
    成就一亿技术人!
    领取后你会自动成为博主和红包主的粉丝 规则
    hope_wisdom
    发出的红包
    实付
    使用余额支付
    点击重新获取
    扫码支付
    钱包余额 0

    抵扣说明:

    1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
    2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

    余额充值