首頁>資訊>

放眼整個人類歷史,網際網路對人類文明的影響怎麼評價也不為過的,而其發端不過是實驗室的產物。所以,一開始根本沒有考慮運營的問題,如與質量相關的頻寬、時延等QOS技術根本沒有考慮,由於設計的理念和先天不足,即使後期修補改進,也難以實施。比如最重要的協議之一:IP協議,網路中如果評選最差員工獎,IP協議無疑拔得頭籌,這哥們的理念是盡力而為,聽上去蠻不錯的,實際上卻是毫不負責。不管IP包是丟失或者損壞,IP協議從不負責,那出了問題怎麼辦?交給上會的傳輸層或應用層,由別人來背黑鍋。想象一下XX快遞公司,把你寄的包裹弄丟了,或是損壞了,一概不管,一切居然要你自己負責,重新發貨,那不把你氣得七竅生煙?

在談論頻寬前,我們首先要了解頻寬的定義,澄清一些問題:

頻寬的定義:指在固定的時間可傳輸的資料量,單位是bps(bit per second)。首先要搞清楚單位問題,頻寬肯定是以bit為單位的,比如100M頻寬,就是100M bit,而平常我們下載軟體所顯示的單位都是byte,1byte=8bit,這有個換算。常常有個無知而憤怒的聲音:媽的,我的寬頻是4M的,下載速率才400K左右,電信騙子!

再次,我們要明白ISP給我們開通頻寬的真正含義:它僅僅是指從你家到本地ISP最近接入裝置間線路的頻寬,一般這是你唯一可獨享的線路頻寬,除此這外,全世界任何一個ISP也無法承諾。這是真正和大眾有關且能控制的,其它很多問題當地ISP也無法解決的。

TCP/IP協議本來就是基於包交換的,換句話說,是一種頻寬共享的協議,只能是線上路上獨享頻寬,從來沒有說能在網路中獨享頻寬。10年前,ATM協議還有個虛電路的概念,理論上比IP協議能更好的承諾頻寬,可惜最後被IP廢成渣了,目前ATM僅在ADSL接入層還有應用,大家常常要在ADSL貓裡要設定的VPI,VCI就是ATM協議最重要的引數,隨著光纖的普及,ATM將徹底消失了。

假設以10M頻寬為例,理論上下載速率可以達到10/8=1.25M,但實際上根本不可能,能達到1M就不錯了,這是為什麼呢?這其中的原因很複雜,大概有以下幾個方面:

一、協議開銷

TCP/IP是一個協議族,當然核心的是TCP和IP協議,讓我們像剝洋蔥一樣,一層層剝開每一層協議:

TCP協議報文格式

由上可見,TCP最小協議開銷為5X32=160bit(20byte),

IP協議報文格式

由上可見,IP最小協議開銷為5X32=160bit(20byte),

Ethernet II幀格式

注此處單位是byte, Ethernet II型別乙太網幀的最小長度為64位元組(6+6+2+46+4),最大長度為1518位元組(6+6+2+1500+4)。Ethernet II最小協議開銷為6+6+2+4=18byte(144bit)

完整資料包

總結一下:所有協議的開銷為:14+20+20+4=58byte,按乙太網最小資料包(46byte)算:其協議開銷佔比58/104=56%,按最大資料包(1518byte)算,也就是最大效率:其協議開銷佔比58/1518=3.8%。當然每秒在網路上傳輸的資料包大小並無規律可言,由於應用不同,也無法統計出一個大致平均的協議開銷佔比。其實這種演算法並不嚴謹,資料鏈路層也並不是只有乙太網協議,比如ADSL所用的PPPOE,WIFI的802.11n等等,其中還少算了應用層和物理層的開銷,尤其是應用層各種協議種類繁多(難於計算統計),另外,傳輸層UDP協議的開銷也會更小一些。這些開銷全部要佔用網路頻寬,就好比到郵局寄包裹,包裹也是要算重量和費用的。

除此之外,為了維護物理鏈路的連線和各種協議和應用軟體的連線,會定時地傳輸各種協議報文,類似心跳的報文,有時我們聯網後,並沒有任何上網動作,但很多協議已經開始工作,有流量和連線產生,可以在DOS視窗下用netstat –a檢視傳輸層的連線情況。比如,在思科的裝置上,某些型別的埠(比如最常用的以太口)預設實際只能使用75%的頻寬,剩下那25%是拿來給網路間的各種協議和裝置間的通訊用的,如果無法保證並預留以上系統應用的頻寬,那裝置都宕機或脫網了,頻寬再多又有什麼用呢?

二、傳輸問題

傳輸問題也分為幾部分:

1. 接入線路問題。

傳統的寬頻ADSL對線路的要求高,既有距離、介質的要求,對電氣干擾也有要求,有一部分ADSL的線路是不達標的,自然其頻寬也不夠。比如電話線的線徑,最初只有電話時,線徑記得只有0.3或0.4毫米,這對通話質量基本沒什麼影響。但有了ADSL後,影響就大了,中國電信集團要求採用0.5毫米的電話線,同時採用類似網線的雙絞線,以減少干擾。曾經看見太平洋網的一篇首頁文章,居然認為電話線太細造成中國頻寬不達標,真是外行的笑話,讓人無語。關於ADSL線路質量是一個很專業的領域,線徑只是其中一個小小的指標而已,還有諸如雙絞線或平行線方式,主電纜的質量,開線率等等指標。同時ADSL經過不斷升級,各版本對線路質量要求也不同。比如版本ADSL2反而比ADSL支援的線路距離要短,但頻寬增加不少。而線路質量也只是頻寬問題中的一小部分。以我在電信工作10幾年的經驗,告訴大家一個最靠譜的辦法:在ADSL貓裡面可以檢視到2種速率,一種是ISP給你配置的頻寬(也就是你向ISP申請的頻寬,一般是1024的整數倍),另一種是實際適配的速率,這表示你家的ADSL線路實際能達到的頻寬。如果實際適配速率>配置速率,恭喜,你家的ADSL線路質量很好,是達標的。否則,你可以向ISP投訴,要求整改。僅對ADSL而言,其它任何測速方法全是扯蛋。由於ADSL貓的種類太多,檢視的方法無法一一舉例,一般在網路狀態裡可以檢視到。當然這僅是針對你家到ISP這短短几公里的線路而言,影響頻寬的因素遠不止這些。

目前光纖入戶已經開始大量普及,衡量的指標又完全不同,主要是光衰,一般<25DB以下都是合格的,當然越小越好。有的光貓可以直接檢視光衰。

2. ADSL終端匹配。

ADSL的標準版本很多:ADSL,ADSL2,ADSL2+,ADSL貓和電信DSLAM之間就需要協商,匹配一個大家都支援的版本。電信的DSLMA裝置都是頂級的裝置製造商的產品,而ADSL貓的質量就參差不齊了,在ADSL版本匹配上影響很大,相同條件下,速率不達標,也許只是換個貓,速率就達標了,甚至速率會有成倍的提升。其中的原因是很複雜的,牽涉到硬體晶片和協議版本的相容性,我也只是個門外漢。

3. 幹線的傳輸

中國幅員遼闊,城市之間經過成百上千公里的光纜連線,遠非彈丸小國可比。在這幾百甚至上千公里的距離,只有光纜嗎?那你就想錯了,光是有衰耗的,所以每隔一段距離都會有中繼站,重新放大光訊號。同時為了更大的頻寬,也會設定光復用的傳輸裝置。對於傳輸對網路的影響,我想起一件事:當時在新疆某市開通骨幹路由器到烏魯木齊的電路,一般最少是2條電路,走不同路由的幹線光纜。在測試的時候發現(路由器和電路均無負載),一條電路的時延在10ms左右,另一條卻在20ms左右,難道是傳輸的問題?但經過傳輸專業人員的檢查,指標正常,沒有任何問題。仔細一問,原來第2條光纜的距離有近千公里(實際某市到烏魯木齊的距離不過300多公里),我很奇怪:光的速度不是30萬公里/秒嗎?這點距離的時間差幾乎可以忽略。但實際上,每臺傳輸裝置大部分都有光電轉換的過程,在經過無數箇中繼站和波分複用裝置後,訊號被大大的遲延了。由此可見,這只是一個省內的情況,對於全中國呢?一個北方的使用者如果訪問南方的遊戲伺服器,那會增加多少時延呢?對於傳輸,我是外行,希望有專家能指教一二。

三、裝置問題

主要是網路中各種裝置,分2個方面:

1. 轉發效能問題。資料包從裝置入口進來,再從出口轉發出去,這之間的時間差就是裝置轉發的時延,時延是頻寬的殺手。網路工程師都知道,在衡量裝置效能上,有背板頻寬和包轉發速率等主要引數。交換機是純硬體轉發的,是最快的,電信級的路由器也基本上是硬體轉發的,而防火牆就慢多了,它要對每個資料包進行分析並控制,效率就差多了,所以在ISP骨幹網裡,是不會有防火牆的。

除了網路裝置外,光傳輸裝置的影響也非常大,小到本地網,大到省內,甚至國家骨幹網。每臺裝置都要經歷光-電-光的轉換,時延也在一次次的累加。純光的運算仍只在理論和實驗室中。其中涉及到光網路的協議開銷,已不在我所熟悉的領域了。

2. 除了ip及以上協議,每個資料包在進入一臺裝置上時先要對資料鏈路層協議進行解包,而在離開裝置時要重新封裝資料鏈路層協議,這都是造成時延的因素。在DOS下有個tracert命令,可以檢視經過的三層以上的裝置(如路由器),但這其中根本不包括二層及以下的裝置,像交換機,網路接入裝置FTTH等,其它傳輸裝置根本不支援ICMP協議,更無法體現出來,其實我們隨便訪問一個頁面,都要經過10臺以上的路由器,而實際每個資料包經過的裝置要乘以N倍。

綜上所述,網路中裝置成百上千,每臺裝置都不停地處理資料包,不斷地累加時延,而頻寬就只有2個引數:資料量/時間,而時延無疑嚴 重影響了頻寬。

四、測速問題

我們常常用軟體或在網站上測速,但在我看來,這並不科學,也不靠譜。本質上所有的測速原理都是透過下載一個大的檔案來計算頻寬的,是應用層的,而我們的頻寬是純物理層的。比如用迅雷,它計算的下載速率是你下載的檔案大小除以時間,這其中根本不管物理層,資料鏈路層,網路層,傳輸層和應用層的所有協議開銷,而且也不管PC中是否有其它程式同時也在佔用網路頻寬。真正科學的方法是從PC的網絡卡上抓取流量來計算頻寬,但這也僅僅解決了PC側的計算問題。那麼對端呢?測速網站的伺服器頻寬是否夠用?假設伺服器的頻寬只有100M,而同時有100個人在測速,那每個人測出的最大頻寬也不過只有1M,哪怕你一個人就有100M頻寬。另外伺服器的硬體也可能是瓶頸,目前大部分伺服器還是用傳統硬碟,當有成百上千的使用者請求時,即使頻寬足夠,但硬碟的傳輸速率也可能是瓶頸。其實,以上都不是最主要的問題,最主要的是這些測試都是測量PC到遠端伺服器的頻寬,這些伺服器可能在北京,也可能在廣州,可能長達幾千公里的距離。而ISP根本不可能給你承諾幾千公里距離的頻寬,它承諾的只是短短几公里從你家到ISP裝置間的頻寬。

其實簡單地說,我們所感知的實際頻寬分2部分:接入頻寬和骨幹網效能,接入頻寬就是ISP辦理業務時承諾的頻寬。對於ISP來說,接入頻寬隨著光纖的普及,將不會成為瓶頸了,骨幹網的效能只能透過不斷擴大頻寬,最佳化網路來解決。

而骨幹網效能就是ISP骨幹網的頻寬、容量和最佳化情況,這就是大家所不瞭解的了。舉個最簡單的例子:某年和某裝置製造商技術員聊天,談到骨幹傳輸頻寬,他說某ISP正準備擴容新疆到北京的網際網路骨幹頻寬,增加一條155M,我笑道:這麼可憐的頻寬?要知道電信當時到北京的頻寬已經是40G了,就算是此ISP擴容完,其骨幹頻寬也只有電信的1%。就這麼點可憐的頻寬,也因為當時此ISP老舊的國外裝置難以和新的國產裝置對接而久拖未決。當然此ISP的寬頻價格比電信便宜了將近一半,很多老百姓覺得便宜而選擇了此ISP,但他們永遠無法瞭解這些真相。所以常常有人說某ISP的10M頻寬還不如另一ISP 2M的快,在中國,論骨幹網的效能,北方的聯通和南方的中國電信比其它ISP強出幾條街,其實這就是中國電信拆分前的那張網路。

總之,對大眾來說,頻寬是不靠譜的測試和應用上的感知,而真正理性分析後,會發現這是個非常複雜的問題,即使羅列了以上因素,我仍然覺得遠遠不夠。只是希望大家能透過這篇文章,大家能理性地探討頻寬的問題,牢騷和叫罵是不能解決問題。也希望此文能拋磚引玉,和其它領域的專家一起探討,以便更全面地看待這個問題。

網友補充

知乎使用者:

補充幾個啊。

首先樓主沒有澄清頻寬和速率的問題。這個問題非常有意思。

比如我們買了10M的頻寬(大家都叫頻寬,我先借用一下,等一下做進一步澄清),但網線用百兆乙太網接入網路的時候(可能是光纖也可能是銅線),我們的傳輸的速率其實是100M的!你沒看錯,是100M的。但是你的電腦顯示出來的bps為什麼頂多10M?是因為你收包的時候是抽瘋似的一會兒發一個包,然後靜默一段時間。電腦上測試的是平均速率,而不是真實速率。

100M乙太網只能按100M收發,不可能降速率收發。這一點非常有趣,但也經常把人搞暈。

接下來說頻寬怎麼回事。頻寬其實是運營商裝置在某一級裝置(一般是最後一跳)上,設定了限速。說是限速,其實就是限制平均速度。再解釋一層就是他不停地計算發給你的byte數,到了限定的值就快取,快取滿了就丟包。注意,如果對端以200M的速率向你發包,這個包基本上也能到你最後一跳的裝置上,但裝置會根據設定丟包。最後的平均值,就是你簽約的值。

下面才說到伺服器和你的電腦最後形成的一個基本傳輸速率。tcp連線建立的時候,雙方會根據“收包確認ack”的成功率去調整速率。如果發端有能力限制(例如網絡卡是10M的或者其他程式佔了網路發包快取),包在發端主機內就被丟。如果發端上行限速,那麼他發出來的包在他的網路裡就被丟了。否則可能在收方的最後一跳裝置或者收端的主機內丟掉。無論哪種丟包,最後都透過tcp的ack去判斷。如果發現丟的多,發端會降速,如果丟的少,發端會嘗試提高發送速率。

這就是我們看到的電腦顯示出來的網速的由來。有很多因素影響:傳送端計算能力,網路能力,以及繁忙程度;傳送端下一跳的限速,傳送端接入他的業務服務商的限速,網路服務商網路擁塞程度,接收端被網路服務商的限速,接收端自己的網路繁忙程度,接收端自己的網絡卡能力,計算能力,以及其他程式佔用網路程度,以及接收端自身處理資料的能力。

先寫這麼多吧,細節上有不少不準確的地方,後面有空完善一下。

答:

頻寬即速率,單位是bps(bit per second)

不明白什麼叫電腦顯示速率?在windows系統中顯示的速率是你的電腦和網線另一端裝置協商出來的,一般是100M或1G,但並沒多少用,因為ISP提供的速率遠低於此,這不是瓶頸。

談到限速,就比較複雜了,我也不是太清楚,從限制的位置看,大概有幾種吧:

1.埠限速,直接在使用者埠上限速,但這種辦法最笨,現在早不用了,成千上萬的埠都要做資料,使用者的埠也會更改,結果就是完全無法控制和管理。

2.賬號限速,原理不是很清楚,Radius大概是和BRAS聯動,並沒有作用到使用者埠上。

另,TCP滑動視窗,只是TCP層面上的,端到端協議上的,不是裝置硬體的上的。

2
  • 3本作者大大最好的一本小說,劇情讓人拍手叫好,連看三遍也不膩
  • 《易經》:有福之人,有三大特徵,看看你身上有嗎