網路的IP位址讓我們路由到LAN(區域網路),而MAC位址讓我們找到了目標電腦
MAC作用在第二層 - 資料連結層,而IP作用在第三層 - 網路層,關於MAC和IP位址的詳細解說請參考這一篇
那麼,讓我們從第二層 - 資料連結層 開始吧!
資料連結層
資料連結層透過MAC位址進行溝通,所以它的Header包含了固定長度的來源MAC位址和目的地MAC位址,結構如下所示:
我們可以看到資料連結層的header總共有三項資料,除了MAC位址之外還有type
,它是一個2 bytes的unsigned short int,具體對應的type可以參考維基百科,比較常見的有:
- 0x0800 - IPv4
- 0x86DD - IPv6
- 0x0806 - ARP
我們一直都沒說到IP位址和MAC位址怎麼做mapping對應,用的就是ARP協議,它通知路由器IP和MAC位址的對應關係。
整個header有14個bytes,而這14個bytes後面接的就是網路層的header。
網路層
網路層提供了路由和尋址的功能,幫助封包導向兩端的最佳路徑,並具有一定的擁塞控制和流量控制的功能。和資料連結層一樣,我們來看看網路層header結構:
這裡列出比較重要的欄位:
Total Length:封包總長度
Identification:識別碼,通常是為了校驗checksum
Fragmentation: 如果要傳輸大封包,能進行切割標記
Time To Live(TTL):經過幾個路由器,如果為0則傳輸失敗
Protocol:協定,例如tcp協定、icmp協定等,這和應用層的http、DNS等不同,應用層協定屬於這層協定的一部分。Protocol以數字表示,這裡列舉比較常見的:
- 1 -> ICMP
- 6 -> TCP
- 17 -> UDP
由於不同的Protocol後續的header長度內容也會不同,故需要加以區分
Checksum:用來檢錯用的
Source IP Address:來源IP位址
Destination IP Address:目的地IP位址
其header長度總共有20個bytes。
總結:
我們透過MAC位址在資料連結層找到目標電腦,並使用IP位址在網路層進行路由。MAC和IP位址各自在不同層次發揮重要作用,共同協助封包在網路中的傳輸。