乙太網通信是同步還是非同步?
同步非同步主要還是看在什麼應用上具體的定義,由於應用較多,所以同步非同步的理解不好一概而論(或者說筆者的理解還沒有提高到能夠描述同步非同步,此抽象概念的級別)。
我目前僅僅把我接觸過的幾個明確的同步非同步的區別記錄如下,如有錯誤,還請見諒
同步非同步1:有線網路中的同步非同步
同步非同步2:ALOHA中的同步非同步
同步非同步3:TDMA中的同步非同步
同步非同步4:CDMA中的同步非同步
同步非同步5:任務提交中的同步非同步
至於進程通信和socket以及更多上層應用中,還有一些具體同步非同步的定義,不過筆者沒有做過具體的總結。。。
同步/非同步這兩個詞不同領域的概念完全不同啊……
從數字電路的角度來說,乙太網是典型的同步時序邏輯,它的時鐘信號通過曼徹斯特編碼(以前)或者4B/5B編碼(現在)編碼到了信號當中,接收方需要從信號當中使用鎖相環解出這個時鐘信號,這樣發送方和接收方就有了一個同步的時鐘信號。依靠這個同步的時鐘信號接收方能夠正確讀取發送方發送的數據。實際上幾乎所有的高速數字傳輸協議都是同步時序邏輯。
但是從軟硬體介面的角度來看,這個過程又是非同步的。計算機不會直接通過CPU指令操作當前正在發送的數據,而是通過一系列緩存,將數據送交到網卡,或者從網卡讀取數據。計算機不關心網卡實際上在什麼時候將數據發出,它只要將數據提交給網卡就可以繼續進行其他任務了,實際上提交給網卡這樣的工作通常也會使用DMA之類的方法。數據到來時也是一樣的,網卡不會在接收到網路數據包第一個位元組的時候就通知CPU處理,而是將接收到的數據先緩存起來,隨時等待CPU或者DMA在合適的時候讀取。這種有緩衝區的結構是典型的非同步通信機制。
從socket介面上來看,又分為同步和非同步兩種,也可以叫做BLOCK/NONBLOCK。同步介面在不能發送數據或者接收數據時會阻塞,直到完成;非同步介面則會通知你socket暫時不可用,讓你使用epoll等機制等待。其實雖然非阻塞一般都叫做非同步IO,真正的非同步IO應該是使用信號通知機制的才算,但現在不太區分這個。實際上即使是所謂同步介面,在內核中仍然有緩衝區存在,只是用戶態到內核態的這一層通信使用了同步的邏輯。
普通的乙太網是非同步的。搞過硬體的都知道,乙太網的工作時鐘要求在+-50ppm以內。也就是說相互通訊的兩個設備各有各自的時鐘,互相獨立處於free run狀態。
不過,現在很多電信領域的乙太網,已經演化出「同步乙太網」,從設備要從線路上恢復時鐘,並將本地鍾鎖定到主設備發來的時鐘頻點上。這個玩法就跟SDH是一樣的概念了。
乙太網如果要和 SDH/SONET 組網,或 FDD LTE/3G 或 LTE-A/TDD 通信的話,是要做 Synchronisation 的。
推薦閱讀:
※如何看待 惠普出售華三控股權?
※Bash 的 Shellshock 漏洞的影響到底有多大?
※手機的移動通訊網路蜂窩基站需要重啟嗎,平時需要什麼維護?
※控制論和資訊理論之間的關係是怎樣的?維納和香農的根本分歧是什麼?
※信號與系統這門課程有何價值?