最近發現的小技巧

我的 Office for Mac 用起來還 OK, 但是有一件事情非常困擾我. 那就是只要打開 spelling and grammar check, Word 裡面就是滿江紅!而且它建議我改的字, 都是些我不認識的, 只有極少數不會被畫上紅色的波浪底線. 這麼一來, 真正拼錯的字就找不出來了!

我本來以為是字典的問題, 或是語言設定的問題, 又或者是使用者自定字典 (custom dictionary) 引起的? 不過今天我赫然發現, 原來一切都是荷蘭人惹的禍!!! 我這個 Word 所打開的第一份文件就是荷蘭人寫的, 所以 Word 就自動把荷蘭文寫進 normal.dot. 從此以後, 它就自動以荷蘭文為標準來檢查我的拼字. 這個問題在我 select all –> 選 tool/language/English(US) –> 選 default 之後就測底解決了. 這麼怪異的 bug, 難怪我在網路上都找不到解答!

另外一個發現是我重灌 word press, 也就是我的部落格的時候. 發現 2.5.X 和 2.6.X 都不認識 Windows Vista. 雖然看似安裝起來了, 但是進到 phpMyAdmin 就出不來了. 無奈之下只好去裝 2.4.9 版, 僅僅比 2007 年建部落格時用的 2.4.5 版高級一點點而已. 但 2.4 支持 PHP4, 2.5 支持 PHP5, 2.6 支持 PHP6, 不相容也勉強不來. 此外, 雖然書上書, 安裝部落格的時候, 在 Appserv 這個套件裡面要輸入 Web server 的 IP, 而且 IP = localhost = 127.0.0.1.  但對於 PPPoE 撥接的人可不是這樣.

假設我向中華電信申請了一個固定 IP: 1.2.3.4. 撥接上去之後, PC 看到自己的 IP 並非這個值, 而是內部虛擬的另外一個 IP, 比方說: 9.8.7.6, 所以在 AppServ 裡面固然要填第一個 1.2.3.4 的 IP, 但不要以為 localhost 就是它, localhost 是 9.8.7.6. 如果要進入 phpMyAdmin, 就要指定 9.8.7.6 才對, 我試過用外網的 IP 或是 localhost 都看不到東西.

這樣裝起來之後, 不需要 port forwarding 也可以在本機編輯自己的 blog. 當然, 此時還要執行動態 IP 程式, 先告訴 DNS http://www.cash.idv.tw = 1.2.3.4 才能用 domain name 代替 IP address. 以上就是最近兩三天的新發現, 希望對大家有用.

對了! 以安裝 Apache 的套件來說, Xamp 雖然比較酷炫, 但是 AppServ 還是不錯用. 幸好有這些好心人提供免費軟體, 我們才能省下大把的時間. 雖然利用套件還是有很多要摸索的地方, 但時光若倒退 30 年, 能架 httpd server 的人就是高手高手高高手, 或許可以進 FBI 工作了. 更遑論複雜地多的 blog,  若不是累積眾人的智慧也無法變得如此普及. 往好處想, 我們能享受科技帶來的便利真是幸福~~~

合勤 P-872H VDSL MODEM 小註解

上次中華電信的人來安裝 MOD 的時候, 我看他很用力地把 MOD 的網路線塞到 VDSL 的 modem 背後, 一些過去不解的問題似乎朦朧的有了答案.

首先, MOD 它的 ip 是 10 開頭的, 如果趁著 MOD 剛上電的時候, 用力地按白色的資訊鍵, 就會進入設定的畫面 (很慢就是了). 從裡面可以看到它的 ip 根本和我家裡用的 192.168.1.X 不是同一個網域. 換言之, 這支 modem 可以支援 4 個 LAN 才對. 而這四個 LAN 又透過同一根光纖連到外面的 WAN.

上網找了一下線索, 發現網民大哥大姊要不就是太聰明 (根本就是網路科班出身的) – 言簡意賅, 高深莫測, 要不然就是很外行, 像我一樣把 P-872H 的 user manual、data sheet 都看完了還是不知道怎麼辦? 想要從不懂變懂, 幾乎比減肥還難! 幸而我找到一些關鍵字, 再經過而不捨 (網路線拔來拔去真的很氣) 地研究, 終於搞清楚了下面的幾件事:

1. 這個 modem 支援 4 個 LAN, 4 個 LAN 可以各自用 PPPoe 撥接上網. 中華電信不是給一個固定 ip 嗎? 那個就用 123456@ip.hinet.net 撥接, 其它的就用 123456@hinet.net 撥接, 得到浮動 ip 後, 各自當作一個對外連線. 4 個 LAN 只有 bridge 的功能, 彼此 ping 不到.

2. P-872H 本身就支援loopback, 所以我把 blog 網站單獨用固定 ip 撥接上網, 但家裡的無線網路改用浮動 ip 上網後, 其實我可以在家裡看見自己的 blog, 不需要透過手機上網. 過去幾年真是有夠蠢的~~~~

3. 如果把自己的 NB 的 ip 設定成和 MOD 一樣, 再用 MRL 來 streaming MOD 的節目 (一個頻道一個 ip), 其實也可以把 NB 當作 MOD 來用. 至於其他達成此目標的科技, 都可以在網路上找到. 重點是把 NB 的網路設成和 MOD 一樣.

對了! 以前看到有人拿我們 DMP 的產品去當中華電信 MOD, 原先還搞不太懂為何能做到? 現在想想一點都不難. 只要基本的 know-how 足夠, 再加上整理頻道表的 data mining 的能力, 確實有可能做出家中第二台 MOD.

對此有興趣的人請上網查 "卡巴熊", 他自製的 FW 可以幫海美迪的 DMP 升級. 不過卡巴熊夫人懷孕了, 所以他暫停做 1073 的生意, 一時買不到東西 (難怪我們業績下滑了一點). 在此順便祝卡巴熊夫人生產順利, 卡巴熊生意興隆, 瑞昱業績長紅!


2010/10/10

補充一個點, 根據 "IP分享器的選購迷思" 這篇文章所述: 我們在市面上買到的路由器, 其實比較接近 IP 分享器. 因為我們的內網不會有內內網, 能看到的 IP 都是這台 IP 分享器所提供的, 既然是自己分配的, 要認得並不難, 這只是 NAT 能力的表現罷了. 真的拿一個亂七八糟的 IP 封包過來的話, 它並沒有能力把它轉到 WAN 上去. 這也就是 MOD 10.x.x.x 的 IP 沒辦法從普通的偽 "路由器" 送出去的原因了.

然而, 如果這台 IP 分享器可以支援 PPPoE relay 的話, MOD 就可以接在這台分享器的後面. 因為 MOD 實在不會有什麼 packet 要和其他的內網 IP 做交流, 所以它適合走自己的高速公路.還有, 此時 IP 分享器的 DHCP 要關掉. 每個接上來的都要用靜態 IP.

MOD 如果接在 switch hub 上也可行. Hub 本身不提供主動上網的能力, 它只不過是個分接頭. Switch Hub 則是比較聰明的分接頭, MOD 連上來就大才小用了. 此外, MOD 固然可以用 PPPoE 上網, 和 MOD 接在一起的 AP –  偽 router 也要能自行撥接上網才可以, 用靜態 IP 或 HDCP 跟 VDSL 拿是不行的.  

[ref] IP 分享器之選用及設定

我讀 "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 自己發的, 就應該要攔下來. 這個是我以前沒想過的, 相當有趣.