本文收納于 ? CS-Wiki(Gitee 推薦項目,0.8k star), 歡迎 star ~
0. 前言
本文所講的知識點在面試中可能不太會涉及,因為確實很基礎也沒啥好問的,但是簡單不代表你可以不知道,本篇對于整個計網知識體系的構建仍然是必不可少的。屬于一篇掃盲文,幫助大家更好的理解計算機網絡。
1. 數據傳輸方式
從上一講 一文讀懂兩臺計算機之間是如何通信的 我們知道物理層的作用就是在某種傳輸介質(信道)上傳送數據,實現相鄰計算機節點之間數據(比特流)的透明傳送,盡可能屏蔽掉具體傳輸介質和物理設備的差異。
那么這些數據在信道上是以何種方式進行傳輸的呢?
我們先寬泛的看一下幾種不同的傳輸方式,下文再詳細講解:
① 按數據傳輸的流向和時間關系分類 Ⅰ 單工通信
單工數據傳輸是兩數據站之間只能沿一個指定的方向進行數據傳輸。即發送方和接收方固定。單向傳輸,僅需要一條信道(大家可以類比廣播)
Ⅱ 半雙工通信
半雙工數據傳輸是兩數據站之間可以在兩個方向上進行數據傳輸,但不能同時進行。即通信的雙方都可以發送和接收什么是存儲轉發方式,但不能同時發送和接收。交替傳輸,需要兩條信道(類比對講機)
Ⅲ 全雙工通信
全雙工數據傳輸是在兩數據站之間,可以在兩個方向上同時進行傳輸。即雙方可以同時發送和接收。雙向同時傳輸(類比打電話)
② 按數據傳輸的順序分類 Ⅰ 串行傳輸
串行傳輸是數據流以串行方式在一條信道上傳輸。
該方法易于實現。缺點是要解決收、發雙方碼組或字符的同步,需外加同步措施。
Ⅱ 并行傳輸
并行傳輸是將數據以成組的方式在兩條以上的并行信道上同時傳輸。例如采用 8 單位代碼字符可以用 8 條信道并行傳輸,一條信道一次傳送一個字符。因此不需額外的措施就天然的實現了收發雙方的字符同步。
缺點是傳輸信道多,設備復雜,成本較高,故較少采用。
③ 按數據傳輸的同步方式劃分
首先解釋一下什么是同步:上文我們講過串行傳輸需要解決收、發雙方碼組或字符的同步,這句話的意思其實不難理解:在串行傳輸時,接收端從串行數據流中正確地劃分出發送的一個個字符所采取的措施稱為字符同步。根據實現字符同步方式不同,數據傳輸有異步傳輸和同步傳輸兩種方式。
Ⅰ 同步傳輸
同步傳輸就是發送方和接收方的時鐘要同步,以固定時鐘節拍來發送數據信號,數據的傳送以一個數據塊為單位,因此同步傳輸也稱區塊傳輸。
在串行數據流中,各信號碼元之間的相對位置都是固定的,接收端要從收到的數據流中正確區分發送的字符,發送端必須建立起始位和結束位:
打個比方:就像雙方約好了發送方每過一個小時就發送一次打包好的數據給接收方,接收方也每過一個小時接收一次數據。但是接收方不明白這一串數據得有多長,不能說傳過來的數據收了一半就算完成了,所以得有起始位和結束位方便識別接受到的數據是否完整。
可能存在的問題:假同步現象 — 數據塊中含有與同步符號相同的內容
解決方法:增加匹配同步符號的難度
通俗來說:
同步傳輸方式的優點是不需要像異步傳輸一樣對每一個字符單獨加起、止碼元,因此傳輸效率較高。
缺點是實現技術較復雜。通常用于高速數據傳輸
Ⅱ 異步傳輸
異步傳輸就是發送方和接收方沒有時鐘同步。異步傳輸每次傳送一個字符代碼(5~8 bit),在發送每一個字符代碼的前面均加上一個 “起” 信號(起始位),后面均加一個 “止” 信號(終止位)。字符可以連續發送,也可以單獨發送;不發送字符時,連續發送止信號。
每一字符的起始時刻可以是任意的(這也是異步傳輸的含意所在),也就是說發送方可以在任何時刻發送這些字符,而接收方并不知道它們會在什么時候到達。
那么接收端如何區分一個個的字符呢?實際上接收端是根據字符之間的止信號到起信號的跳變(“1”→“0”)來檢測識別一個新字符的“起”信號,從而正確地區分出一個個字符。因此,這樣的字符同步方法又稱起止式同步。
讀到這里,相信大家也就能明白為什么異步傳輸每次發送字符的時候都要在其前后加上 “起” 和 “止” 信號了:
因為異步傳輸的接收方并不知道數據會在什么時候到達。在它檢測到某個字符并做出響應之前,上一個字符已經過去了。這就像有人出乎意料地從后面走上來跟你說話,而你沒來得及反應過來,漏掉了最前面的幾個詞。因此,每次異步傳輸的信息都以一個起始位開頭,它通知接收方數據已經到達了,這就給了接收方響應、接收和緩存字符的時間;在傳輸結束時,一個停止位表示該次傳輸信息的終止。
舉個異步傳輸的例子:計算機鍵盤與主機的通信。我們按下一個字母鍵、數字鍵或特殊字符鍵,就會發送一個 8 比特位的 ASCII 代碼。鍵盤可以在任何時刻發送代碼,這取決于用戶的輸入速度,內部的硬件必須能夠在任何時刻接收一個鍵入的字符。
通俗來說:
異步傳輸的優點是:實現同步比較簡單,收發雙方的時鐘信號不需要精確的同步。
缺點是每個字符增加了 2~3 bit,降低了傳輸效率。它常用于低速數據傳輸。
2. 數據交換方式
首先我們要知道什么是數據交換、為什么要數據交換:數據交換(Data )是指在多個數據終端設備之間,為任意兩個終端設備建立數據通信臨時互連通路的過程。通俗來說交換是就通過某些交換中心將數據進行集中和傳送,傳輸線路為各個用戶共用,從而大大節省通信線路,降低系統費用。如果網絡規模較大,則把交換設備連接在一起形成交換網絡。
數據交換可以分為:電路交換、報文交換、分組交換
① 電路交換
所謂電路交換就是:用戶之間要傳輸數據時,交換中心在用戶之間建立一條暫時的數據電路。電路接通后,用戶雙方便可傳輸數據,并一直占用到傳輸完畢拆除電路為止。電路交換引入的時延很小,而且交換機對數據不加處理,是這幾種交換方式中最快的一種。因而適合傳輸實時性強和批量大的數據。
最典型的電路交換網絡:電話網絡
電路交換的三個階段:
其實大家記住電路交換的這個特點就好了:獨占連接。用戶始終占用端到端的固定傳輸帶寬。適用于遠程批處理信息傳輸或系統間實時性要求高的大量數據傳輸的情況。
② 報文交換
首先解釋一下報文的概念:報文()是網絡中交換與傳輸的數據單元,即站點一次性要發送的數據塊。報文包含了將要發送的完整數據信息,其長短很不一致,長度不限且可變。
報文交換不同于電路交換,它無需在兩個站點之間建立一條專用通路,其數據傳輸的單位是報文,傳送過程采用存儲轉發的方式。
什么是存儲轉發呢:比如說 A 發送報文給 C,需要經過 B,那么 B 必須收到完整的報文并檢查有無錯誤后才能進行轉發。這也不難理解,因為該報文中包含 C 的地址什么是存儲轉發方式,如果不是完整的報文,B 也不知道該發給誰
當然,這個接收存儲以及轉發的過程顯然是存在時延的
報文交換示例圖:
③ 分組交換
首先我們來了解下分組的概念。所謂分組,就是將一個大的數據包(報文)分成一個個更小的數據包,這些一個個更小的數據報就稱為分組。在每個分組的首部寫入發送端和接收端的地址,每個分組數據塊的結構如下所示:
分組交換同樣采用存儲轉發,不同站點的數據分組可以交織在同一線路上傳輸,也就是說一個報文分成了若干個分組之后,這些分組不一定都沿著同一條路徑進行轉發,提高了線路的利用率。當然,由于將大的報文分割成了若干小分組,所以分組交換的速度比報文交換快得多
那么在網絡中什么時候會使用分組交換呢?
當一個網絡層的 IP 數據報從一個主機傳輸到另一個主機時,它可能通過不同的物理網絡。每個物理網絡上都有各自的最大幀的大小(即最大傳輸單元 MTU),若傳輸的 IP 數據報超過 MTU,此時就會對整個 IP 數據包進行分組。
由于報文會分為眾多的分組,工作量比較大,可能會出現丟包的現象,這也是分組交換的缺點。
④ 三種交換方式比較 電路交換報文交換分組交換
建立連接
需要
不需要
不需要
數據交換單位
比特流
報文
分組
傳輸方式
比特流直達
存儲轉發
存儲轉發
每個分組沿著規定路徑
是
不是
分組按序到達
是
不是
優點
通信時延小;
實時性強;
適用范圍廣;
控制簡單;
避免沖突
無需建立連接;
動態分配陸續;
可靠性高;
線路利用率高;
可提供多目標服務
加速傳輸;
簡化存儲管理;
減少出錯幾率和重發數據
缺點
建立連接時間長;
信道利用率低;
缺乏統一標準;
靈活性差
由于存儲轉發導致時延;
對報文大小沒有限制,需要較大的存儲緩存空間
由于存儲轉發導致時延;
工作量大,可能出現分組丟失等情況