关于电信手机网络MTU计算

路人戊戌乙亥 2015-04-09 04:55:15
问题是怎么产生的:

电信手机,Android系统,手机移动网络,APP 发送彩信出现了问题:

TcpDump抓包如下:


手机端SYN提供的Mss为1460
Server端ACK给的Mss也是1460

但会发现,超过1516的的数据包都没有ACK, 究竟是什么原因?

这个问题的解决方法是将MTU设置为1380.
手机端的Mss应该是1380-20-20=1340

问题是: 为何手机端MTU = 1500会丢包呢?

我估计了两个原因:
a). 没有发送成功,MTU设置过大,链路层发现上层给的数据包大于能发送的MTU;
b). Server端收到TCP包之后,丢弃

我个人认为第一种可能性比较大,个人认为如下:
MTU是这样来的, 以太网EthernetII最大的数据帧是1518Bytes,刨去以太网帧的帧头(DMAC目的MAC地址48bit=6Bytes+SMAC源MAC地址48bit=6Bytes+Type域2bytes)14Bytes和帧尾CRC校验部分4Bytes(FCS),那么剩下承载上层协议的地方也就是Data域最大就只能有1500Bytes这个值为MTU。

这个MTU =1500是针对以太网设置的,而移动网络的链路层数据帧的长度或者头部应该是不一样的,因此层层下来,MTU应该要小于MTU。


请问是这样的吗?


...全文
1441 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
路人戊戌乙亥 2015-04-10
  • 打赏
  • 举报
回复
电信CDMA链路层走的什么协议?

80,350

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧