跳到主要內容區塊

ntuccepaper2019

校務服務

以校園網路連線大數據驗證六度分隔理論
  • 卷期:v0051
  • 出版日期:2019-12-20

作者:游子興 / 計資中心網路組副理


本文由六度分隔理論所描述之現象,提出可行之驗證方法,進一步運用大數據資料統計校園網路連線資訊,運用IP路由節點數來驗證六度分隔理論之正確性。

 

六度分隔理論Six degrees of separation

六度分隔理論最早於西元1929年由Frigyes Karinthy所提出,而在西元1990年由John Guare再度提出後廣為世人所知[1]。

 

六度分隔理論中大膽假設世界上所有人或所有東西彼此之距離,僅需要六步或少於六步就可以到達(圖1)。例如世界上兩個互不相識的陌生人,透過其所認識的朋友,其朋友的朋友,其朋友的朋友的朋友… 等關係,最多僅需六個朋友,就可以串起兩個陌生人彼此的關連。

 

2019092002001.png
圖1.六度分隔理論

 

驗證方法

在六度分隔理論提出的年代,並沒有大數據分析這門學問,因此無法有效提出明確證據支持或反駁此理論,本文將運用新一代網路及電腦科技,蒐集並統計大量的連線數據來驗證六度分隔理論之正確性。

 

依據世界人口統計網站的資料[2],截至2018年12月,地球人口總數:7,662,668,199 (約76億),使用Facebook每月至少登入一次之帳號總數(Facebook monthly active users):2,320,000,000 (23億),假設帳號與人有一對一的關係的話,地球上有將近3分之1的人使用Facebook服務。Facebook最為人稱道的功能就是能串起朋友與朋友之間的關連,還無時無刻推薦許多可能認識的朋友加入彼此的Facebook帳號,因此現階段最有資格來驗證六度分隔理論是否正確之單位非Facebook莫屬,但可惜我們不是Facebook,也無法拿到Facebook之所有朋友關連數據來進行驗證。

 

使用IP路由節點來驗證

若進一步探討六度分隔理論之敘述,提到不只是人與人之前的關係適用,世界上的所有東西也都適用於此理論,因此若運用網際網路中所有上網裝置之間的連線行為,以此來驗證六度分隔理論,應該是一個可行的方向。

 

目前網際網路中廣泛使用之路由協定為TCP/IP,而可上網裝置之總數在 IPv4 Header中Source/Destination IP有定義(圖2),該欄位由4 bytes所組成,因此IPv4可配發之IP總數為2^32=4,294,967,296(42億),此數字約略等於所有上網裝置之總數,此數字約是目前臉書帳號之兩倍,地球人口之一半,因此IPv4應該是一個理想的大數據統計量測基準。

 

2019092002002.png
圖2.TCP/IP協定之IP Header[3]

 

在網際網路中兩個上網裝置之間的連線機制,廣泛使用的方法為Routing路由轉送機制,封包從起始點出發,途中透過許多的路由器不斷的進行封包轉送直到抵達目的地。而偵測路由轉送機制最常使用的方法,就是使用網管偵測工具Trace Route指令來顯示由A到B節點所需經過之各節點(Node)資訊,而統計A到B節點所需經過的節點數稱為Hops數,也就是本文所要探討的主題,任兩個上網裝置之間的連線間隔多少Hops。

 

IP封包表頭Time To Live欄位

在實際統計A到B節點所需經過的Hops數之前,先來探討理論上允許最大的Hops數是多少?此問題其實早在TCP/IP 制訂時就已經決定,在IPv4 Header中有個欄位TTL(Time To Live)大小為 8 bits(圖2),因此最大值為2^8 = 256,TTL運作之原理就是每經過一個路由節點就會減一,直到TTL變成0之後該封包就會被丟棄[6],此舉可避免封包無止盡在網路間傳遞而造成頻寬浪費,因此A到B節點所經過的Hops數理論上最多不可超過256個節點,否則封包將於半途被丟棄而無法抵達目的地。

 

而各連網裝置所使用之作業系統,TTL又有不同之預設值,範圍由30~255不等(圖3)[4][5],例如某些作業系統TTL預設值僅為30,就預設全世界任兩個裝置相互連線,其中間不需超過30個節點即可抵達。

 

2019092002003.png
圖3.不同作業系統之TTL預設值

 

若以近幾年較為常見之作業系統區分,大致可歸類成如下三種作業系統之TTL預設值(表1)。

 

表1. 常見作業系統TTL預設值

 

作業系統

預設 TTL

Linux/Android/Apple

64

Windows

128

網路設備

255

 

 

 

 

 

 

 

校園骨幹網路連線分析統計

1. 增加顯示計畫代碼 本研究使用TANet學術網路分配給臺灣大學所使用之IPv4 Class B網段140.112.0.0/16[7],可分配之IP總數有2^16= 65,536,目前校內教職員生合計約四萬人,觀察一天24小時內所有網際網路連線記錄,藉此統計所有連線經過之Hops。

 

實際量測架構如下圖4所示,在臺大校園骨幹之Border Router中進行所有網際網路連線之TTL記錄統計。

 

2019092002004
圖4.臺大校園骨幹連線TTL量測架構圖

 

 

依據統計結果臺大在平日尖峰時段網路使用量進出合計約14Gbps,離峰時段約3Gbps。尖峰時段封包數進出合計約1800K packets per second,離峰時段約400K packets per second。

2019092002004.png
圖5.臺大校園骨幹24 小時流量與封包數

 

 

首先統計校內連網裝置24小時之TTL量測統計如圖6,量測點為校內連網裝置抵達校園骨幹BorderRouter時之TTL值,可明顯看出落於兩個區間0~64及65~128。

 

2019092002006.png
圖6.校園骨幹校內連線裝置TTL量測值統計

 

 

若以本文前面所述以常見之作業系統預設TTL值來區分,可得知校內連網裝置之作業系統類型所佔比例如表2。

 

表2. 校內連線裝置作業系統比例分佈

 

作業系統

比例

Linux/Android/Apple

35%

Windows

64%

網路設備

1%

 

 

 

 

 

 

 

接著統計校外連網裝置24小時之TTL量測統計如圖7,量測點同為校外連網裝置抵達校園骨幹Border Router時之TTL值,一樣落於兩個區間0~64及65~128,但分佈之範圍明顯較為寬大。

 

2019092002007.png
圖7.校園骨幹校外連線裝置 TTL 量測值統計

 

 

以相同方法使用常見之作業系統預設TTL值來區分,可得知校外連網裝置之作業系統類型佔比如表3。

 

表3. 校外連線裝置作業系統比例分佈

 

作業系統

比例

Linux/Android/Apple

51%

Windows

41%

網路設備

8%

 

 

 

 

 

 

 

因為校園網路行為大都是下載流量大於上傳流量,也就是校內連網裝置大都為Client,而校外連網裝置大都為Server,因此比較校內與校外連網裝置,可發現校內之Windows裝置相較校外多出了36%,確實符合校內裝置大多為Client之預期。

 

若以校外連網裝置作業系統預設之TTL值減去抵達校園骨幹 Border Router時之TTL值,即可得到需經過多少Hops可抵達臺大校園網路。統計之結果如圖8所示,平均值為11.6,中位數為10,由此可知由世界各地連網裝置抵達臺大校園網路約需經過10~11節點,雖然並沒有完全符合六度分隔理論之敘述,不過並沒有差距太遠。

 

2019092002008.png
圖8.臺大校園骨幹校外連線節點統計

 

 

結論

本文使用實際校園網路連線資訊,運用校園網路大數據統計後得到如下之結論,使用IP路由節點計算得到所有上網裝置相隔約11.6個路由節點,其結果較六度分隔理論多了5步的距離,但也顯示網際網路中彼此的距離並沒有想像中那麼遠,也就是六度分隔理論中所敘述,萬事萬物都僅有至多六步的距離,因此若有夢想或理想尚未達成,可勉勵自己,距離並沒有想像中如此遙遠,或許再努力一下就可到達了。

 

參考資料

1. Six degrees of separation https://en.wikipedia.org/wiki/Six_degrees_of_separation
2. 世界人口統計網站https://countrymeters.info/ct/World
3. Internet Protocol version 4 (IPv4) https://en.wikipedia.org/wiki/IPv4#/media/File:IPv4_Packet_-en.svg
4. Time to live https://en.wikipedia.org/wiki/Time_to_live
5. Default TTL (Time To Live) Values of Different OS https://subinsb.com/
default-device-ttl-values
6. Initial TTL values http://noahdavids.org/self_published/TTL_values.html
7. TANet IP Whois 140.112.0.0/16 http://whois.tanet.edu.tw/showWhoisPublic.php?queryString=140.112.0.0&submit=%E9%80%81%E5%87%BA