IPv4协议学习笔记
文章目录
- IPv4协议学习笔记
- IPv4数据报格式
- IPv4 网络头部结构
- Version [4 bits]: 协议版本
- IHL(Internet Header length) [4 bits]: 网络头长度
- Type of Service [8 bits]: 服务样式
- Total Length [16 bits]: 总计长度
- Identification: [16 bits]: 标识ID号
- Flags [3 bits]:标志
- Fragment Offset [13 bits]: 片偏移
- TTL(Time to Live) [8 bits]: 生存时间
- Protocol [8 bits]: 协议
- Header Checksum [16 bits] 校验位
- Source Address [32 bits]: 源地址
- Destination Address [32 bits]: 目标地址
- Options [variable]: 选项字段
- Padding [variable]: 补位
- IPv4 数据报分片
- IPv4编址
- 分类网络(已过时)
- CIDR(Classless Inter-Domain Routing) 无类别域间路由
- 特殊用途的地址
- 广播地址
IPv4数据报格式
RFC791中描述的IPv4数据报的格式:
RFC791 INTERNET PROTOCOL 标准文档连接【点我查看】
IPv4 网络头部结构
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Version| IHL |Type of Service| Total Length |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Identification |Flags| Fragment Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Time to Live | Protocol | Header Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Source Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Destination Address |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Options | Padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Example Internet Datagram Header
Version [4 bits]: 协议版本
RFC791描述的是IPV4版本,所以此处使用4作为版本号
IHL(Internet Header length) [4 bits]: 网络头长度
网络头长度是以32bit为单位的,既 IHL×4byte;
由于除了Options所有字段全为必选,所以网络头长度最小值是5
Type of Service [8 bits]: 服务样式
Bits 0-2: Precedence. 优先级
Bit 3: 0 = Normal Delay, 1 = Low Delay. 延迟
Bits 4: 0 = Normal Throughput, 1 = High Throughput. 吞吐量
Bits 5: 0 = Normal Relibility, 1 = High Relibility. 可靠性
Bit 6-7: Reserved for Future Use. 保留
0 1 2 3 4 5 6 7
+-----+-----+-----+-----+-----+-----+-----+-----+
| | | | | | |
| PRECEDENCE | D | T | R | 0 | 0 |
| | | | | | |
+-----+-----+-----+-----+-----+-----+-----+-----+
Precedence 优先级,应该是越大优先级越高,我做上层应用的程序员,应该无所谓的。
111 - Network Control
110 - Internetwork Control
101 - CRITIC/ECP
100 - Flash Override
011 - Flash
010 - Immediate
001 - Priority
000 - Routine
Total Length [16 bits]: 总计长度
数据报总长度,以字节为单位,包括Internet报头数据。
最长常大虎为65535字节。
Identification: [16 bits]: 标识ID号
数据报ID,一般标识ID号多个IP数据包之间是递增的。
Flags [3 bits]:标志
Bit 0: reserved, must be zero 保留
Bit 1: (DF) 0 = May Fragment, 1 = Don't Fragment. 是否碎片
Bit 2: (MF) 0 = Last Fragment, 1 = More Fragments. 是否最后的碎片
0 1 2
+---+---+---+
| | D | M |
| 0 | F | F |
+---+---+---+
Fragment Offset [13 bits]: 片偏移
碎片的偏移量,字节为单位。
TTL(Time to Live) [8 bits]: 生存时间
生存时间,秒为单位。
虽然TTL从字面上翻译,是可以存活的时间,但实际上TTL是IP数据包在计算机网络中可以转发的最大跳数。
TTL字段由IP数据包的发送者设置,在IP数据包从源到目的的整个转发路径上,每经过一个路由器,路由器都会修改这个TTL字段值,具体的做法是把该TTL的值减1,然后再将IP包转发出去。
Protocol [8 bits]: 协议
下级协议
TCP: 6
UDP: 17
详见RFC790【点我查看】
Header Checksum [16 bits] 校验位
头部校验位
Source Address [32 bits]: 源地址
发送源的地址
Destination Address [32 bits]: 目标地址
发送目标的地址
Options [variable]: 选项字段
头部扩展,略
Padding [variable]: 补位
补充Options到32bit的倍数
IPv4 数据报分片
MTU(Maximum Transmission Unit) 最大传输单元
链路层协议承载不同的长度的数据,不同协议的MTU限制IP报文长度。
以太网 MTU = 1500
广域网 MTU = 576
Fragment 碎片
当数据报大于MTU时,需要通过分片,将一个大的IP数据报切分为多个小的IP数据报。
同一个IP数据报被切分为多个碎片时,多个碎片IP数据包的源地址,目标地址,标识ID号 相同;
Flags [3 bits],表明是否是碎片
Fragment Offset [13 bits], 表明碎片在演示报文中的位置
IPv4编址
dotted-decimal notation 点分十进制记法
IPv4地址有32bit(4byte)记录其值,每个字节用十进制表示后用“.”进行分割,叫做dotted-decimal notation (点分十进制记法);
subnet mask 子网掩码
也叫:network mask 网络掩码
它用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
分类网络(已过时)
分类 | 前缀码 | 开始地址 | 结束地址 | 对应CIDR修饰 | 默认子网掩码 |
---|---|---|---|---|---|
A类地址 | 0 | 0.0.0.0 | 127.255.255.255 | /8 | 255.0.0.0 |
B类地址 | 10 | 128.0.0.0 | 191.255.255.255 | /16 | 255.255.0.0 |
C类地址 | 110 | 192.0.0.0 | 223.255.255.255 | /24 | 255.255.255.0 |
D类地址 | 1110 (组播) | 224.0.0.0 | 239.255.255.255 | /4 | 未定义 |
E类地址 | 1111(保留) | 240.0.0.0 | 255.255.255.255 | /4 | 未定义 |
CIDR(Classless Inter-Domain Routing) 无类别域间路由
无类别域间路由是基于可变长子网掩码(VLSM)来进行任意长度的前缀的分配的。在RFC 950(1985)中有关于可变长子网掩码的说明
特殊用途的地址
CIDR地址块 | 描述 | 参考资料 |
---|---|---|
0.0.0.0/8 | 本网络(仅作为源地址时合法) | RFC 6890 |
10.0.0.0/8 | 专用网络 | RFC 1918 |
100.64.0.0/10 | 电信级NAT | RFC 6598 |
127.0.0.0/8 | 环回 | RFC 5735 |
169.254.0.0/16 | 链路本地 | RFC 3927 |
172.16.0.0/12 | 专用网络 | RFC 1918 |
192.0.0.0/24 | 保留(IANA) | RFC 5735 |
192.0.2.0/24 | TEST-NET-1,文档和示例 | RFC 5735 |
192.88.99.0/24 | 6to4中继 | RFC 3068 |
192.168.0.0/16 | 专用网络 | RFC 1918 |
198.18.0.0/15 | 网络基准测试 | RFC 2544 |
198.51.100.0/24 | TEST-NET-2,文档和示例 | RFC 5737 |
203.0.113.0/24 | TEST-NET-3,文档和示例 | RFC 5737 |
224.0.0.0/4 | 多播(之前的D类网络) | RFC 3171 |
240.0.0.0/4 | 保留(之前的E类网络) | RFC 1700 |
255.255.255.255/32 | 受限广播 | RFC 919 |
广播地址
主机码部分全为1是,表示广播地址。