計算機網絡——各種時延和最小幀長

各種時延的理解:

時延:是數據(一個報文或分組,甚至比特)從網絡或鏈路的一端傳送到另一端所需要的時間。 

總時延=發送時延+傳播時延+處理時延+排隊時延

發送時延:是從發送數據幀的第一個比特算起,到該幀的最後一個比特發送完畢所需的時間。

發送時延=數據幀長度(b) /信道帶寬(b/s) [信道帶寬就是數據率] 

傳播時延:電磁波在信道中需要傳播一定的距離而花費的時間。 

傳播時延=信道長度(m)/電磁波在信道上的傳播速率(m/s)

 處理時延:主機或路由器處理所收到的分組的時間。 

排隊時延:分組在輸入隊列中排隊等待處理,在輸出隊列中等待轉發,就形成了排隊時延。 


【例題】

考慮兩臺主機A和主機B由一條帶寬爲R bps、長度爲M米的鏈路互連,信號傳播速率爲V m/s。假設主機A從t=0時刻開始向主機B發送分組。試求:


1) 傳播延遲(時延)dp;
2) 傳輸延遲dt;
3) 若忽略結點處理延遲和排隊延遲,則端到端延遲de是多少?
4) 若dp>dt,則t=dt時刻,分組的第一個比特在哪裏?

(注:1k=10^3,1M=10^6)


【解】

1)傳播時延dp = 信道長度(m) / 電磁波在信道上的傳播速率(m/s) = M / V

2)傳輸延遲dt = 數據幀長度(b) / 信道帶寬(b/s) = L / R
3)總延遲de = 傳播時延 + 傳輸延遲 = M / V + L / R

4)dp > dt意味着最早發送的信號沒有到達目的主機之前,數據分組的最後一個比特已經發送出來了,所以分組的第一個比特在距離主機的V * dt米的鏈路上


---------------------------------------我是分割線---------------------------

最小幀長的理解

      以太網中傳輸的數據幀的長度並不是一個常數,而是一個範圍內的,以太網幀長度最大限制(MTU)是1518字節,最小長度是64字節。限制幀的最大長度是爲了避免一臺設備長時間佔用信道,所以在傳輸過程中一定要有機制強制一個設備停止傳輸,讓出信道的使用。那麼爲何要限制最小的幀長度呢?一個過小的數據會讓以太網不能正常工作嗎?

     這是一個歷史問題,早期時的以太網稱爲標準以太網(或傳統以太網),具體表現形式是10Mbps的基帶總線局域網,其特點是:各站點共享共用信道,任何一個站點所發送的數據均沿着介質以廣播方式傳輸,總線上其他所有站點均可以收到。這樣就導致了多臺設備同時發送信號的時候會發生碰撞,導致多臺設備傳輸失敗。然而,經過長時間的演進,特別是交換機的出現,讓以太網成爲了一個星型拓撲、全雙工獨享鏈路的網絡。對於現在來說這個最小幀長的問題也就不是那麼重要了。

    下面舉一個例子來詳細說明在總線拓撲結構上存在的這個問題:

首先需要建立一個印象:兩個結點的數據碰撞時會boom一下爆炸掉,數據被毀壞,已經不是可用的了,因此,碰撞一發生,數據必須得重新發送。這個很自然吧!但是不建立這個基礎,有些地方會覺得很卡,這是我出去散步時候想明白的,沒有看到權威的說明,但對我來說是最好的解釋。


OK,回過來說最小幀長問題。有了上面的共識,我們設想了一個這樣的故事:將發送的數據離散化,或者說量子化,也即把數據變成一個個的人。 
場景如下:一條很寬的河流上方我們搭了一個鋼索,人們過河需要通過鋼索滑行過去。每次只能過去一個人,無論正向還是反向。河流的兩邊分別定義爲A,B。從A到B和從B到A用時相同,均爲ττ。爲了真實模擬我們還得假設故事發生在一個黑夜,雙方看不見對方,只能通過信使來告知結果。比如把一個人從A發送到B,A如何知道這個人已經順利發送過去了呢?需要在A到達B後,馬上send一個信使告訴老家A,他已安全抵達。這個信使也是需要同樣的時間ττ才能回到A告訴A,上一個人到了,於是A可以繼續發送下一個人了。如果A這邊發送一個人,B同時也發送一個人,這兩個人會在河流的中央炸成一朵煙花,消失在黑夜裏。這樣的碰撞事故如何被A,B知道呢?事故一發生,會自動生成兩個信使,分別回去告訴A,B。也就是事故發生時間是在τ2τ2,信使回去告訴A,B,也用時τ2τ2。因爲中間比較特殊,提出來看一下。那麼如果事故發生不是在中點,A,B知道事故發生的時間又是怎樣的呢?是不是離得越遠,知道的越慢?對的。因爲信使傳回消息來,需要時間。恰好,事故發生地點離自己越遠,表示自己這方發送的人已經走了越久,所以,一方知道事故發生的時間最長是在對方家門口。 
也即,A發送一個人過去,都到B了,B看不見啊,剛好發送一個人,迎頭撞上,又是一朵煙花,消失了。變成數據,也是要重發的。


那麼最小幀長是從哪裏冒出來的呢?


這麼想,人是連續發的。在事故發生之前,A一直在發送人,等信使恰好回來,其實已經發送了好幾個人上去,然後知道了,第一個人炸沒了,這一組都得重發。需要仔細考慮的是A如何確認自己可以安全發送下一組了?是不是上一組發完,信使沒有回來報告出事了對不對?如果都已經發完了一組,現在在發下一組呢,信使回來說,剛纔爆炸了,你說A怎麼判斷這是上一組的事故還是這一組的?判斷不了對吧!於是引起了一個最小幀長的概念,要能判斷事故發生是屬於誰的,好進行下一步的安排。因此,恰好能判斷的邊界是:發生在B門口的爆炸事故傳回到A,2τ2τ時間內,發送的人數。這一組人數更多一些,肯定能知道出事的正是當前組。

對應到數據幀,便是最小幀長。2τ2τ還有其他的別名,爭用期什麼的。不必管,背後的邏輯非常的生動。 

望你也有所體會~ 

至於爲什麼這個協議不能進行全雙工通信,很明白了吧,兩個站之間不能同時進行,否則會炸!   


文章參考:

https://blog.csdn.net/heatdeath/article/details/73431248

https://blog.csdn.net/u011240016/article/details/52719183



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章