看TCP/IP详解 卷1这部大作的时候,看到里面计算广播地址的方法,就在自己的机器 上测试了一下,结果遇到了一个小困难:我的机器上IP地址和广播地址不在一个网段:
广播地址就是把IP地址中主机号的那几位设置为1,可是这里看起来确实都设置为1了(广播地址的最后一段为255),为什么广播地址的前一段是7,IP地址却是5?
解决问题的关键在子网掩码上:
从IP地址的格式来看,我的IP地址属于A类,由于IP地址总共32位,A类地址中第0位是0,第1~7位是网络号(固定格式),后24位是主机号,而子网掩码是255.255.252.0,二进制表示为11111111 11111111 11111100 00000000,子网掩码中值为1的bit留给了网络号和子网号,值为0的bit留给了主机号,可以看出我的子网号是从第8~21位,所以第22~31为是留个我的主机号的。我的IP地址是10.200.5.222,对照子网掩码,前16位是网络号和子网号的一部分,IP地址第16~23位设置的值是5,即00000101,这里第21位的1是属于子网号的位,第25位的1是属于主机号的位。看到这里就比较清晰了,我的主机所在的网络的网络号和子网号是由IP地址的第0~21位表示的,即10.200.4,将IP地址后10位表示主机号的位全部置1,得到的广播地址就是10.200.7.255
我的系统是Ubuntu14.04