一、實驗目的
1. 模擬實現滑窗協議在資料鏈路層上的資料傳輸過程,加深對滑窗協議的理解
2. 掌握滑動視窗協議基本原理與基本演算法;
二、要求:
1.掌握滑動視窗協議的概念、原理與基本演算法;
2.實現「選擇性重傳策略或連續自動重傳策略(後退n幀)」的滑動視窗協議模擬程式;
3.了解傳輸層和鏈路層滑動視窗協議的區別與聯絡及tcp中滑動視窗協議的實現原理。
三、實驗原理
滑窗協議工作原理
由於停等協議要為每乙個幀進行確認後才繼續傳送下乙個幀,大大降低了通道利用率,因此又提出來回退n幀的滑窗協議。回退n幀協議中,傳送方在傳送完乙個資料幀後,不停下來等待應答幀,而是連續傳送若干個資料幀,即使在連續傳送過程中收到了接收方發來的應答幀,也可以繼續傳送。由於減少了等待時間,必然提高通訊的吞吐量和通道利用率。
回退n幀的滑窗協議(go-dack-n)基本原理是,當接收方檢測出錯的資訊幀後,丟棄出錯幀後的所有資訊幀,而不管這些幀是否正確。待傳送方收到對出錯幀的否定應答(nak)時,將重發從出錯後的所有資料幀;若應答幀出錯,則超時重發。因此,傳送方在每發完乙個資料幀時都要設定超時計時器。
只要在所設定的計時器超時而仍未收到確認幀,就要重發相應的資料幀,若等不到1號幀的確認應答而重發1號資料幀時,雖然傳送方已經傳送完3號幀,但仍必須將1號幀及其以後的各幀全部進行重傳。因此,後退n幀協議一方面因連續傳送資料幀而提高了效率,但另一方面,在重傳時又必須把原來已正確傳送過的資料幀進行重傳,這種做法又使傳送率降低。
四、實驗要求
1.windows xp環境下執行,程式在1~2臺pc上執行。
2.具體實現的協議可以採用回退n幀技術或者選擇性重發技術的協議。
3.採用.***平台中的c#、c++或其他程式語言實現。
五、實驗內容
模擬滑窗協議的實現過程為;
(1) 程式客戶端執行緒傳送連線請求。 (2) 伺服器連線並返回連線資訊。
(3) 客戶端傳送資料幀(視窗大小自行設定)。 (4) 伺服器對每乙個收到資料幀都返**到資訊或者返回資料接收超時資訊。 (5) 客戶端根據返回資訊確定是否重傳資料還是選擇重傳資料。
【實驗過程】(實驗步驟、記錄、資料、分析)
客戶端的主程式流程圖:
資料幀傳輸伺服器端的流程圖:
五、詳細**
#include "sysinclude.h"
#include
using namespace std;
extern void sendframepacket(unsigned char* pdata, unsigned int len);
#define window_size_stop_wait 1
#define window_size_back_n_frame 4
typedef enum frame_kind;
typedef struct frame_head
;typedef struct frame
;// 需要定義另外乙個資料結構來存幀和其大小
typedef struct mainframe
;deque stop_wait_send_queue; //停等式協議傳送佇列
deque backn_send_queue回退n式協議傳送佇列
deque choice_send_queue選擇性重傳式協議傳送佇列
bool full = false標記停等式時視窗是否為空
int current_window_size = 0回退n的當前視窗大小
int current_window_size_c = 0選擇性重傳式的當前視窗大小
/** 停等協議測試函式
*/int stud_slide_window_stop_and_wait(char *pbuffer, int buffersize, uint8 messagetype)
return 0;
}if (messagetype == msg_type_receive)
if (messagetype == msg_type_timeout)
return 0;
}return 0;}/*
* 回退n幀測試函式
*/int stud_slide_window_back_n_frame(char *pbuffer, int buffersize, uint8 messagetype)
{ unsigned int ack;
unsigned int seq;
mainframe temp;
mainframe send;
mainframe receive;
int current_frame;
int i;
if ( messagetype == msg_type_send)
{temp.f = new frame;
temp.f) = *(frame*)pbuffer;
temp.size = buffersize;
backn_send_queue.push_back(temp);
if ( current_window_size < window_size_back_n_frame傳送視窗未滿時繼續傳送
{current_window_size++;
會展視窗網展會合作協議
展會合作協議 甲方 會展視窗網 北京藍創科貿 乙方甲 乙雙方本著平等 自願 守信 互利的原則,經過友好協商,就乙方 年 月 日 日,在 地區,展館 舉辦的 展會 的合作事宜簽訂本協議,具體條款如下 一 甲方責任及義務 1.甲方在會展視窗網 中為乙方建立合作展會的專題 並開通如下功能欄目 展會概況 展...