初识网络协议:什么是IP地址
在windows系统中,我们可以用ipconfig
来查看本地IP地址。
这里我们可以看到IP地址是192.168.1.7
,可是当我们在浏览器查看自己IP地址的时候,却发现IP地址和上面的不一样:
在这里,101.86.19.217
和192.168.1.7
都是IP地址,只不过前者是公有IP地址,后者是私有IP地址。
那到底什么是IP地址?
IP由网络地址和主机地址组成,都是32位二进制,每8位转换成十进制并且插入一个.
来提高可读性。
网络地址可用来识别设备所在的网络,网络地址位于IP地址的前段。当组织或企业申请IP地址时,所获得的并非IP地址,而是取得一个唯一的、能够识别的网络地址。同一网络上的所有设备,都有相同的网络地址。IP路由的功能是根据IP地址中的网络地址,决定要将IP信息包送至所指明的那个网络。
主机地址
主机地址位于IP地址的后段,可用来识别网络上设备。同一网络上的设备都会有相同的网络地址,而各设备之间则是以主机地址来区别。
IP地址分为五类:
A类 | ||
---|---|---|
0 | 网络号(7位) | 主机号(24位) |
B类 | |||
---|---|---|---|
1 | 0 | 网络号(14位) | 主机号(16位) |
C类 | ||||
---|---|---|---|---|
1 | 1 | 0 | 网络号(21位) | 主机号(8位) |
D类 | ||||
---|---|---|---|---|
1 | 1 | 1 | 0 | 多播组号(28位) |
E类 | |||||
---|---|---|---|---|---|
1 | 1 | 1 | 1 | 0 | 留待后用(27位) |
常见的是A、B、C三类IP地址:
类别 | IP地址范围 | 最大主机数 | 私有IP地址范围 |
---|---|---|---|
A | 0.0.0.0-127.255.255.255 | 16777214 | 10.0.0.0-10.255.255.255 |
B | 128.0.0.0-191.255.255.255 | 65534 | 172.16.0.0-172.31.255.255 |
C | 192.0.0.0-223.255.255.255 | 254 | 192.168.0.0-192.168.255.255 |
IP地址中第一个和最后一个主机号不可分配,所以最大主机数为2的主机号次平方减2,以C类为例:最大主机数 = 2^8 - 2 = 256 - 2 = 254。
私有地址主要用于在局域网中进行分配,在 Internet上是无效的。这样可以很好地隔离局域网和 Internet。私有地址在公网上是不能被识别的,必须通过NAT将内部IP地址转换成公网上可用的IP地址,从而实现内部IP地址与外部公网的通信。公有地址是在广域网内使用的地址,但在局域网中同样也可以使用,除了私有地址以外的地址都是公有地址。
不过大多数情况,我们不用A、B、C三类地址,而是用无类型域间选路(CIDR)。所谓CIDR,就是将32位的IP地址一分为二,前面是网络号,后面是主机号。
如192.168.1.9/24
,这里有一个斜杠,这种地址表示形式就是CIDR。斜杠后面24的意思是32位中,前24位是网络号,后8位是主机号。伴随着CIDR存在的,一个是广播地址,192.168.1.255。如果向这个地址发送消息,那么这个网络(192.168.1)里面的所有机器都可以收到。一个是子网掩码,255.255.255.0。将子网掩码和IP地址进行AND计算,就可以得到网络号。二进制中1和任何数AND都是原来的数,0和任何数AND都是0,比如192 AND 255 = 11000000 AND 11111111 = 11000000 = 192,9 AND 0 = 1001 AND 0 = 0。所以知道IP地址192.168.1.9,知道子网掩码255.255.255.0,就可以知道网络号是192.168.1,主机号是9。
那么我们再来计算一下13.144.163.91/22这个CIDR的第一个地址、子网掩码和广播地址。
22不是8的倍数,只能转换成二进制来看,前16位可以不动,即13.144保持不变。163需要变成10100011,拆分成<101000><11>,网络号就是13.144.<101000>,主机号是<11>.91。第一个地址是13.144.<101000><00>.1,即13.144.160.1。子网掩码是255.255.<111111><00>.0,即255.255.252.0。广播地址为13.144.<101000><11>.255,即13.144.163.255。
参考资料:《趣谈网络协议》