從IP地址說起
IP地址就是給因特網(wǎng)上的每一個主機(或路由器)的每一個接口分配一個在全世界范圍是唯一的32位的標(biāo)識符荠察。
IP地址的編址方法共經(jīng)過了三個歷史階段。這三個階段是:
(1)分類的IP地址奈搜。這是最基本的編址方法割粮,在1981年就通過了相應(yīng)的標(biāo)準(zhǔn)協(xié)議。
(2)子網(wǎng)的劃分媚污。這是對最基本的編址方法的改進舀瓢,其標(biāo)準(zhǔn)RFC950在1985年通過。
(3)構(gòu)成超網(wǎng)耗美。這是比較新的無分類編址方法京髓。1993年提出后很快就得到推廣應(yīng)用。
分類的IP地址
所謂“分類的IP地址”就是將IP地址劃分為若干個固定類商架,每一類地址都由兩個固定長度的字段組成堰怨。
其中第一個字段是網(wǎng)絡(luò)號(net-id),它標(biāo)志主機(或路由器)所連接到的網(wǎng)絡(luò)蛇摸。一個網(wǎng)絡(luò)號在整個因特網(wǎng)范圍內(nèi)必須是唯一的备图。
第二個字段是主機號(host-d),它標(biāo)志該主機(或路由器)赶袄。一個主機號在它前面的網(wǎng)絡(luò)號所指明的網(wǎng)絡(luò)范圍內(nèi)必須是唯一的揽涮。由此可見,一個IP地址在整個因特網(wǎng)范圍內(nèi)是唯一的饿肺。
這種兩級的IP地址可以記為:
圖中的符號“∷=”表示“定義為”蒋困。
分類如下:
如圖所示,圖中的A類敬辣、B類和C類地址都是單播地址(一對一通信)雪标,是最常用的。
- A類溉跃、B類和C類地址的網(wǎng)絡(luò)號字段分別為1,2和3字節(jié)長村刨,而在網(wǎng)絡(luò)號字段的最前面有1-3位的類別位,其數(shù)值分別規(guī)定為0,10和110
- A類撰茎、B類和C類地址的主機號字段分別為3個嵌牺、2個和1個字節(jié)長。
- D類地址(前4位是1110)用于多播(一對多通信)。而E類地址(前4位是1111)保留為以后用髓梅。
近年來已經(jīng)廣泛使用無分類IP地址進行路由選擇,A類绎签、B類和C類地址的區(qū)分已成為歷史枯饿。
從IP地址的結(jié)構(gòu)來看,IP地址并不僅僅指明一個主機诡必,而是還指明了主機所連接到的網(wǎng)絡(luò)奢方。
把IP地址劃分為三個類別,當(dāng)初是這樣考慮的爸舒。各種網(wǎng)絡(luò)的差異很大蟋字,有的網(wǎng)絡(luò)擁有很多主機,而有的網(wǎng)絡(luò)上的主機則很少扭勉。把IP地址劃分為A類鹊奖、B類和C類是為了更好地滿足不同用戶的要求。當(dāng)某個單位申請到一個IP地址時涂炎,實際上是獲得了具有同樣網(wǎng)絡(luò)號的一塊地址忠聚。其中具體的各個主機號則由該單位自行分配,只要做到在該單位管轄的范圍內(nèi)無重復(fù)的主機號即可唱捣。
對主機或路由器來說两蟀,IP地址都是32位的二進制代碼。為了提高可讀性震缭,我們常常把32位的地址中的每8位用其等效的十進制數(shù)字表示赂毯,并且在這些數(shù)字之間加上一個點這就叫做點分十進制記法( dotted decimal notation)。如圖表示了這種方法拣宰,這是一個B類IP地址党涕。顯然,128..3.31比1000000001010000000111起來要方便得多巡社。
IP地址具有以下一些重要特點:
(1)每一個IP地址都由網(wǎng)絡(luò)號和主機號兩部分組成遣鼓。從這個意義上說,IP地址是一種分等級的地址結(jié)構(gòu)重贺。分兩個等級的好處是:第一骑祟,IP地址管理機構(gòu)在分配IP地址時只分配網(wǎng)絡(luò)號(第一級),而剩下的主機號(第二級)則由得到該網(wǎng)絡(luò)號的單位自行分配气笙。這樣就方便了IP地址的管理次企。第二,路由器僅根據(jù)目的主機所連接的網(wǎng)絡(luò)號來轉(zhuǎn)發(fā)分組(而不考慮目的主機號)潜圃,這樣就可以使路由表中的項目數(shù)大幅度減少缸棵,從而減小了路由表所占的存儲空間以及查找路由表的時間。
(2)實際上IP地址是標(biāo)志一個主機(或路由器)和一條鏈路的接口谭期。當(dāng)一個主機同時連接到兩個網(wǎng)絡(luò)上時堵第,該主機就必須同時具有兩個相應(yīng)的IP地址吧凉,其網(wǎng)絡(luò)號必須是不同的。這種主機稱為多歸屬主機( multihomed host踏志。由于一個路由器至少應(yīng)當(dāng)連接到兩個網(wǎng)絡(luò)阀捅,因此一個路由器至少應(yīng)當(dāng)有兩個不同的IP地址。
(3)按照因特網(wǎng)的觀點针余,一個網(wǎng)絡(luò)是指具有相同網(wǎng)絡(luò)號 net-id的主機的集合饲鄙,因此,用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來的若干個局域網(wǎng)仍為一個網(wǎng)絡(luò)圆雁,因為這些局域網(wǎng)都具有同樣的網(wǎng)絡(luò)號忍级。具有不同網(wǎng)絡(luò)號的局域網(wǎng)必須使用路由器進行互連。
(4)在IP地址中伪朽,所有分配到網(wǎng)絡(luò)號的網(wǎng)絡(luò)(不管是范圍很小的局域網(wǎng)轴咱,還是可能覆蓋很大地理范圍的廣域網(wǎng))都是平等的。
IP地址與物理地址(MAC地址)
從層次的角度看烈涮,物理地址是數(shù)據(jù)鏈路層和物理層使用的地址嗦玖,而IP地址是網(wǎng)絡(luò)層和以上各層使用的地址,是一種邏輯地址(稱IP地址是邏輯地址是因為IP地址是用軟件實現(xiàn)的)跃脊。
在發(fā)送數(shù)據(jù)時宇挫,數(shù)據(jù)從高層下到低層,然后才到通信鏈路上傳輸酪术。使用IP地址的IP數(shù)據(jù)報一旦交給了數(shù)據(jù)鏈路層器瘪,就被封裝成MAC幀了。MAC幀在傳送時使用的源地址和目的地址都是硬件地址绘雁,這兩個硬件地址都寫在MAC幀的首部中橡疼。
連接在通信鏈路上的設(shè)備(主機或路由器)在接收MAC幀時,其根據(jù)是MAC幀首部中的硬件地址庐舟。在數(shù)據(jù)鏈路層看不見隱藏在MAC幀的數(shù)據(jù)中的IP地址欣除。只有在剝?nèi)AC幀的首部和尾部后把MAC層的數(shù)據(jù)上交給網(wǎng)絡(luò)層后,網(wǎng)絡(luò)層才能在IP數(shù)據(jù)報的首部中找到源IP地址和目的IP地址挪略。
總之雷蹂,IP地址放在IP數(shù)據(jù)報的首部游岳,而硬件地址則放在MAC幀的首部驻仅。在網(wǎng)絡(luò)層和網(wǎng)絡(luò)層以上使用的是IP地址与学,而數(shù)據(jù)鏈路層及以下使用的是硬件地址。在上圖中摊求,當(dāng)IP數(shù)據(jù)報放入數(shù)據(jù)鏈路層的MAC幀中以后禽拔,整個的IP數(shù)據(jù)報就成為MAC幀的數(shù)據(jù),因而在數(shù)據(jù)鏈路層看不見數(shù)據(jù)報的IP地址。
舉一個例子來說明數(shù)據(jù)傳輸中的IP地址與MAC地址
上圖畫的是三個局域網(wǎng)用兩個路由器R1和R2互連起來×蛱瑁現(xiàn)在主機H1要和主機H2通信。這兩個主機的IP地址分別是IP1和IP2野来,而它們硬件地址分別為HA1和HA2(HA表示 Hardware Address.通信的路徑是:H1→經(jīng)過R1轉(zhuǎn)發(fā)→再經(jīng)過R2轉(zhuǎn)發(fā)→H2.路由器R1因同時連接到兩個局域網(wǎng)上恼除,因此它有兩個硬件地址,即HA3和HA4.同理梁只,路由器R2也有兩個硬件地址HA5和HA缚柳。
這里要強調(diào)指出的是:
(1)在IP層抽象的互聯(lián)網(wǎng)上只能看到IP數(shù)據(jù)報埃脏。雖然PP數(shù)據(jù)報要經(jīng)過路由器R1和R2的兩次轉(zhuǎn)發(fā)搪锣,但在它的首部中的源地址和目的地址始終分別是IP1和IP2.圖中的數(shù)據(jù)報上寫的“從IP1到IP2”就表示前者是源地址而后者是目的地址。數(shù)據(jù)報中間經(jīng)過的兩個路由器的IP地址并不出現(xiàn)在IP數(shù)據(jù)報的首部中彩掐。
(2)雖然在數(shù)據(jù)報首部有源站IP地址构舟,但路由器只根據(jù)目的站的IP地址的網(wǎng)絡(luò)號進路由選擇。
(3)在局域網(wǎng)的鏈路層堵幽,只能看見MAC幀狗超。PP數(shù)據(jù)報被封裝在MAC幀中。MAC幀在不同網(wǎng)絡(luò)上傳送時朴下,其MAC幀首部中的源地址和目的地址要發(fā)生變化努咐。開始在H1到R1間傳送時,MAC幀首部中寫的是從硬件地址HA1發(fā)送到硬件地址HA3殴胧,路由器R1收到此MAC幀后渗稍,在轉(zhuǎn)發(fā)時要改變首部中的源地址和目的地址,將它們換成從硬件地址HA4發(fā)送到硬件地址HAs团滥。路由器R2收到此幀后竿屹,再改變一次MAC幀的首部,填入從HA6發(fā)送到HA2灸姊,然后在R2到H2之間傳送拱燃。MAC幀的首部的這種變化,在上面的IP層上也是看不見的力惯。
(4)盡管互連在一起的網(wǎng)絡(luò)的硬件地址體系各不相同碗誉,但I(xiàn)P層抽象的互聯(lián)網(wǎng)卻屏蔽了下層這些很復(fù)雜的細(xì)節(jié)。只要我們在網(wǎng)絡(luò)層上討論問題父晶,就能夠使用統(tǒng)一的诗充、抽象的IP地址研究主機和主機或路由器之間的通信。
主機或路由器利用ARP協(xié)議知道應(yīng)當(dāng)在MAC幀的首部填入什么樣的硬件地址
地址解析協(xié)議ARP和逆地址解析協(xié)議RARP
在實際應(yīng)用中诱建,我們經(jīng)常會遇到這樣的問題:已經(jīng)知道了一個機器(主機或路由器的IP地址蝴蜓,需要找出其相應(yīng)的物理地址;或反過來,已經(jīng)知道了物理地址茎匠,需要找出相應(yīng)的IP地址格仲。地址解析協(xié)議ARP和逆地址解析協(xié)議RARP就是用來解決這樣的問題的。
逆地址解析協(xié)議RARP在過去曾起到重要作用诵冒。但現(xiàn)在的DHCP協(xié)議已經(jīng)包含了RARP協(xié)議的功能凯肋。因此現(xiàn)在已經(jīng)沒有人再使用單獨的RARP協(xié)議了。因此這里不再進一步介紹RARP協(xié)議汽馋。我們只需要了解侮东,逆地址解析協(xié)議RARP的作用是只知道自己硬件地址的主機能夠通過RARP協(xié)議找出其IP地址。
網(wǎng)絡(luò)層使用的是IP地址豹芯,但在實際網(wǎng)絡(luò)的鏈路上傳送數(shù)據(jù)幀時悄雅,最終還是必須使用該網(wǎng)絡(luò)的硬件地址。但I(xiàn)P地址和下面的網(wǎng)絡(luò)的硬件地址之間由于格式不同而不存在簡單的映射關(guān)系(例如铁蹈,IP地址有32位宽闲,而局域網(wǎng)的硬件地址是48位)。此外握牧,在一個網(wǎng)絡(luò)上可能經(jīng)常會有新的主機加入進來容诬,或撤走一些主機。更換網(wǎng)絡(luò)適配器也會使主機的硬件地址改變沿腰。地址解析協(xié)議ARP解決這個問題的方法是在主機ARP高速緩存中應(yīng)存放一個從IP地址到硬件地址的映射表览徒,并且這個映射表還經(jīng)常動態(tài)更新(新增或超時刪除)。
每一個主機都設(shè)有一個ARP高速緩存( ARP cache)颂龙,里面有本局域網(wǎng)上的各主機和路由器的P地址到硬件地址的映射表习蓬,這些都是該主機目前知道的一些地址。那么主機怎樣知道這些地址呢厘托?
舉一個小栗子:
當(dāng)主機A要向本局域網(wǎng)上的某個主機B發(fā)送IP數(shù)據(jù)報時友雳,就先在其ARP高速緩存中查看有無主機B的IP地址。如有铅匹,就在ARP高速緩存中查出其對應(yīng)的硬件地址押赊,再把這個硬件地址寫入MAC幀,然后通過局域網(wǎng)把該MAC幀發(fā)往此硬件地址包斑。
也有可能查不到主機B的IP地址的項目流礁。這可能是主機B才入網(wǎng),也可能是主機A剛剛加電罗丰,其高速緩存還是空的神帅。在這種情況下,主機A就自動運行ARP萌抵,然后按以下步驟找出主機B的硬件地址找御。
(1)ARP進程在本局域網(wǎng)上廣播發(fā)送一個ARP請求分組元镀。下圖是主機A廣播發(fā)送ARP請求分組的示意圖。ARP請求分組的主要內(nèi)容是表明:“我的IP地址是209.005霎桅,硬件地址是00-00-C0-15-AD18.我想知道IP地址為209006的主機的硬件地址栖疑。”
(2)在本局域網(wǎng)上的所有主機上運行的ARP進程都收到此ARP請求分組滔驶。
(3)主機B在ARP請求分組中見到自己的IP地址遇革,就向主機A發(fā)送ARP響應(yīng)分組,并寫入自己的硬件地址揭糕。其余的所有主機都不理睬這個ARP請求分組萝快,見下圖。ARP響應(yīng)分組的主要內(nèi)容是表明:“我的IP地址是209.0.0.6著角,我的硬件地址是08-002B00EE0A揪漩。”請注意:雖然ARP請求分組是廣播發(fā)送的雇寇,但ARP響應(yīng)分組是普通的單播氢拥,即從一個源地址發(fā)送到一個目的地址蚌铜。
(4)主機A收到主機B的ARP響應(yīng)分組后锨侯,就在其ARP高速緩存中寫入主機B的IP地址到硬件地址的映射。
當(dāng)主機A向B發(fā)送數(shù)據(jù)報時冬殃,很可能以后不久主機B還要向A發(fā)送數(shù)據(jù)報囚痴,因而主機B也可能要向A發(fā)送ARP請求分組。為了減少網(wǎng)絡(luò)上的通信量审葬,主機A在發(fā)送其ARP請求分組時深滚,就把自己的IP地址到硬件地址的映射寫入ARP請求分組。當(dāng)主機B收到A的ARP請求分組時涣觉,就把主機A的這一地址映射寫入主機B自己的ARP高速緩存中痴荐。以后主機B向A發(fā)送數(shù)據(jù)報時就很方便了。
可見ARP高速緩存非常有用官册。如果不使用ARP高速緩存生兆,那么任何一個主機只要進行次通信,就必須在網(wǎng)絡(luò)上用廣播方式發(fā)送ARP請求分組膝宁,這就使網(wǎng)絡(luò)上的通信量大大增加鸦难。ARP把已經(jīng)得到的地址映射保存在高速緩存中,這樣就使得該主機下次再和具有同樣目的地址的主機通信時员淫,可以直接從高速緩存中找到所需的硬件地址而不必再用廣播方式發(fā)送ARP請求分組合蔽。
ARP把保存在高速緩存中的每一個映射地址項目都設(shè)置生存時間(例如,10~20分鐘)介返。凡超過生存時間的項目就從高速緩存中刪除掉拴事。設(shè)置這種地址映射項目的生存時間是很重要的沃斤。設(shè)想有一種情況。主機A和B通信刃宵。A的ARP高速緩存里保存有B的物理地址轰枝。但B的網(wǎng)絡(luò)適配器突然壞了,B立即更換了一塊组去,因此B的硬件地址就改變了鞍陨。假定A還要和B繼續(xù)通信。A在其ARP高速緩存中查找到B原先的硬件地址从隆,并使用該硬件地址向B發(fā)送數(shù)據(jù)幀诚撵。但B原先的硬件地址已經(jīng)失效了,因此A無法找到主機B键闺。但是過了段不長的時間寿烟,A的ARP高速緩存中已經(jīng)刪除了B原先的硬件地址(因為它的生存時間到了),于是A重新廣播發(fā)送ARP請求分組辛燥,又找到了B筛武。
但是ARP是解決同一個局域網(wǎng)上的主機或路由器的IP地址和硬件地址的映射問題。
如果所要找的主機和源主機不在同一個局域網(wǎng)上挎塌,例如徘六,在下圖中,主機H1就無法解析出主機H2的硬件地址(實際上主機H1也不需要知道遠(yuǎn)程主機H2的硬件地址)榴都。主機H1發(fā)送給H2的IP數(shù)據(jù)報首先需要通過與主機H連接在同一個局域網(wǎng)上的路由器R1來轉(zhuǎn)發(fā)待锈。因此主機H1這時需要把路由器R1的IP地址IP3解析為硬件地址HA3,以便能夠把I數(shù)據(jù)報傳送到路由器R1.以后嘴高,R1從轉(zhuǎn)發(fā)表找出了下一跳路由器R2竿音,同時使用ARP解析出R2的硬件地址HA5.于是IP數(shù)據(jù)報按照硬件地址HAs轉(zhuǎn)發(fā)到路由器R2.路由器R2在轉(zhuǎn)發(fā)這個P數(shù)據(jù)報時用類似方法解析出目的主機H2的硬件地址HA2,使IP數(shù)據(jù)報最終交付給主機H2拴驮。
從IP地址到硬件地址的解析是自動進行的春瞬,主機的用戶對這種地址解析過程是不知道的。只要主機或路由器要和本網(wǎng)絡(luò)上的另一個已知IP地址的主機或路由器進行通信套啤,ARP協(xié)議就會自動地把這個P地址解析為鏈路層所需要的硬件地址宽气。
下面我們歸納出使用ARP的四種典型情況。
(1)發(fā)送方是主機纲岭,要把IP數(shù)據(jù)報發(fā)送到本網(wǎng)絡(luò)上的另一個主機抹竹。這時用ARP找到目的主機的硬件地址。
(2)發(fā)送方是主機止潮,要把IP數(shù)據(jù)報發(fā)送到另一個網(wǎng)絡(luò)上的一個主機窃判。這時用ARP找到本網(wǎng)絡(luò)上的一個路由器的硬件地址。剩下的工作由這個路由器來完成喇闸。
3)發(fā)送方是路由器袄琳,要把I數(shù)據(jù)報轉(zhuǎn)發(fā)到本網(wǎng)絡(luò)上的一個主機询件。這時用ARP找到目的主機的硬件地址。
(4)發(fā)送方是路由器唆樊,要把IP數(shù)據(jù)報轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)上的一個主機宛琅。這時用ARP找到本網(wǎng)絡(luò)上的一個路由器的硬件地址。剩下的工作由這個路由器來完成在許多情況下需要多次使用ARP逗旁。但這只是以上的幾種情況的反復(fù)使用而已嘿辟。
為什么不直接使用MAC地址(硬件地址)
由于全世界存在著各式各樣的網(wǎng)絡(luò),它們使用不同的硬件地址片效。要使這些異構(gòu)網(wǎng)絡(luò)能夠互相通信就必須進行非常復(fù)雜的硬件地址轉(zhuǎn)換工作红伦,因此由用戶或用戶主機來完成這項工作幾乎是不可能的事。但統(tǒng)一的IP地址把這個復(fù)雜問題解決了淀衣。連接到因特網(wǎng)的主機只需擁有統(tǒng)一的IP地址昙读,它們之間的通信就像連接在同一個網(wǎng)絡(luò)上那樣簡單方便,因為上述的調(diào)用ARP的復(fù)雜過程都是由計算機軟件自動進行的膨桥,對用戶來說是看不見這種調(diào)用過程的蛮浑。
因此,在虛擬的IP網(wǎng)絡(luò)上用IP地址進行通信給廣大的計算機用戶帶來很大的方便只嚣。
參考: