L05 本機 TCP 與 UDP 訊息
本實驗使用的程式:L05-sockets.py。文中指令以課程根目錄為工作目錄;建議下載教材套件,解壓後在 computer-networking 目錄執行。
目的、環境與預測
對應單元:06、08。Python 3.10 以上,標準函式庫;在課程根目錄執行。資料性質:真實本機 Socket 通訊。
程式依序送出三份 TCP 訊息:cat、網路(UTF-8)與空訊息,每份前加 4-byte 大端長度;UDP 只送前兩份。先預測每份長度前綴的值、接收端的重組結果與兩份 UDP 資料報;中文用 UTF-8 算 bytes。
執行與紀錄
python3 labs/L05-sockets.py
Windows 可用 py -3 替換 python3。將輸出儲存,記錄日期、Python 版本、參數與預測。
| 條件 | 執行前預測 | 實際輸出 | 差異與解釋 |
|---|---|---|---|
| 原始設定 | 自行填寫 | 貼關鍵欄位 | 寫出依據 |
| 修改設定 | 自行填寫 | 貼關鍵欄位 | 一次改一個變因 |
完成預測與紀錄後,再到解答冊的「預期輸出」核對。
變更與判讀
複製 labs/L05-sockets.py 後修改 demo():在 messages 加入一份 100-byte 訊息,並讓傳送端只送出該訊息的一部分就關閉寫入方向;parser 應報錯,而非交付半個訊息。
限制 recv 長度是否意味每個 TCP 封包只有 2 bytes?程式如何知道訊息結束?
驗證範圍與提交
本機 Socket 驗證應用介面,不模擬遠端路徑、網路遺失或真實代理效能。
提交預測、原始/修改輸出、兩個判讀答案與模型限制。評分:預測 20%、紀錄 30%、推理 35%、限制 15%。標準推理見解答冊;輸出中的埠與真實計時可以變動。