在此處筆者討論的是IPv4的地址。
IPv4的IP地址,是采用4個字節的整數來表示,4個字節能夠表示發范圍是0-4294967295(無符號數)。
為了書寫方便,我們一般采用點分十進制的形式表示IPv4地址。從0.0.0.0到255.255.255.255分四個字節,每個字節的范圍都是0-255。
然而,不是所有的IP地址都能直接用的,其中有不少特殊用途的IP地址。比較為人熟知的特殊IP地址有三個范圍:
- 10.0.0.0--10.255.255.255 (A類私網地址)
- 172.16.0.0--172.31.255.255 (B類私網地址)
- 192.168.0.0--192.168.255.255 (C類私網地址)
如果你想了解更加具體的各個IP地址的用途,還是得去管理IP地址的IANA官網查看。
127.0.0.1地址
127.0.0.1代表着本地回環地址,但其實回環地址不只是一個,從127.0.0.0-127.255.255.255都是回環地址,發往這些地址的數據包都會被loop back。
如果你在本地設備上打開一個虛擬機,你一般會看見虛擬機有一個網絡IP為127.0.0.1。
0.0.0.0地址
根據RFC文檔,0.0.0.0/8可以表示本網絡中的所有主機,0.0.0.0/32可以用作本機的源地址,0.0.0.0/8也可表示本網絡上的某個特定主機。綜合起來可以說,0.0.0.0表示整個網絡。
嚴格來說,0.0.0.0已經不是一個真正意義上的IP地址了。它表示的是這樣一個集合:所有不清楚的主機和目的網絡。
在路由其中可以用0.0.0.0/0表示默認路由,作用是幫助路由器發送路由表中無法查詢的包。如果設置了全零網絡的路由,路由表中無法查詢的包都將送到全零網絡的路由中去。
255.255.255.255地址
255.255.255.255代表廣播地址。如果報文的目的地址是255.255.255.255,代表這是一個廣播報文,會發給局域網內的所有主機。其他主機收到廣播報文之后,會進行判斷這個廣播報文是否是發給自己的,如果是發給自己的,則進行處理,否則就將該廣播報文丟棄。
動態獲取IP
在我們電腦的ip配置里,有靜態配置ip地址和動態獲取ip地址兩種選擇。其中,動態獲取ip地址就用到了兩個特殊的IP地址,0.0.0.0地址和255.255.255.255。
對於動態獲取ip地址,如果你的電腦關機重啟了之后,則它的IP地址的空的,那這個時候如果想要網上沖浪,那你就需要向DHCP獲取一個IP地址。
那么,沒有IP地址,我們該怎么編輯該請求IP地址的報文呢,它的源地址是什么呢?同時,就如剛出生的嬰兒,你並不認識DHCP,你沒有DHCP的IP地址,那目的地址又是什么呢。
既然,我們不知道要發送給誰,那么,就暴力一點,我們進行廣播,發送給該局域網內的所有主機,此時目的地址就是廣播地址255.255.255.255了。其他主機收到廣播報文后,會進行判斷,如果是發給自己的,則進行處理,否則就把這個廣播報文丟棄。
此時,DHCP服務器終於收到了我的廣播了。但是,DHCP怎么知道我們是來請求IP地址的呢,所有我們就需要做一個標記,告訴DHCP服務器我們是來請求IP地址的,於是,在報文里的源地址填了0.0.0.0。
當DHCP服務器看見源地址是0.0.0.0時,它就知道了,我們急需一個IP地址,就會將一個沒有使用過的IP地址發送給我,並將這個IP地址標記為已使用。
此時,可能有些人會發現,嗯?我都沒有IP地址,那DHCP服務器怎么發送給我報文呢。這兒就涉及到了全球唯一的Mac地址了。
