1. IP首部
第一个4字节:
版本号:IPv4/IPv6;
首部长度,4位:用于标识首部的长度,单位为4字节,所以首部长度最大值为:(2^4 - 1) * 4 = 60字节,但一般只推荐使用20字节的固定长度。
总长度,16位;标识IP数据报的总长度
第二个4字节:
16位标识:数据报计数器,每产生一个数据报,计数器加1;
3位标志:MF=0—无分片,MF=1—有分片,DF—不分片
片偏移,13位;代表某个分片在原始数据中的相对位置。
第三个4字节:
生存时间TTL: 路由跳数;
8位协议:代表上层传输层协议的类型,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。
校验和,16位;用于验证数据完整性,计算方法为,首先将校验和位置零,然后将每16位二进制反码求和即为校验和,最后写入校验和位置。
2. IP地址分类
3. 网络层分片的原因与具体实现
(1) 原因
MTU(最大传输单元):是数据链路层的限制1500B,所以IP要分片
MSS(最大分段大小):是TCP的限制,双方可以协商,往往是减去两个头部,40B。链路层是以太网的是话是1460,internet是512B
UDP不分段,靠IP分片
(2)具体实现
发送方会在IP层将要发送的数据分成多个数据包分批发送,而接收方则将数据按照顺序再从新组织起来,等接收到一个完整的数据报之后,然后再提交给上一层传输层。IP头部有3位标志字段,标志是否为分片包。第一位无用,第二位DF=0:允许分片,DF=1:不允许。第三位MF=0:最后一片,MF=1:后面还有分片。13位offset表示偏移,用于IP重组时数据排序。
4. 介绍一下 网络层 ping的过程,分别用到了哪些协议
UDP-ICMP(internet 控制报文协议)-ARP(地址解析的协议,mac地址)-OSPF(开放最短路径优先,内部网关协议)
(1)在同一网段内
A主机构建一个ICMP格式的数据包;
ICMP协议+B主机的IP地址 交给IP协议;
IP层构建一个数据包(A主机的IP地址+控制信息+B主机的IP地址),获得B主机的MAC地址,以便构建一个数据帧;IP协议会根据B主机的IP地址和自己的子网掩码判断是不是属于同一层网络。如果是属于同一层网络的话,就会获得B主机的MAC地址)
主机B接受到主机A的发过来的数据帧以后,先检查该帧中包含的B的IP地址,并和本地的物理地址进行比对,如果符合的话,就接受,否则,就抛弃。同样,需要将该数据帧交由自己的IP层协议,IP层检查以后,再交由ICMP协议,构建一个ICMP的应答包,发送给主机A。
(2)不在同一网段内
在主机A上运行“Ping 192.168.1.4”后,开始跟上面一样,到了怎样得到MAC地址时,IP协议通过计算发现D机与自己不在同一网段内,就直接将交由路由处理,也就是将路由的MAC取过来,至于怎样得到路由的MAC,跟上面一样,先在ARP缓存表找,找不到就广播吧。路由得到这个数据帧后,再跟主机D进行联系,如果找不到,就向主机A返回一个超时的信息。