在TCP/IP網(wǎng)絡(luò )系統中,對于一臺計算機或路由器、交換機設備來(lái)說(shuō),要實(shí)現設備之間通信的前提是擁有一個(gè)正確的IP
地址。在TCP/IP網(wǎng)絡(luò )中,將計算機、路由器、交換機等網(wǎng)絡(luò )設備統稱(chēng)為主機(或節點(diǎn))。在通信過(guò)程中,不管使用什么樣
的通信協(xié)議,所有的數據都必須封裝為IP數據包,也就是說(shuō)必須要為第一個(gè)數據指定IP地址,通過(guò)IP地址告訴計算機
將數據發(fā)誰(shuí),同時(shí)某一臺計算機在接收一個(gè)數據包時(shí)也可以根據IP地址知道該數據包是由誰(shuí)發(fā)送的。然而,IP地址的
劃分和管理不是無(wú)序的,而必須遵守相應的規定和規律。
IP地址的格式
數據包在網(wǎng)絡(luò )上傳輸時(shí),它的目的IP地址是始終不變的,路由器的任務(wù)根據自己的路由表,選擇到目標IP的最佳路徑
口,然后重寫(xiě)數據包第二層的幀頭(MAC地址)信息,讓數據包發(fā)往下一跳。不變的IP地址是將數據包正確發(fā)往目的地
的基礎。
IP地址的組成
目前廣泛應用的IP版本為IPv4,它使用32位的二進(jìn)制地址,每個(gè)地址由4個(gè)八位組構成,每個(gè)八位組被轉化成十進(jìn)制并
用“.”來(lái)分割,即常說(shuō)的“點(diǎn)分十進(jìn)制表示法”。
二進(jìn)制:
11000000 10101000 00001010 00000001
十進(jìn)制:
192
168
10
1
網(wǎng)絡(luò )地址與主機地址
每一個(gè)利用TCP/IP通信的主機都需要一個(gè)唯一的IP地址,IP地址被分成網(wǎng)絡(luò )地址和主機地址兩部分,這種尋址策略有
些類(lèi)似接到(網(wǎng)絡(luò )地址)和門(mén)牌號(主機地址)。
每個(gè)房屋的確切地址都有自己的街道和門(mén)牌號來(lái)共同決定,對于整個(gè)城市來(lái)說(shuō),某個(gè)街道和門(mén)牌號是唯一的,可以功
過(guò)街道和門(mén)牌號找到某個(gè)房屋。例如,要去往某處(江蘇路1號)時(shí),應先找哦啊到該處所在的街道(江蘇路),然后再依照
門(mén)牌號尋找確切的地址(1號)。
IP地址和街道地址與門(mén)牌號的作用相似。IP地址中的網(wǎng)絡(luò )地址就好比街道地址,用來(lái)標識整個(gè)網(wǎng)段;主機地址就好比門(mén)
牌號,用來(lái)標識某個(gè)確切的主機。
對于一個(gè)IP地址,外界只看它的網(wǎng)絡(luò )地址,不關(guān)心其內部的網(wǎng)絡(luò )結構。當外界要向某個(gè)主機發(fā)送 數據包時(shí),它只看主機
IP地址中的網(wǎng)絡(luò )地址,當數據包到達目標主機所在的網(wǎng)段后,再依靠主機地址把數據包發(fā)給目標主機。例如,路由器將
對所有地址為192.168.1.0的數據包作同樣處理。當路由器收到一個(gè)發(fā)往192.168.1.2的數據包時(shí),它查看自己的路由表,發(fā)
現通過(guò)E1口可以到達192.168.1.0網(wǎng)絡(luò ),于是路由器會(huì )直接將數據包發(fā)往E1端口,而不關(guān)心目標IP地址的主機地址具體是
多少;數據包到達E1口以后,路由器發(fā)現本地連接著(zhù)192.168.1.0的網(wǎng)絡(luò ),于是它查看ARP表得到主機192.168.1.1的MAC
地址,最后將IP數據包發(fā)送給目標主機。
利用RFC中的一段定義“名字、地址和路由這些概念有很大的不同。一個(gè)名字說(shuō)明找的東西;一個(gè)地址說(shuō)它在哪里;一
個(gè)路由說(shuō)明如何到達那里”。它說(shuō)明了設備名稱(chēng)、設備地址(包括MAC地址和IP地址)和路由器之間的關(guān)系,這里路由器
負責將數據包轉發(fā)到相應的網(wǎng)絡(luò ),使用ARP來(lái)到IP地址對應設備的MAC地址,MAC地址與設備名稱(chēng)之間存在著(zhù)一一對
應關(guān)系。
在TCP/IP網(wǎng)路中,設備地址由IP地址和MAC地址組成。IP地址是一個(gè)邏輯地址,可以由網(wǎng)絡(luò )管理通過(guò)相應的機制進(jìn)行指
定;而MAC地址是一個(gè)物理地址,在設備出廠(chǎng)時(shí)已經(jīng)被分配了一個(gè)全球唯一的MAC地址,在實(shí)際通信中,邏輯地址最
終要轉換成物理地址。
IP地址的分類(lèi)
20實(shí)際70年代初,當Internet工程師們設計IP地址時(shí),認為32位邏輯地址已經(jīng)足夠用了,因為在當時(shí)的條件下32位的地址
空間已經(jīng)足夠大了,能夠提供2^32(4294967296,40多億)個(gè)獨立的地址,這個(gè)邏輯地址的分配和管理策略就是IPv4。同
時(shí),為了有效地利用和管理這些地址,針對網(wǎng)絡(luò )規模大小的不同,還采用了分組的方法,有的分組較大,有的分組很小
這種管理上的分組也稱(chēng)為地址類(lèi)。
IPv4是基于32bit(位,比特)地址方案,理論上可以支持40多億臺主機。為了適應不同的網(wǎng)絡(luò )需求,
IPv4地址被分成了5類(lèi),分別是A類(lèi)、B類(lèi)、C類(lèi)、D類(lèi)和E類(lèi),其分配由因特網(wǎng)地址授權委員會(huì )(IANA)
統一管理。
A類(lèi): 網(wǎng)絡(luò ) 主機 主機 主機
B類(lèi):
網(wǎng)絡(luò ) 網(wǎng)絡(luò ) 主機 主機
C類(lèi):
網(wǎng)絡(luò ) 網(wǎng)絡(luò ) 網(wǎng)絡(luò ) 主機
D類(lèi):
組播地址
E類(lèi):
供IETF科研用
5類(lèi)IP地址的千類(lèi)(A類(lèi)、B類(lèi)、C類(lèi))被用于全球唯一的單播地址;D類(lèi)和E類(lèi)地址為組播和試驗目的保留。
目前,全球有3個(gè)區域因特網(wǎng)注冊機構負責為ISP和組織分配成塊的IP地址。其中美國因特網(wǎng)地址注冊機構
(ARIN)為北美洲、中美洲和南美洲提供服務(wù);歐洲網(wǎng)絡(luò )信息中心(PIPE NCC)為歐洲和非洲提供服務(wù);亞太
網(wǎng)信息中心(APNIC)為亞洲地區提供服務(wù)。如果想得到這3個(gè)注冊機構的詳細信息,請參見(jiàn):
http://www.arin.com、
http://www.ripe.com和
http://www.apnic.com。
A類(lèi)地址
A類(lèi)地址是網(wǎng)絡(luò )中最大的一類(lèi)地址,它的缺省的子網(wǎng)掩碼是255.0.0.0,它使用IP地址中的第一個(gè)八位組表述
網(wǎng)絡(luò )地址。A類(lèi)地址的結構使每個(gè)網(wǎng)絡(luò )但擁有的主機數非常多,因此A類(lèi)地址是為巨型網(wǎng)絡(luò )(或超大型網(wǎng)絡(luò ))
所設計的。
A類(lèi)地址的第一個(gè)八位組的第一位總是被設置為0,這就是限制了A類(lèi)地址的第一個(gè)八位組的值始終小于127,
也就是僅有127個(gè)可能的A類(lèi)地址。
A類(lèi)地址:
0xxxxxxx 主機 主機 主機
實(shí)際上,A類(lèi)地址的范圍是1~126。雖然從理論上講,127.x.x.x和0.0.0.0也屬于A(yíng)類(lèi)地址,但是127.x.x.x已經(jīng)被
保留作回路測試之用,網(wǎng)絡(luò )0.0.0.0也保留于廣播地址(未知網(wǎng)絡(luò )),所以他們不能分配給任何網(wǎng)絡(luò )。
因為有3個(gè)八位組用于表示主機地址,所以每個(gè)A類(lèi)網(wǎng)絡(luò )的主機數的可能值是16777216(2^24),但是由于全0的
主機地址表示網(wǎng)絡(luò )、全1的主機地址表示到這個(gè)網(wǎng)絡(luò )的定向廣播,所以實(shí)際的主機數比可能的主機數少2。
主機地址的運算方法是2N-2(N是主機部分的位數,例如A類(lèi)地址就是24)。
B類(lèi)地址
B類(lèi)地址的缺省子網(wǎng)掩碼255.255.0.0,B類(lèi)地址使用前兩個(gè)八位組表示網(wǎng)絡(luò )地址,后兩個(gè)八位組表示主機地址。
設計B類(lèi)地址的目的是支持中到大型網(wǎng)絡(luò )。
B類(lèi)地址的第一個(gè)八位組的前兩位總是被置為10,所以B類(lèi)地址的范圍是從128.0.0.0到191.255.0.0。
B類(lèi)地址:
10xxxxxx
xxxxxxxx
主機
主機
B類(lèi)地可能擁有的網(wǎng)絡(luò )數是16384(2^14)(實(shí)際上要減去兩個(gè)特例),每個(gè)網(wǎng)絡(luò )可能擁有的主機數是65536(2^16)。
C類(lèi)地址
C類(lèi)地址的子網(wǎng)掩碼是255.255.255.0,C類(lèi)地址使用前3個(gè)八位組表示網(wǎng)絡(luò )地址,最后一個(gè)八位組表示主機地址。
設計C類(lèi)地址的目的是支持大量的小型網(wǎng)絡(luò ),因為這類(lèi)地址擁有的網(wǎng)絡(luò )數目很多,而每個(gè)網(wǎng)絡(luò )所擁有的主機地
址數卻很少。
C類(lèi)地址的第一個(gè)八位組的前3位總是被置為110,所以C類(lèi)地址的范圍是從192.0.0.0到223.255.255.0。
C類(lèi)地址:
110xxxxx xxxxxxxx 主機 主機
C類(lèi)地址可能擁有的網(wǎng)絡(luò )數是2097152(2^21),每個(gè)網(wǎng)絡(luò )可能擁有的主機數是256(2^8)。
D類(lèi)地址
D類(lèi)地址用于IP網(wǎng)絡(luò )中的組播(多點(diǎn)廣播)。它不像A、B、C類(lèi)地址有網(wǎng)絡(luò )號和主機號,一個(gè)組播地址標識了一個(gè)IP
地址組。因此可以同時(shí)把一個(gè)數據流發(fā)送到多個(gè)接收端,這比為每個(gè)接收端創(chuàng )建一個(gè)數據流的流量小得多,它可
以有效地節省網(wǎng)絡(luò )帶寬。
D類(lèi)地址的第一個(gè)八位組的前4位總是被置為1110,所以D類(lèi)數據地址的范圍從224.0.0.0到239.255.255.255。
D類(lèi)地址:
1110xxxx 28bit組ID
D類(lèi)地址擁有268435456個(gè)組(2^28),任何主機都可以自由地加入或離開(kāi)任何組。
多播地址沒(méi)有所謂的子網(wǎng)掩碼。
E類(lèi)地址
E類(lèi)地址雖然被定義,但卻為IETF(Internet Engineering Task Force,Internet工程任務(wù)組)保留作科研使用,因此Internet上
沒(méi)有可用的E類(lèi)地址。
E類(lèi)地址的第一個(gè)八位組的前4位恒為1,因此有效地地址范圍從240.0.0.0到255.255.255.255。
E類(lèi)地址:
1111xxxx xxxxxxxx xxxxxxxx xxxxxxxx
掩碼
網(wǎng)絡(luò )設備如何區分網(wǎng)絡(luò )地址(網(wǎng)絡(luò )ID)和主機地址(主機ID)呢?這里就要引出掩碼這個(gè)概念。網(wǎng)絡(luò )設備通過(guò)使用掩碼來(lái)確
定IP地址的組成,具體來(lái)說(shuō),就是通過(guò)掩碼可以確定哪一部分屬于網(wǎng)絡(luò ),哪一部分屬于子網(wǎng),哪一部分屬于主機。
子網(wǎng)掩碼
掩碼由32位0和1組成,與IP地址的組成相似,既可以用二進(jìn)制表示,也可以用點(diǎn)分十進(jìn)制表示表示。與IP地址的表示不
同,表示掩碼的1是連續的,而不是由0和1混合組成。掩碼包含了兩個(gè)(既組成部分):網(wǎng)絡(luò )域和主機域,這些域分別代表
網(wǎng)絡(luò )ID和主機ID
十進(jìn)制表示 255 255 0 0
二進(jìn)制表示 11111111 11111111 11111111 11111111
作用表示 網(wǎng)絡(luò )域 網(wǎng)絡(luò )域 主機域 主機域
表示IP地址的 網(wǎng)絡(luò )ID 網(wǎng)絡(luò )ID 主機ID 主機ID
掩碼用于劃分IP地址的那些位屬于網(wǎng)絡(luò )ID,那些屬于主機ID。每一類(lèi)地址都有缺省的掩碼,A類(lèi)地址的缺省掩碼為255.0.0.0
B類(lèi)地址的缺省掩碼為255.255.0.0,C類(lèi)地址的缺省掩碼為255.255.255.0。
A類(lèi)、B類(lèi)、C類(lèi)IP地址缺省掩碼的表示:
IP地址的類(lèi)別 十進(jìn)制表示 二進(jìn)制表示
A類(lèi) 255.0.0.0 11111111.00000000.00000000.00000000
B類(lèi) 255.255.0.0 11111111.11111111.00000000.00000000
C類(lèi) 255.255.255.0 11111111.11111111.11111111.00000000
前面接收的是掩碼的缺省狀態(tài),可以發(fā)現每一類(lèi)IP地址僅有一個(gè)缺省的掩碼。這在實(shí)際的IP地址管理中是很不實(shí)用的,所以
經(jīng)常要根據應用和管理的需要重新劃分IP地址的網(wǎng)絡(luò )ID和主機ID,這時(shí)就引入了子網(wǎng)掩碼的概念。
子網(wǎng)掩碼主要用于子網(wǎng)的劃分。缺省情況下,一個(gè)IP地址由網(wǎng)絡(luò )ID和主機ID組成,但通過(guò)子網(wǎng)掩碼的劃分,可以將ID中的
部分IP地址作為網(wǎng)絡(luò )ID使用,將缺省狀態(tài)相愛(ài)屬于主機ID的這部分IP地址稱(chēng)為子網(wǎng)ID。這樣,在引入子網(wǎng)掩碼后,IP地址將
由網(wǎng)絡(luò )ID、子網(wǎng)ID和主機ID共3部分組成。
有了子網(wǎng)掩碼,原來(lái)的網(wǎng)絡(luò )結構和層次發(fā)生了變化。具體來(lái)說(shuō),子啊使用了子網(wǎng)掩碼后,原來(lái)“網(wǎng)絡(luò )ID - >主機ID”的結構
將轉換成“網(wǎng)絡(luò )ID - > 子網(wǎng)ID - > 主機ID”的結構。
子網(wǎng)掩碼的應用打破了缺省掩碼的限制,使用戶(hù)可以根據實(shí)際需要自行定義和管理網(wǎng)絡(luò )地址。因為子網(wǎng)掩碼確定了子網(wǎng)域
的界限,所以當給子網(wǎng)域分配了一些特定的位數(連續的二進(jìn)制位數1)后,剩余的位數就是新的主機域了。例如,172.16.1.1
為B類(lèi)IP地址,缺省掩碼為255.255.0.0,即該32位IP地址的前16位表示網(wǎng)絡(luò )域,后16位表示主機域。
未劃分子網(wǎng)后的結構:
網(wǎng)絡(luò ) 主機
11111111 11111111 00000000 00000000
255 255 0 0
如果將原來(lái)屬于主機域的前8位作為子網(wǎng)域,這時(shí)這個(gè)B類(lèi)網(wǎng)絡(luò )的掩碼將變?yōu)?55.255.255.0,主機域將由原來(lái)的16位變成
了8位。
劃分子網(wǎng)后的結構:
網(wǎng)絡(luò ) 子網(wǎng) 主機
11111111 11111111 11111111 00000000
255 255 255 0
子網(wǎng)掩碼的確定方法
子網(wǎng)掩碼實(shí)際上是一個(gè)過(guò)濾碼,將IP地址和子網(wǎng)掩碼“按位求與”就可以過(guò)濾出IP地址中應該作為網(wǎng)絡(luò )地址的那一部分。
按位求與就是將IP地址中的每一位和相應的子網(wǎng)掩碼今進(jìn)行與(&)運算(即進(jìn)行二進(jìn)制的加法運算)。
以下就是172.16.1.1 255.255.0.0進(jìn)行子網(wǎng)掩碼運算的一個(gè)實(shí)例
網(wǎng)絡(luò ) 主機
172.16.1.1 10101100 00010000 00000001 00000001
255.255.0.0 11111111 11111111 00000000 00000000
與運算 10101100 00010000 00000000 00000000
經(jīng)過(guò)與元算后被過(guò)濾出來(lái)的172.16.0.0就是172.16.1.1的網(wǎng)絡(luò )地址。通常情況下,在IP地址后加“/n”來(lái)表示一個(gè)具體的IP
地址(n是子網(wǎng)掩碼中“1”的個(gè)數,如子網(wǎng)掩碼“255.255.255.0”通常寫(xiě)成“/24”)。