給老婆買了iPhone4s之后,開始在Mac上用iTunes下載軟件,發現速度龜速,好歹家里也是10M光纖啊,這個小水管的下載速度絕對不能忍受,於是百度了一下,發現可能是域名解析造成的問題。蘋果為App Store准備了a1.phobos.apple.com到a2000.phobos.apple.com一群服務器,如果連接到比較慢的服務器上,那肯定是小水管了。
解決方案就是探測一個最快的IP,然后在HOSTS文件中將所有的域名都指向這個IP。看網上的一些資料,都是使用一個Windows下的工具來探測,可是我這里是Mac沒有Windows啊,想想這個問題不難,寫了一個腳本來探測最快的IP。代碼如下:
2
3 # Find the fastest apple store hosts
4
5 printf "%-20s\t%-16s\t%-10s\n" "Domain" "Ip" "Avg Ping"
6 #printf "Domain\tIp\tAvg Ping\n"
7 for ((I=1 ;I < 2001; I++ )); do
8 HOST="a$I.phobos.apple.com"
9 TEMP=$(ping -c 4 $HOST)
10 IP=$( echo $TEMP | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | uniq)
11 TIME=$( echo $TEMP | grep -oE '\/([0-9]*\.[0-9]*)\/' | grep -oE '[0-9]*\.[0-9]*')
12 printf "%-20s\t%-16s\t%-10s\n" $HOST $IP $ TIME
13 done
使用這種提速的方法有個問題需要注意,萬一哪天你所指向的那個IP停機維護了,可能你都無法訪問iTunes的App Store了,這時只需要找一個可用的IP,替換一下HOSTS中的內容就可以了。
使用這種方式后,下載的速度有所提高,但是並沒有到達令人滿意的程度。后來在參考資料 4 中看到單獨的ping值並不能反映網絡的快慢,那么究竟如何找到一個最合適的下載服務器呢,這個還需要研究一下。
在測試過程中,我將DNS切換到了Google Public DNS上,發現同樣的域名a1.phobos.apple.com返回的IP發生了變化,猜測Apple在iTunes App Store的部署上采用了CDN的方式。雖然用了8.8.8.8之后,ping的一些結果變快了,但是Mac的系統更新變的特別的慢,應該是DNS將IP解析到國外去造成的。
看來網絡世界的配置還真是復雜,一個改動可能影響多個方面,要想達到一個最優,只能是動態調整了。
參考資料:
1、加快iTunes從蘋果App Store應用商店下載軟件或App更新包速度的方法
4、Google超快速DNS服務器:8.8.8.8和8.8.4.4