IP 编址
IP 编址
IP
IP
: 网际协议,网络层协议,用来为网络中设备分配逻辑地址.
网络层的逻辑地址就是 IP 地址,IP 地址是可以更改的,当设备在不同网络中,根据所处网络的不同发生变化,在同一个网络内必须保证唯一性。设备有了 IP 地址后,就可以在网络中进行通信.
IP 报文头部
0 1 2 3 |
基本信息行
Version
: 版本,4bit
, 用来标明当前 IP 协议的版本,如果当前报文在 IPv4 时,则该字段的值为 4(0b0100)
IHL
: IP 头部长度,4bit
, 范围 20-60
字节,每个单位代表 4
字节
字节长度取值一定是四的倍数.
DS/TOS
: 差分服务域,服务类别,8bit
, 让特定的数据拥有更高的优先级.
Total length
: 数据包总长度,16bit
, 用于标识 IP 报文头部加数据载荷的长度,最大 65535
字节.
分片行
[MTU
: 最大传输单元,用于限制报文不被分片的最大字节,默认情况下 MTU
值为 1500
字节.]
ID
: 标识,16bit
, 用于顺序 IP 报文,同一个报文得到的分片信息中的 ID 相同.
Flages
: 标志位,3bit
.
- 最高位被保留,固定为
0
. - 中间位为
DF
位:如果置位为1
, 则表示该报文不能被分片. - 最低位称为
more
位:如果置位1
, 则表示后续还有分片报文.
如果报文大于 MTU 值并且 DF 置位,直接丢弃.
Offset
: 13bit
, 片偏移,用于标识分片包在原始报文的位置.
片偏移指出:较长的分组在分片后,某片在原分组中的相对位置。也就是说,相对于用户数据字段的起点,该片从何处开始。片偏移以 8 个字节为偏移单位。这就是说,每个分片的长度一定是 8 字节 (64 位) 的整数倍.
【例】一数据报的总长度为 3820 字节,其数据部分为 3800 字节长 (使用固定自部),需要分片为长度不超过 1420 字节的数据报片。因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。于是分为 3 个数据报片,具数据部分的长度分别为 1400 ,1400 和 1000 字节。原始数据报首部被复制为各数据报片的首部,但必须修以有关字段的值。下面给出分片后得出的结果 (请注意片偏移的数值)。
数据报 | 总长度 | 标识 | MF | DF | 片偏移 |
---|---|---|---|---|---|
原始数据报 | 3820 | 12345 | 0 | 0 | 0(0/8=0) |
数据报片 1 | 1420 | 12345 | 1 | 0 | 0(0/8=0) |
数据报片 2 | 1420 | 12345 | 1 | 0 | 175(1400/8=175) |
数据报片 3 | 1020 | 12345 | 0 | 0 | 350(2800/8=350) |
现在假定数据报片 2 经过某个网络时还需要再进行分片,即划分为数据报片 2-1 (携带数据 800 字节) 和数据报片 2-2 (携带数据 600 字节)。那么这两个数据报片的总长度、标识、MF、DF 和片偏移分别为: 820,12345,1,0,175; 620,12345,1,0,275。
功能行
TTL
: 生存周期,8bit
, 用来在 IP 报文转发过程中,打破环路对网络的影响,最大值 255
, 会在数据包经过一次第三层转发时减 1
. 当值为 0
时数据包被丢弃.
Protocol
: 8bit
, 用于标明网络层处理完 IP 报文后,需要交给上层的某个协议继续处理.
1
:ICMP
6
:TCP
17
:UDP
Header Checksum
: 16bit
, 首部校验和,检测 IP 首部是否发生错误.
地址行
SIP
: 源 IP 地址,32bit
, 表明当前数据包从哪出发.
DIP
: 目的 IP 地址,32bit
, 表明当前数据包去往何处.
可选项
Options
: 可选项,可变长度,最大 40
字节。军事或研究方向,支持松散源路由,严格源路由等等.
IP 地址
IP 地址:用来标识网络中的一个节点或网络设备的接口,总长度 32bit
, 约 42.9 亿 (
网络位:用来标明当前设备的网络位置.
主机位:用来标明当前主机在当前网络中的位置.
网络掩码: 32bit, 由连续的 1 和 0 构成,其中 1 标记的是网络位,0 标记的是主机位.
网络地址:当主机位全都为 0 时,表示当前网络信息.
广播地址:当主机位全都为 1 时,表示当前网络范围内的广播地址.
可用地址:可分配给网络中的节点或网络设备接口的地址.
一个网络内的可用 IP 地址
网络地址和广播地址不能直接被节点或网络设备所使用.
IP 地址分类
有类 IP 地址
A
: 第一个 bit 为 0
, 并且掩码长度为 8
.
(0.0.0.0-127.255.255.255)
B
: 前两个 bit 为 10
, 并且掩码长度为 16
.
(128.0.0.0-191.255.255.255)
C
: 前三个 bit 为 110
, 并且掩码长度为 24
.
(192.0.0.0-223.255.255.255)
D
: 前四个 bit 为 1110
, 组播地址.
(224.0.0.0-239.255.255.255)
E
: 前四个 bit 为 1111
.
(240.0.0.0-255.255.255.255)
按照使用范围分类
公有地址:可以在公网范围内使用的地址.
私有地址:可以在局域网中使用,在不同的局域网中可以重复使用,不能够被公网转发.
私有地址范围:
A
: 10.0.0.0-10.255.255.255
; 10.0.0.0/8
B
: 172.16.0.0-172.31.255.255
; 172.16.0.0/12
C
: 192.168.0.0-192.168.255.255
; 192.168.0.0/16
IPv6 私有地址范围:
fc00::/7
(ULAs,Unique Local Addresses)
特殊地址
这类 IP 地址不能够给设备使用,并且全部具有特定意义.
0.0.0.0
: 当设备初次进入网络时,会使用该地址。特定场景下可以代表所有地址.
255.255.255.255
: 全网广播地址,可以向广播域内所有设备发送数据.
127.0.0.0-127.255.255.255
: 本地环回测试地址,检查本地网卡驱动是否正常.
进制转换
十进制转二进制
短除法 倒着写:
2|192 0 |
权重减法:
192-128=64 |
二进制转十进制
256 | 128 | 64 | 32 | 16 | 8 | 4 | 2 | 1 |
IP 地址计算
172.16.10.1/16
这个 B
类地址的网络地址,广播地址,可用地址数
IP 地址: 172.16.10.1
10101100 00010000 00001010 00000001
网络掩码: 255.255.0.0
11111111 11111111 00000000 00000000
网络地址: 127.16.0.0
10101100 00010000 00000000 00000000
广播地址: 127.16.255.255
10101100 00010000 11111111 11111111
IP 地址数:
可用 IP 地址数:
可用 IP 地址范围: 172.16.0.1-172.16.255.254
192.168.54.6/24 |
如果公司有/26
11111111.11111111.11111111.11000000
255.255.255.192
10.1.56.6 /28 |
划分子网
向主机位借位形成子网.
可变长子网掩码 VLSM
[例]
有一个 C 类网络地址 192.168.1.0/24 , 使用可变长子网掩码给三个子网分别分配 IP 地址 10 台 8 台 5 台
方法 1:
4 个子网
00 000000 0/26
01 000000 64/26
10 000000 128/26
11 000000 192/26
方法 2:
16 个子网
0000 0000
0001 0000
….
[例]
192.168.1.2/24 (主机位 8)
共有 25 个地址需求
求子网网络号,掩码。广播地址,可划分子网数
2^h-2>=25 |
[例]
某公司 4 个部门,每个部门最多 36 人
192.168.10.0/24 (主机位 8)
划分出合适的网络
掩码
网络号
子网数目
2^h-2>=36 |
IP 编址
一个网络内拥有的 IP 地址数量为
因为网络号和广播地址不可以配置在设备上,所以实际可用主机地址数为
如果两个 IP 地址的网络位相同,则这两个地址属于同一个网络,可以不通过网关设备或路由器直接通信.
如果两个 IP 地址的网络位不同,则需要借助网关设备和路由器进行通信.
使用默认掩码的就是有类地址.
无类地址就是经过子网划分的 IP 地址.
VLSM
: 可变长子网掩码.
子网掩码变长,主机位变少,
一个子网位能分出两个子网
CIDR
: 无类域间路由 (VLSM 逆运算)
子网掩码除了 VLSM 以外,还可以变短进行网络信息的汇总,这种操作方式就是 CIDR.
将不同网络的网络号中共同发生变化的位置当作主机位进行处理,之后对外发布,起到节省设备资源的作用.