以太网数据包长度限制

我们使用以太网进行数据传输(UDP、TCP),数据包的大小是有限制的,并不是多长都可以。

TCP/IP协议从下到上包含:链路层、IP层、传输层、应用层。

链路层:

链路层的数据交互是基于数据帧, 一帧数据包的最大长度1518(以太网帧最大长度)-18(以太网帧头帧尾) = 1500字节。

IP层:

由于链路层的数据帧最大为1500,所以该层的最大数据包长度为1500-20(IP包首部)=1480字节。

传输层:

如果禁止IP层进行数据分包传输:

对于TCP数据包最大长度1480-20(TCP包首部)=1460字节,大于该长度数据在经过IP层时就会进行分包。

对于UDP数据包最大长度1480-8(UDP包首部)=1472字节,大于该长度数据在经过IP层时就会进行分包,某一些路由器设置允许通过的最小以太网数据帧为576字节,如果考虑到这一限制,那么允许发送的最大UDP数据包长度为 576 -  20(IP包首部) - 18(UDP包首部) = 548字节。 

如果允许IP层进行数据分包传输:

TCP 协议:基于流进行数据传输,数据包的长度不受限制。

UDP协议:UDP协议要求一帧数据包最大不能超过64K。

总结:一般来说,TCP协议是可靠的数据传输,自身会进行数据丢包重传,保证数据完整可靠的到达目的主机,但UDP协议是不可靠的数据传输方式,无法保证数据一定可以到达目的主机。所以一般在使用时需要自己添加应答重传机制,但是对于网络通讯质量很差的场合,如果发送的UDP数据包长度很大,那么在经过IP层时就会进行分包发送,在传输过程中任何一个子数据包的丢失,都会导致整个数据包在IP层被丢弃,从而导致传输失败,因此在这种情况下,最好的办法就是限制传输层发送的数据包大小,保证数据包在经过IP层时不会进行分包发送,然后我们自己在传输层上添加应答重传机制,并自己进行分包发送、组包接收。

 

 

  • 6
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值