主從式模型與網路 (Client-Server Model & Networks)
Overview Table
| 主題 | 核心概念 | 一句話重點 |
|---|---|---|
| Client-server model (11.1) | transaction 四步驟 | client 發 request → server 處理資源 → server 回 response → client 處理 response (p.954) |
| Client/Server 本質 | process,不是機器 | 同一台 host 可同時跑多個 client 與 server (p.955) |
| 網路是什麼 (11.2) | 對 host 而言是一種 I/O device | 資料經 network adapter,由 DMA 傳到 memory (p.955) |
| LAN 最低層 | Ethernet segment(hub + twisted pair) | hub 盲目複製每個 bit 到所有 port;每台 host 看得到每個 bit (p.956) |
| Ethernet 位址 | 每張 adapter 有全球唯一 48-bit address | 存在 adapter 上的非揮發性記憶體 (p.956) |
| 傳輸單位 | frame = header(來源/目的/長度)+ payload | 所有 adapter 都看得到 frame,但只有目的 host 讀取 (p.956) |
| Bridged Ethernet | bridge 分散式演算法學習 port↔host 對應 | 只在必要時選擇性轉送 frame,節省頻寬 (p.956) |
| internet(小寫) | router 連接不相容的 LAN/WAN | internet = interconnected network,任意 LAN+WAN 組合 (p.957) |
| Protocol software | 提供 naming scheme + delivery mechanism | 統一位址格式;統一把資料包成 packet(header+payload)(p.958) |
| 資料跨網傳輸 | encapsulation(封裝)是關鍵洞見 | LAN frame 的 payload 是 internet packet,packet 的 payload 才是使用者資料 (p.958) |
11.1 The Client-Server Programming Model(主從式程式設計模型)(p.954)
每個網路應用程式都建立在 client-server model 之上:一個應用程式由一個 server process 與一個或多個 client process 組成。server 管理某種資源(resource),並透過操作該資源為 client 提供服務。
- Web server:管理磁碟檔案,替 client 讀取與執行
- FTP server:管理磁碟檔案,替 client 儲存與讀取
- Email server:管理 spool file,替 client 讀取與更新
Client-Server Transaction 四步驟
基本操作單位是 transaction,固定四步驟(p.954, Figure 11.1):
1. Client sends request
+--------+ ----------------------> +--------+
| Client | | Server | <-------> [Resource]
| process| <---------------------- | process| 2. Server processes
+--------+ 3. Server sends +--------+ request (操作資源)
| response
v
4. Client processes response
- client 需要服務時,主動發起 transaction,送出 request(例如瀏覽器向 Web server 要檔案)
- server 收到 request、解讀它、以適當方式操作其資源(例如讀磁碟檔案)
- server 送出 response 給 client,然後等待下一個 request
- client 收到 response 並處理它(例如瀏覽器把網頁顯示在螢幕上)
client 和 server 都是 process,而不是機器(此脈絡下機器稱為 host)。一台 host 可以同時執行多個不同的 client 與 server;一筆 client-server transaction 可以發生在同一台或不同台 host 上。無論 client/server 如何對應到 host,模型完全相同 (p.955)。
Client-server transaction 不具備 database transaction 的任何性質(例如 atomicity)。這裡的 transaction 只是 client 與 server 之間的一連串步驟 (p.955 Aside)。
11.2 Networks(網路)(p.955)
網路 = Host 的另一個 I/O 裝置
Client 與 server 常在不同 host 上執行,靠電腦網路的軟硬體資源溝通。對 host 而言,網路只是另一個 I/O device,作為資料的來源(source)與去處(sink)(p.955, Figure 11.2):
CPU chip
+----------------+
| Register file |
| ALU |
+-------+--------+
| System bus Memory bus
+-------+------+ +-----------+ +--------+
| Bus interface|-----| I/O bridge|-----| Main |
+--------------+ +-----+-----+ | memory |
| +--------+
I/O bus (Expansion slots)
+-----------+----------+-----------+-----------+
| | | |
+--+---+ +----+---+ +---+----+ +---+-----+
| USB | |Graphics| | Disk | | Network |
| ctrl | | adapter| | ctrl | | adapter |----> Network
+------+ +--------+ +--------+ +---------+
Mouse/KB Monitor Disk
- network adapter 插在 I/O bus 的 expansion slot 上,提供實體網路介面
- 從網路收到的資料由 adapter 經 I/O bus 與 memory bus 複製到 memory,通常透過 DMA transfer;反向亦然
- 硬體組織與 01-Computer-Systems-Tour/02-Hardware-Organization-and-Program-Execution 的通用架構一致
網路的階層結構:由地理範圍組織
網路實體上是依地理鄰近性(geographical proximity)組織的階層系統:
| 層級 | 名稱 | 範圍 | 連接元件 |
|---|---|---|---|
| 最低層 | LAN (local area network) | 一棟建築或一個校園 | hub、bridge |
| 較高層 | WAN (wide area network) | 更大地理區域 | 高速點對點電話線路 |
| 最高層 | internet (interconnected network) | 任意 LAN + WAN 組合 | router |
Ethernet Segment(p.956)
最流行的 LAN 技術是 Ethernet(1970 年代中期於 Xerox PARC 開發),從 3 Mb/s 演進到 10 Gb/s,極為耐用。
Host Host Host
| | |
| 100Mb/s | | 100 Mb/s
+---------+---------+
Hub <- 把每個 port 收到的每個 bit
盲目複製到所有其他 port
- Ethernet segment = 一些電線(通常是 twisted pair)+ 一個 hub;通常只涵蓋一個房間或一層樓
- 每條線有相同的最大 bit 頻寬,典型為 100 Mb/s 或 1 Gb/s;一端接 host 的 adapter,一端接 hub 的 port
- hub slavishly(盲目地)複製每個 bit 到每個其他 port → 每台 host 都看得到每個 bit
- 每張 Ethernet adapter 有一個全球唯一的 48-bit address,存在 adapter 的非揮發性記憶體中
- host 送出的一段 bits 稱為 frame:
frame = header (source addr + dest addr + frame length) + payload (data bits)- 每張 adapter 都看得到 frame,但只有目的 host 真正讀取它
Bridged Ethernet(p.956)
多個 Ethernet segment 可用 bridge 連成更大的 LAN,稱為 bridged Ethernet,可涵蓋整棟建築或校園。
A B
Host Host Host Host Host
| | | | |
+----+----+ X +----+
Hub ------- Bridge ------ Hub
100 Mb/s | 100 Mb/s
| 1 Gb/s (bridge-bridge 線可用更高頻寬)
100 Mb/s | 100 Mb/s
Hub ------- Bridge ------ Hub
| | Y | |
Host Host Host Host Host
C
- 線路頻寬可以不同:例如 bridge–bridge 線 1 Gb/s,hub–bridge 線 100 Mb/s
- bridge 比 hub 更善用頻寬:透過聰明的分散式演算法,隨時間自動學習「哪些 host 從哪個 port 可達」,只在必要時選擇性地把 frame 從一個 port 複製到另一個 port
- A 送 frame 給同 segment 的 B → bridge X 在輸入 port 直接丟棄 frame,節省其他 segment 頻寬
- A 送 frame 給不同 segment 的 C → bridge X 只複製到通往 bridge Y 的 port,Y 再只複製到 C 所在 segment
概念簡化圖:畫 LAN 時,把 hub、bridge 與連線全部簡化為一條水平線(p.957, Figure 11.5):
Host Host ... Host
| | |
--+------+------------+-- <- 一條線代表整個 LAN
internet:用 Router 連接不相容的網路(p.957)
在階層更高處,多個不相容的 LAN 可由稱為 router 的特殊電腦連接,形成一個 internet(interconnected network,互連網路)。
- 每台 router 對它連接的每一個網路都有一個 adapter(port)
- router 也能連接高速點對點電話線路,即 WAN
- router 可用來從任意的 LAN 與 WAN 集合建出 internet(p.958, Figure 11.6):
Host Host ... Host Host Host ... Host
| | | | | |
--+----+--------+-- LAN --+----+--------+-- LAN
| |
Router ====== WAN ====== Router ====== WAN ====== Router
小寫 internet 指一般概念(互連網路);大寫 Internet 指特定實作——全球 IP Internet(見 11-Network-Programming/02-Global-IP-Internet)。
Protocol Software:弭平差異的兩大能力(p.958)
internet 的關鍵性質:它可由技術完全不同、彼此不相容的 LAN 與 WAN 構成。要讓來源 host 能跨過這些不相容網路把資料送達目的 host,解法是在每台 host 與 router 上執行一層 protocol software,實作一個管理 host 與 router 如何協作傳輸資料的 protocol。此 protocol 必須提供兩種基本能力:
| 能力 | 解決的問題 | 做法 |
|---|---|---|
| Naming scheme(命名機制) | 各 LAN 技術的 host 定址方式互不相容 | 定義統一的 host 位址格式;每台 host 至少分配一個能唯一識別它的 internet address |
| Delivery mechanism(遞送機制) | 各網路技術把 bits 編碼上線、包成 frame 的方式互不相容 | 定義統一方式把資料包成 packet:packet = header (packet size + source/dest host addresses) + payload (data bits) |
資料如何跨 internet 傳輸:八步驟與 Encapsulation(p.958-959)
範例:LAN1 上 host A 的 client 送一串 data bytes 給 LAN2 上 host B 的 server,兩個 LAN 由一台 router 連接(Figure 11.7):
Host A (client) Host B (server)
(1) Data (8) Data
| copy 到 kernel buffer (system call) ^ copy 回 server 的
v | virtual address space
Protocol software Protocol software
(2) Data|PH|FH1 <- 封裝 (7) Data|PH|FH2 <- 拆封
| ^
v |
LAN1 adapter LAN2 adapter
(3) Data|PH|FH1 (6) Data|PH|FH2
| Router ^
| LAN1 adapter LAN2 adapter |
+--LAN1--> (4) Data|PH|FH1 |
| Protocol software |
| 查 routing table, |
| 換 frame header |
+--> (5) Data|PH|FH2 --LAN2--+
PH = internet packet header;FH1/FH2 = LAN1/LAN2 frame header
- host A 上的 client 呼叫 system call,把資料從 client 的 virtual address space 複製到 kernel buffer
- host A 的 protocol software 附加 internet header(PH,定址到 internet host B) 與 LAN1 frame header(FH1,定址到 router),產生 LAN1 frame,交給 adapter。注意:LAN1 frame 的 payload 是 internet packet,而 packet 的 payload 才是真正的使用者資料——這種 encapsulation(封裝)是 internetworking 最根本的洞見之一
- LAN1 adapter 把 frame 複製到網路上
- frame 抵達 router,router 的 LAN1 adapter 從線上讀取,交給 protocol software
- router 從 internet packet header 取出目的 internet address,以它作為 routing table 的索引決定轉送目標(此例為 LAN2);剝掉舊的 LAN1 frame header,前置新的 LAN2 frame header(定址到 host B),把 frame 交給 adapter
- router 的 LAN2 adapter 把 frame 複製到網路上
- frame 抵達 host B,adapter 從線上讀取,交給 protocol software
- host B 的 protocol software 剝掉 packet header 與 frame header;當 server 呼叫讀取資料的 system call 時,資料最終被複製到 server 的 virtual address space
教科書坦言此處掩蓋了許多議題:不同網路的最大 frame size 不同怎麼辦?router 如何知道要往哪轉送?網路拓撲改變時 router 如何得知?packet 遺失怎麼辦?這些由真正的協定(如 TCP/IP)處理——見 11-Network-Programming/02-Global-IP-Internet。本節重點是抓住 internet 概念的精髓:encapsulation 是關鍵。
銜接:Internet 應用程式的軟硬體組織(p.960, Figure 11.8)
全球 IP Internet 是 internet 概念最著名、最成功的實作。每台 Internet host 執行實作 TCP/IP 協定的軟體;client 與 server 混用 sockets interface 函式與 Unix I/O 函式溝通,sockets 函式通常實作為 system calls,trap 進 kernel 呼叫 TCP/IP 的 kernel-mode 函式:
Internet client host Internet server host
+-----------------+ +-----------------+
| Client | User code | Server |
+-----------------+ <- sockets +-----------------+
| TCP/IP | Kernel code | TCP/IP |
+-----------------+ <- interrupts +-----------------+
| Network adapter | Hardware | Network adapter |
+--------+--------+ +--------+--------+
| |
+——————— Global IP Internet ——————+
細節(IP address、DNS、TCP/UDP 區分)屬 11.3,見 11-Network-Programming/02-Global-IP-Internet。
元件比較表:Hub vs. Bridge vs. Router
| Hub | Bridge | Router | |
|---|---|---|---|
| 所在層級 | Ethernet segment 內 | 連接多個 segment(bridged Ethernet) | 連接不相容的 LAN/WAN(internet) |
| 轉送策略 | 盲目複製每個 bit 到所有 port | 選擇性複製 frame(學習 host↔port 對應) | 依 routing table 以 internet address 轉送 packet |
| 頻寬利用 | 差(所有 host 看到所有 bit) | 較佳(不必要的 frame 直接丟棄) | 跨網路遞送 |
| 是否理解 internet address | 否 | 否(只看 frame) | 是(讀 packet header) |
| 是否改寫 frame header | 否 | 否 | 是(剝舊 FH、前置新 FH) |
Exam/Test Patterns
| 情境 / 關鍵字 | 答案 |
|---|---|
| client-server transaction 有幾步?順序? | 4 步:client 送 request → server 處理 request(操作資源)→ server 送 response → client 處理 response |
| client-server transaction 有 atomicity 嗎? | 沒有。它不是 database transaction,不共享其任何性質 |
| client 和 server 是機器嗎? | 不是,是 process;一台 host 可同時跑多個 client 與 server,transaction 可在同一台 host 上發生 |
| 對 host 而言,網路是什麼? | 另一種 I/O device(data 的 source/sink),資料通常經 DMA transfer 進出 memory |
| Ethernet adapter 位址多長?存哪? | 48-bit 全球唯一位址,存於 adapter 的非揮發性記憶體 |
| hub 的行為? | 把每個 port 收到的每個 bit 複製到所有其他 port;每台 host 看得到每個 bit |
| bridge 如何節省頻寬? | 分散式演算法自動學習 host 可達的 port,只在必要時選擇性轉送 frame;同 segment 的 frame 直接丟棄 |
| frame vs. packet 的結構? | frame = frame header(source/dest/length)+ payload;packet = packet header(size + source/dest internet addresses)+ payload |
| protocol 必須提供哪兩個基本能力? | naming scheme(統一 host 位址格式)與 delivery mechanism(統一包裝成 packet) |
| 什麼是 encapsulation? | LAN frame 的 payload 是 internet packet,packet 的 payload 是使用者資料;為 internetworking 的根本洞見 |
| router 收到 frame 後做什麼? | 從 packet header 取目的 internet address → 查 routing table → 剝舊 frame header、prepend 新 frame header → 轉送 |
| internet vs. Internet? | 小寫 = 一般互連網路概念;大寫 = 全球 IP Internet 這個特定實作 |
| LAN vs. WAN? | LAN 涵蓋建築/校園(如 Ethernet);WAN 涵蓋更大地理區域(如高速點對點電話線路) |
| 傳輸過程中資料在 host 內如何移動? | 經 system call 在使用者 virtual address space 與 kernel buffer 間複製(送出:client→kernel;接收:kernel→server) |
Related Notes
- 11-Network-Programming/02-Global-IP-Internet — 接續 11.3:TCP/IP、IP address、DNS 與 Internet 連線
- 11-Network-Programming/03-Sockets-Interface — client/server 實際使用的程式介面(system calls)
- 11-Network-Programming/04-Web-Servers-and-Tiny — 以 client-server model 實作的 Web server
- 01-Computer-Systems-Tour/02-Hardware-Organization-and-Program-Execution — I/O bridge、bus、adapter 的通用硬體架構
- 01-Computer-Systems-Tour/03-OS-Abstractions-and-Networks — 第 1 章對「網路也是 I/O 裝置」的初次介紹
- 10-System-IO/01-Unix-IO-and-Files — 網路通訊建立在 Unix I/O 之上
- 08-Exceptional-Control-Flow/02-Processes-and-Context-Switches — client 與 server 皆為 process