Something about IPv4

前言

虽然IP v6是未来的主流,但目前学校以及大量我国单位还在用旧的v4

什么是IP

Internet Protocol

其用十进制表示,看起来像这样:192.168.1.1 (就是4段0~255的数)

用2进制表示,是这样:11111111.11111111.111111111.00000000 = 255.255.255.0

平时写代码的时候,只是操作单个主机、单个IP。

一旦把管理范围扩大,我们就需要管理整个网络了,所以真实世界的IP不是孤立存在的,而是成群结队的出现。

比如一个范围由192.168.0.0192.168.255.255的网络

  1. 这个网络的第一个IP地址, 192.168.0.0,被当成这个网络的标识

  2. 该网络的最后一个地址,192.168.255.255,会被当成广播地址,向它发信息,那条信息会被广播到该网络的每一个地址

由此一来,IP必须由两部分组成:网络号+主机号

举个例子:在网络202.93.0.0里,某个IP202.93.44.55的主机号是44.55,网络号是202.93

地址要分类

人们最开始把所有IP v4地址像这样分(假设网络号=c主机号=x):

Class      Theoretical Address Range
A      0.0.0.0 to 127.255.255.255      c.x.x.x
B      128.0.0.0 to 191.255.255.255      c.c.x.x
C      192.0.0.0 to 223.255.255.255      c.c.c.x
D      224.0.0.0 to 239.255.255.255      I don't know

IPv4总数是2的32次方=4,294,967,296,不够用

所以聪明的人类又开始动歪脑筋折磨后人了(但事实上只需要写一个程序自动帮我们计算,只是不知道为什么学校要求学生手动计算这个东西,真麻烦)

具体的原理可以参照 Data Communications and Networking - Behrouz A. Forouzan 这本书

我这里只讲一讲应试教育的解题方法(其实我压根就不该写这么多,直接写题目才是正确的套路)

题目:将一个 B类 的网络172.17.0.0划分为14个子网,求每个子网的子网掩码 and 每个子网的IP范围

(1)

因为 是B类网,所以 122.17固定不变,0.0可变; 0.0变为 2进制 为00000000.00000000

因为要划分为 14 个子网,我们需要思考2的多少次方刚好 > 14

因为子网掩码本质上是用 1 代表 网络位,0代表主机位

所以该题的子网掩码的2进制形式变为了 11111111.11111111.11110000.00000000

把它变成10进制: 8个1为255,8个0为0

11110000的转换方法:

所以最终该题子网掩码变为了 255.255.240.0

(2)

不知道原因,但我从我课本的描述中总结出了地址划分的规律

初始地址为 172.17.0.1

172.17.0.1 ~ 172.17.15.254
172.17.16.1 ~ 172.17.31.254
172.17.32.1 ~ 172.17.47.254
... ...
172.17.224.1 ~ 172.17.239.254
172.17.240.1 ~ 172.17.255.254

不要问我 首和尾 哪儿去了,一个用于标识网络,一个用于广播

后续

至于更多的题,我暂时不想写了

Last updated