資源描述:
《網(wǎng)絡(luò)協(xié)議棧、數(shù)據(jù)包封裝》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在應(yīng)用文檔-天天文庫。
1、網(wǎng)絡(luò)協(xié)議棧與數(shù)據(jù)包封裝網(wǎng)絡(luò)協(xié)議棧與數(shù)據(jù)包封裝TCP/IP網(wǎng)絡(luò)協(xié)議棧分為應(yīng)用層(Application)、傳輸層(Transport)、網(wǎng)絡(luò)層(Network)和鏈路層(Link)四層。如下圖所示(該圖出自[TCPIP])。圖36.1.TCP/IP協(xié)議棧兩臺(tái)計(jì)算機(jī)通過TCP/IP協(xié)議通訊的過程如下所示(該圖出自[TCPIP])。圖36.2.TCP/IP通訊過程傳輸層及其以下的機(jī)制由內(nèi)核提供,應(yīng)用層由用戶進(jìn)程提供(后面將介紹如何使用socketAPI編寫應(yīng)用程序),應(yīng)用程序?qū)νㄓ崝?shù)據(jù)的含義進(jìn)行解釋,而傳輸層及其以下處理通訊的細(xì)節(jié),將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)通過一定的路徑發(fā)送到另一臺(tái)計(jì)
2、算機(jī)。應(yīng)用層數(shù)據(jù)通過協(xié)議棧發(fā)到網(wǎng)絡(luò)上時(shí),每層協(xié)議都要加上一個(gè)數(shù)據(jù)首部(header),稱為封裝(Encapsulation),如下圖所示(該圖出自[TCPIP])。圖36.3.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è)路由器,
3、如下圖所示(該圖出自[TCPIP])。圖36.4.跨路由器通訊過程其實(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)線上檢測到什么信號(hào)算作新幀的開始)、沖突檢測(如果檢測到?jīng)_突就自動(dòng)重發(fā))、數(shù)據(jù)差錯(cuò)校驗(yàn)等工作。交換機(jī)是工作在
4、鏈路層的網(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ò)層和鏈路層兩層首部并重新
5、封裝。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)
6、重發(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è)過程如下圖所示(該圖出自[TCPIP])。圖36.5.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),然后
7、交給相應(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屬于鏈路層,