1. 程式人生 > >IP地址和廣播地址不在一個網段內時根據IP地址和子網掩碼計算廣播地址

IP地址和廣播地址不在一個網段內時根據IP地址和子網掩碼計算廣播地址

看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