1. 程式人生 > >資料鏈路層_無聲通道 1

資料鏈路層_無聲通道 1

無聲通道就是一種不會丟失幀、複製幀、損壞幀的理想通道,應用於這種通道的有兩種協議,

  • 第一種是不使用流量控制
  • 第二種是使用流量控制

兩者都不使用差錯控制,因為以及假設是理想通道了,排除外界干擾,

 

最簡單協議 simplest protocol, 這個協議就是我們上面說的不使用流量控制的協議,此協議是單向的,資料幀從傳送方到接收方單向傳輸,這種協議簡單說就是接收方永遠不會因為進入的幀而超載,就是理想化的傳輸。

 

設計

傳送方站點的資料鏈路層從網路層接收到幀,從幀中取出資料,然後將資料傳輸到網路層,

注:物理層提供的服務有 發訊號、多路複用...

 

演算法實現

演算法是實現:一個是 傳送方的程式不斷執行著,直到有來自網路層的請求才會有行為,

還有個是接收方的程式不斷執行著,直到有來自物理層的通知才會有行為。

兩端的程式都不斷的執行,因為他們不知道相關時間何時發生

 

下面是傳送方站點演算法實現:

while(true){
    WaitForEvent();
    if(Event(RequestToSend)){
        getData();   //從網路層獲取資料包
        MakeFrame();   //在資料包中新增頭部和分界的flag形成幀
        SendFrame();    //將幀傳送到物理層
    }
}

這個演算法的功能就是傳送方的資料鏈路層在不停地等待來自網路層的資料:WaitForEvent();

當一個數據從網路層來到資料鏈路層時開始執行操作:得到資料、把資料分組封裝成幀、傳送幀三個操作

上面這個演算法是無線迴圈的,但又是時間驅動型的,也就是它在第三行休眠 直到第四行一個事件喚醒他,

 

下面是簡單協議中接收方站點的演算法:

while(true){
    WaitForEvent();
    if(Event(ArrivalNotification)){
        ReceiveFrame();
        ExtractData();    //從幀中取出資料
        DeliverData();    //將資料傳輸到網路層
    }
}

此演算法也是時間驅動型演算法,ExtractData()語句是從幀中取出資料,DeliverData()是將資料傳輸到網路層

 

Reference:《Encryptography and Networking Security》6th William Stalling