電腦網路與 Internet 通訊

單元 04 至 11 與基礎實驗解答

這是解答。建議先完成對應的習題與實驗,再對照推理過程與評分規準。

單元 04

  1. /27 每塊 32 位址,網路位址 .160、廣播位址 .191;一般主機 .161 至 .190,遮罩 255.255.255.224。
  2. .200 落在 /25,下一跳 192.0.2.66;203.0.113.9 用預設路由 192.0.2.65。
  3. IP 目的識別最終 IP 端點,鏈路目的識別下一跳。本例假設沒有先做 DNAT 且路由正常。
  4. PMTU/必要 ICMP 被阻擋、伺服器大回應處理失敗或 timeout 皆為假設;查封包大小、錯誤日誌與可重現負載再區分。

單元 05

  1. VLAN 代表鏈路域;IP 需要正確路由/子網/政策。不同子網可能經路由器可達,不能僅以 VLAN 決定。
  2. 路由判為 on-link 時 ARP 找 B;遠端選閘道時找閘道,不找遠端 C。政策路由、proxy ARP 屬另外情境。
  3. 路由器移除入口鏈路封裝、為下一條鏈路重新封裝。IP 位址正常不變,TTL 變小;NAT 另列。
  4. MAC 可修改,交換學習不提供密碼學身分驗證。

單元 06

  1. 泛洪改變副本出口,目的 MAC 仍是單播;接收端通常不把別人的單播副本交給普通 socket。多埠看見不等於廣播。
  2. IPv4 群組的低 23 bits 相同,皆對映到 01:00:5e:40:00:2a;仍是不同 32-bit IP 群組。MAC 過濾不保證精確,IP 與應用層還需匹配。
  3. snooping 限制本 VLAN 交換副本;querier 詢問並維持成員資訊。沒有 querier 時,成員狀態可能在老化後消失,呈現「剛開始正常,幾分鐘後不穩」。開 snooping 不代表已開跨 VLAN 多播,跨網段見 15。
  4. 一埠後方可能接 AP 或下游交換器,有多個接收者。應確認成員狀態/查詢結果,不能僅依某一主機 leave 刪除整埠。

單元 07

  1. 多個三層位址共用 eth0,並未建立 VLAN、埠隔離或 ACL;仍共用二層廣播域。同 VLAN 不同子網能否 IP 互通需另看直連/路由及主機設定。
  2. 只有 main 時仍走 G1,來源保持 198.51.100.10;bind 並不指定閘道。回程條件:G1 與遠端須能把回覆送回此來源,例如 G1 有通往 198.51.100.0/24 的路由。防火牆/NAT 的狀態見 16、17,不在本題範圍。
  3. 不能。main 表預設路由的 src 192.0.2.10 只是未固定來源時的偏好,不是 SNAT;已 bind 的來源 2 保持 198.51.100.10,仍經 G1 送出。轉送封包的改寫要靠獨立的 NAT 機制,見 16。
  4. 198.51.100.55 匹配 198.51.100.0/24,on-link,選出該路由偏好的來源 2(198.51.100.10),直接 ARP .55。192.0.2.77 匹配 192.0.2.0/24,on-link,選出來源 1(192.0.2.10),直接 ARP .77。未指定來源時,來源跟著目的所匹配的路由走:沒有任何政策,送往 198.51.100.0/24 的連線也會用來源 2;送往 S 則匹配 /0,經 G1 並用來源 1。

單元 08

  1. 經 150 秒,剩 450 秒(假設沒有預取、serve-stale 等另行機制)。
  2. DHCP 給設定和租約;遞迴解析器替客戶查詢及快取;權威伺服器維護 zone 的回答。
  3. NXDOMAIN 表示名稱不存在;無 AAAA 只表示該名稱缺該型別;timeout 不能判定名稱不存在。
  4. 已快取:stub→遞迴→快取回應;未快取:遞迴從委派鏈找到權威,再回客戶。根/TLD 委派也可能已快取。

單元 09

  1. recv 只給目前可交付且不超過上限的 bytes,不保證填滿或對齊應用訊息。
  2. 報中途 EOF,拒絕交付完整 100-byte 訊息;不能把 60 當成成功。
  3. TCP ACK 由傳輸接收端回報,不證明業務處理、存檔或交易提交。
  4. 先檢查長度上限,採有限 buffer、timeout 與中途 EOF 處理,再讀 payload。

單元 10

  1. ACK 遺失令 sender 無法知悉成功、因而重傳;receiver 用序號記錄去重,只重新確認。
  2. 8000/0.0808≈99010 bit/s,約 99.01 kb/s。
  3. 最大 8,避免新視窗與舊視窗在序號環上重疊。
  4. 可靠串流只保障傳輸語義;業務一次執行還需請求 ID、持久化狀態、交易與去重等。

單元 11

  1. SYN 後 1001 起,送 300 bytes,下一期待 byte 為 1301。
  2. cwnd 若限制在途量,增加 rwnd 不解除此限制。
  3. 零視窗先查接收應用是否停讀及 buffer;遺失/逾時查路徑、重排、RTT 及遺失恢復。兩者可能同時存在。
  4. 平均值無法描述多流競爭、RTT 優勢、排隊、CPU 與尾端延遲。

L02 至 L08

預期輸出(完成預測與紀錄後再核對):L02 三段 6.36 ms、BDP 500000 bytes、視窗上界 13.1072 Mb/s。L03 網路 .160、廣播 .191、一般主機 30 個、遮罩 255.255.255.224;.20 選 /24、.140 選 /25。L04 id=4660(0x1234)、flags=0x8180,lesson.test 的 A 為 192.0.2.80、TTL 300;c00c 指回 offset 12。L05 TCP 依序得到 cat、網路與空字串,UDP 得到 cat、網路兩份資料報;recv 每次最多 2 bytes 仍能正確重組。L06 資料 0 與 1 各傳兩次,應用仍只交付 [0,1,2,3,4]。L07 A 到 B、C、D 成本為 2、3、4,D 路徑 A-B-C-D。L08 前兩次入站允許、第三次拒絕,外部對映始終是 203.0.113.5:40000。

L02:RTT 加倍使 BDP 加倍,在固定視窗且受 W/RTT 限制時,上界減半;真實 TCP 還受 cwnd 及應用限制。

L03 IPv4 部分(04 之後):新增 198.51.100.128/26 後,.140 選 /26,.200 仍選 /25。更具體但有效的路由被選中;實際下一跳失效是否移除路由、切換備援或仍黑洞,依協定、偵測與平臺,不能保證自動改走預設路由。

L03 IPv6 部分(14 之後):輸出的 ipv6 欄位為 2001:db8::1。2001:db8::80 選 2001:db8::/32,3fff::80 選 ::/0;3fff::/20 是 RFC 9637 保留的另一個文件用前綴,不在 2001:db8::/32 內。IPv4 路由不匹配 IPv6。

L04:QR=1、RD=1、RA=1 是人工回應中的位元,Answer=1。fixture 不能證明 lesson.test 在公共 DNS 存在。NOERROR 且空 Answer 不能推出名稱不存在,可能是該型別無資料、委派或其他情況,需看 Question、authority 及整份訊息;NXDOMAIN 的 RCODE=3 表示查詢名稱不存在。--ttl 60 只改 Answer 的 TTL 4 bytes,由 0000012c(300)變成 0000003c(60),其餘 bytes 不變。

L05:應用限制 recv 為 2 並不限制 TCP 段大小。4-byte 大端長度定義訊息大小;中途 EOF 應失敗。UDP 用足夠 buffer 觀察兩份資料報。--truncate N 時,前三份訊息照常交付;第四份的長度前綴宣告 100 bytes,實際只送 N bytes 就結束寫入方向,parser 回報缺少 100−N bytes 的 EOFError,不交付半個訊息;UDP 結果不變。

L06:receiver 先交付 0,但 sender 因 ACK 0 遺失保留未確認;再次收到 0 只 ACK。去掉 ACK 遺失規則後資料 0 只傳一次;--window 1 相當於停等,需 7 回合,預設視窗 3 只需 3 回合。缺少真實時間、序號回繞、TCP byte 序號、cwnd 與核心演算法。

05 的交換表練習是 L16 的前三案,解答見 lab-solutions.md 的 L16。

L07:原 A-B-C-D 成本 4;改 B-C=10 後 A-B-D 和 A-C-D 皆成本 6;本實作以嚴格小於比較,先處理 B 後保留 A-B-D。等價成本可能有多個正確最短路徑。BGP 還有政策與路由屬性。

L08:EIM 與過濾是獨立欄位;ADF 允許聯絡過的 remote IP 任意 port。改用 --filter APDF 時只有 198.51.100.10:9000 可入站;--elapsed 120 --lifetime 60 時 state 已逾時、對映消失,三次皆拒絕。STUN 回報特定時間及目的下對映,不保證雙方過濾、回程、逾時與其他 NAT 相容。