數(shù)據(jù)鏈路層是OSI參考模型中的倒數(shù)第二層,是物理層與網(wǎng)絡層溝通交流的中間紐帶肮街。它將從網(wǎng)絡層獲取到的數(shù)據(jù)包打包封裝成幀傳輸給物理層猿规,同樣也將物理層傳遞過來的幀解包后傳輸給網(wǎng)絡層矾利。總結起來糟秘,數(shù)據(jù)鏈路層主要完成下面三項任務:
- 向網(wǎng)絡層提供一個定義良好的服務接口。
- 處理物理層傳輸過來的數(shù)據(jù)丽已,驗證數(shù)據(jù)傳輸?shù)臏蚀_性蚌堵。
- 調(diào)節(jié)數(shù)據(jù)流,確保處理數(shù)據(jù)的接收方不會被傳遞數(shù)據(jù)的發(fā)送方淹沒沛婴。
定義良好的服務接口
數(shù)據(jù)鏈路層提供三種可能的服務:無確認的無連接服務吼畏、有確認的無連接服務、有確認的有連接服務嘁灯。
無確認是指源機器向目標機器發(fā)送幀泻蚊,目標機器不對這些幀進行確認,即源機器無法知道這些發(fā)送的幀是否達到目標機器丑婿。這種情況適用于兩種情形:錯誤率很低或者對實時通信要求很高性雄。有確認是指對于源機器發(fā)送來的每一幀,目標機器都需要單獨的向源機器發(fā)送確認幀羹奉,告訴發(fā)送源成功地接收了信息秒旋。
連接并不是說兩臺傳輸終端間存在一條專有的物理線路,而是指確保兩終端無誤傳輸數(shù)據(jù)所做的實質(zhì)性努力诀拭,包括對傳輸協(xié)議的協(xié)商迁筛、對所有傳輸幀編號、幀超時重傳機制等耕挨。
確保數(shù)據(jù)正確性
數(shù)據(jù)鏈路層將網(wǎng)絡層傳遞過來的數(shù)據(jù)包封裝成幀细卧,實質(zhì)上就是將數(shù)據(jù)包分割成一定大小的比特后尉桩,并將這些比特按照特定的編碼算法加入冗余數(shù)據(jù)并封裝成幀。在傳輸?shù)搅硪粋群筇懊恚梢酝ㄟ^相應的算法計算出該幀在傳輸過程中是否發(fā)生錯誤甚至直接修正錯誤蜘犁。
能夠確定發(fā)生錯誤的編碼方式叫檢錯碼,常用的有奇偶校驗止邮、校驗合这橙、循環(huán)冗余校驗。
能夠通過加入的冗余信息反推出發(fā)送的數(shù)據(jù)的編碼方式叫糾錯碼农尖,常用的有海明碼析恋、二進制卷積碼、里德所羅門碼盛卡、低密度奇偶校驗碼助隧。
調(diào)節(jié)數(shù)據(jù)流
數(shù)據(jù)鏈路使用了發(fā)送窗口機制防止低速的接收端被高速的發(fā)送端淹沒。發(fā)送端在固定的時間內(nèi)連續(xù)發(fā)送n幀滑沧,并開啟各幀的超時重傳定時器并村。接收端接收幀并驗證正確性,傳輸無誤的幀給發(fā)送端反饋確認幀滓技,驗證有誤的幀不反饋確認幀哩牍。發(fā)送端收到確認幀后取消該幀對應的超時重傳定時器,那些傳輸錯誤的幀在超時時間到時會重新發(fā)送給接收端令漂。接收端在所有的幀都成功接收完畢后膝昆,會將數(shù)據(jù)提交給網(wǎng)絡層進行處理。
因為鏈路是雙工的叠必,為充分利用帶寬荚孵,確認信息一般情況是寫在接收端向發(fā)送端發(fā)發(fā)送的下一幀的ACK字段內(nèi)的。