电竞比分网-中国电竞赛事及体育赛事平台

分享

OSI七層網(wǎng)絡(luò)模型,TCP/IP四層網(wǎng)絡(luò)模型與網(wǎng)絡(luò)協(xié)議解析

 leon0821 2013-11-23
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ù)鏈路層

==================================================================================================================================

總結(jié)
OSI中的層 功能 TCP/IP協(xié)議族
應(yīng)用層 文件傳輸,電子郵件,文件服務(wù),虛擬終端 TFTP,HTTP,SNMP,F(xiàn)TP,SMTP,DNS,RIP,Telnet
表示層 數(shù)據(jù)格式化,代碼轉(zhuǎn)換,數(shù)據(jù)加密 沒有協(xié)議
會(huì)話層 解除或建立與別的接點(diǎn)的聯(lián)系 沒有協(xié)議
傳輸層 提供端對(duì)端的接口 TCP,UDP
網(wǎng)絡(luò)層 數(shù)據(jù)包選擇路由 IP,ICMP,OSPF,BGP,IGMP,ARP,RARP
數(shù)據(jù)鏈路層 傳輸有地址的幀以及錯(cuò)誤檢測(cè)功能 SLIP,CSLIP,PPP,MTU,ARP,RARP
物理層 以二進(jìn)制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù) ISO2110,IEEE802,IEEE802.2

======================================================================================================

轉(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é)議棧

TCP/IP協(xié)議棧

兩臺(tái)計(jì)算機(jī)通過TCP/IP協(xié)議通訊的過程如下所示。

TCP/IP通訊過程

TCP/IP通訊過程

傳輸層及其以下的機(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),如下圖所示。

TCP/IP數(shù)據(jù)包的封裝

TCP/IP數(shù)據(jù)包的封裝

不同的協(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è)過程如下圖所示。

 Multiplexing過程

Multiplexing過程

以太網(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)幀格式

以太網(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地址分為五類,如下圖所示。

IP地址類

A類 0.0.0.0到127.255.255.255
B類 128.0.0.0到191.255.255.255
C類 192.0.0.0到223.255.255.255
D類 224.0.0.0到239.255.255.255
E類 240.0.0.0到247.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

IP地址 140.252.20.68 8C FC 14 44
子網(wǎng)掩碼 255.255.255.0 FF FF FF 00
網(wǎng)絡(luò)號(hào) 140.252.20.0 8C FC 14 00
子網(wǎng)地址范圍 140.252.20.0~140.252.20.255  

劃分子網(wǎng)的例子2

IP地址 140.252.20.68 8C FC 14 44
子網(wǎng)掩碼 255.255.255.240 FF FF FF F0
網(wǎng)絡(luò)號(hào) 140.252.20.64 8C FC 14 40
子網(wǎng)地址范圍 140.252.20.64~140.252.20.79  

可見,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上,如下表所示。

  • 10.*,前8位是網(wǎng)絡(luò)號(hào),共16,777,216個(gè)地址

  • 172.16.*到172.31.*,前12位是網(wǎng)絡(luò)號(hào),共1,048,576個(gè)地址

  • 192.168.*,前16位是網(wǎng)絡(luò)號(hào),共65,536個(gè)地址

使用私有IP地址的局域網(wǎng)主機(jī)雖然沒有Internet的IP地址,但也可以通過代理服務(wù)器或NAT(網(wǎng)絡(luò)地址轉(zhuǎn)換)等技術(shù)連到Internet上。

還有一些不能用作主機(jī)IP地址的特殊地址:

  • 目的地址為255.255.255.255,表示本網(wǎng)絡(luò)內(nèi)部廣播,路由器不轉(zhuǎn)發(fā)這樣的廣播數(shù)據(jù)包。

  • 主機(jī)號(hào)全為0的地址只表示網(wǎng)絡(luò)而不能表示某個(gè)主機(jī),如192.168.10.0(假設(shè)子網(wǎng)掩碼為255.255.255.0)。

  • 目的地址的主機(jī)號(hào)為全1,表示廣播至某個(gè)網(wǎng)絡(luò)的所有主機(jī),例如目的地址192.168.10.255表示廣播至192.168.10.0網(wǎng)絡(luò)(假設(shè)子網(wǎng)掩碼為255.255.255.0)。

下面介紹路由的過程,首先正式定義幾個(gè)名詞:

路由(名詞)

數(shù)據(jù)包從源地址到目的地址所經(jīng)過的路徑,由一系列路由節(jié)點(diǎn)組成。

路由(動(dòng)詞)

某個(gè)路由節(jié)點(diǎn)為數(shù)據(jù)報(bào)選擇投遞方向的選路過程。

路由節(jié)點(diǎn)

一個(gè)具有路由能力的主機(jī)或路由器,它維護(hù)一張路由表,通過查詢路由表來決定向哪個(gè)接口發(fā)送數(shù)據(jù)包。

接口

路由節(jié)點(diǎn)與某個(gè)網(wǎng)絡(luò)相連的網(wǎng)卡接口。

路由表

由很多路由條目組成,每個(gè)條目都指明去往某個(gè)網(wǎng)絡(luò)的數(shù)據(jù)包應(yīng)該經(jīng)由哪個(gè)接口發(fā)送,其中最后一條是缺省路由條目。

路由條目

路由表中的一行,每個(gè)條目主要由目的網(wǎng)絡(luò)地址、子網(wǎng)掩碼、下一跳地址、發(fā)送接口四部分組成,如果要發(fā)送的數(shù)據(jù)包的目的網(wǎng)絡(luò)地址匹配路由表中的某一行,就按規(guī)定的接口發(fā)送到下一跳地址。

缺省路由條目

路由表中的最后一行,主要由下一跳地址和發(fā)送接口兩部分組成,當(dāng)目的地址與路由表中其它行都不匹配時(shí),就按缺省路由條目規(guī)定的接口發(fā)送到下一跳地址。


TCP協(xié)議

段格式 

TCP的段格式如下圖所示

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)的解釋從略。

通訊時(shí)序 

下圖是一次TCP通訊的時(shí)序圖。

TCP連接建立斷開

TCP連接建立斷開

在這個(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。

建立連接的過程:

  1. 客戶端發(fā)出段1,SYN位表示連接請(qǐng)求。序號(hào)是1000,這個(gè)序號(hào)在網(wǎng)絡(luò)通訊中用作臨時(shí)的地址,每發(fā)一個(gè)數(shù)據(jù)字節(jié),這個(gè)序號(hào)要加1,這樣在接收端可以根據(jù)序號(hào)排出數(shù)據(jù)包的正確順序,也可以發(fā)現(xiàn)丟包的情況,另外,規(guī)定SYN位和FIN位也要占一個(gè)序號(hào),這次雖然沒發(fā)數(shù)據(jù),但是由于發(fā)了SYN位,因此下次再發(fā)送應(yīng)該用序號(hào)1001。mss表示最大段尺寸,如果一個(gè)段太大,封裝成幀后超過了鏈路層的最大幀長(zhǎng)度,就必須在IP層分片,為了避免這種情況,客戶端聲明自己的最大段尺寸,建議服務(wù)器端發(fā)來的段不要超過這個(gè)長(zhǎng)度。

  2. 服務(wù)器發(fā)出段2,也帶有SYN位,同時(shí)置ACK位表示確認(rèn),確認(rèn)序號(hào)是1001,表示“我接收到序號(hào)1000及其以前所有的段,請(qǐng)你下次發(fā)送序號(hào)為1001的段”,也就是應(yīng)答了客戶端的連接請(qǐng)求,同時(shí)也給客戶端發(fā)出一個(gè)連接請(qǐng)求,同時(shí)聲明最大尺寸為1024。

  3. 客戶端發(fā)出段3,對(duì)服務(wù)器的連接請(qǐng)求進(jìn)行應(yīng)答,確認(rèn)序號(hào)是8001。

在這個(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)的初始值、最大段尺寸等。


    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多