相关术语
缩写 | 说明 |
---|---|
OSI | 开放系统互连参考模型(Open System Interconnection, OSI),简称OSI/RM。 |
MTU | Maximum Transmission Unit,最大传输单元,数据包在网络传输中的最大大小。 |
MSS | Maximum Segment Size,最大分段大小 |
ICMP | Internet Control Message Protocol,互联网控制消息协议 |
OSI&TCP\IP协议
- OSI七层划分为 : 应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。
- 抓包主要在网络层及以上
- TCP/IP 5层模型从下往上依次为:物理层、数据链路层、网络层、传输层、应用层 。
- MTU是属于数据链路层的概念,MTU限制的是数据链路层的payload,也就是上层协议的大小,例如IP,ICMP等。
- 在TCP传输中,数据包分片的MTU(Maximum Transmission Unit,最大传输单元)大小是由网络设备的传输层协议决定的。MTU是指在网络传输中,能够传送的最大数据包的大小。在IPv4网络中,MTU的默认值为1500字节,而在IPv6网络中,MTU的默认值为1280字节。当数据包大小超过MTU时,网络设备会自动将数据包进行分片,以便在网络中传输。具体的分片规则是根据MTU大小来计算的,每个分片的大小一般为MTU减去IP和TCP协议头的大小。这样可以保证数据包在传输过程中不会被丢失或者损坏。
- 一般情况:分片大小=MTU-IP/TCP协议头大小
OSI参考模型层级 | 数据传输单元 | 功能 | TCP/IP协议簇 | 备注 | |
7 | 应用层 | 应用层协议数据单元 APDU | 文件传输,电子邮件,文件服务,虚拟终端 | TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet | 【数据封装】数据分片,因为文件过大不可能整个传输 |
6 | 表示层 | 表示层协议数据单元 PPDU | 数据格式化,代码转换,数据加密 | 没有协议 | |
5 | 会话层 | 会话层协议数据单元 SPDU | 解除或建立与别的接点的联系 | 没有协议 | |
4 | 传输层 | 段(Segment) | 提供端对端的接口 | TCP,UDP | 【数据封装】接收应用层的分片数据,加入TCP头部地址变成数据段 |
3 | 网络层 |
| 为数据包选择路由 | IP,ICMP,RIP,OSPF,BGP,IGMP |
|
2 | 数据链路层 | 帧(Prame) | 传输有地址的帧以及错误检测功能 | SLIP,CSLIP,PPP,ARP,RARP,MTU |
|
1 | 物理层 | 比特(bit) | 以二进制数据形式在物理媒体上传输数据 | ISO2110,IEEE802,IEEE802.2 |
|
Android MTU
在 Android 中,MTU(Maximum Transmission Unit)是指数据包在网络传输中的最大大小,可以通过配置来设置。Android 系统默认的 MTU 大小为 1500 字节,也可自定义 MTU 大小,以满足特定的网络需求。
配置MTU的接口方法
使用 Android 中的 NetworkInterface 类进行MTU配置。
首先,获取要配置的网络接口对象,例如 Wi-Fi 接口。然后,使用该对象的 setMTU 方法来设置 MTU 大小。例如:
NetworkInterface wifiInterface = NetworkInterface.getByName("wlan0");
wifiInterface.setMTU(1400);
Note:
- 在大多数情况下,使用默认的 MTU 大小即可满足网络需求。修改 MTU 大小可能会导致网络传输的稳定性和兼容性问题。
- 在设置 MTU 后,需要确保所有使用该网络接口的网络传输都能正确处理该 MTU 大小。例如,在使用 TCP 传输数据时,确保 TCP 连接的 MSS(Maximum Segment Size)不超过 MTU 大小。否则,数据包可能会被分片,导致传输效率降低。
问题经验
MTK可以设置/proc/sys/net/ipv4/tcp_mtu_probing:1 开启MTU 探测功能,