The Transport layer is built on the Internetwork layer and is what makes our network connections reliable.html
新年好!( ̄▽ ̄)git
Keywords: Packet, Shared Network, Layered Network Model, Link Layer, Ethernet, Bob Metcalfe網絡
從本週開始,咱們終於完成了History部分,要轉向Technology部分的講解了。架構
回顧一下歷史,上世紀60-80年代用的最多的仍是Store and Forward Networking網絡(Week2的筆記)。其實仔細分析來講這種網絡沒有太多的sharing的成分,只不過是循序漸進地輸送一些信息。要如何解決一些諸如如何處理網絡中斷、如何分享連接、如何處理信息堵塞這樣的問題?80年代的創新成果就是packet switch network,ARPANET。由於涉及到了不少新想法,因此這項技術從研發到成熟花費了20年甚至更多的時間。更多細節能夠到week2中去領略一番。app
ARPANET帶領咱們進入一個新思路:Shared Network,數據的傳送思路從由只有一個強大的電腦負責轉發數據包,轉換到了由多個很是小的電腦去專門負責把數據往下一個目的地運送,這就是路由器。和以往的長途傳遞不同,每一個路由器只負責很短的一段路,並且只作短時間存儲,主要目的是往下一個路由器進行傳送。另外,有一個核心思想就是把一大段信息分紅許多個packets。例如密歇根大學的全部電腦、服務器組成一個當地網絡,經過路由和packet switching 技術將想要發送出去的信息發送出去,信息會經由路由找到正確的道路到達目的地,就造成了通訊,也就是Internet。框架
Shared Network的基本原理着重於packets。hop的理念是依然存在的。信息從你的服務器中輸出要跳躍到第一個路由器,而後不斷在路由器之間hop、hop、hop……hop,就蘊含着不少的問題須要解決,爲了簡化解決方案,使其清晰、可管理,人們就想出了一個叫Layered Network Model(分層網絡模型)的東西,就是相似於框架、骨架那樣的東西,全部的東西都按照這個來展開。dom
And so, the problem of what data goes between here and here is you gotta solve a lot of problems, right? How to, all, all kinds of problems, and so, in order to simplify the solution or break the solution into simpler, more manageable parts. They came up with a layered network model. Now this is a cartoon and computer people love drawing cartoons and saying this is our architecture. This is our frame work. This is our approach. Sometimes they're helpful. Sometimes they're not helpful.編輯器
這個模型作的工做並非一下解決一個大問題,而是把許多的大問題分解成一個個的小問題。他們想解決的大問題好比要確保穩定地實現信息的傳輸,但若是按照這四部分分解,各個攻破。解決了全部小問題,大的問題也就能實現,思路也更加清晰。工具
有時面對一個極其複雜困難的問題,將其分解成小問題有助於咱們分析思路,提出更好地解決方法。不過如何分解問題也是一種藝術,因此就存在不止一種網絡模型,不只存在咱們如今提到的這種四層分層,還有OSI(Open System Interconnection model),它有七層。
若是想要按照Layered Network Model的四層模型去分解問題,那麼就須要去設計協議文檔,document來解決一些問題。例如這四層究竟是如何定義的?各自掌管哪些方面的問題?互相之間如何共同協做?不一樣的計算機之間如何工做?路由器如何工做?等等等等。協議文件就是解決互聯網中全部組成部件如何共同協做的問題。
圖片。
接下來就看看協議的內容到底是什麼樣。
不要忘了,咱們創建這種四層模式的初衷是爲了簡化問題。因此在第一層Link Layer,鏈路層的解決問題重點仍是在於如何在物理層面上實現傳輸數據。雖然這個問題可能很複雜,但在這個Link Layer上,咱們只需考慮這個問題,不須要考慮別的,這也是分層考慮的好處。
信息傳送到目的地可能須要通過不少種的傳輸介質:有線、無線傳輸、光纜……等等。不過一段光纜,長40英里也好,長40英尺也好,都是一個link。一個link就是一個hop,這就須要路由器,路由器從一個link中把數據拉下來而後推向下一個link。打比方來講吧,人們寄信,首先郵局從你家的郵箱裏把信件拉走,這時你的信多是放在郵遞員的自行車上,後來你的信上了卡車、而後又上了火車、……這就是一個個link。一個個郵遞員、卡車、火車就是Link Layer的組成部分。這裏面很重要的一點就是每一個郵遞員、或者每種交通工具並非就把你的信直接送到收信人手中,而信只是在每一個環節都只是向目的地更加靠近了。這就是Link Layer的思路。
Each person or semi truck is not taking it all the way, they're just getting a little farther. So that's the link layer So the link layer doesn't worry about the rest of this stuff.
Ethernet就是一種應用極其普遍的Link Layer。硬件製造商在製造帶有以太網或者無線適配器的電子器件時,都會帶有一系列的字符去標識這些硬件。這一列字符的特徵是六組兩兩結合的字符,包含字母和數字。這其實屬於一種物理地址,硬件之間就是經過這個來識別的。舉個例子,在一個房間裏,有一個wifi環境下可能有不少臺電腦在共享同一片空氣。咱們必須解決如何共享的問題,物理地址就是解決方法——在packet中用物理地址標記發送方和目的地。回到剛纔那個例子,在一個WiFi環境下,電腦A想和電腦B通訊,電腦C在接收到他倆之間的通訊時,能經過物理地址知道本身不屬於這場通訊。這樣Shared Network
就能正常工做。
Link Layer要解決的另外一個很重要的問題是若是出現了衝突該怎麼解決?老師說了數據傳輸has a lot to do with courtesy。比如若是全部司機們文明行車,紅燈停綠燈行,那麼交通就不會亂,不過理想是美好的,現實是殘酷的,總有那麼些人不文明行車,會致使一些混亂的發生。前面提到Ethernet是一個很不錯的Link layer。Ethernet解決這個問題的方案叫作Carrier Sense Media Access with Collision Detection,雖然總的我不太清楚怎麼翻譯,但能看到Collision,也就知道是發生衝突了。Packets若是遇到了衝突,那麼勢必會下降網絡的傳輸速度。若是一個Link Layer不能很好的解決這個問題,那必定不是個好的Link Layer。
下面仔細的介紹一下Ethernet的方案。在咱們要傳輸數據時,先Listen。先聽聽信道里面有沒有東西在傳輸,若是有咱們就等,若是沒有咱們再開始傳輸。若是已經有人在佔用了,咱們就要等待他完成他的傳輸。傳完以後,咱們還要listen,若是能清晰地聽到咱們的數據,就說明傳輸得不錯,但若是不能聽見,這就說明遇到了兩臺電腦同時傳輸了信息,致使了衝突的問題。因此兩臺電腦都得各退一步,不過這時就須要用到有點兒複雜的隨機數運算,兩臺電腦退的步數不是相同的,這樣就不會退步了以後再傳輸結果再衝突了。不得不說,很是文明啊。在社會中,也是要按照規則來辦事效率是最高的。
接下來咱們就去接觸一下以太網的發明者Bob Metcalfe,讓他告訴咱們一些以太網的故事。
Bob Metcalfe原先是在Xerox Palo Alto Research Center工做,研究的內容是我的計算機(PC)上面的網絡方面的架構。當時對packet switching和ARPANET的研究已經基本完成。Bob他們設計出來了第一架鐳射打印機,名字是Ears(爲何打印機的名字叫耳朵。。),不過他說這個是否是第一個仍是有爭議的。爲了儘量地提升這臺打印機的效率,解決其與計算機的鏈接問題,逐漸轉變了Bob的工做方向。在Bob以前有一個研究成果叫作Signet,是由Charles Simony開發的,後來Bob接手了這份工做。Charles Simony後來去開發了一個文本編輯器叫作Bravo,也就是後來大名鼎鼎的Microsoft Office 系列,也讓他成爲了億萬富翁。BTW,Signet的全稱是Simonyi's Infinitely Glorious Network。(西蒙尼の無限榮光網,這名字可真tm夠中二的……)不過Signet已經有不少理念和今天的LAN(Local Area Network,局域網)很相近,能夠說是一個很超前的設計。
在夏威夷大學,Bob開始研究一個關於LAN中如何協調分配的問題,有一個成果就是Aloha Net,它解決了不少packet分配方面的問題。例如在夏威夷島上有許多的收音機,如何讓它們共享頻道?夏威夷大學有許多的終端,如何在互相通信時保持協調?以及涉及到上文提到的隨機重傳過程的原理(randomized retransmission procedure)。
BTW,Bob提到他的願景是隻有一條電纜,而不是16條或者32條甚至更多,他的辦公室因爲網線太多,被稱爲老鼠窩(rats’ nest)因此要爲共享網絡設計原理。Bob說這裏有一個關於硬件的故事和一個關於軟件的故事,他本身是偏軟件的。不過有一天,他去買了一千米的網線回來,在一端鏈接上信號脈衝發送器,並在另外一端連上示波器觀察信號的輸出。他發現當他在這一段發送方波時,另外一端出來的不是方波而是相似於正弦波,有上下緩慢起伏的波形。不過,Bob放上了一個digital gate以後,就又能得到方形波了。(數字、門,我想到了邏輯電路,不過我還沒學。。)也就是說,Bob發現了這種恢復波形的方法,也就是說能進行傳輸了。
Bob他們把這個方波稱爲Manchester,並在傳輸時進行編碼,叫作Manchester coding, 由於不太懂,因此看了一下wiki應該是和邏輯電路有關,並且以前我也瞭解過CPU時鐘頻率什麼的,不過不太懂,因此貼下英文原文和wiki地址吧。
And the encoding was also simple, it was Manchester coding. Meaning that for each bit the first half of the bit would be the complement of the bit. And the second half of the bit would be the bit. So you would have a transition in the middle of each bit cell, which is a very simple modulation scheme.。。。clock the shift register into the memory, and then collect a packet that way.
Manchester code ensures frequent line voltage transitions, directly proportional to the clock rate; this helps clock recovery.
The DC component of the encoded signal is not dependent on the data and therefore carries no information, allowing the signal to be conveyed conveniently by media (e.g., Ethernet)
編碼方式十分簡單,每一個bit的前一半隻是起補充做用,後一半的bit纔是真正起傳輸做用的。wiki中feature說明Manchester coding確保線電壓轉換頻繁,時鐘頻率成正比,這有助於時鐘恢復。我沒打全看懂,但如今知識儲備還不夠,以後回看的時候應該能更有收穫。
Manchester Coding的好處就是傳輸數據是連續的過程。在探測傳輸有無衝突時,不須要長時間的耗費,只須要花費短期便可知道是否有信息正在傳輸。
Ethernet和Aloha network(以前夏威夷大學研發的一種技術)相比,有一個優點,就是前者能夠檢測出是否有信息正在被傳輸,能夠避免傳輸衝突。
第二個特色是徹底是數字信號了,而不是模擬信號。計算機科學家在研究這個東西時,和無線電專業的人士有不少合做。當時爲了研究這個,浪費了大量的帶寬。
So that was the second feature. So it was really a digital signal. It was really a digital signal, it wasn't a modulated signal in any way.
Bob也提到了,每一個packet攜帶着兩個各8位的物理地址,這與Aloha Network相比也有改進,後者只含一個地址。在packet的後面,還加上了cyclic redundancy checksum (循環冗餘校驗)技術,wiki頁面,這項技術普遍應用於硬件設計方面,可以檢測出信息數據是否被損壞。若是發生了信息傳遞的衝突,那麼就會有信息垃圾堆積在信道里,後續要傳遞的信息也會發生堵塞。Bob作的工做就是把這些無用的信息扔掉。
前面說過,Bob的方向偏軟件,不是很擅長硬件的操做。他認識了一我的,叫作David Boggs,此人擅長硬件,後來和Bob一塊兒合做,是Ethernet的另外一位創造者。
前面提到,Bob不想讓電纜鏈接成rat nest那樣雜亂。因而他們只設一條主路,每當有新的電腦要鏈接進入時,只是增長一個分支(tap)。Bob也不但願,每次增長分支會致使網速降低。因此後來他們建立了gerald tap,解決了這個問題。
以太網在一開始就有2.94MB/S的速度,不過在 Xerox 時,很快發展到了20BM/S。在802標準中,規定爲10MB/S。
此次內容挺多的,就分紅兩部分吧。春節前幾天出去玩,因此就耽誤了點進度。祝你們新春快樂。