一、封包與拆包
1. 封包(Packet Encapsulation)
????????封包 是指在發送數據時,將數據從高層協議封裝到低層協議的過程。每經過一層協議,數據都會被加上相應的協議頭(有時也會加上協議尾),形成一個新的數據單元,直到數據被封裝成可以在物理介質上傳輸的幀。
應用層:
????????應用層協議(如HTTP、FTP、SMTP等)生成數據。
????????例如,HTTP請求數據。
傳輸層:
????????傳輸層協議(如TCP或UDP)將應用層數據封裝成傳輸層數據段(Segment)。
????????TCP會添加TCP頭部,包括源端口、目的端口、序列號、確認號等信息。
????????UDP會添加UDP頭部,包括源端口、目的端口、長度和校驗和。
網絡層:
????????網絡層協議(如IP)將傳輸層數據段封裝成網絡層數據包(Packet)。
????????IP會添加IP頭部,包括源IP地址、目的IP地址、協議類型等信息。
數據鏈路層:
????????數據鏈路層協議(如以太網)將網絡層數據包封裝成數據鏈路層幀(Frame)。
????????以太網會添加以太網頭部,包括源MAC地址、目的MAC地址、類型/長度字段。
????????最后,添加幀尾(如CRC校驗)。
物理層:
物理層將數據鏈路層幀轉換為電信號或光信號,通過物理介質(如電纜、光纖)傳輸。
示意圖:
應用層數據
? ↓
傳輸層數據段(TCP/UDP頭部 + 應用層數據)
? ↓
網絡層數據包(IP頭部 + 傳輸層數據段)
? ↓
數據鏈路層幀(以太網頭部 + 網絡層數據包 + 幀尾)
? ↓
物理層信號
2. 拆包(Packet Decapsulation)
????????拆包 是指在接收數據時,將數據從低層協議解封裝到高層協議的過程。每經過一層協議,數據都會被去掉相應的協議頭(有時也會去掉協議尾),直到數據被還原為應用層數據。
物理層:
????????物理層將接收到的電信號或光信號轉換為數據鏈路層幀。
數據鏈路層:
????????數據鏈路層解析幀頭,提取網絡層數據包。
????????去掉以太網頭部和幀尾,將網絡層數據包傳遞給網絡層。
網絡層:
????????網絡層解析IP頭部,提取傳輸層數據段。
????????去掉IP頭部,將傳輸層數據段傳遞給傳輸層。
傳輸層:
????????傳輸層解析TCP或UDP頭部,提取應用層數據。
????????去掉TCP或UDP頭部,將應用層數據傳遞給應用層。
應用層:
????????應用層解析應用層數據,還原為原始數據。
????????例如,HTTP請求數據被還原為HTTP請求。
示意圖:
物理層信號
? ↓
數據鏈路層幀
? ↓
網絡層數據包(去掉以太網頭部和幀尾)
? ↓
傳輸層數據段(去掉IP頭部)
? ↓
應用層數據(去掉TCP/UDP頭部)
二、IP頭格式
三、UDP協議頭
四、TCP協議頭
五、MAC幀格式
補充:
①wireshark:網絡抓包工具?,網絡協議分析,網絡調試。
1. 打開? ? ? ? --- sudo?wireshark。
2. 選擇網絡設備。
3. 設置過濾條件。? ? ? ?--- port?,ip?
②http?協議:超文本傳輸協議
url,統一資源定位符?唯一表示互聯網上的某個資源(網頁,電影,圖片)
html?,腳本語言,編寫網頁。
③http?交互步驟
1.?三次握手?
2.?發送請求報文?
3.?等待服務器回復?響應報文+數據?
4. 斷開鏈接