目錄
MAC&IP&TCP
一、說明應用層數據是如何被封裝傳輸的?
1.數據發送處理過程數據封裝協議數據單元
數據包分析
(1)應用層將數據交給傳輸層,傳輸層添加上TCP的控制信息(稱爲TCP頭部),這個數據單元稱爲段(Segment),加入控制信息的過程稱爲封裝。然後,將段交給網絡層。
(2)網絡層接收到段,再添加上IP頭部,這個數據單元稱爲包(Packet)。然後,將包交給數據鏈路層。
(3)數據鏈路層接收到包,再添加上MAC頭部和尾部,這個數據單元稱爲幀(Frame)。然後,將幀交給物理層。
(4)物理層將接收到的數據轉化爲比特流,然後在網線中傳送。
2.數據接收處理過程數據封裝協議數據單元
(1)物理層接收到比特流,經過處理後將數據交給數據鏈路層。
(2)數據鏈路層將接收到的數據轉化爲數據幀,再除去MAC頭部和尾部,這個除去控制信息的過程稱爲解封裝,然後將包交給網絡層。
(3)網絡層接收到包,再除去IP頭部,然後將段交給傳輸層。
(4)傳輸層接收到段,再除去TCP頭部,然後將數據交給應用層。
二、根據截獲的數據包說明MAC,IP和TCP協議頭信息各字段的含義
1、我用WireShark抓的一個包
2、分析這個數據包
[1] MAC頭部
目的地址:40 a3 cc c0 e7 66
源地址:54 75 95 15 b3 d6
類型:08 00 表示上層使用的是ip數據包
MAC尾部:MAC幀的幀尾也只有一個字段,爲4字節長,包含的信息是幀校驗序列FCS(使用CRC校驗)。
[2] IP頭部
(1)說明:ip數據包首部最大40字節,最小20字節,一個字節8比特,比如45就是一個字節。
(2)解析該數據包
版本:4,ipv4
首部長度:5,單位爲4字節,因此首部長度爲20字節
服務類型:04
總長度:00 28,單位爲字節,因此該ip數據包的總長度爲28字節
標識:f1 00
標誌和片偏移 04 00
- 標誌:佔3位 010 (中間的一位記爲DF,Don’t Fragment;最後一個位爲MF,More Fragment)
- 片偏移:佔13位 13個0
生存時間(TTL):37
協議:06 表示上層使用的是TCP數據段
1:ICMP 4:IP 6:TCP 17:UDP 21:ftp 22:ssh 23:telnet 80:http 88:eigrp 89:ospf
首部檢驗和:9e 73
源地址:df 6f 12 d8
目的地址:c0 a8 01 68
[3] TCP頭部
源端口號:00 50
目的端口號:cb 70
序號:a6 62 ce 4a
確認號:c7 9e 0d f7
頭部長度標誌位:50 10
-
頭部長度:5(單位爲4字節) 因此長度爲20字節
-
保留:(6bits)000000
-
標誌位:010000
-
URG: 表示緊急指針是否有效
-
ACK: 表示確認號是否有效(攜帶ACK標誌的TCP報文段稱爲確認報文段)
-
PSH: 提示接收端應用程序要立即從TCP接收緩衝區讀走數據,以騰出空間接收後續的數據。(若應用程序
不讀走數據,數據會一直留在TCP模塊的接收緩衝區)
-
RST: 表示要求對方重新建立連接(攜帶RST標誌的TCP報文段爲復位報文段)
-
SYN: 表示請求建立一個連接(攜帶SYN標誌的TCP報文段稱爲同步報文段)
-
FIN: 表示通知對方要關閉連接(攜帶FIN標誌的TCP報文段爲結束報文段)
-
窗口大小:09 e5(TCP流量控制的一個手段)
校驗和:db 93(作爲TCP可靠傳輸的重要保障,這個校驗不僅包括TCP頭部,也包括數據部分)
緊急指針:00 00