计算机网络之IP地址、子网掩码、网关详解

IP地址

由于IPv6尚未普及,这里的 IP地址为IPv4地址。
IP地址相当于互联网上的门牌号, 由 4字节, 也就是 32位 的二进制码组成,包含了网络号( net-id )和主机号( host-id )。

  • 网络号( net-id ): 标志主机(或路由器)所连接到的网络。
  • 主机号( host-id ): 网络号范围内唯一的主机(或路由器)。
IP地址种类 二进制组成(前缀位+网络位+主机位) IP范围 网络数 主机数/网络
A类地址 0+7位网络号+24位主机号 1.0.0.0 - 127.255.255.255 2^7-2 2^24-2
B类地址 10+14位网络号+16位主机号 128.0.0.0 - 191.255.255.255 2^14-1 2^16-2
C类地址 110+21位网络号+8位主机号 192.0.0.0 - 223.255.255.255 2^21-1 2^8-2
D类地址 1110+多播地址(用于多播) 224.0.0.0 - 239.255.255.255 - -
E类地址 1111+保留位(不开放, 保留使用) 240.0.0.0-249.255.255.255 - -

前缀位标识是什么种类的网络, 0为A类地址, 10为B类地址, 110为C类地址, 依次类推。

网络数计算

网络数就是一种网络的子网数, 比如A类地址, 可以分为多少个子网。
看表格可以推出网络数的计算公式为: 2^网络号位数
规定网络地址全为 0 的IP地址是保留地址,意思是“本网络”。

  • 在A类地址中,实际上 0.0.0.0 是不指派的,而可以指派的最小网络是 1.0.0.0;网络地址为 127 的A类IP地址(比如常用的 127.0.0.1)保留作为本地软件环回测试本主机的进程之间的通信。所以A类地址网络数为 2^7-2
  • 在B类地址中,实际上 128.0.0.0 是不指派的,而可以指派的最小网络是 128.1.0.0,所以B类地址网络数是 2^14-1
  • 在C类地址中,实际上 192.0.0.0 是不指派的,而可以指派的最小网络是 192.0.1.0,所以C类地址网络数是 2^21-1

主机数计算

主机数就是一个子网里面可以容纳多少台主机。
看表格可以推出主机数的计算公式为: 2^主机号位数-2
主机号全为0表示该网络,而主机号全为1表示广播地址, 排除掉这两个。
比如A类地址 1.0.0.0 表示主机所在的网段的网络地址, 1.255.255.255 为该网段的广播地址。

私有IP地址

经常可以看到 192.168.1.101 这类的IP地址, 这些是私有IP地址, 专用地址, 也就是局域网分配的地址。
公网IP地址是需要掏钱申请的,私有IP地址不用掏钱, 但是仅限内网使用, 目的是为了节约公网IP。

IP地址种类 私有IP范围
A类地址 10.0.0.0 - 10.255.255.255
B类地址 172.16.0.0 - 172.31.255.255
C类地址 192.168.0.0 - 192.168.255.255

路由器看到专用地址就不转发,所以说专用地址作为目的地址是不可能在因特网上传送的。专用IP地址也可叫做可重用地址。那好,问题来了,如果配置了这些专用地址的主机想和因特网上的主机通信,怎么办呢?NAT(network address translation: 网络地址转换)在这种情况下就应运而生了。NAT就是将这种地址转换成有效的外部全球IP地址,使得整个专用网只需要一个全球IP地址就可以与因特网联通。

使用NAT技术,需要在专用网(整个网络内部都是使用的这种地址)连接到因特网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。但是NAT并不能从根本上解决IP地址的耗尽问题,因为NAT并不能从根本上解决IP地址的耗尽问题,因为NAT并没有增加IP地址的个数。而真正解决IP地址耗尽问题的是IPv6。

子网掩码

计算网络地址就是判断网络中的计算机在不在同一网段,在就能通,不在就不能通。
将IP地址和子网掩码都换算成二进制,然后进行与运算,结果就是网络地址, 也就是网络号。
子网掩码的1和0必须连续, 比如 11111111.00000000.00000000.00000000 , 即 255.0.0.0

以上的主机数和网络数都是使用标准子网掩码算出来的, 比如A类地址的标准子网掩码为 255.0.0.0, B类地址的标准子网掩码为 255.255.0.0, C类地址的标准子网掩码为 255.255.255.0

比如 126.1.2.3255.0.0.0进行二进制的按位与运算, 得到网络地址 126.0.0.0。这个 126.0.0.0也就是上面计算主机数排除掉的该网段内其中一位IP地址。

当然还有非标准的子网掩码。具体参考 常用计算例子 章节的第1题。

网关

网关是用来进行跨网段通信的工具, 本质是一个IP地址。

比如一个C类网 A192.168.1.101 想要和 B192.168.0.101 通信, 标准的子网掩码是 255.255.255.0, 进行按位与运算获得的网络地址为 192.168.1.0192.168.0.0, 也就是不在同一个网段内, 那么只通过交换机是不能进行通信的, 必须借助路由器。

可以把网关想象一个国家的外交部。A想要和B通信, 但是A在中国, B在美国, 那么就不能直接面对面谈话(借助交换机), 这时候, A可以把信息传递给中国的外交部X, 由X交给美国的外交部Y, 再由Y交给B。

也就是说, 如果内网IP地址想要访问不是同一网段的主机, 那么必须借助网关. 将数据发送到另一个网关。

常用计算例子

1、利用子网数目计算子网掩码
把B类地址 172.16.0.0 划分成 30 个子网络,它的子网掩码是多少?
①将子网络数目 30 转换成二进制表示 11110
②统计一下这个二进制的数共有 5
③注意:当二进制数中只有一个1的时候,所统计的位数需要减1(例如:10000要统计为4位)
④将B类地址的子网掩码 255.255.0.0 主机地址部分的前 5 位变成 1
⑤这就得到了所要的子网掩码(11111111.11111111.11111000.00000000 )255.255.248.0

2、利用主机数目计算子网掩码
把B类地址 172.16.0.0 划分成若干子网络,每个子网络能容纳 500 台主机,它的子网掩码是多少?
①把 500 转换成二进制表示 111110100
②统计一下这个二进制的数共有 9
③将子网掩码 255.255.255.255 从后向前的 9 位变成 0
④这就得到了所要的子网掩码(11111111.11111111.11111110.00000000)255.255.254.0

3、利用子网掩码计算最大有效子网数
A类IP地址,子网掩码为 255.224.0.0 ,它所能划分的最大有效子网数是多少?
①将子网掩码转换成二进制表示 11111111.11100000.00000000.00000000
②统计一下它的网络位共有 11
③A类地址网络位的基础数是 8 ,二者之间的位数差是 3
④最大有效子网数就是2^3,即最多可以划分 8 个子网络。

4、利用子网掩码计算最大可用主机数
A类IP地址,子网掩码为 255.252.0.0 ,将它划分成若干子网络,每个子网络中可用主机数有多少?
①将子网掩码转换成二进制表示 11111111.11111100.00000000.00000000
②统计一下它的主机位共有 18
③最大可用主机数就是 2^18-2(除去全是0的网络地址和全是1广播地址),即每个子网络最多有 262142 台主机可用。

5、利用子网掩码确定子网络的起止地址
B类IP地址 172.16.0.0 ,子网掩码为 255.255.192.0 ,它所能划分的子网络起止地址是多少?
①利用子网掩码计算,最多可以划分 4 个子网络
②利用子网掩码计算,每个子网络可容纳 16384 台主机(包括网络地址和广播地址)
③用 16384 除以 256 (网段内包括网络地址和广播地址的全部主机数),结果是 64
④具体划分网络起止方法如下:
172.16.0.0~172.16.63.255
172.16.64.0~172.16.127.255
172.16.128.0~172.16.191.255
172.16.192.0~172.16.255.255

参考资料