计算机网络之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.3
和 255.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.0
和 192.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