今天來跟大家介紹一下網路封包究竟是什麼?TCP 和 UDP 的差異在哪?實體層之下的第三層:網路層和第四層:傳輸層到底做了什麼事?讓大家能貫通 Nmap 裡面掃描的方式、運作原理。
一張圖帶大家來看看究竟網路內部結構是怎麼一回事,假設我們今天要進入 Google:
我們來想像一下網路運作就好比你寫了一封信寄給別人一樣。
www.google.com
,會寫入一個 HTTP GET
的內容,也就是「信」的內容。IP
和 port
,相當於「信」的收件人和寄件人。MAC Address
,但這個目標 MAC Address
會是你家的數據機。就如同「信」的地址,然後正式寄出。由於 NAT 和 PAT 的功能是轉換,等於幫你做了一層保護,這也是為什麼我說在家裡測試網路是 OK 的!但它僅僅是「轉換」而已,並不是「加密」,仍然會有被駭客入侵的風險!
而 TCP / UDP 就發生在你的作業系統(傳輸層、網路層),我們來看看裡面是些什麼東西!
用圖片的方式介紹完眼睛看的到的東西後,我們就要用文字介面來說明一下看不到的東西了!我們已經知道封包有 HTTP Request
、IP Address
、MAC Address
,那 TCP
和 UDP
又是放在哪裡呢?
+---------------------------------------------------+
| Ethernet Header (MAC) |
| (來源 MAC、目的 MAC、Type=0x0800 for IPv4) |
+---------------------------------------------------+
| IP Header |
| (來源 IP、目的 IP、TTL、Protocol=6 TCP/17 UDP) |
+---------------------------------------------------+
| TCP Header or UDP Header |
| (來源 Port、目的 Port、序號/檢查碼...) |
+---------------------------------------------------+
| Data |
| (應用層資料,例如 HTTP、DNS、遊戲資料) |
+---------------------------------------------------+
就像俄羅斯娃娃一層層包起來一樣,你的信被 TCP/UDP
包住、被 IP
包住、最後被 MAC
包住才被寄出去。所以 TCP/UDP
標頭裡面就包含你的連接阜(Port)資訊。那我們就來看一下 TCP
標頭裡面包含了什麼東西!
你可以對照下圖,比對所有的資訊
(圖片來源:https://www.youtube.com/watch?v=D1cei2NYCDw )
如果用我們之後介紹到的工具 Wireshark 來解讀,就會看到這些資訊:
(圖片來源:https://networklessons.com/ip-routing/tcp-header )
URG = 1
才啟用,表示優先處理的資料。簡單來說 TCP
就像是寄掛號信,會有郵差來找你簽收,確保你有收到信,而且順序還可以查找。
而 UDP
就像是寄明信片,直接丟到郵筒,很快。但不確定到底有沒有正確寄到你要的地方,也有可能順序顛倒,不知道哪一封明信片先寄後寄。
特性 | TCP (Transmission Control Protocol) | UDP (User Datagram Protocol) |
---|---|---|
連線方式 | 連線導向,需要三次握手 | 無連線,直接送資料 |
可靠性 | ✅ 有確認 ACK、重傳機制,確保資料一定送達 | ❌ 沒有確認,不保證送達 |
順序 | ✅ 有序號 / 確認號,保證資料順序正確 | ❌ 封包可能亂序、掉包 |
流量控制 | ✅ 有 (Window Size) | ❌ 沒有 |
錯誤檢查 | ✅ TCP Checksum,會重傳 | ✅ UDP Checksum,若錯誤就丟棄,不重傳 |
速度 | 較慢(因為握手、確認、重傳) | 較快(封包直接丟出去) |
Header 大小 | 大(至少 20 bytes) | 小(8 bytes) |
應用場景 | HTTP/HTTPS、Email、FTP、SSH | 影片直播、語音通話、線上遊戲、DNS 查詢 |
這些 TCP/UDP
的差異,就是 Nmap 為什麼能用 -sS
(TCP SYN) 或 -sU
(UDP Scan) 來掃描的原因。
而 UDP
的封包結構如下,對比 TCP
要小很多,因為它只有 8 bytes 喔!
(圖片來源:https://www.youtube.com/watch?v=COojCgbqJWI )
掌芝士 Youtube 頻道
菜園角耕耘田地:乙太網路封包格式
Zacch 的 iThome 文章
Medium 的文章
Cloudflare 封包介紹