1. 程式人生 > >TCP/IP四層模型及各層協議首部詳述

TCP/IP四層模型及各層協議首部詳述

1. OSI七層和TCP/IP四層的關係

1.1 OSI引入了服務、介面、協議、分層的概念,TCP/IP借鑑了OSI的這些概念建立TCP/IP模型。

1.2 OSI先有模型,後有協議,先有標準,後進行實踐;而TCP/IP則相反,先有協議和應用再提出了模型,且是參照的OSI模型。

1.3 OSI是一種理論下的模型,而TCP/IP已被廣泛使用,成為網路互聯事實上的標準。

TCP:transmission control protocol 傳輸控制協議

UDP:user data protocol 使用者資料報協議

OSI七層網路模型

TCP/IP四層概念模型  

對應網路協議

應用層(Application)

應用層

HTTP、TFTP, FTP, NFS, WAIS、SMTP

表示層(Presentation)

Telnet, Rlogin, SNMP, Gopher

會話層(Session)

SMTP, DNS

傳輸層(Transport)

傳輸層

TCP, UDP

網路層(Network)

網路層

IP, ICMP, ARP, RARP, AKP, UUCP

資料鏈路層(Data Link)

資料鏈路層

FDDI, Ethernet, Arpanet, PDN, SLIP, PPP

物理層(Physical)

IEEE 802.1A, IEEE 802.2到IEEE 802.11

2. OSI七層協議模型

應用層協議需要掌握的是:HTTP(Hyper text transfer protocol)、FTP(file transfer protocol)、SMTP(simple mail transfer rotocol)、POP3(post office protocol 3)、IMAP4(Internet mail access protocol)

3. TCP/IP四層模型

3.1 應用層:對應OSI中的應用層、表示層、會話層

3.2 物理鏈路層:對應OSI中的資料鏈路層、物理層(也有叫網路介面層)

3.3 資料包說明:

IP層傳輸單位是IP分組,屬於點到點的傳輸;TCP層傳輸單位是TCP段,屬於端到端的傳輸

UPD首部

UPD首部格式如下:

UDP 是無連線的,即傳送資料之前不需要建立連線

UDP 使用盡最大努力交付,即不保證可靠交付,同時也不使用擁塞控制。

UDP 是面向報文的。UDP 沒有擁塞控制,很適合多媒體通訊的要求。

UDP 支援一對一、一對多、多對一和多對多的互動通訊。

UDP 的首部開銷小,只有 8 個位元組

  • 埠號:用來表示傳送和接受程序。由於 I P層已經把I P資料報分配給T C P或U D P(根據I P首部中協議欄位值),因此T C P埠號由T C P來檢視,而 U D P埠號由UDP來檢視。T C P埠號與UDP埠號是相互獨立的。

  • 長度:UDP長度欄位指的是UDP首部和UDP資料的位元組長度。該欄位的最小值為 8位元組(傳送一份0位元組的UDP資料報是 O K)。

  • 檢驗和:UDP檢驗和是一個端到端的檢驗和。它由傳送端計算,然後由接收端驗證。其目的是為了發現UDP首部和資料在傳送端到接收端之間發生的任何改動


TCP報文段首部

TCP報文段首部的前20個位元組是固定的,後面的位元組是根據需要增加的。首部格式如下:

TCP 提供可靠交付的服務,保證資料無差錯、不丟失、不重複、按序到達。

TCP 提供全雙工通訊。

TCP雖然是面向位元組流的,但TCP傳送的資料單元卻是報文段。一個TCP 報文段分為首部和資料兩部分

  • 1、第一個4位元組: 
    • (1)源埠,16位;傳送資料的源程序埠
    • (2)目的埠,16位;接收資料的程序埠
  • 2、第二個4位元組與第三個4位元組 
    • (1)序號,32位;代表當前TCP資料段第一個位元組佔整個位元組流的相對位置;
    • (2)確認號,32位;代表接收端希望接收的資料序號,為上次接收到資料報的序號+1,當ACK標誌位為1時才生效。
  • 3、第四個4位元組: 
    • (1)資料偏移,4位;實際代表TCP首部長度,最大為60位元組。
    • (2)6個標誌位,每個標誌位1位; 
      SYN,為同步標誌,用於資料同步; 
      ACK,為確認序號,ACK=1時確認號才有效; 
      FIN,為結束序號,用於傳送端提出斷開連線; 
      URG,為緊急序號,URG=1是緊急指標有效; 
      PSH,指示接收方立即將資料提交給應用層,而不是等待緩衝區滿; 
      RST,重置連線。
  • 4、第五個4位元組 
    • (1)校驗和,16位;用於檢驗資料完整性。
    • (2)緊急指標,16位;只有當URG標識位為1時,緊急指標才有效。緊急指標的值與序號的相加值為緊急資料的最後一個位元組位置。用於傳送緊急資料。

IP報文

IP報文是在網路層傳輸的資料單元,也叫IP資料報。IP報文格式如下圖


  • 1、第一個4位元組(也就是第一行):

    • (1)版本號(Version),4位;用於標識IP協議版本,IPv4是0100,IPv6是0110,也就是二進位制的4和6。
    • (2)首部長度(Internet Header Length),4位;用於標識首部的長度,單位為4位元組,所以首部長度最大值為:(2^4 - 1) * 4 = 60位元組,但一般只推薦使用20位元組的固定長度。
    • (3)服務型別(Type Of Service),8位;用於標識IP包的優先順序,但現在並未使用。
    • (4)總長度(Total Length),16位;標識IP資料報的總長度,最大為:2^16 -1 = 65535位元組。
  • 2、第二個四位元組:

    • (1)標識(Identification),16位;用於標識IP資料報,如果因為資料鏈路層幀資料段長度限制(也就是MTU,支援的最大傳輸單元),IP資料報需要進行分片傳送,則每個分片的IP資料報標識都是一致的。
    • (2)標誌(Flag),3位,但目前只有2位有意義;最低位為MF,MF=1代表後面還有分片的資料報,MF=0代表當前資料報已是最後的資料報。次低位為DF,DF=1代表不能分片,DF=0代表可以分片。
    • (3)片偏移(Fragment Offset),13位;代表某個分片在原始資料中的相對位置。
  • 3、第三個四位元組:

    • (1)生存時間(TTL),8位;以前代表IP資料報最大的生存時間,現在標識IP資料報可以經過的路由器數。
    • (2)協議(Protocol),8位;代表上層傳輸層協議的型別,1代表ICMP,2代表IGMP,6代表TCP,17代表UDP。
    • (3)校驗和(Header Checksum),16位;用於驗證資料完整性,計算方法為,首先將校驗和位置零,然後將每16位二進位制反碼求和即為校驗和,最後寫入校驗和位置。
  • 4、第四個四位元組:源IP地址

  • 5、第五個四位元組:目的IP地址

乙太網的幀格式如下所示:

5 

在圖中,幀末尾就是CRC校驗碼。

此外,對其他欄位解釋如下:

欄位 Meaning
目的地址 MAC地址
源地址 MAC地址
型別 三種值,分別對應IP、ARP、RARP
最常用的 MAC 幀是乙太網V2的格式


注:

  1. 乙太網幀中的資料長度規定最小46位元組,最大1500位元組。ARP和RARP資料包的長度不夠46位元組,要在後面補填充位。最大值1500稱為乙太網的最⼤大傳輸單元MTU,不同的網路型別有不同的MTU。如果一個數據包從乙太網路由到撥號鏈路上,資料包長度大於撥號鏈路的MTU了,則需要對資料包進行分片(fragmentation)。
  2. ifconfig命令的輸出中也有“MTU:1500”。注 意,MTU這 個概念指資料幀中有效載荷的最大長度,不包括幀首部的長度。
  3. MAC地址是指網絡卡的硬體地址,長度是48位。是在網絡卡出廠時固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬體地址。