TCP/IP協(xié)議棧與數(shù)據(jù)包封裝圖文教程

TCP/IP是互聯(lián)網(wǎng)的核心協(xié)議,也是大多數(shù)網(wǎng)絡(luò)應(yīng)用的核心協(xié)議,是Internet最基本的協(xié)議、Internet國(guó)際互聯(lián)網(wǎng)絡(luò)的基礎(chǔ);而數(shù)據(jù)封裝(Data Encapsulation),就是把業(yè)務(wù)數(shù)據(jù)映射到某個(gè)封裝協(xié)議的凈荷中,然后填充對(duì)應(yīng)協(xié)議的包頭,形成封裝協(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ī)通過(guò)TCP/IP協(xié)議通訊的過(guò)程如下所示(該圖出自[TCPIP])。
36.2. TCP/IP通訊過(guò)程
傳輸層及其以下的機(jī)制由內(nèi)核提供,應(yīng)用層由用戶進(jìn)程提供(后面將介紹如何使用socket API編寫應(yīng)用程序),應(yīng)用程序?qū)νㄓ崝?shù)據(jù)的含義進(jìn)行解釋,而傳輸層及其以下處理通訊的細(xì)節(jié),將數(shù)據(jù)從一臺(tái)計(jì)算機(jī)通過(guò)一定的路徑發(fā)送到另一臺(tái)計(jì)算機(jī)。應(yīng)用層數(shù)據(jù)通過(guò)協(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ī)傳輸過(guò)程中要經(jīng)過(guò)一個(gè)或多個(gè)路由器,如下圖所示(該圖出自[TCPIP])。
36.4. 跨路由器通訊過(guò)程
其實(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)、幀同步(就是說(shuō)從網(wǎng)線上檢測(cè)到什么信號(hào)算作新幀的開(kāi)始)、沖突檢測(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)來(lái)的數(shù)據(jù)包拆掉鏈路層首部重新封裝之后再轉(zhuǎn)發(fā)。
網(wǎng)絡(luò)層的IP協(xié)議是構(gòu)成Internet的基礎(chǔ)。Internet上的主機(jī)通過(guò)IP地址來(lái)標(biāo)識(shí),Internet上有大量路由器負(fù)責(zé)根據(jù)IP地址選擇合適的路徑轉(zhuǎn)發(fā)數(shù)據(jù)包,數(shù)據(jù)包從Internet上的源主機(jī)到目的主機(jī)往往要經(jīng)過(guò)十多個(gè)路由器。路由器是工作在第三層的網(wǎng)絡(luò)設(shè)備,同時(shí)兼有交換機(jī)的功能,可以在不同的鏈路層接口之間轉(zhuǎn)發(fā)數(shù)據(jù)包,因此路由器需要將進(jìn)來(lái)的數(shù)據(jù)包拆掉網(wǎng)絡(luò)層和鏈路層兩層首部并重新封裝。IP協(xié)議不保證傳輸?shù)目煽啃裕瑪?shù)據(jù)包在傳輸過(guò)程中可能丟失,可靠性可以在上層協(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)像打電話,雙方拿起電話互通身份之后就建立了連接,然后說(shuō)話就行了,這邊說(shuō)的話那邊保證聽(tīng)得到,并且是按說(shuō)話的順序聽(tīng)到的,說(shuō)完話掛機(jī)斷開(kāi)連接。也就是說(shuō)TCP傳輸?shù)碾p方需要首先建立連接,之后由TCP協(xié)議保證數(shù)據(jù)收發(fā)的可靠性,丟失的數(shù)據(jù)包自動(dòng)重發(fā),上層應(yīng)用程序收到的總是可靠的數(shù)據(jù)流,通訊之后關(guān)閉連接。UDP協(xié)議不面向連接,也不保證可靠性,有點(diǎn)像寄信,寫好信放到郵筒里,既不能保證信件在郵遞過(guò)程中不會(huì)丟失,也不能保證信件是按順序寄到目的地的。使用UDP協(xié)議的應(yīng)用程序需要自己完成丟包重發(fā)、消息排序等工作。
相關(guān)文章
- 本文將詳細(xì)介紹TCP為什么需要進(jìn)行三次握手,需要深入了解的朋友可以參考下2012-11-19
- 有internet協(xié)議版本(TCP/IPv4)及internet協(xié)議版本(TCP/IPv6),這些稱之為傳輸控制協(xié)議/網(wǎng)間協(xié)議,是一個(gè)工業(yè)標(biāo)準(zhǔn)的協(xié)議集,它是為廣域網(wǎng)(WAN)設(shè)計(jì)的2013-06-04
- 這篇文章主要為大家介紹了什么是tcp?tcp協(xié)議的基礎(chǔ)知識(shí)有哪些?與udp的區(qū)別在哪里?以下將詳細(xì)介紹tcp的基礎(chǔ)知識(shí),需要的朋友可以參考下2014-09-16
TCP協(xié)議的一些認(rèn)識(shí)及實(shí)踐知識(shí)簡(jiǎn)介
本文來(lái)探討一下TCP協(xié)議方面的一些認(rèn)識(shí)及實(shí)踐2012-10-25- 本文詳細(xì)來(lái)探討TCP建立拆除連接的知識(shí)2012-10-25
- 這篇文章主要為大家介紹了如何解決TCP窗口大小的調(diào)節(jié)與擁塞控制的辦法,有圖有步驟,很詳細(xì),需要的朋友可以參考下2014-09-17
- 這篇文章主要介紹了圖解TCP通信三次握手和四次分手,對(duì)正在學(xué)習(xí)TPC通信的同學(xué)會(huì)有些幫助,需要的朋友可以參考下2014-09-24
- 最常見(jiàn)的是TCP和UDP端口,這是用來(lái)在互聯(lián)網(wǎng)上的計(jì)算機(jī)之間的數(shù)據(jù)交換,3688/udp端口使用服務(wù)類型簡(jiǎn)單的推- S- S簡(jiǎn)單的推協(xié)議,基礎(chǔ)概念不是很了解的朋友可以參考下本文2013-11-20
網(wǎng)絡(luò)協(xié)議 TCP三次握手與四次斷開(kāi)的詳細(xì)觀察
這篇文章主要為大家介紹了網(wǎng)絡(luò)協(xié)議之tcp協(xié)議,TCP三次握手與四次斷開(kāi)是怎么的一種情況呢,下面我們來(lái)看看觀察TCP三次握手與四次斷開(kāi),需要的朋友可以參考下2015-04-29- 這篇文章主要介紹了圖解TCP/IP協(xié)議,幫助大家輕松學(xué)會(huì)TCP/IP協(xié)議,需要的朋友可以參考下2015-12-16