網(wǎng)絡(luò)子系統(tǒng)鄰居系統(tǒng)_第1頁(yè)
網(wǎng)絡(luò)子系統(tǒng)鄰居系統(tǒng)_第2頁(yè)
網(wǎng)絡(luò)子系統(tǒng)鄰居系統(tǒng)_第3頁(yè)
網(wǎng)絡(luò)子系統(tǒng)鄰居系統(tǒng)_第4頁(yè)
網(wǎng)絡(luò)子系統(tǒng)鄰居系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩14頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、【翻譯】鄰居子系統(tǒng):概念本章描述了鄰居協(xié)議使用的原因和時(shí)間,以及其主要功能。這主要是鄰居協(xié)議(如 arp)的一個(gè)簡(jiǎn)單的概觀(guān)以及快速參考。包含了如下的常見(jiàn)問(wèn)題:通用鄰居框架具功能高速緩存有何重要意義緩存中的鄰居條目能夠獲得的狀態(tài)可達(dá)探測(cè)和網(wǎng)絡(luò)不可達(dá)探測(cè)為什么使用Linux 內(nèi)核源碼中使用的鄰居術(shù)語(yǔ)來(lái)源于 RFC2461 和“鄰居協(xié)議”小節(jié)中描述的 IPv6 鄰居探測(cè)模型,但是的盡可能協(xié)議獨(dú)立。通常,L2 地址、二層地址、硬件地址、MAC 地址和鏈路層地址都指相同的概念。本章,將主要使用第一種說(shuō)法。26.1 鄰居是什么?如果主機(jī)連接到和你同樣的局域網(wǎng),則它是你的鄰居(也就是說(shuō),你和它直接通過(guò)共享介

2、質(zhì)或點(diǎn)對(duì)點(diǎn)鏈路連接),都被配置為同樣的 L3 層網(wǎng)絡(luò)。例如,在 IP 網(wǎng)絡(luò)中,如果兩臺(tái)主機(jī)連接到同樣的局域網(wǎng),且每個(gè)主機(jī)至少有一個(gè)接口在同樣的 IP 子網(wǎng)(譯者注:對(duì)多網(wǎng)卡主機(jī)而言),則它們是鄰居。這樣的兩臺(tái)主機(jī)可以通過(guò)連接到它們的介質(zhì)(如以太網(wǎng))關(guān)聯(lián)的協(xié)議直接通信。另外一種定義鄰居的做法是離主機(jī)只有一個(gè) L3 跳(hop)的主機(jī)都是鄰居。它的 L3 層(網(wǎng)絡(luò)層)路由表必須提供一個(gè)和其鄰居直接通信的方法。不是鄰居的主機(jī)必須通過(guò)網(wǎng)關(guān)或路由器通信。如果兩個(gè)主機(jī)由工作在 L2 層的系統(tǒng)(如網(wǎng)橋)分隔,則它們?nèi)匀皇青従?。關(guān)于這點(diǎn)第四部分已經(jīng)詳細(xì)介紹了,這里看些基于 IP 網(wǎng)絡(luò)的簡(jiǎn)單例子,如圖 26-1

3、 所示:圖 26-1鄰居及非鄰居主機(jī)第 1頁(yè) 共 19 頁(yè)圖 26-1 中每個(gè)拓?fù)鋱D都表明了 L2 和 L3 層地址之間的不同的關(guān)系,這兩種地址對(duì)可達(dá)的鄰居而言有所聯(lián)系。圖 26-1(a)主機(jī) a 和主機(jī) b 屬于同樣的 /24IP 子網(wǎng),所以它們能夠直接通信,它們之間在 L3 層僅有一跳距離,所以它們是鄰居。圖 26-1(b)此圖展示的稍微復(fù)雜一點(diǎn)的情況,主機(jī) a 和主機(jī) b 仍然屬于同一子網(wǎng),所以相互間能夠之間通信;另一方面,主機(jī) a 和主機(jī) c 屬于不同的 IP 子網(wǎng),因此它們需要通過(guò)路由器(假設(shè)做了適當(dāng)?shù)呐渲?來(lái)互相通信。這種情況,圖 26-1(c)認(rèn)為主機(jī) a 和主機(jī) c 之間在 L

4、3 層有兩跳的距離。此圖展示了兩個(gè)主機(jī)連接在同一個(gè)集線(xiàn)器上但不能相互通信的情況。即使每臺(tái)主機(jī)都可以接收到其它任何主機(jī)傳來(lái)的數(shù)據(jù),它們也不能夠在 L3 層通信,因?yàn)樗鼈兣渲昧瞬煌?ip 子網(wǎng)。這樣,第 2 頁(yè) 共 19 頁(yè)主機(jī) a 認(rèn)為它只能夠到達(dá)子網(wǎng) /24 內(nèi)的主機(jī),如果目標(biāo)地址在子網(wǎng)之外,它不會(huì)朝目標(biāo)主機(jī)發(fā)送任何數(shù)據(jù)。這個(gè)問(wèn)題有很多方法可以解決,圖 26-1(d)在接下來(lái)的章節(jié)中就會(huì)看到。此圖表明 /24 子網(wǎng)實(shí)際由兩個(gè)局域網(wǎng)通過(guò)集線(xiàn)器或網(wǎng)橋組成的一個(gè)子網(wǎng)的情況,在第 14 章就看到它們的不同之處,在本章中,認(rèn)為這是同一種情況。注意,連接兩個(gè)局域網(wǎng)的的兩個(gè)接口(譯者注:網(wǎng)橋)沒(méi)有 ip

5、地址:這是因?yàn)樗械倪@三種設(shè)備類(lèi)型必然是工作在 IP 層之下。當(dāng)兩臺(tái)主機(jī)在 L3 層相距一跳距離,實(shí)際上它們?cè)?L2 層也是一跳的距離,如圖 26-1(a)、(b)、(c)所示。但并非總是這樣的,如圖 26-1(d)所示,主機(jī) a 和路由器在 L3 層相距一跳(所以是鄰居)但在 L2 層卻相距兩跳。此外,物理子網(wǎng)(局域網(wǎng))和邏輯子網(wǎng)(IP 子網(wǎng))并非總是一一對(duì)應(yīng)的,如圖 26-2(a)所示:在一個(gè)局域網(wǎng)中可以有多個(gè) IP 子網(wǎng)或者在一個(gè) IP 子網(wǎng)中有多個(gè)局域網(wǎng)。比如,圖 26-1(a)展示了同一個(gè)局域網(wǎng)中的兩個(gè) IP 子網(wǎng),圖 26-1(d)表明同一 IP 子網(wǎng)(左邊)中的兩個(gè)局域網(wǎng)通過(guò)集線(xiàn)

6、器相連,前者并不常見(jiàn),后者常用于配置 ARP可以在第 28 章的“最終公共處理”小節(jié)看到或網(wǎng)橋時(shí)。ARP配置的例子,在第五部分看到網(wǎng)橋的例子。圖 26-2(b)表明:兩組主機(jī)通過(guò)配置在不同的ip子網(wǎng)中,即使這兩個(gè)組中的主機(jī)共享同一個(gè)局域網(wǎng),并因此能夠相互通信,但是它們必須通過(guò)兩邊請(qǐng)求的路由器。路由器必須具有兩個(gè)不同的網(wǎng)絡(luò)接口或雙網(wǎng)卡,或者具有單網(wǎng)卡多IP地址。后者比較罕見(jiàn),常用于設(shè)備地址臨時(shí)短缺或配置失敗時(shí),例如,在圖 26-2(a)的場(chǎng)景中LAN1 配置失敗的情況下,可以把LAN1 的主機(jī)移到LAN2(包括路由器的eth0 接口*),則LAN1 的主機(jī)的IP子網(wǎng)配置不需要任何改變即可再次工作

7、。已經(jīng)在LAN2 的主機(jī)仍然可以通過(guò)路由器其它主機(jī)。即使這種情況不常見(jiàn),但內(nèi)核必須能夠正確處理它,這種情況,特別是當(dāng)路由器使用單個(gè)接口其子網(wǎng)時(shí)(也就是eth0 被移除,則它的地址被加進(jìn)eth1)的情景將在第 28 章的“可調(diào)節(jié)的ARP選項(xiàng)”小節(jié)中描述。 *圖 26-2 (a)IP 子網(wǎng)_LAN1:1(b)IP 子網(wǎng)_LANn:1在接下來(lái)的章節(jié)中不會(huì)明確提到圖 26-2(b)的情況,但你應(yīng)該記得象這樣的配置是可能的,第 3 頁(yè) 共 19 頁(yè)不是的。26.2 需要鄰居協(xié)議的原因本節(jié)中,如以太網(wǎng)。會(huì)明白鄰居子系統(tǒng)存在的基本原因,它將基本網(wǎng)絡(luò)劃分成層以及共享介質(zhì)實(shí)體,26.2.1 當(dāng) L3 層地址需要

8、轉(zhuǎn)換為 L2 層地址時(shí)L3:layer three 網(wǎng)絡(luò)層L2:layer second 數(shù)據(jù)鏈路層在網(wǎng)絡(luò)二層(以太網(wǎng)、802.11 無(wú)限網(wǎng)、令牌網(wǎng)、點(diǎn)對(duì)點(diǎn)連接等等)和三層(IP 層、私有的)協(xié)議之間存在差異的原因就是許多不同的 L2 層協(xié)議存在且在鄰居之間傳送數(shù)據(jù),而 L3 層路又不需擔(dān)心所用的傳輸介質(zhì),更高的層能夠使用相同的對(duì)點(diǎn)連接中。在兩個(gè)系統(tǒng)間傳送報(bào)文而不管它在以太網(wǎng)上還是在點(diǎn)圖 26-3 表明了通過(guò)鄰居子系統(tǒng)獲得不同響應(yīng)的不同情況圖 26-3點(diǎn)對(duì)點(diǎn)連接與共享介質(zhì)圖 26-3(a) 表明了點(diǎn)對(duì)點(diǎn)連接,如線(xiàn)。其 L2 層協(xié)議相當(dāng)簡(jiǎn)單,如果運(yùn)行在半雙工介質(zhì)上它僅處理錯(cuò)誤校驗(yàn)和輪詢(xún)等問(wèn)題。其

9、鄰居協(xié)議比較簡(jiǎn)單,因?yàn)樗鼉H僅只是使用 L2 層協(xié)議,鄰居沒(méi)有發(fā)送包給誰(shuí)的決定權(quán)。圖 26-3(b) 展示了更復(fù)雜的情況:以太網(wǎng)或其它共享介質(zhì)通過(guò)廣播來(lái)通信。如果主機(jī) a 要發(fā)送數(shù)據(jù)給主機(jī) b,它必須把數(shù)據(jù)放到電纜上(或無(wú)線(xiàn)環(huán)境的電波中),并讓共享介質(zhì)上的所有系統(tǒng)都收到數(shù)據(jù)。它也必須指定一個(gè) L2 層地址以標(biāo)識(shí)數(shù)據(jù)使接收主機(jī)知道數(shù)據(jù)是發(fā)送給自己的,其它主機(jī)檢測(cè)地址并丟棄數(shù)據(jù)。由鄰居協(xié)議來(lái)選擇包中 L3 層地址對(duì)應(yīng)的 L2 層地址。如果主機(jī)a和主機(jī)b通過(guò)網(wǎng)橋分開(kāi),則橋接收到L2 層地址并直接傳遞給正確主機(jī)*;而鄰居子系統(tǒng)并不考慮這些情況,事實(shí)上,橋?qū)τ卩従幼酉到y(tǒng)是透明的。第 4 頁(yè) 共 19 頁(yè)*

10、通常在 L3 層地址及其對(duì)應(yīng)的 L2 層幀之間有一一對(duì)應(yīng)的關(guān)系,具有多個(gè) L3 層地址的系統(tǒng)(通常是路由器)提供多個(gè)接口以保持 L3 層地址及其對(duì)應(yīng)的 L2 層幀之間有一一對(duì)應(yīng)的關(guān)系。但是后面“特殊情況”小節(jié)也解釋了,在 L3 層的多個(gè)多點(diǎn)傳輸?shù)刂纺軌騻€(gè)接口配置多個(gè) IP 地址。到同樣的 L2 層地址上,也有可能一26.2.2 共享介質(zhì)在共享介質(zhì)中,主機(jī)傳輸?shù)娜魏螏急恢边B在介質(zhì)上的主機(jī)收到,無(wú)線(xiàn)連接就是一個(gè)簡(jiǎn)單的例子,另外一個(gè)例子就是用于以太網(wǎng) 10-base2 的共享的同軸電纜。因此,用于共享介質(zhì)的鏈路層協(xié)議需要定義一個(gè)地址策略以便發(fā)送方能夠指定每幀的接受方,并且接受方也能夠識(shí)別發(fā)送方。這

11、個(gè)地址策略通常也定義一些特殊的地址以便對(duì)一個(gè)幀編址傳給多個(gè)主機(jī)或所有的主機(jī):即多播地址和廣播地址。由于多播主機(jī)需要傳輸數(shù)據(jù)因此也同時(shí)需要使用共享介質(zhì),鏈路層協(xié)議也必須包含法以確保所有連接到共享介質(zhì)的主機(jī)能夠檢測(cè)到這種情況。以太網(wǎng)使用的是叫做帶檢測(cè)的載波偵聽(tīng)多路協(xié)議(CSMA/CD),不關(guān)心這種如何處理,因?yàn)檫@偏離了本章的。所有這些以太網(wǎng)相關(guān)的信息都可以在“以太網(wǎng):指南”一書(shū)(OReilly)中獲取。另一方面,點(diǎn)對(duì)點(diǎn)介質(zhì),如串行線(xiàn),被設(shè)計(jì)僅用于兩個(gè)節(jié)點(diǎn)間通信,在這種情況下,不需使用鏈路層地址標(biāo)識(shí)源節(jié)點(diǎn)和目的節(jié)點(diǎn),兩個(gè)節(jié)點(diǎn)能夠依靠同一條線(xiàn)或各自擁有一根線(xiàn)半雙工或全雙工通信,這兩種情況都不需要檢測(cè)機(jī)

12、制。兩端要麼各分配一根線(xiàn)(全雙工),要麼每端使用一種機(jī)制獲取共享介質(zhì)的使用權(quán)。因此,兩臺(tái)主機(jī)通過(guò)點(diǎn)對(duì)點(diǎn)介質(zhì)相連時(shí)不需要鄰居協(xié)議。以太網(wǎng)最先是被設(shè)計(jì)工作在共享介質(zhì)上,允許主機(jī)共享同樣的介質(zhì)并通過(guò)CSMA/CD 處理,這是共享同軸電纜時(shí)期(也就是 10Base-2)。但是,由于,隨著時(shí)間的過(guò)去,使用共享同軸電纜被使絞線(xiàn)(UTP)或 RJ-45 線(xiàn)代替。允許以太網(wǎng)接口配置成半雙工或全雙工模式,因?yàn)殡p絞線(xiàn)有足夠的電纜允許雙方同時(shí)通信,全雙工模式的以太網(wǎng)僅用于兩個(gè)以太網(wǎng)接口間的點(diǎn)對(duì)點(diǎn)連接。在這種情況下,每端都指派一根線(xiàn)進(jìn)行傳輸和接收,因此不需要 CSMA/CD?,F(xiàn)在,以太局域網(wǎng)主要通過(guò)交換機(jī)*實(shí)現(xiàn),每臺(tái)

13、主機(jī)都通過(guò)雙絞線(xiàn)連接到交換機(jī)。在此情況下,可以配置接口為半雙工模式,這樣CSMA/CD主要用于處理交換機(jī)端口與主機(jī)以太網(wǎng)卡適配器之間的;或者配置兩個(gè)接口為全雙工模式,并允許交換機(jī)和主機(jī)同時(shí)傳輸數(shù)據(jù),此時(shí)兩端都必須用同樣的雙工模式。在絕大多數(shù)情況下,都不必明確配置連接雙方的雙工模式,因?yàn)橛须p工模式檢測(cè)機(jī)制做了這件事。*本注意,主機(jī)生成的幀決不會(huì)被編址到交換設(shè)備(雖然通用規(guī)則也有例外);交換設(shè)備只是用于主機(jī)到達(dá)其它連在相同交換機(jī)上的其它主機(jī)。所以,即使在全雙工模式的接口不需要 CSMA/CD,我們?nèi)匀恍枰吹刂泛湍康牡刂芳班従訁f(xié)議。這也意味著共享介質(zhì),如同軸電纜提供多播和廣播功能由交換機(jī)以其它方式

14、提供了:當(dāng)交換機(jī)收到一個(gè)幀編址是多播或廣播的鏈路層地址,它會(huì)把數(shù)據(jù)拷除接收到此幀端口以外的所有其它端口,在第四部分看到,交換機(jī)這樣做是很迅速的。所知的當(dāng)前的局域網(wǎng)大體上都是由以太網(wǎng)交換設(shè)備實(shí)現(xiàn),主機(jī)都是通過(guò)點(diǎn)對(duì)點(diǎn)形式連接(UTP 雙絞線(xiàn))到交換設(shè)備上。在新的以太網(wǎng)標(biāo)準(zhǔn)的設(shè)計(jì)中,CSMA/CD 的用途變得不那么重要了。也由于這個(gè)原因,新的以太網(wǎng)完全擯棄它。用于高速數(shù)據(jù)傳輸,它要麼將CSMA/CD 作為可選項(xiàng),要麼表 26-1 展示了以太網(wǎng)支持 CSMA/CD 的情況,注意,G 比特以太網(wǎng)依然支持 CSMA/CD,雖然它主要用于全雙工的點(diǎn)對(duì)點(diǎn)連接。10G 比特標(biāo)準(zhǔn)化主要用于廣域網(wǎng)(與局域網(wǎng)相對(duì)),

15、它根本就不支第 5 頁(yè) 共 19 頁(yè)持 CSMA/CD,僅用在光纖介質(zhì)上的點(diǎn)對(duì)點(diǎn)連接。表 26-1 的每項(xiàng)實(shí)際上都有許多變量屬性,但由于它們不在的范圍,我也就沒(méi)有列出它們。表 26-1以太網(wǎng)類(lèi)別和點(diǎn)對(duì)點(diǎn)/共享介質(zhì)功能以太網(wǎng)類(lèi)別以太網(wǎng)(10 Mbit/s)點(diǎn)對(duì)點(diǎn)功能共享介質(zhì)功能(即支持 CSMA/CD)X X X快速以太網(wǎng)(100 G 比特以太網(wǎng) 10G 比特以太網(wǎng)Mbits/s)X26.2.3 為什么靜態(tài)指定地址不夠用在第 13 章已經(jīng)看到 L3 層和 L2 層地址及協(xié)議的功能,L3 層地址如 IP 地址是邏輯的,所以只要是有效的地址都能夠指派給任何接口;另一 ,L2 層地址綁定到網(wǎng)卡,并且不

16、支持可配置:它們由廠(chǎng)家被指派給網(wǎng)卡接口并且是全球唯一。但是,有些網(wǎng)卡接口可以通過(guò) ifconfig 等常見(jiàn)工具強(qiáng)制配置 L2 層地址,這在處理本地 IEEE 地址時(shí)非常有用,第 13 章中有此描述。不過(guò),當(dāng)你把網(wǎng)卡接口地址改成你不擁有的 L2 層地址時(shí),這樣你會(huì)有一定的風(fēng)險(xiǎn):你不再能夠確定這個(gè)地址是否唯一以及以此 L2 層地址標(biāo)識(shí)的網(wǎng)卡在共享介質(zhì)上是否能夠正常工作。通常只有比較資深的管理員才這樣做特殊的配置,比如虛擬服務(wù)器或高可用設(shè)備。因?yàn)?L3 層地址是邏輯的,所有有很多理由去改變它,下面是一些改變 L3 層地址的情形,這還需要在 L3 層地址和關(guān)聯(lián)的 L2 層地址間建立。動(dòng)態(tài)配置:在 IP

17、 網(wǎng)絡(luò)中,主機(jī)可以通過(guò)某種協(xié)議如 DHCP 指定動(dòng)態(tài) IP 地址,同樣的主機(jī)可以在它每次請(qǐng)求時(shí)獲得不同的 ip 地址。但是硬件地址被硬編碼進(jìn)以太網(wǎng)卡或無(wú)線(xiàn)網(wǎng)卡,所以 L3 層到 L2 層地址的也要做響應(yīng)的更新。替換有問(wèn)題的接口:一旦網(wǎng)卡被替換,則 L2 層地址也改變了,但是管理員可能更希望保持網(wǎng)絡(luò)邏輯地址即 L3 層地址不變。移動(dòng) L3 層地址:一臺(tái)服務(wù)器宕機(jī)時(shí)可能需要另外一臺(tái)不同的服務(wù)器來(lái)處理相同的通信量請(qǐng)求,這就意味著舊的L3 層地址需要關(guān)聯(lián)到新的服務(wù)器和網(wǎng)絡(luò)接口。如果管理員需要保留同樣的 L3 層地址在同一主機(jī)但是不同的接口,也需要做這樣的改變。需要L2 層和 L3 層之間的這種變化,因

18、為有許多沒(méi)有處理的不可預(yù)料的事以及棘手的事情要做,所以協(xié)議需要關(guān)聯(lián) L2 層和 L3 層之間的這種關(guān)聯(lián)。這就是本書(shū)鄰居協(xié)議部分需要的事情。26.2.4 特殊情況有時(shí),不需要任何協(xié)議把 L3 層地址成 L2 層地址,下面就是這種情況:在點(diǎn)對(duì)點(diǎn)介質(zhì)上數(shù)據(jù)僅僅只可以發(fā)送給一個(gè)主機(jī),如撥號(hào)連接或通過(guò)電纜臨時(shí)連接系統(tǒng)到另外一各管理員想的系統(tǒng)。此時(shí),所有的 L2 層都不需要地址策略。(即使點(diǎn)對(duì)點(diǎn)介質(zhì)在某種情況下使用了 L2 層地址也不需要)第 6 頁(yè) 共 19 頁(yè)可能用一種簡(jiǎn)單的公司也可以獲得與 L2 層地址關(guān)聯(lián)的特殊的 L3 層地址。因?yàn)闆](méi)有不明確的或動(dòng)態(tài)的分配,所有不需要任何協(xié)議。多播地址不需要任何協(xié)

19、議就可以靜態(tài)傳遞。在IPv4/ARP網(wǎng)絡(luò)中,當(dāng)設(shè)備是以太網(wǎng)卡時(shí),多播地址通過(guò)函數(shù)arp_mc_map來(lái),這個(gè)函數(shù)輪流調(diào)用更為簡(jiǎn)單的ip_eth_mc_map函數(shù)。在ip_eth_mc_map中不使用任何協(xié)議而通過(guò)一個(gè)公式實(shí)現(xiàn)解釋?zhuān)?。圖 26-4 就是插圖和最高的 24 位被指派為 IANA 分配的靜態(tài)值 01:00:5E23 位(低 24 位的最)被設(shè)置為 0低 23 位是從 IP 地址的低 23 位拷貝過(guò)來(lái)注意,同樣的以太網(wǎng)多播地址能夠被指派給 IP 地址(因?yàn)?IP 地址的高 9 位沒(méi)用)圖 26-4 根據(jù)IPv4 多播地址生成以太網(wǎng)多播地址廣播地址(IP 子網(wǎng)廣播)靜態(tài)成鏈路層廣播地址(

20、以太網(wǎng)是:)。如果有必要,每個(gè)設(shè)備的 L2 層廣播地址也可以被明確配置。26.2.5 誘發(fā)請(qǐng)求和響應(yīng)當(dāng) L3 層到 L2 層地址不能夠通過(guò)前面章節(jié)描述的來(lái)靜態(tài),則鄰居協(xié)議需要做此。不同的協(xié)議可能使用不同的機(jī)制,但是對(duì)所有的協(xié)議而言,熟悉下面的術(shù)語(yǔ)是很有用的,這些術(shù)語(yǔ)在本章將頻繁的使用:誘發(fā)請(qǐng)求(也叫鄰居請(qǐng)求):這導(dǎo)致網(wǎng)絡(luò)中的包傳輸,包詢(xún)問(wèn)網(wǎng)絡(luò)中的所有主機(jī)是否知道和被給 L3 層地址相關(guān)聯(lián)的 L2 層地址。這個(gè)請(qǐng)求根據(jù)協(xié)議或環(huán)境能夠作為單播、多播或廣播。誘發(fā)響應(yīng)(也叫鄰居):即包通常作為誘發(fā)請(qǐng)求的響應(yīng)而發(fā)送,但是此包也可以單獨(dú)生成(例子可參考第 28 章的“免費(fèi)ARP”)。在通常情況下,和目標(biāo)

21、L3 層地址相關(guān)聯(lián)的主機(jī)生成響應(yīng)包單也有可能是在此位置的另外一臺(tái)主機(jī)去響應(yīng)(參考“情況下也可作為廣播發(fā)送。鄰居協(xié)議”小節(jié))。這種包通常作為單播發(fā)送,單在某些特殊26.3 linux 實(shí)現(xiàn)早期的 linux 內(nèi)核讓 L3 層協(xié)議直接調(diào)用鄰居協(xié)議提供的函數(shù),因此,IPv4 子系統(tǒng)直接和 ARP代碼交互。在最近的內(nèi)核版本中,開(kāi)發(fā)者總結(jié)了各種不同協(xié)議的各種請(qǐng)求,并把它們抽象成新的一第 7 頁(yè) 共 19 頁(yè)個(gè)層,叫做鄰居框架。由于內(nèi)核仍然包含了許多未更新至協(xié)議獨(dú)立層的舊代碼,所以仍然可以看到直接調(diào)用不 的 ARP 代碼的現(xiàn)象(如 arp_find),但是這只是例外。第 27 章的“L3 層協(xié)議與鄰居協(xié)議

22、之間的通用接口”小節(jié)將詳細(xì)介紹鄰居體系結(jié)構(gòu)的接口。圖 26-5 展示了linux鄰居子系統(tǒng)的關(guān)鍵部分,以及與其交互的內(nèi)核其它系統(tǒng)。L3 層協(xié)議通過(guò)一個(gè)普通的接口與鄰居層交互,此接口根據(jù)L3 層協(xié)議來(lái)選擇正確的鄰居協(xié)議(如ARP、ND等),因此也被稱(chēng)作服務(wù)*。*包在傳輸時(shí),會(huì)經(jīng)歷下面的幾個(gè)環(huán)節(jié):1、本機(jī)的路由子系統(tǒng)選擇目標(biāo) L3 層地址(下一跳)圖 26-5 重要的2、根據(jù)路由表,如果下一跳在同一網(wǎng)絡(luò)(如果是這樣,則下一跳是鄰居),則鄰居系統(tǒng)將目標(biāo) L3 層地址 成 L2 層地址,這種關(guān)聯(lián)關(guān)系被緩存起來(lái)龔以后使用。這樣,如果一個(gè)應(yīng)用在很短的時(shí)間內(nèi)發(fā)送若干個(gè)包給另外的應(yīng)用,則鄰居協(xié)議僅在發(fā)送第一個(gè)

23、包時(shí)被使用一次。3、最后,某個(gè)函數(shù)如dev_queue_xmit(11 章已描述)負(fù)責(zé)具體的傳輸,它將包傳給流量控制與服務(wù)質(zhì)量(QoS)層。雖然圖 26-5 只是展示了dev_queue_xmit函數(shù),但是鄰居層實(shí)際上還可以調(diào)用其它函數(shù)(絕大部分是dev_queue_xmit函數(shù)的封裝),這點(diǎn)面會(huì)看到。在本章的后注意,dev_queue_xmit函數(shù)僅在要傳輸?shù)陌鼫?zhǔn)備發(fā)送時(shí)才被調(diào)用。因此,如果需要 L2 層協(xié)議頭,鄰居協(xié)議必須在調(diào)用此函數(shù)之前加入L2 層協(xié)議頭。有些類(lèi)型如點(diǎn)到點(diǎn)傳輸連接、廣播或多播都不需要L2 層協(xié)議頭,因此它們不需要L3 層到L2 層的。這些傳輸在“特殊情況”小節(jié)中有描述;其

24、它類(lèi)型的傳輸由于采用共享介質(zhì)所以需要L2 層協(xié)議頭,這個(gè)協(xié)議頭要麼來(lái)自于鄰居子系統(tǒng)緩存要麼通過(guò)鄰居子系統(tǒng)向網(wǎng)絡(luò)發(fā)送一個(gè)請(qǐng)求(獲得)。26.3.1 鄰居協(xié)議現(xiàn)在,IP 網(wǎng)絡(luò)中正在使用兩個(gè)協(xié)議:大量系統(tǒng)使用的 IPv4 中的 ARP 和主要為 IPv6 開(kāi)發(fā)的用于通用目的的 ND(Neighbor Discovery 鄰居探測(cè))協(xié)議。還有其它一些協(xié)議在 linux 內(nèi)核中實(shí)現(xiàn)以用于et 實(shí)現(xiàn)的協(xié)議,由于其使用有限所有本書(shū)不去關(guān)心它。私有網(wǎng)絡(luò),如:第 8 頁(yè) 共 19 頁(yè)雖然 ARP 被認(rèn)為是 L3 層協(xié)議,但是它實(shí)現(xiàn)的功能被 IPv6 的設(shè)計(jì)者移至 L4 層。如圖 26-6 所示, ND 協(xié)議被劃

25、為 ICMPv6(IPv6 implemenion of theernet Control Message Protocol(ICMP):ICMP 的 IPv6 的實(shí)現(xiàn))的一部分,這樣做是基于 IPv4 多年的運(yùn)營(yíng)經(jīng)驗(yàn),這樣提供給 ND 許多便利,其中之一就是有機(jī)會(huì)充分利用 L3 層的特點(diǎn),如 IPSec 加密。28 章的“建立在 ARP(IPv4)上的 ND(IPv6)改進(jìn)”一節(jié)中給出了在 ND 和 ARP 之間主要不同點(diǎn)的概觀(guān)。圖 26-6 網(wǎng)絡(luò)堆棧中 ARP/ND 協(xié)議所處的位置如前所述,linux 也提供了一個(gè)通用的體系框架以簡(jiǎn)化上層服務(wù)的代碼,這些服務(wù)都極其類(lèi)似的使用了鄰居協(xié)議。通常

26、鄰居協(xié)議提供的服務(wù)能夠被不同的協(xié)議裁剪以適應(yīng)其各自的需要,下面列出了連接體系結(jié)構(gòu)提供給各協(xié)議的一些服務(wù):用于L3L2 層轉(zhuǎn)換結(jié)果的各協(xié)議緩存區(qū)用于在緩存區(qū)中增加、刪除、修改、查找特定的轉(zhuǎn)換條目的函數(shù)。因?yàn)椴檎液瘮?shù)會(huì)極大的影響系統(tǒng)的性能,所以它必須快。協(xié)議緩沖區(qū)條目的失效(或老化)機(jī)制當(dāng)緩存區(qū)滿(mǎn),但又有新的請(qǐng)求需要在緩存中創(chuàng)建一個(gè)新的條目時(shí)所采用的決策策略各協(xié)議對(duì)應(yīng)的鄰居請(qǐng)求隊(duì)列。當(dāng)包準(zhǔn)備好了將被發(fā)送,而緩存中又沒(méi)有其 L2 層地址時(shí),則包必須被放到包緩沖區(qū),直到誘發(fā)請(qǐng)求包發(fā)送并收到響應(yīng)時(shí)??蓞⒖?27 章的“隊(duì)列”一節(jié)為了使每個(gè)協(xié)議都能夠定制鄰居子系統(tǒng)的行為,它定義了一組占位符和和虛函數(shù)以使每

27、個(gè)協(xié)議替換為它應(yīng)該使用的函數(shù)。這于絕大多數(shù) linux 內(nèi)核允許用戶(hù)定制的原理類(lèi)似。鄰居層也提供了一組可調(diào)整參數(shù)用于用戶(hù)命令、/proc 文件系統(tǒng)或協(xié)議自身的配置。最后,緩存區(qū)的函數(shù)通常是面向所有的協(xié)議,但是不同的協(xié)議可以使用不同大小的關(guān)鍵字(地址)。所有,鄰居協(xié)議體系結(jié)構(gòu)提供了一個(gè)通用的方法定義使用什么類(lèi)型的關(guān)鍵字,后面的章節(jié)會(huì)降到這些細(xì)節(jié)要點(diǎn)。每個(gè)協(xié)議都能夠被使用與獨(dú)立配置,27 章的“協(xié)議初始化和清除一節(jié)”展示了鄰居協(xié)議如何在內(nèi)核中或注銷(xiāo)自己。26.4鄰居協(xié)議當(dāng)一個(gè)主機(jī)截獲發(fā)到另外的主機(jī)的數(shù)據(jù)包并代替后者處理數(shù)據(jù)包時(shí),它實(shí)際上扮演著的角的例色。當(dāng)然,這個(gè)術(shù)語(yǔ)也包含了發(fā)動(dòng)中間人(man-h

28、e-middle)的主機(jī).常見(jiàn)的一個(gè)子就是 http 服務(wù)緩沖系統(tǒng),它通過(guò)中途請(qǐng)求截獲數(shù)據(jù)包并重定向到其它 web 服務(wù)器 ,同時(shí)它會(huì)緩存來(lái)自于這些 web 服務(wù)器的網(wǎng)頁(yè)并提供給請(qǐng)求者。如果主機(jī)和應(yīng)用不需要做明確的配置去標(biāo)識(shí)提供的服務(wù)功能,則這種被稱(chēng)作透明的,前面提到的 http 服務(wù)緩沖系統(tǒng)就是的一個(gè)例子。但是,如圖 26-7 所示,服務(wù)既可以通過(guò)提供也可通過(guò)非提供。展示了兩個(gè)使用 http的例子:(a)被安裝在本地網(wǎng)路的路由器上以ernet,所有網(wǎng)絡(luò)上的主機(jī)的瀏覽請(qǐng)求都通過(guò)路第 9 頁(yè) 共 19 頁(yè)由器,因此管理員可以把路由器配置成模式以所有的 http 請(qǐng)求。這種情況被視作透明,因?yàn)樵谥?/p>

29、機(jī) B 上不需要任何的配置或特殊編程的瀏覽器。(b)主機(jī) B 上的瀏覽器被設(shè)置成使用名叫 proxy 的主機(jī)作為要時(shí)使用路由器(即當(dāng)其緩存內(nèi)容失效時(shí))。ernet。主機(jī) proxy 在必去圖 26-7 (a)(b)非前面的例子展示了流行的類(lèi)型:http 或 web,現(xiàn)在來(lái)看看本書(shū)這部分的。鄰居協(xié)議的服務(wù)器是被配置成響應(yīng)誘發(fā)請(qǐng)求的主機(jī),這臺(tái)主機(jī)沒(méi)有相應(yīng)的下層地址,且它用來(lái)代替實(shí)際擁有這些地址的其它主機(jī)。由于有一個(gè)局域網(wǎng)中。,不同局域網(wǎng)的主機(jī)可以相互的交互,就像在同例如:ARP通常用在 IPv4 網(wǎng)絡(luò)中協(xié)助底層到子網(wǎng)的傳輸。由于是透明的,所以主機(jī)并不需要特殊的協(xié)議或配置。但是如果服務(wù)器宕機(jī)了,則被

30、的主機(jī)之間的也中斷了,這可以通過(guò)提供多個(gè)服務(wù)器來(lái)避免。在這種情況下,主機(jī)會(huì)收到它(所廣播)的請(qǐng)求的多個(gè)誘發(fā)響應(yīng)。通過(guò)選擇最先到達(dá)的響應(yīng),主機(jī)可以獲得最快且負(fù)載最小的服務(wù)器(的服務(wù))。的使用也可以使依賴(lài)的主機(jī)簡(jiǎn)化配置。28 章的“與路由”提供了這樣的一個(gè)例子。Linux 內(nèi)核實(shí)現(xiàn)的鄰居協(xié)議中,僅 IPv4 和 IPv6 能夠使用其功能。這個(gè)通用的體系架構(gòu)被這兩個(gè)協(xié)議共享,并根據(jù)需要裁剪上的 ND(IPv6)改進(jìn)”小節(jié)中描述。功能。兩者之間的不同之處在 28 章的“建立在 ARP(IPv4)在 27 章的“充當(dāng)角色”一節(jié),看到協(xié)議獨(dú)立組件特性的實(shí)現(xiàn)細(xì)節(jié)(如定時(shí)器、隊(duì)列會(huì)看到 IPv4 和 ARP

31、的特殊情況的一些細(xì)節(jié)。等待)。在 28 章的“ARP”一節(jié)中,26.4.1請(qǐng)求條件收到的誘發(fā)請(qǐng)求并非都被處理,如果碰到下述情況,則服務(wù)器會(huì)響應(yīng)誘發(fā)請(qǐng)求一個(gè)地址:地址和接收請(qǐng)求的所在網(wǎng)卡配址不屬于同一子網(wǎng)。因?yàn)榉?wù)器代替其它主機(jī)響應(yīng)誘發(fā)請(qǐng)求,這些主機(jī)和發(fā)送誘發(fā)請(qǐng)求的主機(jī)一般都不在同一個(gè)子網(wǎng)。否則,(如果在同一子網(wǎng))目標(biāo)主機(jī)也會(huì)和一樣響應(yīng),這樣,它也不清楚發(fā)送請(qǐng)求的主機(jī)會(huì)選擇哪一個(gè)響應(yīng)了。特性開(kāi)啟時(shí)。這個(gè)約束聽(tīng)起來(lái)很直觀(guān),但事實(shí)并非如此。有幾個(gè)標(biāo)準(zhǔn)制約著是否需要第 10 頁(yè) 共 19 頁(yè)響應(yīng)請(qǐng)求,這些在不同的鄰居協(xié)議里面又有不同。在 linux 中,內(nèi)核提供了通用和理形式:a 基于設(shè)備兩種代設(shè)備收

32、到的所有請(qǐng)求都被處理。這是 IPv4 網(wǎng)絡(luò)中使用最常見(jiàn)的情況,IPv6 不用這種策略b 基于目標(biāo)(地址)能夠響應(yīng)對(duì)特定 IP 地址的請(qǐng)?jiān)跊Q定是否時(shí),目標(biāo)地址和設(shè)備都要被考慮。意即求,基于目標(biāo)的圖 26-8 展示了兩種在 IPv6 網(wǎng)絡(luò)中被標(biāo)準(zhǔn)化了,但是在 IPv4 網(wǎng)絡(luò)中也可以使用。之間的優(yōu)先權(quán),當(dāng)主機(jī)收到本地子網(wǎng)之外地址的誘發(fā)請(qǐng)求時(shí),如果主機(jī)的特性開(kāi)啟了,則它可以直接處理此請(qǐng)求。首先子系統(tǒng)會(huì)檢測(cè)設(shè)備上的特性是否全局性開(kāi)啟;如果沒(méi)有,則檢測(cè)設(shè)備是否被配置成特殊地址。圖 26-8設(shè)備和地址間的優(yōu)先權(quán)服務(wù)器收到請(qǐng)求時(shí),其轉(zhuǎn)發(fā)功能是開(kāi)啟的。因?yàn)榉?wù)器處在各個(gè)主機(jī)之間,它不得不在兩個(gè)終端之間轉(zhuǎn)發(fā)數(shù)據(jù)*

33、。*這并不是說(shuō)通過(guò)在主機(jī)上開(kāi)啟功能,就可以自動(dòng)開(kāi)啟轉(zhuǎn)發(fā)功能,這兩個(gè)功能是分開(kāi)配置的,但是需要轉(zhuǎn)發(fā)給核實(shí)的函數(shù)。ARP 誘發(fā)請(qǐng)求總是發(fā)送給 L2 層廣播地址,這確保所有共享同一介質(zhì)的所有主機(jī)都可以接收到。沒(méi)有設(shè)置為混雜模式。當(dāng) ARP 進(jìn)行可達(dá)確這樣,能夠截獲對(duì)這些主機(jī)的地址請(qǐng)求,即使認(rèn)(參考“可達(dá)確認(rèn)”一節(jié))時(shí),它采用單播而不是多播。ND 用 L3 層多播地址來(lái)處理誘發(fā)請(qǐng)求和響應(yīng)。當(dāng)路由器要為一個(gè)被給的 IP 地址作需要使用相關(guān)聯(lián)的 L3 層多播地址。時(shí),它第 11 頁(yè) 共 19 頁(yè)26.5 誘發(fā)請(qǐng)求傳遞和處理過(guò)程看到基于接收主機(jī)以及網(wǎng)絡(luò)物理拓?fù)渑渲玫恼T發(fā)請(qǐng)求是何時(shí)處理的,圖 26-9本節(jié)中,

34、列出了促使主機(jī)發(fā)送誘發(fā)請(qǐng)求的,圖 26-10 顯示了決定收到誘發(fā)請(qǐng)求的linux主機(jī)是否處理它的常見(jiàn)的。為了展示接收者判斷的可能的復(fù)雜性,圖 26-10 假定接收者實(shí)現(xiàn)和網(wǎng)橋的功能*;移走任何一個(gè)功能都會(huì)簡(jiǎn)化這故略去。注意圖 26-10 展示了。圖 26-10 假定是基于設(shè)備的;基于目標(biāo)的與此一致,開(kāi)啟”表示是服務(wù)器和未實(shí)現(xiàn)的普通服務(wù)器兩種情況:“服務(wù)器,“”表示普通的服務(wù)器。*我在圖 26-10 中加了橋表示橋在鄰居協(xié)議前處理,所以后面可能不會(huì)看到輸入隊(duì)列的誘發(fā)請(qǐng)求。橋的細(xì)節(jié)在第四部分已經(jīng)描述。圖 26-9 轉(zhuǎn)發(fā)誘發(fā)請(qǐng)求這是協(xié)議獨(dú)立的分析,關(guān)于 ARP 更詳細(xì)的描述放在第 28 章。圖 26

35、-10處理準(zhǔn)入的誘發(fā)請(qǐng)求第 12 頁(yè) 共 19 頁(yè)當(dāng)網(wǎng)橋被使能啟用時(shí),誘發(fā)請(qǐng)求并不是被此主機(jī)處理,而是根據(jù)網(wǎng)橋配置被轉(zhuǎn)發(fā)給正確的網(wǎng)絡(luò)接口;即網(wǎng)橋的轉(zhuǎn)發(fā)發(fā)生在正確的網(wǎng)絡(luò)接口的鄰居協(xié)議系統(tǒng)有機(jī)會(huì)處理進(jìn)入的包之前。換句話(huà)說(shuō),在 linux 內(nèi)核中實(shí)現(xiàn)的處理誘發(fā)請(qǐng)求之前,網(wǎng)橋就已經(jīng)處理過(guò)了,參考第四部分。假設(shè)網(wǎng)橋被了,要記住,建立在共享介質(zhì)基礎(chǔ)上的主機(jī)依然能夠收到屬于其它主機(jī)的誘發(fā)地址請(qǐng)求。下面是幾個(gè)影響 linux 主機(jī)是否響應(yīng)進(jìn)入的誘發(fā)請(qǐng)求的變量:邏輯子網(wǎng)(如 IP 子網(wǎng))當(dāng)請(qǐng)求地址和接收誘發(fā)請(qǐng)求的的網(wǎng)卡所配置的L3 層地址屬于同樣的邏輯子網(wǎng)時(shí)(根據(jù)接收主機(jī)的配置),即圖 26-10 中的Same

36、 logical subnet就是這種情況。拿 IPv4 作為例子,(請(qǐng)求的地址)和 /24(接收網(wǎng)卡配置的地址)屬于同樣的 IP 子網(wǎng) /24當(dāng)兩個(gè)主機(jī)屬于同樣的邏輯子網(wǎng)時(shí),它們能夠直接交互通信。否則需要路由器的協(xié)助。注意,在同樣的邏輯子網(wǎng)中,一個(gè)接口可能配置為擁有多個(gè)地址(其中之一時(shí)主地址,其它都是次地址); 在不同的邏輯子網(wǎng)中,接口也可能配置為擁有多個(gè)地址;或者上述兩種情況的組合。如果接收網(wǎng)卡在不同的邏輯子網(wǎng)并被配置擁有都個(gè)地址,則請(qǐng)求地址必須屬于某個(gè)子網(wǎng)。物理子網(wǎng)(LAN)當(dāng)兩臺(tái)主機(jī)屬于同一局域網(wǎng)時(shí),原則上它們時(shí)可以直接通信的,但是實(shí)際上它們能否通信是由L3 層邏輯配置決定的。例如,圖

37、 26-1(c)中,主機(jī)在同一局域網(wǎng),但分屬不同的 ip 子網(wǎng)。每臺(tái)主機(jī)都不會(huì)去屬于不同子網(wǎng)的其它主機(jī)的地址,但是它要路由器的地址,因?yàn)槁酚善魇撬枰ㄐ乓缘竭_(dá)遠(yuǎn)端的主機(jī)??梢詤⒖紙D 26-9。除非使用了,否則主機(jī)決不會(huì)在網(wǎng)卡接收請(qǐng)求其它網(wǎng)卡配置的 L3 層地址的誘發(fā)請(qǐng)求。因第 13 頁(yè) 共 19 頁(yè)為圖 26-10 所示的接收者情形中,在不同的邏輯子網(wǎng)下,并不能區(qū)別同樣的物理子網(wǎng)和不同的物理子網(wǎng),因?yàn)樗鼈儧](méi)有任何的不同,僅僅狀態(tài)是比較重要的。請(qǐng)求:收到的誘發(fā)請(qǐng)求也并非都處理,細(xì)節(jié)請(qǐng)參考“請(qǐng)求條件”一節(jié)第 28 章的“處理入隊(duì)列的 ARP 包”一節(jié)展示了 ARP 協(xié)議如何處理圖 26-10 中

38、的各種情形。26.6 鄰居狀態(tài)和網(wǎng)絡(luò)不可到達(dá)檢測(cè)(NUD)圖 26-11 簡(jiǎn)單概括了將包傳遞給 L3 層地址的時(shí),內(nèi)核所經(jīng)歷的步驟流程圖。圖 26-12 是一個(gè)簡(jiǎn)單模型,展示了鄰居協(xié)議所經(jīng)歷的各種狀態(tài)。圖 26-11 和圖 26-12 中的兩個(gè)模型工作在各種情況,但 linux 內(nèi)核采用更經(jīng)典的模型處理各種可能的狀態(tài)。下一節(jié)將擴(kuò)展圖 26-12 模型,后面的章節(jié)將集中在圖 26-11 所示的細(xì)節(jié)。正如看到的,管理鄰居系統(tǒng)的一個(gè)很重要的部分就是查看是否可達(dá)。圖 26-11 L3 到 L2 層地址步驟圖 26-12 L3 層到 L2 層狀態(tài)第 14 頁(yè) 共 19 頁(yè)26.6.1 可達(dá)性根據(jù)鄰居子系

39、統(tǒng)的觀(guān)點(diǎn),可達(dá)性可以做如下相關(guān)類(lèi)推。假設(shè)你和很多人包括我都在一個(gè)暗室里面,你說(shuō),每個(gè)人都到房間外面去,則每個(gè)人都會(huì)走出去,因?yàn)榇蠹叶寄軌蚵?tīng)到你說(shuō)話(huà);但是如果你需要叫我出去,你需要提供某種信息,如:名字。所以,發(fā)送給廣播目的地址的誘發(fā)響應(yīng)并不能夠提供一些發(fā)送給單播目標(biāo)地址的信息:任何人都可以接收廣播包,但是如果你想和某個(gè)接收者交互,必須提確的地址。鄰居系統(tǒng)認(rèn)為,如果內(nèi)核能夠驗(yàn)證接收者能夠正確接收到以其單播地址編址的包,主機(jī)認(rèn)為是可達(dá)的,反之亦然。換句話(huà)說(shuō),就是必須雙向可達(dá)時(shí)內(nèi)核才會(huì)認(rèn)為鄰居是可達(dá)的。本章接下來(lái)的部分用術(shù)語(yǔ)可達(dá)表示雙向可達(dá)。會(huì)在“可達(dá)確認(rèn)”小節(jié)中看到可達(dá)確認(rèn)的兩種方4 層確認(rèn)和誘發(fā)

40、響應(yīng)。26.6.2 在 NUD 狀態(tài)間的傳輸IPv6 定義了 NUM 機(jī)制有助于快速判斷鄰居是否斷開(kāi)或宕機(jī),linux 內(nèi)核在IPv4 和 IPv6 的實(shí)現(xiàn)中采用同樣的機(jī)制。類(lèi)似的模塊也會(huì)被本書(shū)沒(méi)有講述的其它協(xié)議使用,如:et。圖 26-13 總結(jié)了鄰居協(xié)議支持的狀態(tài)以及觸發(fā)狀態(tài)改變的條件。有幾種事件會(huì)導(dǎo)致創(chuàng)建鄰居條目,包括轉(zhuǎn)發(fā)數(shù)據(jù)報(bào)給鄰居的請(qǐng)求、或者從鄰居接收到誘發(fā)請(qǐng)求。鄰居條目的狀態(tài)可以在其生命期改變多次,同一個(gè)狀態(tài)可能多次出現(xiàn)在條目生命周期的不同階段。不同的協(xié)議可能導(dǎo)致不同的狀態(tài)遷移,有些特定條件下才出現(xiàn)的狀態(tài)變遷未在圖中顯示,如: IPv4 直接置最近創(chuàng)建的鄰居條目的狀態(tài)為:NUD_S

41、TALE,而IPv6 卻不這樣做。圖 26-13 后面是這些狀態(tài)的描述,可能的狀態(tài)值都是基于某類(lèi)常見(jiàn)的屬性。每個(gè)狀態(tài)下都有圖中狀態(tài)遷移的,特別是 NUD 機(jī)制。第 15 頁(yè) 共 19 頁(yè) 基本狀態(tài)圖 26-13 的狀態(tài)定義如下,NUD_NONE表示鄰居條目被創(chuàng)建,但目前尚不可用。圖 26-13 NUD 狀態(tài)遷移從新建鄰居條目時(shí)的默認(rèn)狀態(tài)開(kāi)始:下面的狀態(tài)來(lái)自于 IPV6 鄰居定義,并在還在 linux ARP/IPv4 的實(shí)現(xiàn)中采用:PLETE誘發(fā)請(qǐng)求已經(jīng)發(fā)送,但是尚未收到響應(yīng)時(shí)所處的狀態(tài)。在這個(gè)狀態(tài)下,不可以使用任何硬件地址(not even an old one, as there is w

42、ith NUD_STALE)NUD_REACHABLE鄰居地址被緩存,并且最近已知是可達(dá)的(即以及驗(yàn)證是可達(dá)的)NUD_FAILED由于誘發(fā)請(qǐng)求失敗而標(biāo)記鄰居是不可達(dá)狀態(tài)。包括創(chuàng)建條目時(shí)生成的和由NUD_PROBE觸發(fā)的誘發(fā)請(qǐng)求失敗。NUD_STALE NUD_DELAYNUD_PROBE第 16 頁(yè) 共 19 頁(yè)這幾個(gè)是遷移的中間狀態(tài);當(dāng)本達(dá)確認(rèn)”小結(jié)。機(jī)判斷鄰居是否可達(dá)的過(guò)程中設(shè)置這些狀態(tài)。可以參考“可下面幾個(gè)狀態(tài)代表一組特殊的狀態(tài),通常一旦設(shè)置就不會(huì)改變了。NUD_NOARP這個(gè)狀態(tài)用于標(biāo)記鄰居不需要任何協(xié)議來(lái)L3 層到 L2 層的地址轉(zhuǎn)換(參考“特殊情況”小節(jié))。28 章的“ARP 構(gòu)

43、造函數(shù)”小節(jié)中描述了在 IPv4/ARP 中為什么設(shè)置這個(gè)狀態(tài)的原因以及如何設(shè)置它。雖然這個(gè)狀態(tài)的名稱(chēng)暗示它僅用于 ARP,但實(shí)質(zhì)上它使用于所有鄰居協(xié)議。 NUD_PERMANENTL2 層鄰居地址被靜態(tài)配置時(shí)的狀態(tài)置(如用戶(hù)空間命令配置),所以不需要任何鄰居協(xié)議考慮它。參考 29 章的“鄰居的系統(tǒng)管理”一節(jié)。 衍生狀態(tài)除了前面小節(jié)所列出的基本狀態(tài),為了代碼的清晰可讀,當(dāng)在某些情況下需要系統(tǒng)定義了下面的一些衍生狀態(tài):多個(gè)狀態(tài)時(shí),NUD_VALID如果一個(gè)鄰居條目的狀態(tài)是下述幾個(gè)狀態(tài)中的一個(gè),則可以認(rèn)定它是NUD_VALID狀態(tài)。這表明鄰居確信現(xiàn)在有一個(gè)可用地址。即:NUD_PERMANENT、

44、NUD_NOARP、NUD_REACHABLE、NUD_PROBE、NUD_STALE、NUD_DELAYNUD_CONNECTED這個(gè)狀態(tài)是NUD_VALID的子集,表明沒(méi)有未決的確認(rèn)處理,即如下幾個(gè)狀態(tài)都表示處在NUD_CONNECTED狀態(tài):NUD_PERMANENT、NUD_NOARP、NUD_REACHABLENUD_IN_TIMER表示鄰居子系統(tǒng)為鄰居條目提供了一個(gè)正在運(yùn)行的定時(shí)器,這發(fā)生在在鄰居條目狀態(tài)不確定PLETE、NUD_DELAY、NUD_PROBE時(shí)。符合這個(gè)狀態(tài)的基本狀態(tài)是:來(lái)看一個(gè)為何衍生狀態(tài)在內(nèi)核代碼中的作用的例子,當(dāng)鄰居實(shí)例被移出時(shí),系統(tǒng)需要停止和這個(gè)數(shù)據(jù)結(jié)構(gòu)相

45、關(guān)聯(lián)的所有未決的定時(shí)器,此時(shí)它不是將鄰居狀態(tài)與這三個(gè)狀態(tài)相比較以判斷與它們是否有相關(guān)聯(lián)的未決定時(shí)器。,而是扮演清潔器的角色,定義一個(gè)NUD_IN_TIMER,并通過(guò)為操作符&來(lái)與鄰居狀態(tài)進(jìn)行比較。 初始狀態(tài)當(dāng)鄰居實(shí)例被創(chuàng)建時(shí),其缺省的狀態(tài)是 NUD_NONE。但是當(dāng)一個(gè)外部用戶(hù)命令創(chuàng)建鄰居實(shí)例時(shí),它將直接設(shè)置其狀態(tài)為 NUD_NONE(參考 29 章)。27 章的“鄰居初始化”一節(jié)解釋說(shuō):協(xié)議的constructor方法也可以根據(jù)相關(guān)設(shè)備驅(qū)動(dòng)(如點(diǎn)對(duì)點(diǎn))的屬性和L3 層地址(如廣播)來(lái)改變這個(gè)狀態(tài)26.6.3 可達(dá)確認(rèn)在“為什么靜態(tài)指定地址不夠用”一節(jié)中看到,L3 層到 L2 層的地址可能會(huì)變

46、化。因此,如果信息有一段時(shí)間未使用了,確認(rèn)信息已經(jīng)正常的達(dá)確認(rèn)。在緩存中是很有意義的。這就稱(chēng)為可第 17 頁(yè) 共 19 頁(yè)根據(jù)“需要鄰居協(xié)議的原因”一節(jié)中列出的原因,可達(dá)狀態(tài)的變化就不是必要的了,路由器、網(wǎng)橋、或其它網(wǎng)絡(luò)設(shè)備可能會(huì)可能仍然有效而被臨時(shí)使用。某些問(wèn)題。在進(jìn)行可達(dá)確認(rèn)的過(guò)程中,緩存中的信息被假定為有支持可達(dá)確認(rèn)工作的三個(gè)NUD狀態(tài)是:NUD_STALE, NUD_DELAY, 和NUD_PROBE。使用這三個(gè)狀態(tài)的主要原因是直到包需要被發(fā)送到相關(guān)鄰居時(shí)才有必要啟動(dòng)可達(dá)確認(rèn)處理。下面再次詳細(xì)說(shuō)明下這三個(gè)NUD狀態(tài)的精確的意思,并看一下確認(rèn)的兩種方法:NUD_STALE緩存中有鄰居的地址,但之后有一段時(shí)間沒(méi)有被確認(rèn)(參考 29 章的“neigh_parms結(jié)構(gòu)”一節(jié)中關(guān)于reachable_time的)。下次,一個(gè)發(fā)送給鄰居,則會(huì)啟動(dòng)可達(dá)確認(rèn)處理過(guò)程N(yùn)UD_DELAY這個(gè)狀態(tài)與N

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論