附錄 A 入門工具、單位與學習方法
二進位與單位
一個 bit 是 0 或 1;byte 為 8 bits。十六進位每個數字表示 4 bits,0x10=16。十進位 Mb/s 用 10 的次方,MiB 用 2 的次方。先把速度和大小轉為同一單位,再計時間。例:10 MiB 經 20 Mb/s 的理想內容時間為 10×1048576×8/20000000=4.194304 秒,未計啟動與開銷。
& 是 bitwise AND;IP 前綴比較不是字串開頭比較。虛擬碼描述演算法,不一定可直接執行。表格中的 bytes、bits、ms、s 必須保留單位;推導過程不可把 ms 當 s。
本機程式啟動
先進入 course 根目錄,再用 python3 labs/L01-local-http.py;Windows 可用 py -3。查看版本用 python3 --version。必修最低 Python 3.10,程式僅標準函式庫;TLS 實驗另外需 OpenSSL,沒有時走離線判讀。檔案路徑不同於網路端點;127.0.0.1 是 loopback,不是家庭閘道。
程式自動挑埠,不須開路由器 port forwarding 或安裝公共伺服器。多終端模式以實際輸出埠替換示例。Ctrl-C 可停止前景實驗,完成後確認沒有持續服務。失敗時記錯誤類型、版本、指令與當前路徑,不貼任何帳密或私鑰。
常見環境問題
| 現象 | 檢查 |
|---|---|
| 找不到 python3 | 已安裝 Python?Windows 可用 py -3;路徑是否正確 |
| 找不到實驗檔 | 是否在 course 根目錄,labs 目錄是否存在 |
| PermissionError | 是否 loopback socket 被系統或管理政策限制 |
| ConnectionRefusedError | 服務是否仍開啟、埠是否用實際值 |
| TLS 名稱錯誤 | 預期 hostname 與 SAN 是否匹配,保留驗證 |
| 沒有 OpenSSL | 使用 L13 離線路線,不修改系統信任庫 |
每週最低路線
先讀學習目標,畫一個路徑或時序;手算例題;預測後才執行實驗;做基本題;最後查看解答並寫出錯因。延伸需要額外工具時,先完成本機/離線必修。複習時優先追蹤責任與證據,不只背縮寫。
Socket 是什麼?
Socket 是程式與作業系統網路功能互動的介面。一個 TCP 服務以 bind 指定本地 IP/埠,以 listen 等待,再用 accept 取得代表某條連線的 Socket;客戶端以 connect 連到服務。send/recv 操作位元組串流,應用需自己定義訊息邊界。UDP 以 sendto/recvfrom 操作資料報,不建立相同的 TCP 連線狀態。Socket 是程式介面,埠是傳輸層識別的一部分,兩者不是實體插孔。
Python 版本範圍
程式採 Python 3.10 以上的語法/API;本版只實際驗證 3.12.14,建議新環境使用仍受維護的 3.12 或更新版本。3.10/3.11、3.13 以上及 Windows/Linux 未執行。TLS 除 Python 版本還依賴 SSL backend 與憑證產生工具。遇到不同結果,保留版本與錯誤,不關閉驗證;可先完成離線路線。