電腦網路與 Internet 通訊

附錄 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 與憑證產生工具。遇到不同結果,保留版本與錯誤,不關閉驗證;可先完成離線路線。