網路程式設計中,同步傳輸和非同步傳輸有什麼區別
阿新 • • 發佈:2019-01-01
在網路通訊過程中,通訊雙方要交換資料,需要高度的協同工作。為了正確的解釋訊號,接收方必須確切地知道訊號應當何時接收和處理,因此定時是至關重要的。 在計算機網路中,定時的因素稱為位同步。同步是要接收方按照發送方傳送的每個位的起止時刻和速率來接收資料,否則會產生誤差。 通常可以採用同步或非同步的傳輸方式對位進行同步處理。 1. 非同步傳輸(Asynchronous Transmission):非同步傳輸模式(Asynchronous Transfer Mode,縮略語為ATM) 非同步傳輸一般以字元為單位, 起始位:先發出一個邏輯”0”訊號,表示傳輸字元的開始。 空閒位:處於邏輯“1”狀態,表示當前線路上沒有資料傳送。 非同步傳輸將位元分成小組進行傳送,小組可以是8位的1個字元或更長。傳送方可以在任何時刻傳送這些位元組, 而接收方從不知道它們會在什麼時候到達。一個常見的例子是計算機鍵盤與主機的通訊。按下一個字母鍵、數字鍵或特殊字元鍵,就傳送一個8位元位的ASCII程式碼。 鍵盤可以在任何時刻傳送程式碼,這取決於使用者的輸入速度,內部的硬體必須能夠在任何時刻接收一個鍵入的字元。 非同步傳輸存在一個潛在的問題,即接收方並不知道資料會在什麼時候到達。在它檢測到資料並做出響應之前,第一個位元已經過去了。 這就像有人出乎意料地從後面走上來跟你說話,而你沒來得及反應過來,漏掉了最前面的幾個詞。因此,每次非同步傳輸的資訊都以一個起始位開頭, 它通知接收方資料已經到達了,這就給了接收方響應、接收和快取資料位元的時間;在傳輸結束時,一個停止位表示該次傳輸資訊的終止。 按照慣例,空閒(沒有傳送資料)的線路實際攜帶著一個代表二進位制1的訊號,非同步傳輸的開始位使訊號變成0,其他的位元位使訊號隨傳輸的資料資訊而變化。 最後,停止位使訊號重新變回1,該訊號一直保持到下一個開始位到達。例如在鍵盤上數字“1”,按照8位元位的擴充套件ASCII編碼,將傳送“00110001”, 同時需要在8位元位的前面加一個起始位,後面一個停止位。 非同步傳輸的實現比較容易,由於每個資訊都加上了“同步”資訊,因此計時的漂移不會產生大的積累,但卻產生了較多的開銷。 在上面的例子,每8個位元要多傳送兩個位元,總的傳輸負載就增加25%。對於資料傳輸量很小的低速裝置來說問題不大, 但對於那些資料傳輸量很大的高速裝置來說,25%的負載增值就相當嚴重了。因此,非同步傳輸常用於低速裝置。
另外,幀越大,它佔據傳輸媒體的連續時間也越長。在極端的情況下,這將導致其他使用者等得太久。
簡單說
同步傳輸就是,資料沒有被對方確認收到則呼叫傳輸的函式就不返回。 接收時,如果對方沒有傳送資料,則你的執行緒就一直等待,直到有資料了才返回,可以繼續執行其他指令 非同步傳輸就是,你呼叫一個函式傳送資料,馬上返回,你可以繼續處理其他事, 接收時,對方的有資料來,你會接收到一個訊息,或者你的相關接收函式會被呼叫。形象點說
非同步傳輸: 你傳輸吧,我去做我的事了,傳輸完了告訴我一聲 同步傳輸: 你現在傳輸,我要親眼看你傳輸完成,才去做別的事 用於非同步通訊的連線在OSI(開放系統互連)參考模型的物理層中被定義。“非同步通訊”是一種很常用的通訊方式。
非同步通訊在傳送字元時,所傳送的字元之間的時間間隔可以是任意的。當然,接收端必須時刻做好接收的準備(如果接收端主機的電源都沒有加上,那麼傳送端傳送字元就沒有意義,因為接收端根本無法接收)
。傳送端可以在任意時刻開始傳送字元,因此必須在每一個字元的開始和結束的地方加上標誌,即加上開始位和停止位,以便使接收端能夠正確地將每一個字元接收下來。
非同步通訊的好處是通訊裝置簡單、便宜,但傳輸效率較低(因為開始位和停止位的開銷所佔比例較大)。
非同步通訊也可以是以幀作為傳送的單位。接收端必須隨時做好接收幀的準備。這時,幀的首部必須設有一些特殊的位元組合,使得接收端能夠找出一幀的開始。這也稱為幀定界。幀定界還包含確定幀的結束位置。這有兩種方法。一種是在幀的尾部設有某種特殊的位元組合來標誌幀的結束。或者在幀首部中設有幀長度的欄位。需要注意的是,在非同步傳送幀時,並不是說傳送端對幀中的每一個字元都必須加上開始位和停止位後再發送出去,而是說,傳送端可以在任意時間傳送一個幀,而幀與幀之間的時間間隔也可以是任意的。在一幀中的所有位元是連續傳送的。傳送端不需要在傳送一幀之前和接收端進行協調(不需要先進行位元同步)。
位同步:
要求接收端根據傳送端傳送資料的起止時間和時鐘頻率,來校正自己的時間基準和時鐘頻率,這個過程叫位同步。可見,位同步的目的是使接收端接收的每一位資訊都與傳送端保持同步。