協議演算法
⑴ 演算法和協議的定義和區別是什麼
演算法是為了達到某一目的,而做的一系列的步驟。協議是為了雙方達到某一目的而規定的一系列的規則。
⑵ 1)通信網路協議或演算法方面的文獻,了解協議和演算法描述的表現形式和方法
你可以去看下(無線通信),上面的文獻都是可以免費下載查閱的
⑶ 請寫出連續arq協議的演算法。
#define MAX_SEQ 7 /* 應該為2^n-1 */
typedef enum {frame_arrival, cksum_error, timeout, network_layer_ready} event_type;
#include protocal.h
static boolean between(seq_nr a, seq_nr b, seq_nr c)
{ /* 如果b落在a和c之間(含a不含c)返回true,否則返回false. */
if (((a<=b) && (b<c)) || ((c<a) && (a<=b)) || ((b<c) && (c<a)))
return(true); else return(false); }
static void send_data(seq_nr frame_nr, seq_nr frame_expected, packet buffer[])
{/* 構造和發送數據幀
frame s; /* 起始變數 */
s.info=buffer[frame_nr]; /* 插入分組到幀中 */
s.seq=frame_nr; /* 插入序號到幀中 */
s.ack=(frame_expected+MAX_SEQ) % (MAX_SEQ+1) /* 捎帶應答 */
to_physical_layer(&s); /* 傳送該幀 */
start_timer(frame_nr); }
/* 啟動定時器 */
void protocal5(void)
{seq_nr next_frame_to_send; /* MAX_SEQ>1; 用於外出流 */
seq_nr ack_expected; /* 還沒有得到應答的最早的幀 */
seq_nr frame_expected; /* 進入流期望的下一幀 */
frame r; /* 初始變數 */
packet buffer[MAX_SEQ+1] /* 外出流的緩存 */
seq_nr nbuffered; /* 當前正在使用的輸出緩存 */
event_type event;
enable_network_layer(); /* 允許 network_layer_ready 事件 */
ack_expected = 0; /* 下一個期望進入的應答 */
next_frame_to_send = 0; /* 下一個要送出的幀 */
frame_expected = 0; /* 期望進入的幀的序號 */
nbuffered = 0; /* 初始沒有分組被緩存 */
while (true) {
wait_for_event ( &event); /* 四種可能的事件,見上面event_type定義 */
switch (event) {
case network_layer_ready; /* 網路層有一個分組要發送 */
/* 接收, 保存, 以及發送一個新的幀 */
from_network_layer(&buffer[next_frame-to_send]); /* 獲得一個新的分組 */
nbuffered = nbuffered + 1; /* 增加發送方的窗口 */
send_data(next_frame_to_send, frame_expected, buffer); /* 發送幀 */
inc(next_frame_to_send); /* 發送方的窗口上界向前移動 */
break;
case frame_arrival: /* 一個數據幀或控制幀到達 */
from_physical_layer(&r); /* 從物理層得到一個進入的幀 */
if (r.seq == frame_expected) {
/* 所有的幀只能按序接收. */
to_network_layer(&r.info); /* 傳遞分組到網路層 */
inc(frame_expected); /* 接收方的窗口下界向前移動 */ }
/* Ack n 意味著n-1,n-2,
while (between(ack_expected, r.ack, next_frame_to_send))
{ /* 處理捎帶應答 */
nbuffered = nbuffered + 1; /* 減少一個緩存的幀 */
stop_timer(ack_expected); /* 幀完好到達, 停止定時器 */
inc(ack_expected); /* 壓縮發送窗口 */
}
break;
case cksum_err: break; /* 丟棄壞幀 */
case time_out: /* 重傳所有超時的幀 */
next_frame_to_send = ack_expected; /* 開始重傳 */
for (i = 1; i <= nbuffered; i ++) {
send_data(next_frame_to_send, fram_expected, buffer); /* 重發1幀 */
inc(next_frame_to_send); /* 准備發送下一幀 */
if (nbuffered < MAX_SEQ)
enable_network_layer();
else
disable_network_layer();
注: 演算法中所有調用的未說明的過程和函數在protocal.h中定義。
⑷ 誰能幫我區分一下路由演算法與路由協議
不同路由協議有不同的協議報文,也就是通告信息的方式不一樣,其次每種路由協議收到其他路由器發送的信息以後最終要計算出路由,計算時使用的就叫演算法,演算法一般有D-V距離矢量演算法(RIP,IGRP,EIGRP,BGP),L-S鏈路狀態演算法(也稱SPF最短路徑樹演算法,如ospf,isis)
⑸ OSPF協議的SPF演算法
spf演算法(最短路徑演算法)
⑹ 485協議交互通訊演算法的問題
485是硬體不是協議,上位機和單片機這種一般是主從模式,以modbus協議為例,你上位機發一條,下位機回復一條,規定時間沒沒接受到相應格式回應就判斷為超時,如果發多台單片機那就上位機分時發送就可以了
⑺ IGRP(內部網關路由協議)是基於什麼演算法的
IGRP:內部網關路由協議(IGRP:Interior Gateway Routing Protocol)
內部網關路由協議(IGRP)是一種在自治系統(AS:autonomous system)中提供路由選擇功能的思科專有路由協議。在上世紀80年代中期,最常用的內部路由協是路由信息協議(RIP)。盡管 RIP 對於實現小型或中型同機種互聯網路的路由選擇是非常有用的,但是隨著網路的不斷發展,其受到的限制也越加明顯。思科路由器的實用性和 IGRP 的強大功能性,使得眾多小型互聯網路組織採用 IGRP 取代了 RIP。早在上世紀90年代,思科就推出了增強的 IGRP,進一步提高了 IGRP 的操作效率。
IGRP 是一種距離向量(Distance Vector)內部網關協議(IGP)。距離向量路由選擇協議採用數學上的距離標准計算路徑大小,該標准就是距離向量。距離向量路由選擇協議通常與鏈路狀態路由選擇協議(Link-State Routing Protocols)相對,這主要在於:距離向量路由選擇協議是對互聯網中的所有節點發送本地連接信息。
為具有更大的靈活性,IGRP 支持多路徑路由選擇服務。在循環(Round Robin)方式下,兩條同等帶寬線路能運行單通信流,如果其中一根線路傳輸失敗,系統會自動切換到另一根線路上。多路徑可以是具有不同標准但仍然奏效的多路徑線路。例如,一條線路比另一條線路優先3倍(即標准低3級),那麼意味著這條路徑可以使用3次。只有符合某特定最佳路徑范圍或在差量范圍之內的路徑才可以用作多路徑。差量(Variance)是網路管理員可以設定的另一個值。
IGRP度量標準的計算公式如下:度量標准=[K1*帶寬+(K2*帶寬)/(256-負載)+K3*延遲]*[K5/(可靠性+K4)],默認的常數值是K1=K3=1,K2=K4=K5=0。因此,IGRP的度量標准計算簡化為:度量標准=帶寬+延遲。
IGRP使用復合度量值,在選擇到目的地的路徑方面,這種度量值比RIP單一度量值「跳數」更精確,度量值最小的路由為最佳路由。
IGRP度量值中包含以下分量:
帶寬:路徑中的最低帶寬;
延遲:路徑上的累積介面延遲;
可靠性:信源和目的地之間的鏈路上的負載,單位為bit/s(比特每秒);
MTU:路徑上的最大傳輸單元。
補充內容
有關命令
任務 命令
指定使用RIP協議 router igrp autonomous-system1
指定與該路由器相連的網路 network network
指定與該路由器相鄰的節點地址 neighbor ip-address
註:1、autonomous-system可以隨意建立,並非實際意義上的autonomous-system,但運行IGRP的路由器要想交換路由更新信息其autonomous-system需相同。
cisco最新產品及IOS停止了對IGRP的支持 僅支持新的增強型內部網關路由協議(EIGRP)
EIGRP和IGRP為cisco專有協議 但部分華為設備也支持此兩種協議
發布路由更新信息的周期是90秒
⑻ 綜述網路訪問的整個過程,並描述用到的演算法和協議
我來回答這個問題吧,整個過程比較復雜,也不知道哪些步驟對你有用,就說得詳細一些吧,採用分條的形式,看哪裡你能用到就參考哪裡吧,呵呵!
1.若DNS緩存中沒有相關數據,則IE瀏覽器先向DNS伺服器發出DNS請求:
這一過程的目的是獲取www.sina.com這個域名所對應的IP地址;
IE瀏覽器向本機DNS模塊發出DNS請求,DNS模塊生成相關的DNS報文;
DNS模塊將生成的DNS報文傳遞給傳輸層的UDP協議單元;
UDP協議單元將該數據封裝成UDP數據報,傳遞給網路層的IP協議單元;
IP協議單元將該數據封裝成IP數據包,其中目的IP地址為DNS伺服器的IP地址;
封裝好的IP數據包將傳遞給數據鏈路層的協議單元進行發送;
發送時如果ARP緩存中沒有相關數據,則發送ARP廣播請求,等待ARP回應;
得到ARP回應後,將IP地址與路由下一跳MAC地址對應的信息寫入ARP緩存表;
寫入緩存後,以路由下一跳地址填充目的MAC地址,並以數據幀形式轉發;
這個轉發過程可能會進行多次,這取決於DNS伺服器在校園網中的位置;
DNS請求被發送到DNS伺服器的數據鏈路層協議單元;
DNS伺服器的數據鏈路層協議單元解析收到的數據幀,將其內部所含有的IP數據包傳遞給網路層IP協議單元;
DNS伺服器的IP協議單元解析收到的IP數據包,將其內部所含有的UDP數據報傳遞給傳輸層的UDP協議單元;
DNS伺服器的UDP協議單元解析收到的UDP數據包,將其內部所含有的DNS報文傳遞給該伺服器上的DNS服務單元;
DNS服務單元收到DNS請求,將域名解析為對應的IP地址,產生DNS回應報文;
(所有應用層報文必須通過傳輸層、網路層和數據鏈路層,因此在下面的敘述中,我將簡化這一過程的敘述,簡化形式如下面的樣子,其中單箭頭為本機內部傳遞,雙箭頭為網路上的發送)
DNS回應報文→UDP→IP→MAC→→請求域名解析的主機;
請求域名解析的主機收到數據幀,該數據幀→IP→UDP→DNS→IE瀏覽器;
將域名解析的結果以域名和IP地址對應的形式寫入DNS緩存表。
2.IE瀏覽器與www.sina.com.cn建立TCP連接:
IE瀏覽器向www.sina.com.cn發出TCP連接請求報文;
該請求TCP報文中的SYN標志位被設置為1,表示連接請求;
該TCP請求報文→IP(DNS)→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
該TCP請求報文經過IP層時,填入的目的IP地址就是上面DNS過程獲得的IP地址;
經過數據鏈路層時,若MAC地址不明,還要進行上面所敘述的ARP過程;
www.sina.com.cn收到的數據幀→IP→TCP,TCP協議單元會回應請求應答報文;
該請求應答TCP報文中的SYN和ACK標志位均被設置為1,表示連接請求應答;
該TCP請求應答報文→IP→MAC(ARP)→→校園網關→→請求主機;
請求主機收到數據幀→IP→TCP,TCP協議單元會回應請求確認報文;
該請求應答TCP報文中的ACK標志位被設置為1,表示連接請求確認;
該TCP請求確認報文→IP→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的數據幀→IP→TCP,連接建立完成;
在這個過程中,任何一個報文出錯或超時,都要進行重傳;
這個過程被稱為TCP建立連接的三次握手。
3.IE瀏覽器開始HTTP訪問過程
IE瀏覽器向www.sina.com.cn發出HTTP-GET方法報文;
該HTTP-GET方法報文→TCP→IP→MAC→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的數據幀→IP→TCP→HTTP,HTTP協議單元會回應HTTP協議格式封裝好的HTML超文本形式數據;
HTTP-HTML數據→TCP→IP→MAC(ARP)→→校園網關→→請求主機;
請求主機收到的數據幀→IP→TCP→HTTP→IE瀏覽器,瀏覽器會以網頁形式顯示HTML超文本,就是我們所看到的網頁。
4.斷開TCP連接
IE瀏覽器向www.sina.com.cn發出TCP連接結束請求報文;
該請求TCP報文中的FIN標志位被設置為1,表示結束請求;
該TCP結束請求報文→IP→MAC(ARP)→→校園網關→→www.sina.com.cn主機;
www.sina.com.cn收到的數據幀→IP→TCP,TCP協議單元會回應結束應答報文;
該結束應答TCP報文中的FIN和ACK標志位均被設置為1,表示結束應答;
該TCP結束應答報文→IP→MAC(ARP)→→校園網關→→請求主機;
這個過程需要雙向進行,因此www.sina.com.cn主機也會按上述流程再做一次;
整個過程被稱為TCP斷開連接的四次握手。
呵呵,好麻煩的一個過程對不對?我也寫了好長時間誒,希望對你有所幫助!
⑼ 停止等待協議的停止等待協議的演算法
這里不使用否認幀(實用的數據鏈路層協議大都是這樣的),而且確認幀帶有序號 n。
按照習慣的表示法,ACKn 表示「第 n – 1 號幀已經收到,現在期望接收第 n 號幀」。
ACK1 表示「0 號幀已收到,現在期望接收的下一幀是 1 號幀」;
ACK0 表示「1 號幀已收到,現在期望接收的下一幀是 0 號幀」。
⑽ 簡單生成樹協議的演算法原理
STP的工作過程是:首先進行根橋的選舉。選舉的依據是網橋優先順序和網橋MAC地址組合成的橋ID,橋ID最小的網橋將成為網路中的根橋,它的所有埠都連接到下游橋,所以埠角色都成為指定埠。接下來,連接根橋的下游網橋將各自選擇一條「最粗壯」的樹枝作為到根橋的路徑,相應埠的角色就成為根埠。循環這個過程到網路的邊緣,指定埠和根埠確定之後一棵樹就生成了。生成樹經過一段時間(默認值是30秒左右)穩定之後,指定埠和根埠進入轉發狀態,其他埠進入阻塞狀態。STP BPDU會定時從各個網橋的指定埠發出,以維護鏈路的狀態。