我讀 "How Networks Work" – End

因為最近沒有什麼比較軟的書可以讀了, 又需要用到網路的知識, 所以乾脆把這本讀了 1/3 的書一口氣讀完.

本書對於讀者建立網路的相關觀念很有幫助, 我就舉五個地方來做重點複習.

1  封包的觀念

網路上一筆 http 的 data, 會因為 MTU 或 MSS (maximum segment size) 的限制而切割在不同的 LAN 封包當中. 當路由器對 IP 的大小有所限制, 這些封包還會再切割一下, 並記錄在 IP header 裡面以便重組, 此時 TCP header 算是 IP data 的一部分, 所以 TCP header 可能會和 data 分在不同的 IP packet 裡面. 出了 LAN 之後, MAC address 和 Ethernet 的 preamble, start frame Delimiter, FCS 都沒有用了.

Preamble SFD MAC addr. IP Header TCP header data FCS
  MSS (e.g. 切割過的  http data)
 
    可以打散再重組  
  MTU
 

如果用專線連接, 自然就不需要 MAC address, ARP (address resolution protocol) 了.

flag HDLC header PPP header IP Header TCP header data FCS flag

[note] HDLC = high-level data link control

2. 轉址的觀念

無論路由器或是防火牆, 都具有轉址的觀念, 把內部的位置轉換為外部的位置. 那麼轉址的時候要不要轉通訊埠 ( port)  呢?

如果 port 不轉的話, 那麼內部位址和外部位址就只能是一對一了, 因此 port 也是要轉比較好 這麼一來, 雖然網際網路上的 port number 是 80, 但是到了 LAN 的裡面可能就變成 8080.

3. 撥接的觀念

使用電話撥接上網的那個年代, 通常用 PPP (point-to-point protocol) 進行通訊. 到了 ADSL 的時代, 上網的訊號大概經過幾個步驟:

PC   IP+data
路由器 (加 MAC header) MAC IP+data
路由器 (去 MAC header, 加 PPP header) PPP IP+data
ADSL modem ATM cell
  analog
DSLAM 局端集合式數據機 (DSL acess Multiplexer) ATM cell
ATM 網路 ATM cell
BAS 寬頻存取 (路由器) PPP IP+data
網際網路 (MAC) IP+data

如果最後的網路網路換成 ethernet, MAC 才有需要.

ADSL modem 如果兼具 router 功能, 就可以省略掉額外的路由器. 如果家裡只有一台 PC, 那麼可以用橋接式 (bridge) 的 ADSL modem.

撥接的時候, 需要做 user name 和 password 的認證, 此時 PC + TA 數據機和遠端存取伺服器 (RAS) 之間, 就是使用 HDLC + PPP 的方式, 類似專線的連接.

但 ADSL 的認證就不一樣了. 在上面的表格中, RAS 放在 ATM 網路之上, 因此要經過漫長的轉換, 最後又轉回 PPP 才能認證成功. 這個過程叫做 PPPoA (PPP over ATM).

PPPoA 如果遇到橋接式 ADSL 會有點麻煩. 因為密碼認證之後, BAS 才會把全與網址等設定訊息放進 PPP, 因為橋接式是左手進右手出, 所以 PPP 的訊息就直接到了 PC. 此時 PC 需要設定全域的網址, 而且好像得認識 ATM cell.

上述的產品的確存在, 讓 PC 用 USB 連到橋接式的 ADSL modem. 但比較普及的方法是用 PPPoE (PPP over Ethernet). 也就是把 PPP 放進 Ethernet 裡面, 再把 Ethernet 送給 ATM. 至於路由器式的 ADSL modem, PPPoE 就沒有甚麼意義了.

[note] PPP 用來認證與設定網路. 除了 PPP 之外, 設定網路可以用大家熟知的 DHCP.

4. Proxy 的觀念

Proxy 是在 user 端還是伺服器端呢?

放在 user 端的叫做 forward proxy, 用途是減少網路上的資訊量, 但是伺服器端的 cache server 就完全用不到了.

伺服器端為了增加頻寬, 有時候會用多個 cache server 來加速 user 的存取. 但是這些 cache server 的 ip address 可以相同或是不同. 如果 ip address 不同, 則 server name 會相同. 這樣 user 連上 server 的時候, 並不知道自己連上那一個 ip address. 此時會遇到的問題是, 如果 user 正在網上購物, 最後要輸入信用卡的時候, CGI (common gateway interface) 已經換到另外一個 ip address 執行, 可能就會認證失敗.

如果派出一個固定 ip address 當代表註冊到 DNS, 則應該啟用 load balance 的功能, 讓不同的 user 固定存取到最適合的一台 server. 為了避免發生中途換 server 的問題, 只要是同一個事件, 不管 server 多忙, 都不會被切換走.

此外 forward proxy 導致 user 要自己設定 proxy 的訊息, 通常我們在 browser 裡面設定的 proxy 都是 forward proxy. 比方說交大, 可能就會提供一台 proxy server, 要求同學設定到他們的 browser 裡面. 不過設定 forward proxy 這件事並不是人人都會, 為了避免出問題, 所以產生了 reserve proxy.

reserver proxy 有很多方法可以直接連到 web server, 或者說 cache server. 比方說, 它可以偷看 IP 封包, 或者要求在 http 規格中加入 host 的標頭欄位, 如此一來, reserve proxy 就知道哪些 host 可以用外部的加速.

Proxy 放在 user 端, server 端, 甚至是 ISP 端, 或是 CDSP (content delivery service provider) 端都各有利弊.

5. 防火牆的觀念

防火牆的做法可以有很多種, 最常用的一種叫做 "封包過濾".

因為 router 中紀錄的 ip-router 對應表會因日久 (其實只要幾分鐘) 被刪除的關係,假如公司不讓外面的封包進到公司來,公司的 ip 也就連不出去了.

根據 source, destination 的ip 與 port number, 大致就可以設定出防火牆的 rule. 有一個很有趣的問題是, 假如公司設立了 web 網站, 當然希望大家來瀏覽, 所以 web server 可以對外通訊. 但是如果 web server 中毒了, 我們要避免 web server 亂發 connection 要怎麼辦呢?

因為 connection 的建立, 需要在 TCP 的控制位元裡面設定 SYN, ACK 才會開始. 因此第一個動作如果來自外部, 可以視為 user 看公司的網頁. 但是第一個動作是 web server 自己發的, 就應該要攔下來. 這個是我以前沒想過的, 相當有趣.

Vista PC 使用 Bluetooth 連上網路

Vista PC 使用 Bluetooth 連上網路

cash | 11 六月, 2008 19:15

因為每次想要用 CHT9100 PC modem, 可是老是要設定一些東西, 步驟好像也很麻煩.

不過即使不能做甚麼簡化, 也不會希望忘記最慢的那種做法, 還是記錄下來得好.

假設是在 Vista 的環境底下, 大概會有下面的步驟:

1. 在控制台選擇網路和共用中心“.

2. 在左邊選擇設定連線或網路“.

3. 這時候會出來一個標題叫做選擇連線選項" 的視窗, 在這裡面找一個選項連線到 Bluetooth 個人區域網路 (PAN)".

4. 按下一步, 然後會出另一個視窗. 這時候會看到外部的網路 source, 例如出現一個手機.

5. 按下右下角的連線“, 這樣就 OK .

 

Home Plug 使用經驗談

Home Plug 是使用電力線傳送網路訊號的一種規格, 現在已經發展到 200Mbps 的程度. 至於我們家為什麼會用這個東西呢? 這就說來話長了. 我還是簡短地說明它的好處與設定方式好了. 它比 wireless LAN 好的地方, 就是可以把網路由 4F 輕鬆傳送到 1F.

如果要 WLAN 來做這件事, 我那支 6 dBi 的 全向天線都還做不到, 訊號到 2F 就奄奄一息了. 如果買一支超大天線 或許可以達成目標, 不過我怕電磁波. 另一個做法是用 repeater. 不過在只接一個 repeater 的前提下, 我必須把 repeater 放在 2F 與 3F 的樓梯口, 我想除了我懶得去鑽牆施工, 老婆也會強烈抗議我毀壞家容吧! 在以上兩種做法都不可行的情況下, 那當然只剩 HomePNA (走電話線) 與 Home Plug (走電力線)了. 前者已經 看不到新產品了, 但後者在順發的角落裡還有幾隻. 興匆匆地抱了一對 Home Plug 回家, 接著就開始安裝.

我買的是 Gigaway 的產品, 只有 14Mbps, 而傳說中的 200Mbps 或是茂發牌 (STT) 產品, 我一時也買不到. 首先把一隻 Home Plug 插進延長線再接延長線的插座, 另一端接上我 4F 的 router 的 switch LAN 孔. 然後把我的 Notebook 接第二隻 Home Plug, 再接到另一個插座上的延長線的插孔, 把 LAN 的 IP 設成 DHCP…. 嗯, 立刻看到一個 10Mbps 的網路已經通了, 收發 mail 都正常. 好像很簡單是吧….呃…問題在後面.

我的目標是要在 2F 把 Home Plug 再接到另一個 AP router 上, 這樣我就可以在全家每個角落上網了. 嗯… 這有什麼用咧? 唯一的用處就是可以在餐廳邊吃東西邊上網, 其實也沒什麼大用, 瘋技術而已. Anyway, 我開始把第二隻 AP 設成 WAN 等於 dynamic IP, 我猜想這樣就可以跟第一隻 AP 隨便要到一個 IP. 那麼內網要怎麼設呢? 最近大家都在 bring up 小黑. 內網都是設成 192.168.1.x. 不過我的第一隻 AP 都已經 是 192.168.1.x 了, 那內網的內網要怎麼設呢? 果然學藝不精就注定要吃虧.

搞了一個晚上加一個早上, 終於把網路設對了. 最後一次犯錯是我把第二隻 AP 的 LAN AP 設成 192.168.2.1, mask 設成 255.255.0.0. 不過這樣是不行的, mask 要設成 255.255.255.0 才可以. 當然它的 DHCP 範圍也要是 192.168.2.x. 正確答案很直覺對吧! 不過我可是試了很多排列組合, 每一種也都蠻 有道理的, 只是不會 work. 為什麼講這些呢? 因為產品說明書都沒有講到這裡. 他們只希望第二隻 Home Plug 直接連 PC or Notebook, 並沒 強調如何設定 AP-Home Plug-Home Plug-AP 的解法. 花了我好幾個小時改來改去, 當然我要把它記下來, 讓未來的 使用者可以節省時間.