TCP MTU 问题

TCP通信同样受到MTU的限制,单个TCP包的实际传输最大值为1448字节,超过该值会被分片导致数据解析错误。在本机测试可能没问题,但在服务器上可能因MTU差异引发问题。解决方法包括确保每个TCP包不超过1448字节或处理粘包现象。
摘要由CSDN通过智能技术生成

做网络编程的时候大家可能会注意UDP分包的问题,当单个数据包大于MTU的时候,就会出现分包的情况,当UDP包不是纯数据(UDP包一般都会有自定义的包头)的时候,这种分包是破坏性的,所以一般UDP我们都不会让他超过1000字节,甚至更小

但是大家往往会忽略TCP其实也受MTU的限制,在某些情况下当用TCP发送数据包(不是数据流)的时候,忽略了这个问题,也是会出现意象不到的问题

1.从以太网帧说起

以太网 Ethernet 最大的数据帧是 1518字节 。 以太网帧的帧头 14字节和帧尾CRC校验4字节 (共占 18字节 ),剩下承载上层协议的地方也就是Data域最大就只剩1500字节. 这个值我们就把它称之为MTU。

cat /sys/class/net/eth0/mtu
1500

2.去掉IP包头和TCP包头

单个TCP包 实际传输的最大值:
1500- 20(IP头 )-32(20字节 TCP头和12字节TCP选项时间戳 ) = 1448 字节

3.大于这个值会发生什么

大于1448的数据包会被拆成多份发送,

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值