子网掩码
子网掩码的左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。
子网掩码的作用就是划分网络位和主机位,注意这里只是逻辑上的划分。 其实就是用来告诉主机有哪些ip地址是跟自己在同一个广播域里,广播地址又是什么, 当主机与同一个广播域里的其他主机通讯时就可以直接通讯,如果不在同一个广播域里,就发给默认网关。
(同一逻辑子网的情况)
(不同逻辑子网的情况)
具体的运算是这样的:
源主机使用子网掩码和目的ip地址做与运算,子网掩码和源主机ip地址与运算,这两个结果作比较,如果想等,表示在同一子网中,直接投递到目的主机。
如果不相等吗,表示不同子网,所以扔给路由器。
我们举个例子,比如子网掩码是26(这种表示更加简洁),即11111111 11111111 11111111 11000000
,转化成十进制就是255.255.255.192
(这个是我们电脑上看到的)。
比如一个以太网上有八台电脑,我们分别标记为A - H,现在A(ip地址为192.168.1.10)要发送一个数据给ip地址为192.168.1.20
。
A会先进行两次与运算,分别是192.168.1.10
和255.255.255.192
, 192.168.1.20
和 255.255.255.192
, 得到的结果都是192.168.1.0
,因此在一个子网中,我们通过ARP广播即可。
如果A要给ip地址为192.168.1.200
的主机发送消息。A同样会先进行两次与运算,分别是192.168.1.10
和255.255.255.192
, 192.168.1.200
和 255.255.255.192
, 得到的结果不一样,因此在不在一个子网中,我们通过默认网关发送即可。