抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >


IP 编址

IP

IP: 网际协议, 网络层协议, 用来为网络中设备分配逻辑地址.

网络层的逻辑地址就是 IP 地址, IP 地址是可以更改的, 当设备在不同网络中, 根据所处网络的不同发生变化, 在同一个网络内必须保证唯一性. 设备有了 IP 地址后, 就可以在网络中进行通信.

IP 报文头部

RFC 791

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

IP报文头部

基本信息行

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 字节。原始数据报首部被复制为各数据报片的首部,但必须修以有关字段的值。下面给出分片后得出的结果 (请注意片偏移的数值)。

数据报总长度标识MFDF片偏移
原始数据报382012345000(0/8=0)
数据报片 1142012345100(0/8=0)
数据报片 214201234510175(1400/8=175)
数据报片 310201234500350(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 亿 (), 每个 IP 地址都由网络位和主机位组成.

网络位: 用来标明当前设备的网络位置.

主机位: 用来标明当前主机在当前网络中的位置.

网络掩码: 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
----
2|96 0
---
2|48 0
---
2|24 0
---
2|12 0
---
2|6 0
---
2|3 1
--
1

2|168 0
----
2|84 0
---
2|42 0
---
2|21 1
---
2|10 0
---
2|5 1
---
2|2 0
--
1

权重减法:

192-128=64
64-64=0
1100 0000

168-128=40
40-32=8
8-8=0
1010 1000

二进制转十进制

2561286432168421

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
网络地址: 192.168.54.0/24
广播地址: 192.168.54.255/24
IP地址数: 2^8=256
可用IP地址数: 2^8-2=254
可用IP地址范围: 192.168.54.1-192.168.54.254

172.168.54.6 主类
B /16
网络地址: 172.168.0.0/16
广播地址: 172.168.255.255/16
IP地址数: 2^16=65536
可用IP地址数: 2^16-2=65534
可用IP地址范围: 172.168.0.1/16-172.168.255.254/16

172.168.54.6 /22
172.168.001101 10.6
网络地址: 172.168.52.0/22
广播地址: 172.168.55.255/22
IP地址数: 2^10=1024
可用IP地址数: 2^10-2=1022
可用IP地址范围: 172.168.52.1/22-172.168.55.254/22

如果公司有 个人, 适合的掩码长度是 /26

11111111.11111111.11111111.11000000

255.255.255.192

10.1.56.6   /28
10.1.56.0000 0110
网络地址: 10.1.56.0/28
广播地址: 10.1.56.15/28
IP地址数: 2^4=16
可用IP地址数: 2^4-2=14
可用IP地址范围: 10.1.56.1/28-10.1.56.14/28

192.172.168.169 /27
192.172.168.101 01001
网络地址: 192.172.168.160/27
广播地址: 192.172.168.191/27
IP地址数: 2^5=32
可用IP地址数: 2^5-2=30
可用IP地址范围: 192.172.168.161/27-192.172.168.190/27

192.168.39.48 /19
192.168.001 00111.48
网络地址: 192.168.32.0/19
广播地址: 192.168.63.255/19
IP地址数: 2^13=8192
可用IP地址数: 2^13-2=8190
可用IP地址范围: 192.168.32.1/19-192.168.63.254/19

192.168.56.9 /19
192.168.001 11000.9
网络地址: 192.168.32.0/19
广播地址: 192.168.63.255/19
IP地址数: 2^13=8192
可用IP地址数: 2^13-2=8190
可用IP地址范围: 192.168.32.1/19-192.168.63.254/19

172.169.1.9 /6
101011 00.169.1.9
网络地址: 172.0.0.0/6
广播地址: 175.255.255.255/6
IP地址数: 2^26=67,108,864
可用IP地址数: 2^26-2=67,108,862
可用IP地址范围: 172.0.0.1/6-175.255.255.254/6

划分子网

向主机位借位形成子网.

可变长子网掩码 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
h>=5 主机位 5
n=3
可划分2^3=8个子网
掩码
255.255.255.111 00000
255.255.255.224
/27
子网网络号
192.168.1.000 00000 192.168.1.0/27
192.168.1.001 00000 192.168.1.32/27
192.168.1.010 00000 192.168.1.64/27
192.168.1.011 00000 192.168.1.96/27
192.168.1.100 00000 192.168.1.128/27
192.168.1.101 00000 192.168.1.160/27
192.168.1.110 00000 192.168.1.192/27
192.168.1.111 00000 192.168.1.224/27
广播地址
192.168.1.000 11111 /27
192.168.1.001 11111 /27
192.168.1.010 11111 /27
192.168.1.011 11111 /27
192.168.1.100 11111 /27
192.168.1.101 11111 /27
192.168.1.110 11111 /27
192.168.1.111 11111 /27

[例]

某公司 4 个部门, 每个部门最多 36 人
192.168.10.0 / 24 (主机位 8)
划分出合适的网络
掩码
网络号
子网数目

2^h-2>=36
h>=6
n=2
子网数目 2^2=4
掩码
255.255.255.11 000000
255.255.255.192
网络号
192.168.10.00 000000 192.168.10.0/26
192.168.10.01 000000 192.168.10.64/26
192.168.10.10 000000 192.168.10.128/26
192.168.10.11 000000 192.168.10.192/26

IP 编址

一个网络内拥有的 IP 地址数量为 (代表主机位位数).

因为网络号和广播地址不可以配置在设备上, 所以实际可用主机地址数为.

如果两个 IP 地址的网络位相同, 则这两个地址属于同一个网络, 可以不通过网关设备或路由器直接通信.

如果两个 IP 地址的网络位不同, 则需要借助网关设备和路由器进行通信.

使用默认掩码的就是有类地址.

无类地址就是经过子网划分的 IP 地址.

VLSM: 可变长子网掩码.

子网掩码变长, 主机位变少, 就会变少, 主机数目减少, 避免地址浪费. 主机位长度缩减, 网络位就会增加.

一个子网位能分出两个子网 ( 是子网位位数).

CIDR: 无类域间路由 (VLSM 逆运算)

子网掩码除了 VLSM 以外, 还可以变短进行网络信息的汇总, 这种操作方式就是 CIDR.

将不同网络的网络号中共同发生变化的位置当作主机位进行处理, 之后对外发布, 起到节省设备资源的作用.

推荐阅读
IPv6 IPv6 ARP协议 ARP协议 数据转发过程 数据转发过程 交换网络基础 交换网络基础 以太网帧结构 以太网帧结构 NAT网络地址转换 NAT网络地址转换

留言区

Are You A Robot?