当前使用的IP地址有4个字节(32bit)组成,即IPV4编码方式。每个IP地址包括两部分:网络号和主机号。当分配给主机号的二进制位越多,则能标识的主机数就越多,相应地能标识的网络数就越少,反之同理。
ip地址中的网络号,主机号有什么作用?
打个很简单的比喻:网卡的MAC地址就像你身份证上的身份证号码,虽然是唯一的,但是寻址起来很麻烦;而IP地址就像你的家庭详细地址,楼上说的对:每个IP地址都是由两部分构成:网络号,主机号.其中,网络号标识某个网络,主机号标识在该网络上的一个特定的主机。这样就形成了一定的格式,正如地址写的是什么省,什么市,什么镇一样有层次感。这样通通信起来很容易定位。
如何计算网络号和主机号?
子网掩码的作用就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码与ip地址按位与,就是ip地址的网络号。如:
① IP地址 192.9.200.13
转换为二进制11000000000010011100100000001101
② 子网掩码255.255.255.0
转换为二进制11111111111111111111111100000000
③ 将两个二进制数做按位与(&)运算后得出的结果即为网络部分
11000000000010011100100000001101
& 11111111111111111111111100000000
-------------------------------------------------------------
11000000000010011100100000000000
= 192 . 9 . 200 . 0
即网络号为192.9.200.0
④将子网掩码取反再与IP地址按位与(&)后得到的结果即为主机部分
11000000000010011100100000001101
& 00000000000000000000000011111111 --- >已将掩码取反
------------------------------------------------------------
00000000000000000000000000001101
= 0 . 0 . 0 . 13
即主机号为13(或者0.0.0.13)。
如何计算ip的二进制位?
按点分割数字,按每个数字算出二进制形式,然后拼接在一起。
如:128.11.3.31
按点分割后是
128 11 3 31
每位的二进制形式
10000000 00001011 00000011 00011111
二进制拼接
10000000000010110000001100011111
ps:算十进制数字转二进制数字小窍门
每8位二进制,各位从左到右对应的权值分别是 128,64,32,16, 8,4,2,1 。(即2的n-1次方,n是从右到左当前位的位数)
所以随便拿一个256以内的数给你化为二进制,都可以分解为权值相加。对应的权值的位值为1,其他位为0即可。比如137,
137=128+8+1,所以这几个权值对应的位应该是1,其他位为0,化为二进制即是:
1000 1001
ip地址分类
IP地址分为五类,A类保留给政府机构,B类分配给中等规模的公司,C类分配给任何需要的人,D类用于组播,E类用于实验,各类可容纳的地址数目不同。
A、B、C三类IP地址的特征:当将IP地址写成二进制形式时,A类地址的第一位总是0,B类地址的前两位总是10,C类地址的前三位总是110。
<img class="alignnone size-full wp-image-446" alt="ip地址分类" src="//pic.ikafan.com/imgp/L3Byb3h5L2h0dHAvd3d3LmJvNTYuY29tL3dwLWNvbnRlbnQvdXBsb2Fkcy8yMDE0LzExL2lwX2NsYXNzLnBuZw==.jpg" width="598" height="382" /></a></p>
子网掩码
子网掩码除了可以使用255.255.255.0的这种表现形式外,还可以使用/30这种表现形式。如,nginx的配置文件中就可以使用这种形式定义网络。
斜线/后的数字就是子网掩码中1的个数。