主從式模型與網路 (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 提供服務。

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
  1. client 需要服務時,主動發起 transaction,送出 request(例如瀏覽器向 Web server 要檔案)
  2. server 收到 request、解讀它、以適當方式操作其資源(例如讀磁碟檔案)
  3. server 送出 response 給 client,然後等待下一個 request
  4. client 收到 response 並處理它(例如瀏覽器把網頁顯示在螢幕上)
Client 與 Server 是 process,不是機器

client 和 server 都是 process,而不是機器(此脈絡下機器稱為 host)。一台 host 可以同時執行多個不同的 client 與 server;一筆 client-server transaction 可以發生在同一台或不同台 host 上。無論 client/server 如何對應到 host,模型完全相同 (p.955)。

此 transaction 不是資料庫 transaction

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

網路的階層結構:由地理範圍組織

網路實體上是依地理鄰近性(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

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

概念簡化圖:畫 LAN 時,把 hub、bridge 與連線全部簡化為一條水平線(p.957, Figure 11.5):

  Host   Host   ...   Host
    |      |            |
  --+------+------------+--   <- 一條線代表整個 LAN

internet:用 Router 連接不相容的網路(p.957)

在階層更高處,多個不相容的 LAN 可由稱為 router 的特殊電腦連接,形成一個 internet(interconnected network,互連網路)。

Host Host ... Host                        Host Host ... Host
  |    |        |                           |    |        |
--+----+--------+--  LAN                 --+----+--------+--  LAN
        |                                        |
     Router ====== WAN ====== Router ====== WAN ====== Router
internet vs. Internet(p.957 Aside)

小寫 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
  1. host A 上的 client 呼叫 system call,把資料從 client 的 virtual address space 複製到 kernel buffer
  2. 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 最根本的洞見之一
  3. LAN1 adapter 把 frame 複製到網路上
  4. frame 抵達 router,router 的 LAN1 adapter 從線上讀取,交給 protocol software
  5. router 從 internet packet header 取出目的 internet address,以它作為 routing table 的索引決定轉送目標(此例為 LAN2);剝掉舊的 LAN1 frame header,前置新的 LAN2 frame header(定址到 host B),把 frame 交給 adapter
  6. router 的 LAN2 adapter 把 frame 複製到網路上
  7. frame 抵達 host B,adapter 從線上讀取,交給 protocol software
  8. host B 的 protocol software 剝掉 packet header 與 frame header;當 server 呼叫讀取資料的 system call 時,資料最終被複製到 server 的 virtual address space
這個模型刻意省略了許多困難問題(p.959)

教科書坦言此處掩蓋了許多議題:不同網路的最大 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)