IP 地址危機資訊包

剛傳來IPv4 地址全部用光的消息,突然間想寫個資訊包整理一下。

  1. IP 全寫為 Internet Protocol,中譯互聯網協定。一如其名,IP 其實是一套完整的通訊協定,亦即互聯網上電腦間通訊的一套指定法則。現在經常喊 IP 用光的是指 IP Address,IP 地址是也。(正如你喊要人家電話其實是想要人家的電話號碼不是真的想要人家的電話一樣)
  2. IP 地址分配的工作是由 ICANN (Internet Corporation for Assigned Names and Numbers,互聯網名稱與數字地址分配機構)負責。此工作以前一直由有美國官方背景的 IANA (Internet Assigned Numbers Authority,互聯網號碼分配局) 負責,後來為了顧及互聯網發展等等因素才成立 ICANN 這民間組織。
  3. 但 ISP/互聯網服務供應商不是由 ICANN 直接申請 IP。正常程序是所屬地區的 RIR(Regional Internet Registry,區域互聯網管理構構)如 APNIC (Asia-Pacific Network Information Centre,亞太區網絡資訊中心)向 ICANN 申請一整個子網(subnet) 的 IP,地區的ISP再按需求向其申請。這類RIR 一共有五個,除了剛才提到的 APNIC 外,還有管理北美及部份加勒比海地區的 ARIN,管理非洲的 AfriNIC,管理南美的LACNIC,及負責歐洲,中東及中亞部份地方的 RIPE NCC。
  4. 提到用完 IP 地址的其實是指 ICANN 本身的庫存,最後五家 RIR 各拿一組自用。五家 RIR 雖然還有 IP 儲備,but the end is nigh。APNIC 是用 IP 用最快的一家,以現時速度,預算三至四月後庫存便會用光。北美和歐洲比較樂觀,還可以捱過 2011 年。南美和非洲則可以完全放心,手上的 IP 地址還足夠用幾年,如果消耗速度不變的話… 當然真的到「末日」這還要看各 ISP 本身的庫存。
  5. IP 不夠用會出現甚麼情況?基本上電腦是靠 IP 址址認出傳送資料的來源和目的地,換言之 IP 位置的數量限制了能同時連上互聯網的電腦的數目。如果不採取任可措施的話,能連上網的電腦一多於IP 地址的數量,便可能出現「排隊等 IP 連網」的情況。
  6. 「終極」解決辦法便是轉用 IPv6。IPv6 的地址格式與現時通行的 IPv4 協定不一樣,能產生的組合有2128個,是IPv4 的 296 倍(2 乘上 96 次…自己想像吧)。拿上面提到電話號碼的例子來解說﹐就像以前香港用本是用七個字的電話號碼,轉改成現在用八個數字一樣,那麼便能容納更多電話接上網絡。
  7. 轉用 IPv6 可謂困難重重。因為 IP 協定牽涉到資料傳輸的路徑判定,資料格式等因素,即傳輸資料所經過的每一部電腦/路由器也要更新軟件讓它們也看得懂 IPv6 格式的資料。要為全球的節點和電腦更新,這是不太可能在短時間那麼容易完成的工作。
  8. 所以便有人想到一些緩衝方案爭取時間。其中是CGN (Carrier Grade Network Address Translation,營運商級別網絡地址轉換(此乃無腦直譯)是比較可能實踐的做法。說起來概念倒簡單,就是讓多部電腦同時使用一個或幾個 IP 地址,情況就有點像商業公司的 PBX 電話系統,對外只有一個電話號碼,要找某人則要在駁通後再選擇「內線」。
  9. 其二則是使用6to4/6in4/4in6/4to6 等等技術讓兩套協定共存。這種情況猶如將香港的電話分為兩組,一組使用舊格式的電話號碼,另一組使用新格式的。致電給同格式電話號碼可以直接打過去,但不同格式電話號碼要互通電話則可能要先按3字,又或是要先致電接線生再說出要致電的電話號碼。

總而言之,IP 耗光不會讓互聯網停擺,不過長遠而言會窒礙互聯網發展。

先拿穩您的相機!

拜 Flickr pro 戶口所賜,最近多拿了相機外出拍照(當然也得感謝米高能抽空相伴指點)。數碼單鏡反光機因為平民化,價錢又便宜,去香港的拍照熱點眼看差不多人人都有一部在手。甚至情侶檔,相機團,又或是單人匹馬,彷彿小 DC 已絕種了一樣。

不過,明明大家拿的是大單眼,怎麼感覺就有當年小 DC 大行其道的影子呢?再留心看清楚一點,啊,原來有人將單眼當成 DC 來拍照啦。

單鏡反光機的設計是要你一手持機,一手握鏡的。右手握著機身兼控制快門以及其他操作,左手則托著鏡頭調整焦距,或是微調對焦時用。決不是像小 DC 一樣雙手持機身,因為那種握法會令拍照時鏡身不穩,容易拍出失焦的相片或者拍了意相不到方向的照片。可以將相機想像成槍,DC 是小手槍,雙手握著穩定槍身,DSLR 就是自動步槍,握槍總是一手在前一手在後才會穩,你看電影裏的主角拿步槍的姿勢跟手槍不一樣吧?

直倒拍照則是另一個值得討論的地方。有預算,相機又支援的話不妨買個直倒手柄,拍照就可以用平時一樣的握法。如果沒有呢?以前老師教過,直倒握得穩,可以照樣以右手握機身,不過要注意是手應該在相機的下方承托相機,身體就可以頂著手肘或其他物件穩定機身;因為手形的關係就換了用拇指按快門,因為這時食指移動會比較麻煩又難控制力度,很容易會令整部相機在按快門時產生不必要的震動。左手則繼續握穩鏡身,前臂與右手靠緊,減少不必要的震動。

為了拍出好照片,而且還讓其他人看不出你是個門外漢,更為了好好保護你的相機,請從今天起使用正確的握機方法!

會「推」的天氣站

事緣有天從iPhone看 Yahoo!天氣,明明十多度卻被說成三十多,實在氣死了。不少程式都直接從天文台的文字版本或是feed直接找天氣資料,曾幾何時也打算弄個Web Service把資料拿出來的,不過氣溫之類的天文台也不會說自己身處的地方的天氣,心想不如自己弄一套簡單的天氣探測裝置好了,於是便有了用Arduino實行這個計劃的打算。

Arduino是啥?Arduino其實是一套當初為了讓不諳電子技術的學生,以廉宜的價錢弄一些簡單的小裝置的一套平台。基本上這平台包括了一塊掌心大小的電路板,和用以寫程式的 IDE。只消把電路板經USB 駁上電腦,就可以透過Arduino IDE直接編寫程式和控制連上電路板的各種電子零件,諸如LED,發聲喇叭,馬達,甚至還可以加插擴展模組連上藍芽,LCD,GPS,甚至網絡的能力。

只要能駁得上就能玩,能改,是這套開源硬件平台的魅力。

不過香港的店舖,即使是鴨寮街,根本就沒Arduino電路板賣,從外國直接訂購又太昂貴,所以從大陸淘寶找。因為Arduino是開源硬體,電路設計圖可以從官方網站下載,只要有材料就可以弄一塊出來,使用官方的軟體編寫程式,所以網絡上也有不少合法的複製品。淘寶也有不少大陸廠商直接放板子和模組一併賣,只要挑個便宜,有信譽的,放個信用卡號,速遞就會把貨品送到家,非常方便(只是某速遞公司送貨到住宅區的收費不便宜)。

有時候買一點小零件,好像電阻,電容,LED,光敏電阻,簡單IC之類的訂購未免有點小題大做,便會直接去鴨寮街採購。有一家兩層的店材料和工具(例如剪線鉗和萬用錶)都很齊全,有時候還有特價,不過就是比較複雜一點的零件賣很貴,或是根本沒賣,這又得另外找一家國際電子零件商幫忙。幸好那公司的取貨點就在我公司附近,可以省下一筆可觀的運輸費。

初時也是門外漢,電子甚麼的除了初中教的簡單電路特性還記得以外其餘的都一竅不通。所以先著手砌一些簡單的小裝置,例如上面的光度探測器。以後再看網絡上的文章,技術文件等等,累積了不少電子零件上和電子訊號處理的知識(也間接了解到不少電腦硬體上的原理),便開始向製作自己的私人天氣站的目標進發。

Arduino 天氣站 v.1

Arduino 天氣站 v.1

起初參考了這個網站買了內文提到的探測器和其他零件,又用了跟Arduino一起買的Ethernet模組將這東西接上家裏的LAN,那麼即使電腦沒開程式Arduino也可以直接把資料放到網絡上。當初這東西只有自己的網頁伺服器,要看資料非得要到訪它,沒記錄功能又不會通知,不甚實用。後來在官方論譠「刨」文章看到原來有一套叫pachube的服務,可以讓用家上載由不同地方獲得的環據數據,便趕緊申請了來試玩。

Arduino 天氣站 v.2

Arduino 天氣站 v.2

後來,又將這套服務的數據傳到放在網頁伺服器(也就是這裏)的python script,靠它定時將資料從pachube扯過來發 twit。而且,這套script還會將資料儲到資料庫,那我便也可以跟天文台一樣繪製「溫度走勢圖」,「氣壓走勢圖」,「全年最高濕度」等等有用的資訊了。最近為了將氣壓的量度精度提升,把購入已久但一直沒接上的ADC (Analog/Digital Converter – 模擬數碼訊號轉換器)接上,順手為這迷你天氣站加了一個「個人」網頁,利用Google的Visualization API提供廿四小時的天氣走勢,更容易看出天氣變化。

當然我不會就此心足。除了將網站美化外,還打算將天氣站移師窗邊,取得更真實準確的天氣數據(現時在電腦正上方,太熱了)。但在這之前我想還是先搞好網頁,貼出更多有用的資訊吧。

話說如果超過某個溫度/濕度自動發twit也頗有趣的…

Google 的 DNS 服務

Google 最近推出免費的公眾 DNS 服務,在芸芸網絡服務商之中也算是前所未有。除了在全球各地廣設伺服器,用上一堆加快存取和增強保安的技術,就連 IP 也挑個易記的 8.8.8.8 和 8.8.4.4,可見他們也花了不少心思。

DNS 算是網絡不可或缺的服務之一,在你看見這篇文章,不論是直接鍵入 mk.netgenes.org 也好,從 Google Reader 經 feedburner 的 feed 看見也好,電腦已無聲無息的跟網絡上的 DNS 伺服器溝通,將域名翻成電腦懂的 IP 位置,最後經 TCP/IP 協定把資料扯回來,顯示在螢光幕上。

電腦在連上網絡的時候,就已經跟網絡上發送設定的電腦溝通好,自動把 DNS 伺服器的位置記下,不用使用者操心。所以,老爸老媽上網從來不用知道啥是 DNS,只知道把網址輸入 Firefox,按個 Enter 網頁就顯示出來了。這背後通常都是你的 ISP,為了便利等等原因,就預先幫你設定好的。既然如此,Google 又何須大費周章,另設服務 reinventing the wheel?

瀏覽速度是不是真的快了,沒有試過不敢亂評。不過有一點看 Google 往績,就是很會乖乖守規則。有些網絡供應商的 DNS 伺服器比較奇怪,當電腦詢問一個不存在的網址的時候,它不是照慣例送回正常的「找不到」訊息,反而會把使用者導向廣告網站,從中獲利。在某些地方,網管更可設定名單禁止使用者得知某些網域的 IP,效果便如同鎖網一樣,普通使用者進不了去。

由此可知,Google Public DNS 很可能是為將來 network neutrality 形勢不利自己的後備武器。Google 逐步推出網絡基本服務,原因便是要切斷使用者對傳統網絡服務供應商的「依賴」,那麼即使將來 ISP 真的搞分化,破壞互聯網的互連基礎,那 Google 也可以很容易轉變成為一家網絡頻寬供應商,不會被眾網絡商杯葛,從互聯網上消失。

DNS 甚為普及,連上互聯網必會用到。Google 可以利用這點,收集大家的網絡習慣。就算不用 Google 的搜尋器,Google 無時無刻也知道你剛去了哪些網站,對他們這班病態資料收集狂來說不是很美妙的事情嗎?

突然想起 Hyperion Cantos 裏的人工智能集合 Technocore。表面上它們為人類提供了無數好處:傳送門,武器,超光速技術,但暗地裏其實佔盡人類便宜,當他們牲畜而已。被 Google 暗中佔了便宜,是不是得不償失?

Windows 與 UAC

微軟為了解決長久以來困擾 Windows 用戶的保安問題,在 Vista 裏加入了所謂的 UAC – User Account Control。簡單來說,程式如果要用到系統管理員才能用到的 API,例如更改系統設定,安裝程式,系統維護,設定防火牆等等,都必須經過 UAC 向使用者取得確認,那就是在螢幕上顯示詢問,「你要讓這程式更改系統設定嗎?拒絕還是接受」使用者要按「接受」才能讓程式繼續執行。

但是,由於牽涉過多 API,程式的流程裏就可能要用上十多次 UAC,反而麻煩了使用者。隔壁的蘋果也不忘在廣告挖苦對方一番,在廣告中 PC 連跟 Mac 說句話也得要身旁的保鏢批准。雖然現實沒麻煩到這個程度,但也夠擾人了。雖然微軟在 SP1 及後來推出的 Windows 7 大量減少詢問出現的次數,不過有時會因 API 的問題令某些程式不能執行。

其實,root cause 不是微軟 NT 架構不夠安全,而是其使用者和程式開發人員的不配合。Windows 曾經有兩大品種,其一是繼承 Windows 3.1 血統的 9x 系列,另一邊則是來自 Windows NT 4 的 NT 核心。9x 系列至末代 Me 都沒有多用戶的概念,作業系統僅設計讓同一人執行,程式亦 assume 執行者擁有更改電腦任何設定的權利。所以當微軟準備將兩系整合成家用商用皆宜的 XP,便曾考慮過將預設帳戶預訂為沒管理員權限的普通使用者。奈何很多來自 9x 系統那邊的程式都因為 API 大受限制停止運作,所以方案就此作罷。

在平衡兼容性和保安問題兩大因素,才出現了 UAC 這四不像。對比 *NIX 的 sudo,UAC 是跟軟件兼容妥協下的產物。UAC 除了影響正常操作外,也對保安沒甚麼助益。用戶遇著上千百萬個詢問視窗,難免養成一種不管內容是甚麼都按 “Yes”,”Allow” 的反射行為,不論是菜鳥還是資深用家也是如此。有些用戶嫌麻煩更索性關掉。即使 Vista SP1/Win7 已大大減少這類視窗出現次數,但這亦無補於事。

要改變這個死局,微軟不是跑去改善 UAC 的 User Experience,而是應該協助使用者洗脫惡習,戒除凡事每每用 admin 權限的習慣。既然也著手增強保安加入了 UAC 這擾人之物,何不徹底改革,將 admin right 改成如非必要不能動的帳戶?

我媽的電腦便是如此。她也是染上了「按 Yes/Allow/Next 準沒錯」的普通用戶,也許由於這樣她以前的電腦積滿了不少不明來歷的怪軟件。為她安裝新電腦我便做了個小實驗,將她要用的軟件裝好,再將她的帳戶降格為普通用戶。這樣我至少不用再為奇怪的軟件煩惱,她要安裝真的有用的軟件,也只要我幫她 Run as Admin – 也就是 Windows 的 sudo,就能解決。

顯然把 OS X/Linux 的一套學習過來套用明明就沒問題,但箇中有甚麼原因令視窗出現了 UAC,則不得而知。

Life as in-house IT Developer

與其他熱門工作不同,資訊科技不像其他行業,會有人對其產生憧憬。空姐空少機師可以四處飛來飛去環遊世界,醫生律師金融機構分析員高薪厚職,IT 看起來就愔然失色了。整天坐在電腦面前有啥令人嚮往的地方,跟電視上的隱青有甚麼分別?

所以,IT 在外人眼中是個悶透了的行業。支援商業活動的 in-house IT 則更甚。至少,寫面向群眾和消費者的 B2C 軟件大家都會明白你在說甚麼。是繪圖的,是文書處理,是即時通訊軟件,是遊戲,因為平時大家用電腦都接觸得上,所以也會知道個大概。至於 in-house IT 咯,其他人還要首先知道你公司在做甚麼。話說有個人拍攝 IT 常識節目,就是不知道人家 IT 做甚麼,鬧了個大笑話

而且,成品還是一些內容悶到透,樣子醜得要命的報表和畫面。我說醜得要命,就希望大家不要想像成 GMail 那款,而是像外行人初學 HTML 很隨便堆起一張 form。很隨便的原因,除了因為我們開發者和用家都很隨便以外,我們還受一些叫「資源」的東西管制著。IT 系統計造價,跟建築業很相似,都是以日薪時數計算的。那怕你多花了一日,你的上司,你系統的用家都會老大不滿意。對他們來說系統能用,他們知道怎樣用就好。他們不知道怎樣用也沒問題,因為他們期望 IT 的同事可以幫自己。

(待續)

mceComments 0.4.6

居然在寫這篇文章之前就有 bug report…

不說這個,因應 WordPress 2.7 所作的改動,順便兼容另一個插件,又將版本編號推上了一小格。既然只是轉 revision number,也表示這一次不會有功能上的新增(別打我別打我)…

2.7 後面轉變也挺多的,最少我看見後台編輯版面又復古,只用了純 JavaScript 沒壓縮沒怎樣的把設定和翻譯檔送到客戶端… 怪哉。

-1 版則僅僅解決編程時的一時大意之誤… 羞家死了