Socket

基本概念

Socket 是網路通訊的端點(endpoint),由 IP 位址加上 port 號組成。

161.25.19.8:1625
→ IP: 161.25.19.8,Port: 1625

Port 號的用途是讓同一台機器上的不同服務可以被區分——同一個 IP 上,port 80 是 HTTP、port 22 是 SSH,依此類推。

Client-Server 連線流程

一個典型的 socket server 運作方式如下:

1. Connect   → client 向 server 發出連線請求
2. Accept    → server 接受連線
3. fork()    → server 生出 child process 專門處理這個 client
               parent server 繼續等待新的連線
4. send/recv → child 和 client 之間互相傳送資料

每對 client-server 之間會建立 兩條方向相反的連線,反映 TCP 連線的雙向特性(可用 netstat 觀察)。

設計上的限制

將 port 號寫死(hardcoded)在程式中是不好的做法——實際系統中 port 應該動態協商,這正是 RPC 的 matchmaker 機制要解決的問題。