网络层IP协议
IP数据报
在Internet网络层中,主机、路由器网络层主要功能为:
IP数据报(分组)格式
- 版本号字段占4位:IP协议的版本号: 4→IPv4,6 → IPv6
-
首部长度字段占4位:IP分组首部长度
以4字节为单位:Eg. 5→IP首部长度为20(5×4)字节 -
服务类型(TOS)字段占8位:指示期望获得哪种类型的服务
- 1998 年这个字段改名为区分服务
- 只有在网络提供区分服务(DiffServ)时使用
- 一般情况下不使用,通常IP分组的该字段(第2字节)的值为00H
-
总长度字段占16位:IP分组的总字节数(首部+数据)
最大IP分组的总长度:65535B;
最小的IP分组首部:20B;
IP分组可以封装的最大数据:65535-20=65515B - 标识、标志位、片偏移与分片有关,在后面将会介绍
-
生存时间(TTL)字段占8位:IP分组在网络中可以通过的路由器数(或跳步数)
路由器转发一次分组,TTL减1
如果TTL=0,路由器则丢弃该IP分组 -
协议字段占8位:指示IP分组封装的是哪个协议的数据包
实现复用/分解
Eg :6为TCP,表示封装的为TCP段;17为UDP,表示封装的是UDP数据报 -
首部校验和字段占16位:实现对IP分组首部的差错检测
- 计算校验和时,该字段置全0
- 采用反码算数运算求和,和的反码作为首部校验和字段
- 逐跳计算、逐跳校验
- 源IP地址、目的IP地址字段各占32位:分别标识发送分组的源主机/路由器(网络接口)和接收分组的目的主机/路由器(网络接口)的IP地址
- 选项字段占长度可变,范围在1~40B之间:携带安全、源选路径、时间戳和路由记录等内容
- 填充字段占长度可变,在0~3B之间:补齐整个首部,符合32位对齐,保证首部长度是4字节的倍数
IP分片
最大传输单元(MTU):
网络链路存在MTU (最大传输单元)—链路层数据帧可封装数据的上限
不同链路的MTU不同
-
大IP分组向较小MTU链路转发时,可以被“分片” (fragmented)
1个IP分组分为多片IP分 组
IP分片到达目的主机后进行“重组”
IP首部的相关字段用于标识分片以及确定分片的相对顺序——总长度、标识、标志位和片偏移
标识字段占16位:标识一个IP分组
- IP协议利用一个计数器,每产生IP分组计数器加1,作为该IP分组的标识
标志位字段占3位:
- DF (Don’t Fragment):不分组
- MF (More Fragment):是否为分组的最后一个
DF =1:禁止分片;
DF =0:允许分片;
MF =1:非最后一片;
MF =0:最后一片(或未分片)
片偏移字段占13位:一个IP分组分片封装原IP分组数据的相对偏移量
- 片偏移字段以8字节为单位
IP分片过程
假设原IP分组总长度为L,待转发链路的MTU为M;
若L>M,且DF=0,则可以/需要分片
分片时每个分片的标识复制原IP分组的标识
通常分片时,除最后一个分片,其他分片均分为MTU允许的最大分片
一个最大分片可封装的数据应该是8的倍数,因此,一个最大分片可封装的数据为:
M减去20除以8,向下取整,再乘8
需要的总片数为:
L减去20除以d,向上取整
IP编址
IP分组里的地址有两类:
- 源地址(SA)-从哪儿来
- 目的地址(DA)-到哪儿去
接口(interface): 主机/路由器与物理链路的连接
- IP地址: 32比特(IPv4)编号标识主机、路由器的接口,一般每8位转换为用小数点隔开的十进制数
- IP地址与每个接口关联
IP子网(Subnets)
IP地址由两部分组成:高比特位的网络号和低比特位的主机号
IP子网:IP地址具有相同网络号的设备接口
- 不跨越路由器(第三及以上层网络设备)可以彼此物理联通的接口
有类IP地址
特殊IP地址:
私有(Private)IP地址:(可重复多用)
IP子网划分与子网掩码
如何区分一个IP子网更小范围网络?
- 子网划分
如何确定是否划分了子网?利用多少位划分子网?
- 子网掩码
子网掩码
- 形如IP地址:32位、点分十进制形式
- 取值: NetID、SubID位全取1、HostID位全取0
子网地址+子网掩码 → 准确确定子网大小
子网 201.2.3.0,255.255.255.0 划分为等长的4个子网
将IP分组的目的IP地址与子网掩码**按位与**运算,提取子网地址
————————————————————————————————————————————————————————
由于水平有限及时间仓促或疏忽大意以及其他的一些原因,文中难免会存在一些错误,如若有发现不正确的地方,还请大佬们评论或私信告之于我,以便及时纠错