tcp 資料封裝

2021-05-22 18:07:26 字數 3563 閱讀 4363

資料封裝

當主機跨越

網路向其他裝置傳輸資料時,就要進行資料封裝,就是在

osi模型的每一層加上協議資訊。每一層只與接受裝置上相應的對等層進行通訊。

為了實現通訊並交換資訊,每一層都使用協議資料單元

(protocol data units,pdu)

。在模型中的每一層,這些含有控制資訊的

pdu被附加到資料上。他們通常被附加到資料字段的報頭中。但它們也可以附加在資料字段的報尾中。

在osi

模型的每一層,通過封裝使每個

pdu被附加到資料上,而且每個

pdu都有特定的名稱(物理層:位元流;鏈路層:資料幀;

網路層:資料報;傳輸層:資料段;)其名稱取決於在每個報頭中所提供的資訊。這種

pdu資訊只能呢個由接收方裝置中的對等層讀取,在讀取之後,報頭就被剝離,然後把資料交給上一層。

圖1.28

顯示了pdu

,以及pdu

怎樣給每一層附加控制資訊。這個圖演示了上層使用者資料怎樣被轉換,以便在

網路上進行傳輸。資料流被送到傳輸層,通過傳送天內哦公布包,傳輸層能夠建立一條到接收方裝置的虛電路。然後資料流被分割成更小的塊,並且根據協議建立乙個傳輸層報頭(

pdu),將它附加到資料字段的報頭中。現在這種資料塊就稱為資料段。每個資料段要進行排序,以便資料流能夠在接收方精確地重現,與它在傳送時的順序完全一樣。

圖1.28

資料封裝。

然後,每個資料段被交到

網路層,以便通過網際網路實現

網路定址和路由選擇。在

網路層,使用邏輯定址(比如

ip)將每個資料段送到正確的

網路中。

網路層協議向來自傳輸層的資料段中新增控制報頭,現在所得到資料塊就稱為資料報或資料報。記住傳輸層和

網路層一起工作,以在接收方主機中重建資料流,但他們並不將他們的

pdu放在本地網段上

——這時得到由關路由器或主機資訊的唯一方式。

鏈路層負責從

網路層接收資料報並將它們放到

網路介質(有線或無線)上。資料鏈路層將每個資料報封裝成幀,幀的報頭中包含了源和目的主機的硬體位址。如果目的裝置在以個遠端

網路中,幀就會被送往路由器,以通過互聯

網路傳送到目的地。一旦它達到了目的

網路,就會使用以個新的幀將資料報送往目的主機。在傳輸過程中,幀會變,但是資料報不會變。

為了將幀送到

網路上,它首先必須被轉換成數碼訊號的形式。幀實際上時1和

0的邏輯組,物理層負責將這些數值封裝為數碼訊號,在同

1個本地

網路中就可以直接傳輸了。接收方裝置將使數碼訊號實現同步(靠時鐘頻率

clock rate

)並從數碼訊號中提取出1和

0,這是裝置就可以構建幀,執行迴圈冗餘效驗(

crc),並根據幀的

fcs欄位中的結果來檢驗資料是否被正確傳送。如果他們匹配,就從陣中提取出資料報,然後丟棄聲譽的部分。這個過程就稱為解封裝。資料報被提交到

網路層,在這裡對位址進行檢查。如果位址匹配,就從資料報中取出資料段。然後丟棄聲譽的部分。在傳輸層對資料段程序處理,這裡將重建資料流,並向傳送方站點去確認它收到了每個資料塊。然後,它將資料流送往高層的應用程式。

在傳送方裝置中,資料封裝過程如下:

1.使用者資訊轉換為資料,以便在

網路上傳輸。

2.資料轉換為資料段,並在傳送方和接收方主機之間建立以條可靠的連線。

3.資料段轉換為資料報或資料報,並且在報頭中放上邏輯位址,這樣,每以個資料報都可以通過網際網路進行傳輸。

4.資料報或資料報轉換為幀,以便在本地

網路中傳輸。在本地網段上,使用硬體(乙太網)位址唯一表示每一台主機。

5.幀轉換為位元流,並採用數字編碼和時鐘方案。

6.為了詳細說明這個過程,用圖

1.29

來詳細解釋分層定址的概念。

請記住,資料流是從高層送往傳輸層的。作為技術員,我們確實不用關心資料流時從那裡來的,因為那時程式設計師關心的問題。我們的工作時可靠地重建是資料流,並將它送往接收方裝置的高層。

在進一步討論圖

1.29

之前。我們線討論埠號的概念。傳輸層使用埠號來等譯虛電路和上層程序,如圖

1.30

所示。傳輸層接收到資料流,將它們組合成段。並通過建立虛電路來建立可靠的繪畫,然後它將每個段排序(編號),並使用確認技術和流量控制。如果你正在使用

tcp,虛電路就由源埠號定義。記住,主機的源埠號時從

1024

開始分配的

(0~1023

是為周知埠保留的)。當資料流在接收方主機中可靠的重建時,目的埠號就定義了準備接收資料流的上層程序(應用程式)。

圖1.29

既然我們了解了埠號的概念,以及它們時怎樣用在傳輸時的,現在讓我們再回到圖

1.30

圖1.30

一旦傳輸層資料頭資訊被加到資料片中,它就變成了資料段並交給

網路層,一起交付的還由目的

ip位址(目的

ip位址隨資料流一起從上層交給傳輸層,它時通過位於高層的名字解析方法

——可能時

dns來找到的。)

網路層在每個資料段的前面新增報頭,病假邏輯位址(

ip位址)。一旦在資料段前面新增了報頭,

pdu就稱為資料報。在資料報中由以個協議字段,用來描述資料時從**來的(即上層協議的型別,可能時

udp或

tcp),當資料報到達接收方主機時,這會使

網路層將資料段交給正確的傳輸協議。

網路層負責找到目的位址和硬體位址,這個硬體位址指示了資料報將被送到本地

網路的哪一台主機中。通過使用位址解析協議

arp就可以做到這一點。

網路層的

ip協議將檢視目的

ip位址,並將此位址與它自己的源

ip位址和子網掩碼進行比較,如果時以個本地

網路請求,本機主機的硬體位址就會通過

arp請求來得到:如果資料報時被送往遠端主機的,

ip協議就查詢預設閘道器(路由器)的

ip位址。

然後,資料報就與本地主機或缺省閘道器的目的硬體位址一起被送交給資料鏈路層。資料鏈路層將在資料報的前面新增

1個報頭,並新增其他一些資料,從而將資料報變成了幀(我們稱之為幀,時因為在資料報中新增了報頭和報尾,這使得資料就像書擋或幀),這一切就如圖

1.29

所示。幀使用

ether

型別欄位來描述資料報來自

網路層的哪乙個協議。現在,對幀執行迴圈冗餘效驗

crc,執行

crc的結果就放在幀的

「幀效驗序列

fcs」

欄位中,

fcs就是幀的報尾。

現在幀就可以交給物理層了,一次一位,這裡將使用位定時規則來對數碼訊號中的資料進行編碼。網段中的每台裝置將與時鐘同步,並從數碼訊號中抽取1和

0來構建一幀。在重建出以幀之後,就執行

crc,以確保幀時正確無誤的。如果一切正常,主機就檢查目的位址,看幀時不時給它們的。

TCP之函式封裝

本文所有函式皆是為實現 tcp之簡單回傳 二 系列所封裝的函式 所有函式皆用c語言實現。函式以及注釋如下 標頭檔案 h ifndef sysutil h define sysutil h include include void nano sleep double val 實現定時作用 ssize ...

資料封裝與解封裝

使用 未來網路分析系統 進行抓包 應用層 資料 傳輸層 tcp頭部 資料 資料段 segment 網路層 ip頭部 tcp頭部 資料 資料報 segment 資料鏈路層 mac頭部 ip頭部 tcp頭部 資料 尾部 資料幀 frame 物理層 位元流 bit 1.在應用層,資料被 翻譯 為網路世界使...

封裝資料訪問

封裝是一種如何將系統的功能進行劃分的設計理念。你並不知道某個事物是如何實現的但是你可以去去使用它。這意味著你可能將你所想到的變為現實,並且可以在稍後修改它而不會影響到系統的其它元件。正如人們經常說的那樣封裝是乙個黑盒子,你可以定義某件事怎樣去做,但不用告知全世界你是怎麼做的。舉個例子,比如你的銀行。...