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地址
乙太網的幀格式如下所示:
在圖中,幀末尾就是CRC校驗碼。
此外,對其他欄位解釋如下:
欄位 | Meaning |
---|---|
目的地址 | MAC地址 |
源地址 | MAC地址 |
型別 |
三種值,分別對應IP、ARP、RARP |
注:
- 乙太網幀中的資料長度規定最小46位元組,最大1500位元組。ARP和RARP資料包的長度不夠46位元組,要在後面補填充位。最大值1500稱為乙太網的最⼤大傳輸單元MTU,不同的網路型別有不同的MTU。如果一個數據包從乙太網路由到撥號鏈路上,資料包長度大於撥號鏈路的MTU了,則需要對資料包進行分片(fragmentation)。
- ifconfig命令的輸出中也有“MTU:1500”。注 意,MTU這 個概念指資料幀中有效載荷的最大長度,不包括幀首部的長度。
- MAC地址是指網絡卡的硬體地址,長度是48位。是在網絡卡出廠時固化的。用ifconfig命令看一下,“HWaddr 00:15:F2:14:9E:3F”部分就是硬體地址。