一个IP分组由首部和数据两部分组成。首部的前一部分是固定长度的, 共20B
, 是所有IP分组必须具有的。在首部固定部分后面是一些可选字段, 其长度是可变的。 IP数据报的格式如下图所示:
IP首部的字段含义如下:
4字节(32bit)
为单位, 即报头的最大长度可以为15*4B=60B
, 除去固定部分的长度20字节
, 可变部分的长度最大为40字节
。bit 0~2
: 优先级bit 3
: 延迟, 0 = Normal Delay, 1 = Low Delaybit 4
: 吞吐量, 0 = Normal Throughput, 1 = High Throughputbit 5
: 可靠性, 0 = Normal Relibility, 1 = High Relibilitybit 6~7
: Reserved for Future Use. 6: 开销(路由代价); 7: 仍为保留MTU
(最大传输单元)时, 必须分片, 此时这个标识字段的值被复制到所有数据分片的标识字段中, 以便这些分片在达到最终目的地时可以重新组合起来。R(Reserved)、DF(Don't Fragment)、MF(More Fragment)
, 目前只有后两位有效, DF=1
表示不分片, DF=0
表示分片; MF=1
表示后面还有分片,MF=0
表示这是最后一片。8B
为偏移单位, 所以一个分片的长度一定是8B(64bit)
的整数倍
MTU=1500
时, 一个大小为3000字节的数据经过该接口, 会被分为3段, 第一段分组总长度为1480+20
, 第二段也为1480
, 第三段为40
, 那么第一段的分段偏移为0
, 第二段分段偏移为1480/8=185
, 第三段为185+185=370
TTL
减1, 为0时则丢弃该分组。推荐的初始值由分配数字RFC
指定, 当前值为64
, 发送ICMP
回显应答时经常把TTL
设为最大值255
ICMP
)IGMP
)TCP
)UDP
)IDRP
)RSVP
)GRE
)NHRP
)IGRP
)OSPF
)现在的IP网络使用32位地址表示, 以点分十进制表示. IP地址由网络号
和主机号
两部分组成, 根据网络号的不同分为A类地址、B类地址、C类地址、D类地址和E类地址5种类型, 如下图:
202.98.174.0
202.98.174.255
127.0.0.0
网络保留作为环路自检地址0.0.0.0
表示本网络上的本主机255.255.255.255
表示整个TCP/IP
网络的广播地址, 由于路由器对广播域的隔离, 所以等效为本网络的广播地址NAT
网络地址转换(NAT
)通过将专用地址转换为公用地址, 隐藏了内部网络结构, 节省了IP地址消耗. 私有IP必须经过NAT转换成公网IP才可用于互联网. NAT路由器使用NAT转换表(存放着私有IP:端口
到全球IP:端口
的映射)可以把多个私有IP都映射到同一个公网IP上.
私有IP地址网段如下:
10.0.0.0 ~ 10.255.255.255
172.16.0.0 ~ 172.31.255.255
192.168.0.0 ~ 192.168.255.255
注意: 普通路由器转发IP数据报时不改变源和目的IP地址, 而NAT路由转发时一定会改变其IP地址, 而且需要查看传输层的端口.
子网号字段
, 两级IP地址变成三级, 即三级IP地址由网络号
, 子网号
和主机号
三部分组成。主机号
这部分进行再划分, 不会改变原来的网络号
, 从IP数据报中无法判断源或目的主机是否进行了子网划分子网掩码是跟IP地址相对应的32位二进制串, 1对应网络号及子网号, 0对应主机号。子网掩码与IP地址按位相与(AND
)即可得到相应子网的网络地址。 如果一个网络没有划分子网, 那就使用默认子网掩码, A、B、C
类地址默认的子网掩码分别为255.0.0.0
, 255.255.0.0
和255.255.255.0
子网掩码是一个网络中的重要属性, 路由之间交换信息时, 必须把自己所在网络的子网掩码告诉对方。在使用子网掩码的情况下:
目的网络地址
, 子网掩码
, 下一跳地址
CIDR
CIDR
(Classless Inter-Domain Routing)消除了传统的A、B、C类地址以及划分子网的概念, 更加有效地分配IPv4的地址空间, 提高了IP地址空间利用率, 减小路由表大小, 提高路由转发能力。 它有如下特点:
CIDR
使用“斜线记法”(又称为CIDR记法), 即IP地址/网络前缀位数
, 如128.14.32.5/20
表示掩码为前20位全1和后12位全0, 即网络前缀为128.14.32.0
CIDR地址块
, 一个CIDR地址块可以包括多个ABC类地址最长前缀匹配
原则, 选取最长的网络前缀匹配