以前链接路由器配置静态IP的时候只是知道将子网掩码改成255.255.255.0,IP地址前三个数字和网关一样最后一个数字改成未被占用的IP就好了,一直没有理解子网掩码到底代表什么意思。之前上《计算机网络》这门课的时候好像听老师讲过,没怎么仔细听,只知道网络地址和主机地址什么的.
今天看了《TCP/IP详解》才对子网掩码有所了解。下面做个总结。
子网掩码其实是为了分割网络,比如一个A类地址能容纳的主机数有2^24-2个主机,一般一个组织是不可能用到这么多地址的,势必会造成浪费。但是我们可以通过子网掩码来将一个A类地址划分成多个子网,根据IP和子网掩码可以判断同一个网络地址下的主机是否在同一个网段.
子网掩码会将IP地址分成三部分,网络号、子网号、主机号。网络号可以直接从IP地址得到,子网号则是IP和子网掩码作&运算减去网络号,剩下的一部分就是主机号.可以根据网络号和子网号来确定两个主机是否处在同一网段
如A机Ip为192.168.1.2,B机Ip为192.168.1.126,子网掩码都是255.255.255.224。
转换成16进制如下:
A机:11000000 10101000 00000001 00000010 &运算后: 11000000 10101000 00000001 00000000
B机:11000000 10101000 00000001 01111110 &运算后: 11000000 10101000 00000001 01100000
掩码: 11111111 11111111 11111111 11100000
&运算后得到的结果不同,所以可以得出A机和B机并不在同一个网段内.
当A机发送数据给B机时,会先将B机的IP与子网掩码进行&运算查看是否在同一个网段,如果不在同一网段内则会把数据发送给网关,在同一个网段的可以直接在数据链路层通信。