檢視 TCP/IP 應用程式
Inspect TCP/IP Applications
從 DNS、HTTP 與 TCP 連線狀態理解應用程式如何使用網路。
基本拓撲 TOPOLOGY
原創示意圖 · 靜態拓撲設備與位址 ADDRESSING
先確認介面名稱,再開始設定| 設備 DEVICE | 介面 | IPv4 位址 | 子網路遮罩 | 預設閘道 |
|---|---|---|---|---|
| PC1 | Ethernet | 192.168.40.10 | 255.255.255.0 | 不需要 |
| SRV1 | Ethernet | 192.168.40.53 | 255.255.255.0 | 不需要 |
| SRV1 | DNS A record | web.ccna.test → 192.168.40.53 | — | — |
查看線路對照表(2 條連線)
| 起點 | 終點 | 介面對照 |
|---|---|---|
| pc1 | sw1 | Ethernet ↔ Fa0/1 |
| sw1 | srv1 | Fa0/2 ↔ Ethernet |
這次練習,你會學到
- 將 DNS 名稱解析、TCP 建立與 HTTP 請求分開檢查。
- 辨識本地臨時埠與伺服器服務埠。
- 使用自己的測試服務,避免掃描或負載他人主機。
開始之前
- 具備本題涉及的 IPv4/IPv6 與子網路基礎,能在自己的隔離練習環境開啟 Console。
- 使用合法設備與軟體映像,先備份現有設定,介面名稱以自己的裝置為準。
適用環境與驗證狀態
Windows 10/11 + 自有 HTTP/DNS 實驗服務待驗證原創教案,尚未於實體設備驗證。依實際硬體、IOS/AireOS 版本與授權核對命令;介面名稱不可直接套用至正式設備。
循序操作 STEP BY STEP
在你自己的練習環境操作。命令複製不包含提示字元;所有輸出皆為示例。
01 準備受控 DNS / HTTP 服務
兩個交換器埠放同一 VLAN40。於自己的 SRV1 準備 DNS(UDP/TCP53)與 HTTP(TCP8080),建立 web.ccna.test 的 A 記錄,測試頁顯示 CCNA HTTP LAB。.test 為測試名稱,不應送到公開 DNS。PC1 設 192.168.40.10/24,DNS 192.168.40.53。網站不會替你啟動這些服務。
查看預期結果 範例輸出,非真實執行
PC1 與 SRV1 同網段,SRV1 確有監聽 DNS53 與 HTTP8080。準備 A 設定交換器的 VLAN40
SW1 Fa0/1 接 PC1、Fa0/2 接 SRV1。兩端都設 /24;同網段不需要路由器。PC1/SRV1 在作業系統網路設定中配置靜態位址;SRV1 使用自己的隔離 Ubuntu 24.04/26.04 VM,先確認安裝套件所需來源,完成後回到隔離網段。
展開參考指令 SW1 · 依每行命令切換;主機命令在作業系統終端機執行
enable
configure terminal
vlan 40
name APP_LAB
interface range FastEthernet0/1 - 2
switchport mode access
switchport access vlan 40
no shutdown
end
show vlan briefSW1 Fa0/1 接 PC1、Fa0/2 接 SRV1。兩端都設 /24;同網段不需要路由器。PC1/SRV1 在作業系統網路設定中配置靜態位址;SRV1 使用自己的隔離 Ubuntu 24.04/26.04 VM,先確認安裝套件所需來源,完成後回到隔離網段。
查看預期結果 範例輸出,非真實執行
VLAN40 包含 Fa0/1、Fa0/2;PC1 能 ping 192.168.40.53。準備 B 啟動自己的 DNS
以下僅用於新建、專用 SRV1。先確認 192.168.40.53 已綁定且沒有既有服務使用該位址的 TCP/UDP53。dnsmasq 不提供 DHCP、也不轉送外部 DNS。Ubuntu 的 systemd-resolved 通常只綁 loopback;若有衝突先檢查 ss,不任意停用正式 DNS。必要時在自己的防火牆允許來源 192.168.40.10 到 TCP/UDP53。
展開參考指令 SRV1 Linux · 依每行命令切換;主機命令在作業系統終端機執行
sudo apt-get update
sudo apt-get install -y dnsmasq python3
ip -br address
sudo ss -lntup
printf '%s\n' 'listen-address=192.168.40.53' 'bind-interfaces' 'no-resolv' 'no-hosts' 'address=/web.ccna.test/192.168.40.53' | sudo tee /etc/dnsmasq.d/ccna-lab.conf
sudo dnsmasq --test
sudo systemctl restart dnsmasq
sudo systemctl status dnsmasq --no-pager以下僅用於新建、專用 SRV1。先確認 192.168.40.53 已綁定且沒有既有服務使用該位址的 TCP/UDP53。dnsmasq 不提供 DHCP、也不轉送外部 DNS。Ubuntu 的 systemd-resolved 通常只綁 loopback;若有衝突先檢查 ss,不任意停用正式 DNS。必要時在自己的防火牆允許來源 192.168.40.10 到 TCP/UDP53。
查看預期結果 範例輸出,非真實執行
dnsmasq 語法檢查成功,服務 active;PC1 指定 DNS 查詢回傳 192.168.40.53。準備 C 開啟可辨識的 HTTP 測試頁
在 SRV1 的另一個終端機執行,下列 HTTP server 留在前景。只供隔離實驗,不是正式網站伺服器;如防火牆啟用,允許 PC1 到 TCP8080。練習結束按 Ctrl+C 停止;移除本題 dnsmasq 設定後重新啟動 dnsmasq,依原紀錄還原主機網路設定。
展開參考指令 SRV1 Linux · 依每行命令切換;主機命令在作業系統終端機執行
mkdir -p "$HOME/ccna-http-lab"
printf 'CCNA HTTP LAB\n' > "$HOME/ccna-http-lab/index.html"
python3 -m http.server 8080 --bind 192.168.40.53 --directory "$HOME/ccna-http-lab"在 SRV1 的另一個終端機執行,下列 HTTP server 留在前景。只供隔離實驗,不是正式網站伺服器;如防火牆啟用,允許 PC1 到 TCP8080。練習結束按 Ctrl+C 停止;移除本題 dnsmasq 設定後重新啟動 dnsmasq,依原紀錄還原主機網路設定。
查看預期結果 範例輸出,非真實執行
PC1 的 curl 顯示 HTTP 200 與 CCNA HTTP LAB;SRV1 終端機可見來源 IP 與 GET 記錄。02 向指定 DNS 解析名稱
在 Windows PC1 命令提示字元執行;明確指定 DNS 位址避免受系統預設 DNS 影響。DNS 成功不代表 HTTP 可連線。
展開參考指令 PC1 · Windows CMD
ipconfig /all
nslookup web.ccna.test 192.168.40.53在 Windows PC1 命令提示字元執行;明確指定 DNS 位址避免受系統預設 DNS 影響。DNS 成功不代表 HTTP 可連線。
查看預期結果 範例輸出,非真實執行
Name: web.ccna.test
Address: 192.168.40.5303 分別測試 IP 與名稱的 HTTP
Windows10/11 通常附 curl.exe;PowerShell 使用 curl.exe 避免舊版別名。以 --resolve 暫時指定 HTTP 名稱到 IP 可單獨排除 DNS,但此方式本身沒有測試 DNS。
展開參考指令 PC1 · Windows CMD
curl.exe -v http://192.168.40.53:8080/
curl.exe -v http://web.ccna.test:8080/TCP8080 建立連線後,HTTP GET 才要求頁面;-v 顯示連線與回應標頭。
查看預期結果 範例輸出,非真實執行
Connected to ... port 8080
< HTTP/1.1 200 OK
CCNA HTTP LAB04 觀察連線與埠
HTTP 連線可能很快關閉。先開瀏覽器載入測試頁,再查看 ESTABLISHED 或 TIME_WAIT。找不到即時連線不代表未曾成功;可使用自己的封包擷取工具觀察 TCP SYN/SYN-ACK/ACK,DNS UDP 與 TCP 不可混為一談。
展開參考指令 PC1 · Windows CMD
netstat -ano
nslookup -type=A web.ccna.test 192.168.40.53HTTP 連線可能很快關閉。先開瀏覽器載入測試頁,再查看 ESTABLISHED 或 TIME_WAIT。找不到即時連線不代表未曾成功;可使用自己的封包擷取工具觀察 TCP SYN/SYN-ACK/ACK,DNS UDP 與 TCP 不可混為一談。
查看預期結果 範例輸出,非真實執行
LocalAddress:臨時埠 → 192.168.40.53:8080;狀態依連線時點而異。05 建立可判讀的故障對照
只在自己的 SRV1 暫停 HTTP8080 服務,再保持 DNS 運作並重做 nslookup/curl,觀察「解析成功但服務連線失敗」。之後恢復 HTTP。再關閉 DNS 作對照前先記錄設定,不修改公用 DNS 或掃描其他 IP。
查看預期結果 範例輸出,非真實執行
DNS 正常、HTTP 停止時,名稱可解析但 curl 連線被拒絕或逾時;恢復服務後回應200。確認你的設定 VERIFICATION
nslookup web.ccna.test 192.168.40.53預期狀態 回傳 192.168.40.53。
NXDOMAIN 與 DNS timeout 是不同問題。
curl.exe -v http://web.ccna.test:8080/預期狀態 HTTP200 與自訂頁內容。
TCP refusal 先查服務監聽;HTTP404 表示已到達 HTTP 服務但路徑不存在。
常見問題與排查
IP 可開、名稱不可開
核對 DNS 指向、A record、.test 名稱及查詢伺服器;不要誤認為整個 TCP/IP 失效。
DNS 有答案但 HTTP 失敗
核對8080監聽、防火牆、URL scheme 與服務日誌,先排除服務層。
參考資料
依 CCNA v2.2 主題自行編寫之練習,非官方逐字教材。
發布版本 1 · 範例輸出供理解,指令尚待實機驗證。