IP协议解析及MTU最大传输单元的应用

IP协议解析及MTU最大传输单元的应用

1. IP协议解析

IP协议是属于网络层协议,IP协议只为主机提供一种无连接、不可靠的、尽力而为的数据包传输服务。

在这里插入图片描述

2. 具体字段的意义及其功能

  • 4位协议版本:当前版本默认为4,表示lPv4
  • 4位头部长度:以4字节为单位,IP报头固定最小20字节,最大60字节
  • 8位服务类型:3位弃用,1位固定0,4位tos字段:最高可靠性,最小成本,最大吞吐量,最小延时
  • 16位报文长度:IP报文必须小于64k(tcp报文中数据必须小于64k-40,udp中数据最大小于64k-28)
  • 16位分片标识:标识当前分片属于哪一个完整的原始udp报文
  • 3位标志位:1位保留,1位禁止分片位,1位分片结尾标志
  • 13位分片偏移∶标识当前分片在原始报文中的偏移量位置,其中这里以8字节作为单位
  • 13位所能表示的最大数字:0~8191(一个报文若是偏移量在原始报文中是10000字节则无法表示,以8字节位单位进行表示:偏移量若是10000,则分片偏移这里的数据:10000/8)
  • 8位TTL:报文的最大生存周期,表示的是一条数据所能经过的路由器跳数(每经过一次路由器转发就会-1,为0时数据被丢弃;早期默认是64;主要是为了防止路由环路,数据在网络中不断循环环路传输)
  • 8位上层协议类型:标识当前报文中的数据在传输层所使用的协议;到达对端后,便于上层解析协议的选择
  • 16位校验和:校验数据一致性

3. MTU最大传输单元

在这里插入图片描述

定义

  • 是链路层所限制的一个最大数据帧大小,如果IP报文长度大于MTU则数据需要在网络层进行数据分片,即就是将一个大的报文(大小大于MTU,但是小于64k-40/28)分割成为多个小的报文,逐个封装IP报头进行传输

MTU对TCP/UDP协议的影响

  1. MTU对于tcp协议的影响: tcp三次握手时候协商的MSS就是根据MTU计算得到的。因为tcp会协商MSS,因此在传输数据的时候总是从发送缓冲区中取出不大于MSS大小的数据进行封装传输,因此通常tcp报文在传输层会自动进行数据分段,因此不会在网络层进行数据分片。
  2. 对于udp协议,没有MSS的协商,只要数据不大于64k-28就能传输,但是若是数据在网络层封装时大于MTU大小,则会在网络层进行数据分片传输,各个小的数据分片逐个传输到达对端,对端主机在网络层会将所有的小的分片,组装为原始的完整udp报文,但是分片越多,传输越危险(一个分片出错,整个报文都会被丢弃),因此程序员在编写udp通信程序时,就要注意,如果发送的数据过大,则在应用层要进行分包操作,并且分包大小最好能够根据MTU计算得到MSS,作为最大分包大小。

举例说明

假设网卡MTU设置为1500:

  • udp在SendTo发送数据时给与数据大于64k-28,则直接报错
  • udp在SendTo发送数据时给与数据大于1500字节,小于64k-28,则会在网络层进行数据分片

此时如果要发送的数据大小为5000字节,则会进行分片,MTU大小为1500,其中通常IP报头最小为20字节,UDP报头为8字节,所以第一次分片可传输数据最大为1472字节,从第二次开始没有UDP协议的报头所以之后的分片可传输的数据最大为1480字节。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值