连接在网络中的每一个设备都需要唯一的IP地址,但是由于我们目前主流在使用的IPv4版本的IP 地址其实是不够现在的互联网使用者分的,所以IP地址被分为了公网IP地址和私网IP地址,并且使用了NAT技术来缓解IP不够的问题,关于NAT技术在这里有写,有兴趣的可以点击阅读。在IP地址和子网掩码中简单了说了windows系统怎么查看IP地址并且谈到了用子网掩码来判断两个IP地址是不是同一网段来决定数据的转发。
私有IP地址段
IP地址是由32位的二进制表示的有层次的地址,也就是32个0和1中间用英文的句号分隔,每8位一组一共四组,但显示一堆的0和1并不容易阅读,于是我们使用了最常用的10进制来表示IP地址,由于8位二进制数最大的十进制是二的8次方等于256,于是每组最大的数就是255(从0开始表示0到255刚好是256个数)所以IP地址最大的取值是255.255.255.255。每个组可以有256个IP地址。比如我们常用的192.168.1.*,最后的*号就可以取值0到255,IP地址配合子网掩码来决定自己哪些是网络位,哪些是主机位,网络号一致的就是同一网段也可以说是同一组,主机位决定整个组里可以容纳多少个主机。
默人网络号
子网掩码也是四组用点分隔和IP地址很像,但是他有明确的特征那就是二进制下他的1总是从左边开始连续的,无一例外,对应于子网掩码二进制下的1的就是网络位,0的就是主机位。比如192.168.1.1的默认子网掩码是255.255.255.0转换成二进制就是11111111.11111111.11111111.00000000,根据子网掩码左边连续1的特点,255.0.0.255决不是一个正确的子网掩码。计算的方式就是把IP地址和子网掩码都转换成二进制,然后做与运算,1和1得1,0和0得0,1和0或0和1得0,得到的结果一样就是同一网段,不同就不是。比如192.168.1.1和192.168.1.200在默认的子网掩码255.255.255.0下是不是同一组?
255.255.255.0
从以上图看到计算结果是一样的,对应于255.255.255的是网络位,对应于0的则是主机位。如果我们改变子网掩码,那么192.168.1.1和192.168.1.200还是一组的吗?比如子网掩码是255.255.255.128。让我们用以上的方式计算,可以看到结果并不一样,它可以把一个大的地址块划分成小的地址块,这就是子网掩码的作用,子网掩码可以加长1的数量也可以减少1的数量,所以如果想让192.168.1.1和192.168.2.1在同一个网段内,可以通过减少子网掩码二进制1的数量比如255.255.0.0。自己可以算下他们的结果是不是一样的。
255.255.255.128
在图片中计算出的192.168.1.0就是网段号,也可以理解成组号或者微信群,里面有成员,那么有多少个成员呢?显然不同的子网掩码不同,对于默认的255.255.255.0来说那就是256,但对于我们改变后的255.255.255.128来说就是128个,因为最大取值是256,减去128得128。那就是128个成员,两个组。他们192.168.1.0到192.168.1.127和192.168.1.128到192.168.1.255。所以255.255.255.192的子网掩码就是256-192=64。每组64个成员一共4组。192.168.1.0到192.168.1.63,192.168.1.64到192.168.1.127,192.168.1.128到192.168.1.191,192.168.1.192到192.168.1.255。
IP和子网络掩码
你会发现IP地址通常从1开始,其实二进制下的主机位全0代表着网段号,主机位全1代表着广播号,所以一组里最前面和最后面的都不会分配给主机使用。如果你在WINDOWS系统中给网卡指定IP地址写了192.168.1.0和255.255.255.0是会报错的。因为他的主机位是最后一组全0,所以是网段号不能分配给主机,同样192.168.1.255子网掩码是255.255.255.0也不能分配给主机,因为是广播号。那192.168.1.128和子网掩码255.255.255.128可以分配给电脑不?
IP地址
是同一组的成员就直接通讯,如果不是同一组的成员那么就需要网关来向外转发。所以在电脑中当你要访问一个IP地址时,那么首先会经过计算,如果和网卡所有的IP地址的结果一致那就意味着在同一网段,直接可以交给交换机利于二层mac地址来通讯,如果不同那就需要交给网关来继续向外部转发。这里所说的网关其实也是同一网段的一个IP地址,很多家用路由器的网关都是路由器本身的管理地址。和网卡获取到的IP地址是同一组的可以直接通讯。这样路由器收到不是同网段的地址就通过WAN口发送到了互联网了。如果是目的IP是同网段的,则会发送到对应的LAN口而不会向WAN发送。