信息化社會(huì )的基礎是計算機和互連計算機的信息網(wǎng)絡(luò ),信息網(wǎng)絡(luò )已成為十分重要的基礎設施。計算機網(wǎng)絡(luò )源于計算機與通信技術(shù)的結合,始于 20 世紀 50 年代,在近 20 年得到迅猛發(fā)展。特別是在最近 10 年來(lái),隨著(zhù) TCP/IP 協(xié)議的廣泛應用和 Internet 的飛速發(fā)展,計算機網(wǎng)絡(luò )已經(jīng)深入千家萬(wàn)戶(hù), TCP/IP 協(xié)議也已經(jīng)成為計算機網(wǎng)絡(luò )事實(shí)上的協(xié)議標準。但是,要介紹計算機網(wǎng)絡(luò ),必須先了解國際標準化組織( International Organization for Standardization, ISO )在 80 年代初制定的“開(kāi)放系統互連參考模型”( Open System Interconnection Reference Model, OSI ),該模型在規范計算機網(wǎng)絡(luò )體系結構方面起到了不可替代的作用。
1.1.1 計算機網(wǎng)絡(luò )概念
計算機網(wǎng)絡(luò )是由地理上分散的、具有獨立功能的多臺計算機,通過(guò)通信設備和線(xiàn)路互相連接起來(lái),在配有相應的網(wǎng)絡(luò )軟件的情況下,實(shí)現計算機之間通信和資源共享的系統。計算機網(wǎng)絡(luò )按其所跨越的地理范圍可分為局域網(wǎng) LAN ( Local Area Network )和廣域網(wǎng) WAN ( Wide Area Network )。
1. 局域網(wǎng)
局域網(wǎng)一般是在一棟或相鄰的幾棟大樓內,或在一個(gè)校園、工廠(chǎng)、企業(yè)范圍內,其地理范圍通常不超過(guò) 10 公里 ,屬于一個(gè)部門(mén)或一個(gè)單位組建的專(zhuān)用網(wǎng)絡(luò )。局域網(wǎng)常常被應用于連接單位內部的計算機資源,以便共享資源(如打印機和數據庫)和交換信息。局域網(wǎng)的主要特點(diǎn)為:
局域網(wǎng)的典型代表是以太網(wǎng)( Ethernet ), Ethernet 是最早的局域網(wǎng),也是目前最流行的局域網(wǎng)。交換式、快速型以太網(wǎng)技術(shù)使以太網(wǎng)保持著(zhù)旺盛的生命力,現在的以太網(wǎng)發(fā)展成熟,都是基于 IEEE 802.3 系列標準。當前比較流行的以太網(wǎng)是 10BASE-T 、 100BASE-T 、 1000BASE-T 和 1000BASE-LX/SX 。
2. 廣域網(wǎng)
廣域網(wǎng)是一種跨越大的地域的網(wǎng)絡(luò ),通常覆蓋一個(gè)地區、一個(gè)國家乃至全世界。廣域網(wǎng)通常是為連接不同的局部網(wǎng)絡(luò )而建立的,因此多采用租用公用線(xiàn)路和專(zhuān)用線(xiàn)路的方式,如租用電話(huà)線(xiàn)、光纖、衛星等。
當前流行的廣域網(wǎng)系統是 X.25 分組交換網(wǎng)、幀中繼( Frame Relay )網(wǎng)、窄帶綜合業(yè)務(wù)數字網(wǎng) N-ISDN ( Narrowband Integrated Services Digital Network )、寬帶 ISDN ——異步傳輸模式 ATM ( Asynchronous Transfer Mode )網(wǎng),但是,最近的寬帶 IP 網(wǎng)友異軍突起之勢。
廣域網(wǎng)的典型代表是 ARPANET ,它是 Internet 的前身,是第一個(gè)計算機互聯(lián)的包交換網(wǎng)。 ARPANET 在 70 年代中期開(kāi)始出現, 1980 年開(kāi)始采用新的 TCP/IP 協(xié)議, 1983 年要求所有連接到該網(wǎng)的計算機都是用 TCP/IP 協(xié)議,正式成為 Internet ?,F在, Internet 已經(jīng)覆蓋到全球,幾乎所有的國家和地區都連入了 Internet 。
1.1.2 OSI 七層模型
現代計算機網(wǎng)絡(luò )的設計都是按照高度結構化方式進(jìn)行的, OSI 七層參考模型非常明確地表示了這一點(diǎn)。結構化設計的最為重要的手段就是分層。
1. 網(wǎng)絡(luò )協(xié)議與分層
計算機網(wǎng)絡(luò )是為了實(shí)現計算機之間的通信,任何雙方要成功地進(jìn)行通信,必須遵守一定的信息交換規則和約定,這些信息交換規則和約定就稱(chēng)為通信協(xié)議( protocol )。計算機上的網(wǎng)絡(luò )接口卡、通信軟件、通信設備都是遵循一定的協(xié)議設計的,必須符合一定的協(xié)議規范。
為了減少協(xié)議設計的復雜性,大多數網(wǎng)絡(luò )都按層或級的方式來(lái)組織,每一層都建立在它的下層之上。不同的網(wǎng)絡(luò )在分層數量和各層的名字、內容與功能上都不盡相同,然而,在所有的網(wǎng)絡(luò )中,每一層的目的都是向它的上一層提供一定的服務(wù),而把這種服務(wù)是如何實(shí)現的細節對上層加以屏蔽。
層按功能來(lái)劃分,每一層都有特定的功能,它一方面利用下一層所提供的功能,另一方面又為其上一層提供服務(wù)。通信雙方在相同層之間進(jìn)行通話(huà),通話(huà)規則和協(xié)定的整體就是該層的協(xié)議。每一層都有一個(gè)或多個(gè)協(xié)議,幾個(gè)層合成一個(gè)協(xié)議棧( protocol stack )。協(xié)議的分層模型便于協(xié)議軟件按模塊方式進(jìn)行設計和實(shí)現,這樣每層協(xié)議的設計、修改、實(shí)現和測試都可以獨立進(jìn)行,從而減少復雜性。
不同機器內包含相同協(xié)議層的實(shí)體叫做對等進(jìn)程,對等進(jìn)程是利用協(xié)議進(jìn)行通信的主體。相鄰層之間通過(guò)接口來(lái)定義相互關(guān)系,接口定義下層向上層提供的原語(yǔ)操作和服務(wù)。層和協(xié)議的集合叫做網(wǎng)絡(luò )體系結構。
2. OSI 參考模型
OSI 模型有七層,其分層原則如下:
根據這些原則, ISO 在 1983 年推出的 OSI 參考模型如圖 1-1 所示。

圖 1-1 OSI 七層參考模型
值得注意的是, OSI 參考模型本身并不是一個(gè)完整的網(wǎng)絡(luò )體系結構,因為它并未確切地描述用于各層的協(xié)議和服務(wù),它僅僅告訴我們每層應該做什么。不過(guò), ISO 已經(jīng)為各層制定了標準,但它們并不是參考模型的一部分,而是作為獨立的國際標準公布的。
1.1.3 OSI 各層簡(jiǎn)介
OSI 七層模型是指從物理層到應用層這七層,它不涉及通信的物理介質(zhì)。隨著(zhù)網(wǎng)絡(luò )技術(shù)的發(fā)展,特別是局域網(wǎng)的發(fā)展,后來(lái)對 OSI 七層模型進(jìn)行了改進(jìn)。修訂之一就是非正式地增加了一些子層和新層,如增加了第 0 層,使之覆蓋了象電纜連接器和光纖這樣的硬件細節。本節我們只對 OSI 模型的七層的功能作簡(jiǎn)單描述。
1. 物理層
物理層( physical layer )是 OSI 模型的最低層,它建立在物理通信介質(zhì)的基礎上,作為系統和通信介質(zhì)的接口,用來(lái)實(shí)現數據鏈路實(shí)體間透明的比特流傳輸。在設計上必須保證一方發(fā)送出二進(jìn)制“ 1 ”時(shí),另一方收到的也是“ 1 ”而不是“ 0 ”。
物理層是 OSI 中唯一設計通信介質(zhì)的一層,它提供與通信介質(zhì)的連接,描述這種連接的機械、電氣、功能和規程特性,以建 立、維護和釋放數據鏈路實(shí)體之間的物理連接。物理層向上層提供位信息的正確傳送。
物理層協(xié)議定義了硬件接口的一系列標準,典型地如用多少伏特電壓表示“ 1 ”,多少伏特表示“ 0 ”;一個(gè)比特持續多少時(shí)間;傳輸是雙向的還是單向的;最初的連接如何建立和完成通信后連接如何終止;一次通信中發(fā)送方和接收方如何應答;設備之間連接件的尺寸和接頭數;每根線(xiàn)的用途等。
2. 數據鏈路層
數據鏈路層( data link layer )的主要任務(wù)是加強物理層傳輸原始比特的功能,使之對網(wǎng)絡(luò )層顯現為一條無(wú)錯鏈路。它在相鄰網(wǎng)絡(luò )實(shí)體之間建立、維持和釋放數據鏈路連接,并傳輸數據鏈路數據單元(幀, frame )。它是將位收集起來(lái),按包處理的第一個(gè)層次,它完成發(fā)送包前的最后封裝,及對到達包進(jìn)行首次檢視。其主要功能為:
3. 網(wǎng)絡(luò )層
網(wǎng)絡(luò )層( network layer )關(guān)系到子網(wǎng)的運行控制,其關(guān)鍵問(wèn)題之一是確定分組從源端到目的端如何選擇路由。本層維護路由表,并確定哪一條路由是最快捷的,及何時(shí)使用替代路由。路由既可以選用網(wǎng)絡(luò )中固定的靜態(tài)路由表,幾乎保持不變,也可以在每一次會(huì )話(huà)開(kāi)始時(shí)決定(如通過(guò)終端協(xié)商決定),還可以根據當前網(wǎng)絡(luò )的負載狀況,高度靈活地為每一個(gè)分組決定路由。
網(wǎng)絡(luò )層的另一重要功能是傳輸和流量控制,它在子網(wǎng)中同時(shí)出現過(guò)多的分組時(shí),提供有效的流量控制服務(wù)來(lái)控制網(wǎng)絡(luò )連接上傳輸的分組,以免發(fā)生信息“堵塞”或“擁擠”現象。
網(wǎng)絡(luò )層提供兩種類(lèi)型的網(wǎng)絡(luò )服務(wù),即無(wú)連接的服務(wù)(數據報服務(wù))和面向連接的服務(wù)(虛電路服務(wù))。網(wǎng)絡(luò )層使較高層與連接系統所用的數據傳輸和交換技術(shù)相獨立。
IP 協(xié)議工作在本層,它提供“無(wú)連接的”或“數據報”服務(wù)。
4. 傳輸層
傳輸層( transport layer )的基本功能是從會(huì )話(huà)層接收數據,在必要時(shí)把它們劃分成較小的單元傳遞給網(wǎng)絡(luò )層,并確保到達對方的各段信息準確無(wú)誤。而且,這些任務(wù)都必須高效率地完成。
傳輸層是在網(wǎng)絡(luò )層的基礎上再增添一層軟件,使之能屏蔽掉各類(lèi)通信子網(wǎng)的差異,相用戶(hù)進(jìn)程提供一個(gè)能滿(mǎn)足其要求的服務(wù),其具有一個(gè)不變的通用接口,使用戶(hù)進(jìn)程只需了解該接口,便可方便地在網(wǎng)絡(luò )上使用網(wǎng)絡(luò )資源并進(jìn)行通信。
通常情況下,會(huì )話(huà)層每請求建立一個(gè)傳輸連接,傳輸層就為其創(chuàng )建一個(gè)獨立的網(wǎng)絡(luò )連接。如果傳輸連接需要較高的信息吞吐量,傳輸層也可以為之創(chuàng )建多個(gè)網(wǎng)絡(luò )連接,讓數據在這些網(wǎng)絡(luò )連接上分流,以提高吞吐量。另一方面,如果創(chuàng )建或維持一個(gè)網(wǎng)絡(luò )連接不合算,傳輸層可以將幾個(gè)傳輸連接復用到一個(gè)網(wǎng)絡(luò )連接上,以降低費用。在任何情況下,都要求傳輸層能使多路復用對會(huì )話(huà)層透明。
傳輸層是真正的從源到目標“端到端”的層,也就是說(shuō),源端機上的某程序,利用報文頭和控制報文與目標機上的類(lèi)似程序進(jìn)行對話(huà)。在傳輸層以下的各項層中,協(xié)議是每臺機器和它直接相鄰的機器間的協(xié)議,而不是最終的源端機和目標機之間的協(xié)議,在他們中間可能還有多個(gè)路由器。圖 1-1 說(shuō)明了這種區別, 1 層 -3 層是鏈接起來(lái)的, 4 層 -7 層是端到端的。
TCP 協(xié)議工作在本層,它提供可靠的基于連接的服務(wù)。它在兩個(gè)端點(diǎn)之間提供可靠的數據傳送,并提供端到端的差錯恢復與流控。
5. 會(huì )話(huà)層
會(huì )話(huà)層( session layer )允許不同機器上的用戶(hù)之間建立會(huì )話(huà)關(guān)系,即正式的連接。這種正式的連接使得信息的收發(fā)具有高可靠性。會(huì )話(huà)層的目的就是有效地組織和同步進(jìn)行合作的會(huì )話(huà)服務(wù)用戶(hù)之間的對話(huà),并對它們之間的數據交換進(jìn)行管理。
會(huì )話(huà)層服務(wù)之一是管理對話(huà),它允許信息同時(shí)雙向傳輸,或任意時(shí)刻只能單向傳輸。約屬于后者,則類(lèi)似于單線(xiàn)鐵路,會(huì )話(huà)層將記錄此時(shí)該輪到哪一方了。一種與會(huì )話(huà)有關(guān)的服務(wù)是令牌管理( token management ),令牌可以在會(huì )話(huà)雙方之間交換,只有持有令牌的一方可以執行某種關(guān)鍵操作。
另一種會(huì )話(huà)服務(wù)是同步( synchronization )。同步是在連續發(fā)送大量信息時(shí),為了使發(fā)送的數據更加精細地結構化,在用戶(hù)發(fā)送的數據中設置同步點(diǎn),以便記錄發(fā)送過(guò)程的狀態(tài),并且在錯誤發(fā)生導致會(huì )話(huà)中斷時(shí),會(huì )話(huà)實(shí)體能夠從一個(gè)同步點(diǎn)恢復會(huì )話(huà)繼續傳送,而不必從開(kāi)頭恢復會(huì )話(huà)。
TCP/IP 協(xié)議體系中沒(méi)有專(zhuān)門(mén)的會(huì )話(huà)層,但是在其傳輸層協(xié)議 TCP 協(xié)議實(shí)現了本層部分功能。
6. 表示層
表示層( presentation layer )完成某些特定的功能,由于這些功能常被請求,因此人們希望找到通用的解決辦法,而不 是要讓每個(gè)用戶(hù)來(lái)實(shí)現。值得一提的是,表示層以下的各層只關(guān)心可靠的傳輸比特流,而表示層關(guān)心的是所傳輸的信息的語(yǔ)法和語(yǔ)義。
表示層尚未完整定義和廣泛使用,如 TCP/IP 協(xié)議體系中就沒(méi)有定義表示層。表示層完成應用層所用數據所需要的任何轉換,以提供標準化的應用接口和公共的通信服務(wù)。如數據格式轉換、數據壓縮 / 解壓和數據加密 / 解密可能在表示層進(jìn)行。
7. 應用層
應用層( application layer )包含大量人們普遍需要的協(xié)議。本層處理安全問(wèn)題與資源的可用性。最近幾年,應用層協(xié)議發(fā)展很快,經(jīng)常用到的應用層協(xié)議有: FTP 、 TELNET 、 HTTP 、 SMTP 等。
OSI 模型的各層之間任務(wù)明確,它們只與上下相鄰層打交道:接受下層提供的服務(wù),向上層提供服務(wù)。由于所有的網(wǎng)絡(luò )協(xié)議都是分層的,象堆棧一樣,因此經(jīng)常將協(xié)議各層統稱(chēng)協(xié)議棧。它們的工作模式一般為:發(fā)送時(shí)接收上層的數據,將其分割打包,然后交給下層;接收時(shí)接收下層的數據包,將其拆包重組,然后交給上層。這樣,一個(gè)包的傳輸過(guò)程是:發(fā)送主機的應用程序將數據傳遞給網(wǎng)絡(luò )協(xié)議棧實(shí)現(網(wǎng)絡(luò )通信程序),網(wǎng)絡(luò )協(xié)議棧實(shí)現將數據層層打包,最后交由物理層在數據鏈路上發(fā)送;接收主機收到數據后,逐層拆包向上傳遞,直到最后達到應用層,應用程序得到對等方的數據。
Internet 采用的是 TCP/IP 協(xié)議體系, TCP/IP 協(xié)議體系是因其兩個(gè)著(zhù)名的協(xié)議 TCP 和 IP 而得名的。 TCP/IP 協(xié)議體系在和 OSI 的競爭中取得了決定性的勝利,得到了廣泛的認可,成為了事實(shí)上的網(wǎng)絡(luò )協(xié)議體系標準。
1.2.1 TCP/IP 分層模型
TCP/IP 協(xié)議體系和 OSI 參考模型一樣,也是一種分層結構。它是由基于硬件層次上的四個(gè)概念性層次構成,即網(wǎng)絡(luò )接口層、互聯(lián)網(wǎng)層、傳輸層和應用層。圖 1-2 表示了 TCP/IP 協(xié)議體系及其與 OSI 參考模型的對應關(guān)系。

從圖 1-2 可以看出,對照 OSI 七層協(xié)議, TCP/IP 第三層以上是應用層、傳輸層和網(wǎng)際互聯(lián)層, TCP/IP 的應用層組合了 OSI 的應用層和表示層,還包括 OSI 會(huì )話(huà)層的部分功能。但是,這樣的對應關(guān)系并不是絕對的,它只有參考意義,因為 TCP/IP 各層功能和 OSI 模型的對應層還是有一些區別的。
1. 網(wǎng)絡(luò )接口層
網(wǎng)絡(luò )接口層也稱(chēng)為數據鏈路層,它是 TCP/IP 的最底層,但是 TCP/IP 協(xié)議并沒(méi)有嚴格定義該層,它只是要求主機必須使用某種協(xié)議與網(wǎng)絡(luò )連接,以便能在其上傳遞 IP 分組。因此,在傳統的 UNIX 里,網(wǎng)絡(luò )接口通常是一個(gè)設備驅動(dòng)器,并且隨主機和網(wǎng)絡(luò )的不同而不同。
2. 互聯(lián)網(wǎng)層
互聯(lián)網(wǎng)層( Internet Layer )俗稱(chēng) IP 層,它處理機器之間的通信。它接受來(lái)自傳輸層的請求,傳輸某個(gè)具有目的地址信息的分組。該層把分組封裝到 IP 數據報中,填入數據報的首部(也稱(chēng)為報頭),使用路由算法來(lái)選擇是直接把數據報發(fā)送到目標機還是把數據報發(fā)送給路由器,然后報數據報交給下面的網(wǎng)絡(luò )接口層中的對應網(wǎng)絡(luò )接口模塊。該層還有處理接收到的數據報,檢驗其正確性,使用路由算法來(lái)決定對數據報是否在本地進(jìn)行處理還是繼續向前傳送。
3. 傳輸層
傳輸層的基本任務(wù)是提供應用層之間的通信,即端到端的通信。傳輸層管理信息流,提供可靠的傳輸服務(wù),以確保數據無(wú)差錯的、按序到達。為了這個(gè)目的,傳輸層協(xié)議軟件要進(jìn)行協(xié)商,讓接收方回送確認信息及讓發(fā)送方重發(fā)丟失的分組。傳輸層協(xié)議軟件將要傳送的數據流劃分成分組,并把每個(gè)分組連同目的地址交給下一層去發(fā)送。
4. 應用層
在這個(gè)最高層,用戶(hù)調用應用程序來(lái)訪(fǎng)問(wèn) TCP/IP 互聯(lián)網(wǎng)絡(luò )提供的多種服務(wù)。應用程序負責發(fā)送和接收數據。每個(gè)應用程序選擇所需的傳輸服務(wù)類(lèi)型,可以是獨立的報文序列,或者是連續的字節流。應用程序將數據按要求的格式傳送給傳輸層。
1.2.2 TCP/IP 分層工作原理
TCP/IP 協(xié)議體系和 OSI 模型的分層結構雖然不完全相同,但它們的分層原則是一致的,即都遵循這樣的一個(gè)思想:分層的協(xié)議要被設計成達到這樣的效果,即目標機的第 n 層所收到的數據就是源主機的第 n 層所發(fā)出的數據。
圖 1-3 描述了 TCP/IP 分層工作原理,它表示了兩臺主機上的應用程序之間傳輸報文的路徑。主機 B 上的第 n 層所收到的正是主機 A 上的第 n 層所發(fā)出的對象。
在圖 1-3 中我們忽略了一個(gè)重要的內容,即沒(méi)有描述發(fā)送方主機上的應用程序與接收主機的應用程序之間通過(guò)路由器進(jìn)行報 文傳輸的情況。圖 1-4 中描述使用路由器的 TCP / IP 分層工作,圖中報文經(jīng)歷了兩種結構不同的網(wǎng)絡(luò ),也使用了兩種不同的網(wǎng)絡(luò )幀,即一個(gè)是從主機 A 到路由器 R ,另一個(gè)是從路由器 R 到主機 B 。主機 A 發(fā)出的幀和路由器 R 接收到的幀相同,但不同于路由器 R 和主機 B 之間傳送的幀。與此形成對照的是應用程序層和傳輸層處理端到端的事務(wù),因此發(fā)送方的軟件能和最終的接收方的對等層軟件進(jìn)行通信。也就是說(shuō),分層原則保證了最終的接收方的傳輸層所收到的分組與發(fā)送方的傳輸層送出的分組是一樣的。

圖 1-3 TCP/IP 分層工作原理

圖 1-4 使用路由器的 TCP/IP 分層工作原理
1.2.3 TCP/IP 模型的分界線(xiàn)
TCP/IP 的概念性層次包含兩個(gè)重要的分界線(xiàn),一個(gè)是協(xié)議地址分界線(xiàn),以區分高層和低層的尋址,另一個(gè)是操作系統分界線(xiàn),以區分系統與應用程序。圖 1-5 描述了 TCP/IP 概念層模型的分界。

圖 1-5 TCP/IP 概念層模型的分界
高層尋址使用 IP 地址,低層尋址使用物理地址。一個(gè)概念性的界限把使用低層地址的軟件和使用高層地址的軟件區分開(kāi)來(lái),這個(gè)分界線(xiàn)出現在網(wǎng)絡(luò )接口層和 Internet 層之間,即應用程序和在 Internet 層之上的所有協(xié)議軟件只使用 IP 地址,而網(wǎng)絡(luò )接口層處理的是物理地址。因此,象 ARP 這樣的處于網(wǎng)絡(luò )接口層的協(xié)議,就不是 IP 的一部分。
通常將軟件分成操作系統和非操作系統軟件兩種類(lèi)型。當協(xié)議軟件集成到操作系統之中后,在協(xié)議軟件的低層之間進(jìn)行數據傳輸的開(kāi)銷(xiāo)比應用程序和傳輸層之間進(jìn)行數據傳送的開(kāi)銷(xiāo)要小得多。因此大多數 TCP/IP 實(shí)現都遵循圖 1-5 中上面的分界線(xiàn)。
1.2.4 復用和分解
在整個(gè)層次結構中,通信協(xié)議使用了復用和分解的技術(shù)。當發(fā)送報文時(shí),發(fā)送方在報文中加入了報文類(lèi)型、選用的協(xié)議等附加信息。所有的報文以幀的形式在網(wǎng)絡(luò )中復用傳送,形成一個(gè)分組流。在接收方收到分組時(shí),參考附加信息對接收到的分組進(jìn)行分解。圖 1-6 給出了一個(gè)分解的例子,它描述了網(wǎng)絡(luò )接口層如何根據幀的報頭中的類(lèi)型字段對接收到的幀進(jìn)行分解。

圖 1-6 基于幀的報頭中的類(lèi)型字段進(jìn)行幀的分解
復用和分解技術(shù)幾乎出現在所有的協(xié)議層次之中。當網(wǎng)絡(luò )接口層完成對幀的分解操作之后,它要把那些包含有 IP 數據報的幀送給 IP 模塊, IP 軟件模塊分析這些幀以后,參照傳輸層協(xié)議對它們進(jìn)行進(jìn)一步的分解操作。圖 1-7 描述了 IP 層的分解, IP 層的軟件模塊檢查數據報報頭,根據其中的協(xié)議類(lèi)型選擇相應的協(xié)議進(jìn)行處理。

圖 1-7 IP 層的分解
TCP/IP 協(xié)議體系及其實(shí)現中有很多概念和術(shù)語(yǔ),為了方便讀者理解后面的內容,本節集中介紹一些最常用的概念與術(shù)語(yǔ)。
1.3.1 包、網(wǎng)絡(luò )字節順序
1. 包
包( packet )是網(wǎng)絡(luò )上傳輸的數據片段,也稱(chēng)分組。在計算機網(wǎng)絡(luò )上,用戶(hù)數據要按照規定劃分為大小適中的若干組,每個(gè)組加上包頭構成一個(gè)包,這個(gè)過(guò)程稱(chēng)為封裝( encapsulation )。網(wǎng)絡(luò )上使用包為單位傳輸的目的是為了更好地實(shí)現資源共享和檢錯、糾錯。包是一種統稱(chēng),在不同的協(xié)議不同的層次,包有不同的名字,如 TCP/IP 協(xié)議中,數據鏈路層的包叫幀( Frame ), IP 層的包稱(chēng)為 IP 數據報, TCP 層的包常稱(chēng)為 TCP 報文等。應用程序自己也可以設計自己的包類(lèi)型,如在自己設計的 socket 程序中使用包。圖 1-8 是 IP 數據報格式。

圖 1-8 IP 數據報格式
2. 網(wǎng)絡(luò )字節順序
由于不同體系結構的計算機存儲數據的格式和順序都不一樣,要建立一個(gè)獨立于任何特定廠(chǎng)家的機器結構或網(wǎng)絡(luò )硬件的互聯(lián)網(wǎng),就必須定義一個(gè)數據的表示標準。例如,將一臺計算機上的一個(gè) 32 位的二進(jìn)制整數發(fā)送到另一臺計算機,由于不同的機器上存儲整數的字節順序可能不一樣,如 Intel 結構的計算機存儲整數是低地址低字節數,即最低存儲器地址存放整數的低位字節(叫做小端機, Little Endian ),而 Sun Sparc 結構的計算機存儲整數是低地址高字節數,即最低存儲器地址存放整數的高位字節(叫做大端機, Big Endian )。因此,直接把數據按照恒定的順序發(fā)送到另一臺機器上時(shí)可能會(huì )改變數字的值。
為了解決字節順序的問(wèn)題, TCP/IP 協(xié)議定義了一種所有機器在互聯(lián)網(wǎng)分組的二進(jìn)制字段中必須使用的網(wǎng)絡(luò )標準字節順序( network standard byte order ):必須首先發(fā)送整數中最高有效字節(同大端機)。因此,網(wǎng)絡(luò )應用程序都要求遵循一個(gè)字節順序轉換規則:“主機字節順序── > 網(wǎng)絡(luò )字節順序── > 主機字節順序”,即發(fā)送方將主機字節順序的整數轉換為網(wǎng)絡(luò )字節順序然后發(fā)送出去,接收方收到數據后將網(wǎng)絡(luò )字節順序的整數轉換為自己的主機字節順序然后處理。
1.3.2 服務(wù)、接口、協(xié)議
服務(wù)、接口、協(xié)議是 TCP / IP 體系結構中非常重要的概念,它們貫穿了整個(gè)參考模型的始終。
簡(jiǎn)單地講,服務(wù)是指特定一層提供的功能。例如網(wǎng)絡(luò )層提供網(wǎng)絡(luò )間尋址的功能,我們就可以說(shuō)它向它的上一層(即傳輸層)提供了網(wǎng)間尋址服務(wù);反之,也可以說(shuō)傳輸層利用了網(wǎng)絡(luò )層所提供的服務(wù)。
接口是上下層次之間調用功能和傳輸數據的方法。它類(lèi)似于程序設計中的函數調用,上層通過(guò)使用接口定義的方法來(lái)方便地使用下層提供的服務(wù)。
協(xié)議是對等層必須共同遵循的標準。它定義包格式和它們的用途的規則集。大多數包都有包頭和信息組成:包頭常常包括諸如 源和目的地址、包的長(cháng)度和類(lèi)型指示符等信息;信息部分可以是原始數據,也可以包含另一個(gè)包。一個(gè)協(xié)議則規范了交換的包的格式、信息的正確順序以及可能需要采取的附加措施。
網(wǎng)絡(luò )協(xié)議是使計算機能夠通信的標準。典型的協(xié)議規定網(wǎng)絡(luò )上的計算機如何彼此識別、數據在傳輸中應采取何種格式、信息一旦到達最終目的地時(shí)應如何處理等,協(xié)議還規定對遺失的和被破壞的傳輸或數據包的處理過(guò)程。 IPX 、 TCP/IP 、 DECnet 、 AppleTalk 都是網(wǎng)絡(luò )協(xié)議的例子。
1.3.3 尋址
網(wǎng)絡(luò )的核心概念是“尋址”。在網(wǎng)絡(luò )中,一個(gè)設備的地址是它的唯一標識。網(wǎng)絡(luò )地址通常是有數字組成的,具有標準的、以定義好的格式。網(wǎng)絡(luò )上的所有設備都需要給定一個(gè)遵循標準格式的唯一標識,即設備的地址。在一個(gè)有路由能力的網(wǎng)絡(luò )中,地址至少包括兩個(gè)部分:網(wǎng)絡(luò )部分(或域部分)和節點(diǎn)部分(或主機部分)。
1.3.4 路由器和終端節點(diǎn)
路由器和終端節點(diǎn)是兩種具有路由選擇能力的設備。
路由器是連接網(wǎng)絡(luò )的設備,它可以連接兩個(gè)或多個(gè)網(wǎng)絡(luò )。路由器具有路由選擇能力,知道怎樣將信息從網(wǎng)絡(luò )的一個(gè)部分移到另一個(gè)部分。
終端節點(diǎn)是用戶(hù)與之交互的設備──工作站、 PC 、打印機、文件服務(wù)器等。終端節點(diǎn)能夠識別網(wǎng)絡(luò )上發(fā)送給自己的信息,也能夠將信息直接發(fā)送給它知道的網(wǎng)絡(luò )設備,對于不知道如何投遞的信息,終端節點(diǎn)將其發(fā)送給本地路由器;路由器負責將信息從一個(gè)網(wǎng)絡(luò )(子網(wǎng))傳送到另一個(gè)網(wǎng)絡(luò )(子網(wǎng))。
1.3.5 IP 地址、域名
為了使連入 Internet 的眾多主機在通信時(shí)能夠相互識別, Internet 上的每一臺主機都分配有一個(gè)唯一的 32 位地址,這就是 IP 地址,也稱(chēng)作網(wǎng)際地址( Internet 地址)。在 TCP/IP 協(xié)議中, IP 地址是一個(gè) 32 位的二進(jìn)制無(wú)符號數,為了表示方便,國際通行一種點(diǎn)分十進(jìn)制表示法:即將 32 位地址按字節分為 4 段,高字節在前,每個(gè)字節用十進(jìn)制數表示出來(lái),并且各字節之間用點(diǎn)號“ . ”隔開(kāi)。這樣, IP 地址表示成了一個(gè)用點(diǎn)號隔開(kāi)的四組數字,每組數字的取值范圍只能是 0~255 ,如清華大學(xué)主頁(yè)服務(wù)器的 IP 地址就是“ 166.111. 4.100 ” 。
雖然使用 IP 地址可以唯一地識別 Internet 上的一臺主機,但是,對用戶(hù)來(lái)說(shuō),要記住一大堆毫無(wú)意義的 IP 地址數字實(shí)在是一件困難的事。因此,一個(gè)好的方法是給每一臺機器分配一個(gè)名字。 Internet 對于計算機的命名方案稱(chēng)為域名系統( Domain Name System , DNS )。
DNS 采用層次結構,入網(wǎng)的每臺主機都可以有一個(gè)類(lèi)似如下面的域名:
主機名 . 機構名 . 網(wǎng)絡(luò )名 . 頂層域名
域名通常由英文字符串組成,各段用點(diǎn)號分開(kāi),從左到右域的范圍變大,它擁有實(shí)際的含義,比 IP 地址好記得多。如清華大學(xué)的主頁(yè)服務(wù)器域名為:
www.tsinghua.edu.cn
嚴格地說(shuō),地址解析協(xié)議 ARP 并不是 TCP/IP 協(xié)議體系的一部分,但是在 Internet 和以太網(wǎng)盛行的今天,作為物理地址到 IP 地址轉換的一個(gè)協(xié)議標準, ARP 協(xié)議的重要性顯得特別突出。因此本節專(zhuān)門(mén)介紹 ARP ( Address Resolution Protocol )協(xié)議。
1.4.1 地址轉換問(wèn)題
我們前面介紹的 TCP/IP 網(wǎng)絡(luò )使用 IP 地址進(jìn)行尋址, IP 地址是一種網(wǎng)際地址,它工作在第三層。對于所有的計算機通信,最終表現為某種形式的鏈路(如以太網(wǎng)、令牌環(huán)、 FDDI 和 PPP )上將數據從節點(diǎn)移動(dòng)到另一節點(diǎn)。許多鏈路能連接多個(gè)節點(diǎn),這就要求在其上發(fā)送的所有數據都應標明目的地址,以便正確傳遞。這些地址與 IP 地址無(wú)關(guān),它們是完全獨立的,處于 IP 地址以外,這就是設備的物理硬件地址。具體到以太網(wǎng)絡(luò ),其物理硬件地址就是我們常說(shuō)的 MAC 地址。遞交一個(gè)網(wǎng)際報文分組,網(wǎng)絡(luò )軟件必須使 IP 地址最終變換成物理硬件地址,使用硬件地址來(lái)傳輸幀。
和 IP 地址不同, MAC 地址是設備內嵌的,它在設備出廠(chǎng)前就定好了。 MAC 地址是一個(gè) 6 字節的串,通常寫(xiě)成 16 進(jìn)制數,以冒號分隔,如我的一臺機器的網(wǎng)卡地址就是 08:00: 5a :c7:bd:3d 。 MAC 地址由電氣和電子工程師學(xué)會(huì )( IEEE )分配,在所有以太網(wǎng)設備中是唯一的。 MAC 地址分兩部分,前三個(gè)字節是廠(chǎng)商代碼,后三個(gè)字節是設備編號。廠(chǎng)商必須確保它生產(chǎn)的以太網(wǎng)設備都具有同樣的前三個(gè)字節(廠(chǎng)商代碼),以及不同的后三個(gè)字節。
TCP/IP 網(wǎng)絡(luò )使用 IP 地址尋址, IP 包在 IP 層實(shí)現路由選擇。但是 IP 包在數據鏈路層的傳輸卻需要知道設備的物理地址,因此需要一種 IP 地址到物理地址的轉換協(xié)議。 TCP/IP 協(xié)議棧使用一種動(dòng)態(tài)綁定技術(shù),來(lái)實(shí)現一種維護起來(lái)既高效又容易的機制,這就是地址解析協(xié)議 ARP 。
1.4.2 地址動(dòng)態(tài)轉換
ARP 協(xié)議是 TCP/IP 協(xié)議的設計人員為象以太網(wǎng)這種有廣播能力的網(wǎng)絡(luò )找到的一種創(chuàng )造性地解決地址轉換問(wèn)題的方法。這種辦法允許在不重新編譯代碼、不需維護一個(gè)集中式數據庫的情況下,在網(wǎng)絡(luò )中動(dòng)態(tài)增加新機器。這種辦法就是動(dòng)態(tài)地址轉換。
如圖 1-9 所示, ARP 動(dòng)態(tài)地址轉換的基本思想很簡(jiǎn)單:當主機 A 想轉換 IP 地址 I B 時(shí),它就廣播一個(gè)專(zhuān)門(mén)的報文分組,要求具有 IP 地址 I B 的主機以其物理地址 P B 做出應答。包括 B 在內的所有主機都收到這個(gè)請求,但是只有主機 B 才辨認其 IP 地址,發(fā)回一個(gè)回答,回答中包含其物理地址。當 A 收到回答時(shí),它便知道 B 的物理硬件地址,并使用這個(gè)地址直接把網(wǎng)際報文分組發(fā)送給 B 。

圖 1-9 ARP 地址解析示意圖
1.4.3 A RP 的實(shí)現
ARP 協(xié)議是由 David C. Plummer [ RFC 826 ]中提出,并已成為一個(gè) TCP / IP 互聯(lián)網(wǎng)協(xié)議標準。它在實(shí)現時(shí),在應用上面提到的動(dòng)態(tài)地址轉換思想的基礎上,做了一些優(yōu)化和改進(jìn),成為了一個(gè)廣泛使用的協(xié)議。
第一個(gè)改進(jìn)是采用地址轉換的高速緩存。為了減少通信成本,使用 ARP 的主機維持一個(gè)快速暫存器,其中存放這最新得到的 IP 地址到物理地址的綁定,這樣在連續發(fā)送數據時(shí)就不必反復使用 ARP 了。當一臺計算機接收到一個(gè) ARP 回答時(shí),就在它的高速緩存中保存發(fā)送方的 IP 地址及對應的物理地址,便于以后查詢(xún)。在發(fā)送分組時(shí),計算機在發(fā)出一個(gè) ARP 請求之前總是先到緩存中尋找所需的綁定。如果計算機在它的 ARP 緩存中找到了所要的綁定,就不需要在網(wǎng)上廣播。經(jīng)驗表明,由于大多數網(wǎng)絡(luò )通信發(fā)送的分組不止一個(gè),所以即使是一個(gè)小的緩存也是值得的。
另一個(gè)改進(jìn)是,發(fā)送者在每次 ARP 廣播中都包括 IP 地址到物理地址的綁定,接收者先在它們的快速暫存器中更新 IP 地址到物理地址綁定,然后再處理 ARP 報文分組。這是因為在通常情況下通信是雙向的,如果主機 A 因為要向主機 B 發(fā)送而正要使用 ARP ,那么主機 B 很可能即將向主機 A 發(fā)送。這種實(shí)現方式能夠使 ARP 的效率大為提高。
另外,為了使 IP 地址到物理地址的一致性(比如說(shuō)使用動(dòng)態(tài)地址分配 DHCP 的主機停機一段時(shí)間后重新啟動(dòng)獲取了另外一個(gè) IP 地址),暫存器中的 IP 地址到物理地址綁定在一定的時(shí)間后就被清除。
ARP 協(xié)議定義了 ARP 報文的格式,按通常的每行 4 個(gè)字節(八位組)的標準表示方法描述如圖 1-10 所示。

圖 1-10 ARP 包格式
“硬件類(lèi)型”( HARDWARE TYPE )字段表示發(fā)送方硬件地址的類(lèi)型。它的值為 1 即表示以太網(wǎng)地址。“協(xié)議類(lèi)型”( PROTOCOL TYPE )字段表示要映射的協(xié)議地址類(lèi)型。它的值為 0x0800 即表示 I P 地址。接下來(lái)的兩個(gè) 1 字節的字段,“硬件地址長(cháng)度”( HLEN )和“協(xié)議地址長(cháng)度”( PLEN )分別指出硬件地址和協(xié)議地址的長(cháng)度,以字節為單位。對于以太網(wǎng)上 IP 地址的 ARP 請求或應答來(lái)說(shuō),它們的值分別為 6 和 4 。“操作”( OPERATION )字段指出四種操作類(lèi)型,它們是 ARP 請求(值為 1 )、 ARP 應答(值為 2 )、 RARP 請求(值為 3 )和 RARP 應答(值為 4 )( RARP 是逆向地址解析協(xié)議)。這個(gè)字段必需的,因為 ARP 請求和 ARP 應答的幀類(lèi)型字段值是相同的。接下來(lái)的四個(gè)字段分別是發(fā)送端的硬件地址( HA ,在本例中是以太網(wǎng)地址)、發(fā)送端的協(xié)議地址( IA , IP 地址)、目的端的硬件地址和目的端的協(xié)議地址。
對于 ARP 請求來(lái)說(shuō),除目的端硬件地址外的所有其他的字段都有填充值。當系統收到一份目的端 IP 地址為本機 IP 地址的 ARP 請求報文后,它就把硬件地址填進(jìn)去,然后用兩個(gè)目的端地址分別替換兩個(gè)發(fā)送端地址,并把操作字段置為 2 ,最后把它發(fā)送回去。
計算機網(wǎng)絡(luò )的發(fā)展過(guò)程實(shí)際上是 TCP/IP 網(wǎng)絡(luò )協(xié)議體系不斷戰勝其他網(wǎng)絡(luò )協(xié)議體系的過(guò)程。當年 ISO 力推的 OSI 七層開(kāi)放模型雖然在實(shí)際競爭中輸給了 TCP/IP ,但是,其清晰的網(wǎng)絡(luò )層次結構對于初學(xué)者理解網(wǎng)絡(luò )層次結構卻大有裨益,并且隨著(zhù)網(wǎng)絡(luò )應用的快速發(fā)展和 TCP/IP 協(xié)議簇的日益龐大, ISO/OSI 七層開(kāi)放模型仍能給我們很多啟示。
本章是后面各章的基礎,對于沒(méi)有專(zhuān)門(mén)修過(guò)計算機網(wǎng)絡(luò )課程的讀者來(lái)說(shuō),認真閱讀本章,搞清楚 TCP/IP 協(xié)議的體系結構和相應的基本概念,對于學(xué)好后續章節很有幫助。另外, 1.4 節介紹的 ARP 協(xié)議雖然不是 TCP/IP 的組成部分,但 ARP 對于將 TCP/IP 協(xié)議和我們最常使用的以太網(wǎng)絡(luò )( Ethernet )聯(lián)系起來(lái)卻是必不可少的知識。
聯(lián)系客服