TCP/IP協議棧與數據報封裝(一)

一、ISO/OSI參考模型

物理層(Physical Layer):物理層定義了所有電子及物理設備的規範,爲上層的傳輸提供了一個物理介質,本層中數據傳輸的單位爲比特(bit)。屬於本層定義的規範有EIA/TIA RS-232、EIA/TIA RS-449、V.35、RJ-45等,實際使用中的設備如網卡等屬於本層。


數據鏈路層(Data Link Layer):對物理層收到的比特流進行數據成幀。提供可靠的數據傳輸服務,實現無差錯數據傳輸。在數據

鏈路層中數據的單位爲幀(frame)。屬於本層定義的規範有SDLC、HDLC、PPP、STP、幀中繼等,實際使用中的設備如switch交換機屬於本層。

網絡層(Network Layer):網絡層負責將各個子網之間的數據進行路由選擇,分組與重組。本層中數據傳輸的單位爲數據包(packet)(This packet can be either an IP datagram or a fragment of an IP datagram)。屬於本層定義的規範有IP、IPX、RIP、OSPF、ICMP、IGMP等。實際使用中的設備如路由器屬於本層。


數據包和數據報區別:

an IP datagram is the unit of end-to-end transmission at the IP layer (before fragmentation and after reassembly), and a packet is the unit of data passed between the IP layer and the link layer. A packet can be a complete IP datagram or a fragment of an IP datagram.


傳輸層(Transport Layer):提供可靠的數據傳輸服務,它檢測路由器丟棄的包,然後產生一個重傳請求,能夠將亂序收到的數據包重新排序。在傳輸層數據的傳輸單位是段(segment)

會話層(Session Layer):管理主機之間會話過程,包括會話建立、終止和會話過程中的管理。

表示層(Presentation Layer):表示層對網絡傳輸的數據進行變換,使得多個主機之間傳送的信息能夠互相理解,包括數據的壓縮、加密、格式轉換等。

應用層(Application Layer):應用層與應用程序界面溝通,以達至展示給用戶的目的。 在此常見的協定有: HTTP,HTTPS,FTP,TELNET,SSH,SMTP,POP3等


二、TCP/IP協議四層模型

兩臺計算機通過TCP/IP協議通訊的過程如下所示:


應用層數據通過協議棧發到網絡上時,每層協議都要加上一個數據首部(header),稱爲封裝(Encapsulation),如下圖所示:

其中,appl首部: 就是應用層協議,如分析http協議數據時,App1就是HTTP協議首部,與消息體之間的分隔符號是“\r\n\r\n”

如果datatcp是指向Appl首部的位置,可以有

if( *(datatcp+j)==0x0d&&*(datatcp+j+1)==0x0a&&*(datatcp+j+2)==0x0d&&*(datatcp+j+3)==0x0a)

如果兩臺計算機在不同的網段中,那麼數據從一臺計算機到另一臺計算機傳輸過程中要經過一個或多個路由器,如下圖所示:


目的主機收到數據包後,如何經過各層協議棧最後到達應用程序呢?整個過程如下圖所示:


以太網驅動程序首先根據以太網首部中的“上層協議”字段確定該數據幀的有效載荷(payload,指除去協議首部之外實際傳輸的數據)是IP、ARP還是RARP協議的數據報,然後交給相應的協議處理。假如是IP數據報,IP協議再根據IP首部中的“上層協議”字段確定該數據報的有效載荷是TCP、UDP、ICMP還是IGMP,然後交給相應的協議處理。假如是TCP段或UDP段,TCP或UDP協議再根據TCP首部或UDP首部的“端口號”字段確定應該將應用層數據交給哪個用戶進程。IP地址是標識網絡中不同主機的地址,而端口號就是同一臺主機上標識不同進程的地址,IP地址和端口號合起來標識網絡中唯一的進程


雖然IP、ARP和RARP數據報都需要以太網驅動程序來封裝成幀,但是從功能上劃分,ARP和RARP屬於鏈路層,IP屬於網絡層。雖然ICMP、IGMP、TCP、UDP的數據都需要IP協議來封裝成數據報,但是從功能上劃分,ICMP、IGMP與IP同屬於網絡層,TCP和UDP屬於傳輸層。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章