今天來跟大家介紹一下網路封包究竟是什麼?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 封包介紹