OSI七層網(wǎng)絡(luò)模型與TCP/IP四層網(wǎng)絡(luò)模型1. OSI網(wǎng)絡(luò)分層參考模型網(wǎng)絡(luò)協(xié)議設(shè)計(jì)者不應(yīng)當(dāng)設(shè)計(jì)一個(gè)單一、巨大的協(xié)議來為所有形式的通信規(guī)定完整的細(xì)節(jié),而應(yīng)把通信問題劃分成多個(gè)小問題,然后為每一個(gè)小問題設(shè)計(jì)一個(gè)單獨(dú)的協(xié)議。這樣做使得每個(gè)協(xié)議的設(shè)計(jì)、分析、時(shí)限和測(cè)試比較容易。協(xié)議劃分的一個(gè)主要原則是確保目標(biāo)系統(tǒng)有效且效率高。為了提高效率,每個(gè)協(xié)議只應(yīng)該注意沒有被其他協(xié)議處理過的那部分通信問題;為了主協(xié)議的實(shí)現(xiàn)更加有效,協(xié)議之間應(yīng)該能夠共享特定的數(shù)據(jù)結(jié)構(gòu);同時(shí)這些協(xié)議的組合應(yīng)該能處理所有可能的硬件錯(cuò)誤以及其它異常情況。為了保證這些協(xié)議工作的協(xié)同性,應(yīng)當(dāng)將協(xié)議設(shè)計(jì)和開發(fā)成完整的、協(xié)作的協(xié)議系列(即協(xié)議族),而不是孤立地開發(fā)每個(gè)協(xié)議。在網(wǎng)絡(luò)歷史的早期,國(guó)際標(biāo)準(zhǔn)化組織(ISO)和國(guó)際電報(bào)電話咨詢委員會(huì)(CCITT)共同出版了開放系統(tǒng)互聯(lián)的七層參考模型。一臺(tái)計(jì)算機(jī)操作系統(tǒng)中的網(wǎng)絡(luò)過程包括從應(yīng)用請(qǐng)求(在協(xié)議棧的頂部)到網(wǎng)絡(luò)介質(zhì)(底部) ,OSI參考模型把功能分成七個(gè)分立的層次。圖2.1表示了OSI分層模型。 ┌─────┐ │ 應(yīng)用層 │←第七層 ├─────┤ │ 表示層 │ ├─────┤ │ 會(huì)話層 │ ├─────┤ │ 傳輸層 │ ├─────┤ │ 網(wǎng)絡(luò)層 │ ├─────┤ │數(shù)據(jù)鏈路層│ ├─────┤ │ 物理層 │←第一層 └─────┘ OSI七層參考模型 OSI模型的七層分別進(jìn)行以下的操作: 第一層:物理層 負(fù)責(zé)最后將信息編碼成電流脈沖或其它信號(hào)用于網(wǎng)上傳輸。它由計(jì)算機(jī)和網(wǎng)絡(luò)介質(zhì)之間的實(shí)際界面組成,可定義電氣信號(hào)、符號(hào)、線的狀態(tài)和時(shí)鐘要求、數(shù)據(jù)編碼和數(shù)據(jù)傳輸用的連接器。如最常用的RS-232規(guī)范、10BASE-T的曼徹斯特編碼以及RJ-45就屬于第一層。所有比物理層高的層都通過事先定義好的接口而與它通話。如以太網(wǎng)的附屬單元接口(AUI),一個(gè)DB-15連接器可被用來連接層一和層二。 第二層:數(shù)據(jù)鏈路層 通過物理網(wǎng)絡(luò)鏈路提供可靠的數(shù)據(jù)傳輸。不同的數(shù)據(jù)鏈路層定義了不同的網(wǎng)絡(luò)和協(xié)議特征,其中包括物理編址、網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、錯(cuò)誤校驗(yàn)、幀序列以及流控。物理編址(相對(duì)應(yīng)的是網(wǎng)絡(luò)編址)定義了設(shè)備在數(shù)據(jù)鏈路層的編址方式;網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)定義了設(shè)備的物理連接方式,如總線拓?fù)浣Y(jié)構(gòu)和環(huán)拓?fù)浣Y(jié)構(gòu);錯(cuò)誤校驗(yàn)向發(fā)生傳輸錯(cuò)誤的上層協(xié)議告警;數(shù)據(jù)幀序列重新整理并傳輸除序列以外的幀;流控可能延緩數(shù)據(jù)的傳輸,以使接收設(shè)備不會(huì)因?yàn)樵谀骋粫r(shí)刻接收到超過其處理能力的信息流而崩潰。數(shù)據(jù)鏈路層實(shí)際上由兩個(gè)獨(dú)立的部分組成,介質(zhì)存取控制(Media Access Control,MAC)和邏輯鏈路控制層(Logical Link Control,LLC)。MAC描述在共享介質(zhì)環(huán)境中如何進(jìn)行站的調(diào)度、發(fā)生和接收數(shù)據(jù)。MAC確保信息跨鏈路的可靠傳輸,對(duì)數(shù)據(jù)傳輸進(jìn)行同步,識(shí)別錯(cuò)誤和控制數(shù)據(jù)的流向。一般地講,MAC只在共享介質(zhì)環(huán)境中才是重要的,只有在共享介質(zhì)環(huán)境中多個(gè)節(jié)點(diǎn)才能連接到同一傳輸介質(zhì)上。IEEE MAC規(guī)則定義了地址,以標(biāo)識(shí)數(shù)據(jù)鏈路層中的多個(gè)設(shè)備。邏輯鏈路控制子層管理單一網(wǎng)絡(luò)鏈路上的設(shè)備間的通信,IEEE 802.2標(biāo)準(zhǔn)定義了LLC。LLC支持無連接服務(wù)和面向連接的服務(wù)。在數(shù)據(jù)鏈路層的信息幀中定義了許多域。這些域使得多種高層協(xié)議可以共享一個(gè)物理數(shù)據(jù)鏈路。 第三層:網(wǎng)絡(luò)層 負(fù)責(zé)在源和終點(diǎn)之間建立連接。它一般包括網(wǎng)絡(luò)尋徑,還可能包括流量控制、錯(cuò)誤檢查等。相同MAC標(biāo)準(zhǔn)的不同網(wǎng)段之間的數(shù)據(jù)傳輸一般只涉及到數(shù)據(jù)鏈路層,而不同的MAC標(biāo)準(zhǔn)之間的數(shù)據(jù)傳輸都涉及到網(wǎng)絡(luò)層。例如IP路由器工作在網(wǎng)絡(luò)層,因而可以實(shí)現(xiàn)多種網(wǎng)絡(luò)間的互聯(lián)。 第四層:傳輸層 向高層提供可靠的端到端的網(wǎng)絡(luò)數(shù)據(jù)流服務(wù)。傳輸層的功能一般包括流控、多路傳輸、虛電路管理及差錯(cuò)校驗(yàn)和恢復(fù)。流控管理設(shè)備之間的數(shù)據(jù)傳輸,確保傳輸設(shè)備不發(fā)送比接收設(shè)備處理能力大的數(shù)據(jù);多路傳輸使得多個(gè)應(yīng)用程序的數(shù)據(jù)可以傳輸?shù)揭粋€(gè)物理鏈路上;虛電路由傳輸層建立、維護(hù)和終止;差錯(cuò)校驗(yàn)包括為檢測(cè)傳輸錯(cuò)誤而建立的各種不同結(jié)構(gòu);而差錯(cuò)恢復(fù)包括所采取的行動(dòng)(如請(qǐng)求數(shù)據(jù)重發(fā)),以便解決發(fā)生的任何錯(cuò)誤。傳輸控制協(xié)議(TCP)是提供可靠數(shù)據(jù)傳輸?shù)腡CP/IP協(xié)議族中的傳輸層協(xié)議。 第五層:會(huì)話層 建立、管理和終止表示層與實(shí)體之間的通信會(huì)話。通信會(huì)話包括發(fā)生在不同網(wǎng)絡(luò)應(yīng)用層之間的服務(wù)請(qǐng)求和服務(wù)應(yīng)答,這些請(qǐng)求與應(yīng)答通過會(huì)話層的協(xié)議實(shí)現(xiàn)。它還包括創(chuàng)建檢查點(diǎn),使通信發(fā)生中斷的時(shí)候可以返回到以前的一個(gè)狀態(tài)。 第六層:表示層 提供多種功能用于應(yīng)用層數(shù)據(jù)編碼和轉(zhuǎn)化,以確保以一個(gè)系統(tǒng)應(yīng)用層發(fā)送的信息可以被另一個(gè)系統(tǒng)應(yīng)用層識(shí)別。表示層的編碼和轉(zhuǎn)化模式包括公用數(shù)據(jù)表示格式、性能轉(zhuǎn)化表示格式、公用數(shù)據(jù)壓縮模式和公用數(shù)據(jù)加密模式。 公用數(shù)據(jù)表示格式就是標(biāo)準(zhǔn)的圖像、聲音和視頻格式。通過使用這些標(biāo)準(zhǔn)格式,不同類型的計(jì)算機(jī)系統(tǒng)可以相互交換數(shù)據(jù);轉(zhuǎn)化模式通過使用不同的文本和數(shù)據(jù)表示,在系統(tǒng)間交換信息,例如ASCII(American Standard Code for Information Interchange,美國(guó)標(biāo)準(zhǔn)信息交換碼);標(biāo)準(zhǔn)數(shù)據(jù)壓縮模式確保原始設(shè)備上被壓縮的數(shù)據(jù)可以在目標(biāo)設(shè)備上正確的解壓;加密模式確保原始設(shè)備上加密的數(shù)據(jù)可以在目標(biāo)設(shè)備上正確地解密。 表示層協(xié)議一般不與特殊的協(xié)議棧關(guān)聯(lián),如QuickTime是Applet計(jì)算機(jī)的視頻和音頻的標(biāo)準(zhǔn),MPEG是ISO的視頻壓縮與編碼標(biāo)準(zhǔn)。常見的圖形圖像格式PCX、GIF、JPEG是不同的靜態(tài)圖像壓縮和編碼標(biāo)準(zhǔn)。 第七層:應(yīng)用層 最接近終端用戶的OSI層,這就意味著OSI應(yīng)用層與用戶之間是通過應(yīng)用軟件直接相互作用的。注意,應(yīng)用層并非由計(jì)算機(jī)上運(yùn)行的實(shí)際應(yīng)用軟件組成,而是由向應(yīng)用程序提供訪問網(wǎng)絡(luò)資源的API(Application Program Interface,應(yīng)用程序接口)組成,這類應(yīng)用軟件程序超出了OSI模型的范疇。應(yīng)用層的功能一般包括標(biāo)識(shí)通信伙伴、定義資源的可用性和同步通信。因?yàn)榭赡軄G失通信伙伴,應(yīng)用層必須為傳輸數(shù)據(jù)的應(yīng)用子程序定義通信伙伴的標(biāo)識(shí)和可用性。定義資源可用性時(shí),應(yīng)用層為了請(qǐng)求通信而必須判定是否有足夠的網(wǎng)絡(luò)資源。在同步通信中,所有應(yīng)用程序之間的通信都需要應(yīng)用層的協(xié)同操作。 OSI的應(yīng)用層協(xié)議包括文件的傳輸、訪問及管理協(xié)議(FTAM) ,以及文件虛擬終端協(xié)議(VIP)和公用管理系統(tǒng)信息(CMIP)等。 2. TCP/IP分層模型TCP/IP分層模型(TCP/IP Layening Model)被稱作因特網(wǎng)分層模型(Internet Layering Model)、因特網(wǎng)參考模型(Internet Reference Model)。┌────────┐┌─┬─┬─┬─┬─┬─┬─┬─┬─┬─┬─┐ │ ││D│F│W│F│H│G│T│I│S│U│ │ │ ││N│I│H│T│T│O│E│R│M│S│其│ │第四層,應(yīng)用層 ││S│N│O│P│T│P│L│C│T│E│ │ │ ││ │G│I│ │P│H│N│ │P│N│ │ │ ││ │E│S│ │ │E│E│ │ │E│它│ │ ││ │R│ │ │ │R│T│ │ │T│ │ └────────┘└─┴─┴─┴─┴─┴─┴─┴─┴─┴─┴─┘ ┌────────┐┌─────────┬───────────┐ │第三層,傳輸層 ││ TCP │ ?。眨模小 々?br style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"> └────────┘└─────────┴───────────┘ ┌────────┐┌─────┬────┬──────────┐ │ ││ │ICMP│ │ │第二層,網(wǎng)間層 ││ └────┘ │ │ ││ ?。桑小 々?br style="padding-top:0px; padding-right:0px; padding-bottom:0px; padding-left:0px; margin-top:0px; margin-right:0px; margin-bottom:0px; margin-left:0px"> └────────┘└─────────────────────┘ ┌────────┐┌─────────┬───────────┐ │第一層,網(wǎng)絡(luò)接口││ARP/RARP │ 其它 │ └────────┘└─────────┴───────────┘ TCP/IP四層參考模型 TCP/IP協(xié)議被組織成四個(gè)概念層,其中有三層對(duì)應(yīng)于ISO參考模型中的相應(yīng)層。ICP/IP協(xié)議族并不包含物理層和數(shù)據(jù)鏈路層,因此它不能獨(dú)立完成整個(gè)計(jì)算機(jī)網(wǎng)絡(luò)系統(tǒng)的功能,必須與許多其他的協(xié)議協(xié)同工作。 TCP/IP分層模型的四個(gè)協(xié)議層分別完成以下的功能: 第一層:網(wǎng)絡(luò)接口層 包括用于協(xié)作IP數(shù)據(jù)在已有網(wǎng)絡(luò)介質(zhì)上傳輸?shù)膮f(xié)議。實(shí)際上TCP/IP標(biāo)準(zhǔn)并不定義與ISO數(shù)據(jù)鏈路層和物理層相對(duì)應(yīng)的功能。相反,它定義像地址解析協(xié)議(Address Resolution Protocol,ARP)這樣的協(xié)議,提供TCP/IP協(xié)議的數(shù)據(jù)結(jié)構(gòu)和實(shí)際物理硬件之間的接口。 第二層:網(wǎng)間層 對(duì)應(yīng)于OSI七層參考模型的網(wǎng)絡(luò)層。本層包含IP協(xié)議、RIP協(xié)議(Routing Information Protocol,路由信息協(xié)議),負(fù)責(zé)數(shù)據(jù)的包裝、尋址和路由。同時(shí)還包含網(wǎng)間控制報(bào)文協(xié)議(Internet Control Message Protocol,ICMP)用來提供網(wǎng)絡(luò)診斷信息。 第三層:傳輸層 對(duì)應(yīng)于OSI七層參考模型的傳輸層,它提供兩種端到端的通信服務(wù)。其中TCP協(xié)議(Transmission Control Protocol)提供可靠的數(shù)據(jù)流運(yùn)輸服務(wù),UDP協(xié)議(Use Datagram Protocol)提供不可靠的用戶數(shù)據(jù)報(bào)服務(wù)。 第四層:應(yīng)用層 對(duì)應(yīng)于OSI七層參考模型的應(yīng)用層和表達(dá)層。因特網(wǎng)的應(yīng)用層協(xié)議包括Finger、Whois、FTP(文件傳輸協(xié)議)、Gopher、HTTP(超文本傳輸協(xié)議)、Telent(遠(yuǎn)程終端協(xié)議)、SMTP(簡(jiǎn)單郵件傳送協(xié)議)、IRC(因特網(wǎng)中繼會(huì)話)、NNTP(網(wǎng)絡(luò)新聞傳輸協(xié)議)等。
PS:CCNP中寫的ARP和RARP都屬于網(wǎng)絡(luò)層,中國(guó)網(wǎng)絡(luò)工程師教程寫的ARP屬于數(shù)據(jù)鏈路層 ==================================================================================================================================
======================================================================================================
轉(zhuǎn)載自:Linux C編程一站式學(xué)習(xí)TCP/IP協(xié)議棧與數(shù)據(jù)包封裝
TCP/IP網(wǎng)絡(luò)協(xié)議棧分為應(yīng)用層(Application)、傳輸層(Transport)、網(wǎng)絡(luò)層(Network)和鏈路層(Link)四層,如下圖所示。
TCP/IP協(xié)議棧 ![]()
兩臺(tái)計(jì)算機(jī)通過TCP/IP協(xié)議通訊的過程如下所示。 傳輸層及其以下的機(jī)制由內(nèi)核提供,應(yīng)用層由用戶進(jìn)程提供,應(yīng)用程序?qū)νㄓ崝?shù)據(jù)的含義進(jìn)行解釋,而傳輸層及其以下處理通訊的細(xì)節(jié),將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)通過一定的路徑發(fā)送到另一臺(tái)計(jì)算機(jī)。應(yīng)用層數(shù)據(jù)通過協(xié)議棧發(fā)到網(wǎng)絡(luò)上時(shí),每層協(xié)議都要加上一個(gè)數(shù)據(jù)首部(header),稱為封裝(Encapsulation),如下圖所示。 不同的協(xié)議層對(duì)數(shù)據(jù)包有不同的稱謂,在傳輸層叫做段(segment),在網(wǎng)絡(luò)層叫做數(shù)據(jù)報(bào)(datagram),在鏈路層叫做幀(frame)。數(shù)據(jù)封裝成幀后發(fā)到傳輸介質(zhì)上,到達(dá)目的主機(jī)后每層協(xié)議再剝掉相應(yīng)的首部,最后將應(yīng)用層數(shù)據(jù)交給應(yīng)用程序處理。 上圖對(duì)應(yīng)兩臺(tái)計(jì)算機(jī)在同一網(wǎng)段中的情況,如果兩臺(tái)計(jì)算機(jī)在不同的網(wǎng)段中,那么數(shù)據(jù)從一臺(tái)計(jì)算機(jī)到另一臺(tái)計(jì)算機(jī)傳輸過程中要經(jīng)過一個(gè)或多個(gè)路由器,如下圖所示。 其實(shí)在鏈路層之下還有物理層,指的是電信號(hào)的傳遞方式,比如現(xiàn)在以太網(wǎng)通用的網(wǎng)線(雙絞線)、早期以太網(wǎng)采用的的同軸電纜(現(xiàn)在主要用于有線電視)、光纖等都屬于物理層的概念。物理層的能力決定了最大傳輸速率、傳輸距離、抗干擾性等。集線器(Hub)是工作在物理層的網(wǎng)絡(luò)設(shè)備,用于雙絞線的連接和信號(hào)中繼(將已衰減的信號(hào)再次放大使之傳得更遠(yuǎn))。 鏈路層有以太網(wǎng)、令牌環(huán)網(wǎng)等標(biāo)準(zhǔn),鏈路層負(fù)責(zé)網(wǎng)卡設(shè)備的驅(qū)動(dòng)、幀同步(就是說從網(wǎng)線上檢測(cè)到什么信號(hào)算作新幀的開始)、沖突檢測(cè)(如果檢測(cè)到?jīng)_突就自動(dòng)重發(fā))、數(shù)據(jù)差錯(cuò)校驗(yàn)等工作。交換機(jī)是工作在鏈路層的網(wǎng)絡(luò)設(shè)備,可以在不同的鏈路層網(wǎng)絡(luò)之間轉(zhuǎn)發(fā)數(shù)據(jù)幀(比如十兆以太網(wǎng)和百兆以太網(wǎng)之間、以太網(wǎng)和令牌環(huán)網(wǎng)之間),由于不同鏈路層的幀格式不同,交換機(jī)要將進(jìn)來的數(shù)據(jù)包拆掉鏈路層首部重新封裝之后再轉(zhuǎn)發(fā)。 網(wǎng)絡(luò)層的IP協(xié)議是構(gòu)成Internet的基礎(chǔ)。Internet上的主機(jī)通過IP地址來標(biāo)識(shí),Internet上有大量路由器負(fù)責(zé)根據(jù)IP地址選擇合適的路徑轉(zhuǎn)發(fā)數(shù)據(jù)包,數(shù)據(jù)包從Internet上的源主機(jī)到目的主機(jī)往往要經(jīng)過十多個(gè)路由器。路由器是工作在第三層的網(wǎng)絡(luò)設(shè)備,同時(shí)兼有交換機(jī)的功能,可以在不同的鏈路層接口之間轉(zhuǎn)發(fā)數(shù)據(jù)包,因此路由器需要將進(jìn)來的數(shù)據(jù)包拆掉網(wǎng)絡(luò)層和鏈路層兩層首部并重新封裝。IP協(xié)議不保證傳輸?shù)目煽啃?,?shù)據(jù)包在傳輸過程中可能丟失,可靠性可以在上層協(xié)議或應(yīng)用程序中提供支持。 網(wǎng)絡(luò)層負(fù)責(zé)點(diǎn)到點(diǎn)(point-to-point)的傳輸(這里的“點(diǎn)”指主機(jī)或路由器),而傳輸層負(fù)責(zé)端到端(end-to-end)的傳輸(這里的“端”指源主機(jī)和目的主機(jī))。傳輸層可選擇TCP或UDP協(xié)議。TCP是一種面向連接的、可靠的協(xié)議,有點(diǎn)像打電話,雙方拿起電話互通身份之后就建立了連接,然后說話就行了,這邊說的話那邊保證聽得到,并且是按說話的順序聽到的,說完話掛機(jī)斷開連接。也就是說TCP傳輸?shù)碾p方需要首先建立連接,之后由TCP協(xié)議保證數(shù)據(jù)收發(fā)的可靠性,丟失的數(shù)據(jù)包自動(dòng)重發(fā),上層應(yīng)用程序收到的總是可靠的數(shù)據(jù)流,通訊之后關(guān)閉連接。UDP協(xié)議不面向連接,也不保證可靠性,有點(diǎn)像寄信,寫好信放到郵筒里,既不能保證信件在郵遞過程中不會(huì)丟失,也不能保證信件是按順序寄到目的地的。使用UDP協(xié)議的應(yīng)用程序需要自己完成丟包重發(fā)、消息排序等工作。 目的主機(jī)收到數(shù)據(jù)包后,如何經(jīng)過各層協(xié)議棧最后到達(dá)應(yīng)用程序呢?整個(gè)過程如下圖所示。 以太網(wǎng)驅(qū)動(dòng)程序首先根據(jù)以太網(wǎng)首部中的“上層協(xié)議”字段確定該數(shù)據(jù)幀的有效載荷(payload,指除去協(xié)議首部之外實(shí)際傳輸?shù)臄?shù)據(jù))是IP、ARP還是RARP協(xié)議的數(shù)據(jù)報(bào),然后交給相應(yīng)的協(xié)議處理。假如是IP數(shù)據(jù)報(bào),IP協(xié)議再根據(jù)IP首部中的“上層協(xié)議”字段確定該數(shù)據(jù)報(bào)的有效載荷是TCP、UDP、ICMP還是IGMP,然后交給相應(yīng)的協(xié)議處理。假如是TCP段或UDP段,TCP或UDP協(xié)議再根據(jù)TCP首部或UDP首部的“端口號(hào)”字段確定應(yīng)該將應(yīng)用層數(shù)據(jù)交給哪個(gè)用戶進(jìn)程。IP地址是標(biāo)識(shí)網(wǎng)絡(luò)中不同主機(jī)的地址,而端口號(hào)就是同一臺(tái)主機(jī)上標(biāo)識(shí)不同進(jìn)程的地址,IP地址和端口號(hào)合起來標(biāo)識(shí)網(wǎng)絡(luò)中唯一的進(jìn)程。 注意,雖然IP、ARP和RARP數(shù)據(jù)報(bào)都需要以太網(wǎng)驅(qū)動(dòng)程序來封裝成幀,但是從功能上劃分,ARP和RARP屬于鏈路層,IP屬于網(wǎng)絡(luò)層。雖然ICMP、IGMP、TCP、UDP的數(shù)據(jù)都需要IP協(xié)議來封裝成數(shù)據(jù)報(bào),但是從功能上劃分,ICMP、IGMP與IP同屬于網(wǎng)絡(luò)層,TCP和UDP屬于傳輸層。本文對(duì)RARP、ICMP、IGMP協(xié)議不做進(jìn)一步介紹,有興趣的讀者可以看參考資料。
以太網(wǎng)(RFC 894)幀格式
以太網(wǎng)的幀格式如下所示: 其中的源地址和目的地址是指網(wǎng)卡的硬件地址(也叫MAC地址),長(zhǎng)度是48位,是在網(wǎng)卡出廠時(shí)固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬件地址。類型字段有三種值,分別對(duì)應(yīng)IP、ARP、RARP。幀末尾是CRC校驗(yàn)碼。 以太網(wǎng)幀中的數(shù)據(jù)長(zhǎng)度規(guī)定最小46字節(jié),最大1500字節(jié),ARP和RARP數(shù)據(jù)包的長(zhǎng)度不夠46字節(jié),要在后面補(bǔ)填充位。最大值1500稱為以太網(wǎng)的最大傳輸單元(MTU),不同的網(wǎng)絡(luò)類型有不同的MTU,如果一個(gè)數(shù)據(jù)包從以太網(wǎng)路由到撥號(hào)鏈路上,數(shù)據(jù)包長(zhǎng)度大于撥號(hào)鏈路的MTU了,則需要對(duì)數(shù)據(jù)包進(jìn)行分片(fragmentation)。ifconfig命令的輸出中也有“MTU:1500”。注意,MTU這個(gè)概念指數(shù)據(jù)幀中有效載荷的最大長(zhǎng)度,不包括幀首部的長(zhǎng)度。
ARP數(shù)據(jù)報(bào)格式
在網(wǎng)絡(luò)通訊時(shí),源主機(jī)的應(yīng)用程序知道目的主機(jī)的IP地址和端口號(hào),卻不知道目的主機(jī)的硬件地址,而數(shù)據(jù)包首先是被網(wǎng)卡接收到再去處理上層協(xié)議的,如果接收到的數(shù)據(jù)包的硬件地址與本機(jī)不符,則直接丟棄。因此在通訊前必須獲得目的主機(jī)的硬件地址。ARP協(xié)議就起到這個(gè)作用。源主機(jī)發(fā)出ARP請(qǐng)求,詢問“IP地址是192.168.0.1的主機(jī)的硬件地址是多少”,并將這個(gè)請(qǐng)求廣播到本地網(wǎng)段(以太網(wǎng)幀首部的硬件地址填FF:FF:FF:FF:FF:FF表示廣播),目的主機(jī)接收到廣播的ARP請(qǐng)求,發(fā)現(xiàn)其中的IP地址與本機(jī)相符,則發(fā)送一個(gè)ARP應(yīng)答數(shù)據(jù)包給源主機(jī),將自己的硬件地址填寫在應(yīng)答包中。 每臺(tái)主機(jī)都維護(hù)一個(gè)ARP緩存表,可以用arp -a命令查看。緩存表中的表項(xiàng)有過期時(shí)間(一般為20分鐘),如果20分鐘內(nèi)沒有再次使用某個(gè)表項(xiàng),則該表項(xiàng)失效,下次還要發(fā)ARP請(qǐng)求來獲得目的主機(jī)的硬件地址。
IP地址與路由
Pv4的IP地址長(zhǎng)度為4字節(jié),通常采用點(diǎn)分十進(jìn)制表示法(dotted decimal representation)例如0xc0a80002表示為192.168.0.2。Internet被各種路由器和網(wǎng)關(guān)設(shè)備分隔成很多網(wǎng)段,為了標(biāo)識(shí)不同的網(wǎng)段,需要把32位的IP地址劃分成網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)兩部分,網(wǎng)絡(luò)號(hào)相同的各主機(jī)位于同一網(wǎng)段,相互間可以直接通信,網(wǎng)絡(luò)號(hào)不同的主機(jī)之間通信則需要通過路由器轉(zhuǎn)發(fā)。 過去曾經(jīng)提出一種劃分網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的方案,把所有IP地址分為五類,如下圖所示。 ![]() A類 0.0.0.0到127.255.255.255 一個(gè)A類網(wǎng)絡(luò)可容納的地址數(shù)量最大,一個(gè)B類網(wǎng)絡(luò)的地址數(shù)量是65536,一個(gè)C類網(wǎng)絡(luò)的地址數(shù)量是256。D類地址用作多播地址,E類地址保留未用。 隨著Internet的飛速發(fā)展,這種劃分方案的局限性很快顯現(xiàn)出來,大多數(shù)組織都申請(qǐng)B類網(wǎng)絡(luò)地址,導(dǎo)致B類地址很快就分配完了,而A類卻浪費(fèi)了大量地址。這種方式對(duì)網(wǎng)絡(luò)的劃分是flat的而不是層級(jí)結(jié)構(gòu)(hierarchical)的,Internet上的每個(gè)路由器都必須掌握所有網(wǎng)絡(luò)的信息,隨著大量C類網(wǎng)絡(luò)的出現(xiàn),路由器需要檢索的路由表越來越龐大,負(fù)擔(dān)越來越重。 針對(duì)這種情況提出了新的劃分方案,稱為CIDR(Classless Interdomain Routing)。網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的劃分需要用一個(gè)額外的子網(wǎng)掩碼(subnet mask)來表示,而不能由IP地址本身的數(shù)值決定,也就是說,網(wǎng)絡(luò)號(hào)和主機(jī)號(hào)的劃分與這個(gè)IP地址是A類、B類還是C類無關(guān),因此稱為Classless的。這樣,多個(gè)子網(wǎng)就可以匯總(summarize)成一個(gè)Internet上的網(wǎng)絡(luò),例如,有8個(gè)站點(diǎn)都申請(qǐng)了C類網(wǎng)絡(luò),本來網(wǎng)絡(luò)號(hào)是24位的,但是這8個(gè)站點(diǎn)通過同一個(gè)ISP(Internet service provider)連到Internet上,它們網(wǎng)絡(luò)號(hào)的高21位是相同的,只有低三位不同,這8個(gè)站點(diǎn)就可以匯總,在Internet上只需要一個(gè)路由表項(xiàng),數(shù)據(jù)包通過Internet上的路由器到達(dá)ISP,然后在ISP這邊再通過次級(jí)的路由器選路到某個(gè)站點(diǎn)。 下面舉兩個(gè)例子: 劃分子網(wǎng)的例子1
劃分子網(wǎng)的例子2
可見,IP地址與子網(wǎng)掩碼做與運(yùn)算可以得到網(wǎng)絡(luò)號(hào),主機(jī)號(hào)從全0到全1就是子網(wǎng)的地址范圍。IP地址和子網(wǎng)掩碼還有一種更簡(jiǎn)潔的表示方法,例如140.252.20.68/24,表示IP地址為140.252.20.68,子網(wǎng)掩碼的高24位是1,也就是255.255.255.0。 如果一個(gè)組織內(nèi)部組建局域網(wǎng),IP地址只用于局域網(wǎng)內(nèi)的通信,而不直接連到Internet上,理論上使用任意的IP地址都可以,但是RFC 1918規(guī)定了用于組建局域網(wǎng)的私有IP地址,這些地址不會(huì)出現(xiàn)在Internet上,如下表所示。
使用私有IP地址的局域網(wǎng)主機(jī)雖然沒有Internet的IP地址,但也可以通過代理服務(wù)器或NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)等技術(shù)連到Internet上。 還有一些不能用作主機(jī)IP地址的特殊地址:
下面介紹路由的過程,首先正式定義幾個(gè)名詞:
TCP協(xié)議TCP的段格式如下圖所示 ![]() 和UDP協(xié)議一樣也有源端口號(hào)和目的端口號(hào),通訊的雙方由IP地址和端口號(hào)標(biāo)識(shí)。32位序號(hào)、32位確認(rèn)序號(hào)、窗口大小稍后詳細(xì)解釋。4位首部長(zhǎng)度和IP協(xié)議頭類似,表示TCP協(xié)議頭的長(zhǎng)度,以4字節(jié)為單位,因此TCP協(xié)議頭最長(zhǎng)可以是4x15=60字節(jié),如果沒有選項(xiàng)字段,TCP協(xié)議頭最短20字節(jié)。URG、ACK、PSH、RST、SYN、FIN是六個(gè)控制位,本節(jié)稍后將解釋SYN、ACK、FIN、RST四個(gè)位,其它位的解釋從略。16位檢驗(yàn)和將TCP協(xié)議頭和數(shù)據(jù)都計(jì)算在內(nèi)。緊急指針和各種選項(xiàng)的解釋從略。 下圖是一次TCP通訊的時(shí)序圖。 在這個(gè)例子中,首先客戶端主動(dòng)發(fā)起連接、發(fā)送請(qǐng)求,然后服務(wù)器端響應(yīng)請(qǐng)求,然后客戶端主動(dòng)關(guān)閉連接。兩條豎線表示通訊的兩端,從上到下表示時(shí)間的先后順序,注意,數(shù)據(jù)從一端傳到網(wǎng)絡(luò)的另一端也需要時(shí)間,所以圖中的箭頭都是斜的。雙方發(fā)送的段按時(shí)間順序編號(hào)為1-10,各段中的主要信息在箭頭上標(biāo)出,例如段2的箭頭上標(biāo)著SYN, 8000(0), ACK 1001, <mss 1024>,表示該段中的SYN位置1,32位序號(hào)是8000,該段不攜帶有效載荷(數(shù)據(jù)字節(jié)數(shù)為0),ACK位置1,32位確認(rèn)序號(hào)是1001,帶有一個(gè)mss選項(xiàng)值為1024。 建立連接的過程:
在這個(gè)過程中,客戶端和服務(wù)器分別給對(duì)方發(fā)了連接請(qǐng)求,也應(yīng)答了對(duì)方的連接請(qǐng)求,其中服務(wù)器的請(qǐng)求和應(yīng)答在一個(gè)段中發(fā)出,因此一共有三個(gè)段用于建立連接,稱為'''三方握手(three-way-handshake)'''。在建立連接的同時(shí),雙方協(xié)商了一些信息,例如雙方發(fā)送序號(hào)的初始值、最大段尺寸等。
|
|
|