源路徑選項

2021-06-05 02:10:31 字數 991 閱讀 3657

1. v4,v6頭部差異

ip源路徑選項:

對於ipv4,由於ip頭部長度欄位為4位,最大可以表示15,那麼限制了ipv4的頭部總長度為15*4 = 60位元組。前10位元組為固定的頭部部分,所以最多有40個位元組用來填充選項字段。

對於ipv6,固定長度的40位元組的ipv6頭部和傳輸層頭部之間可以有擴充套件頭部。

2. v4,6頭部選項字段填充和獲取使用setsockopt和getsockopt,傳入引數level,optname,buf,buf長度。

用setsockopt來設定ip選項後,在該套介面上傳送所有ip資料報都將包含這些選項。

清除選項用setsockopt,第四個引數設定成null,或者第五個引數設定成0.

4. 注意區分寬鬆和嚴格源路徑選項。

|nop + code + len +ptr +ip1 + ip2 。。。 +ip9+ dstip| 共44位元組,最多有10個位址,不過ip1在ip資料報即將傳送出去的時候,由核心移動到ip資料報的宿位址字段。

dstip為ip資料報的最終宿位址。

code指定源路徑是寬鬆還是嚴格的。

len指定選項的位元組長度,包括3位元組的選項頭部和dstip,這就已經有了7個位元組了。

對於由乙個ip位址構成的源路徑,len = 7 +4 =11;

對於由二個ip位址構成的源路徑,len = 7 +4 +4 =15;最多可以有9個ip,故最大可以為43.

distip和nop不屬於源路徑;

/*建立乙個源路徑選項,初始化還沒有加入ip進去*/

u_char *creat_src_route(int type)

int add_src_route(const char *host)

6獲取選項時,得到以下格式:

|ip1 + nop+code+len+ptr+ip2+ip3+...+ip9+dstip|,會根據5中的源路徑進行逆轉。

getsockopt返回的buf指向第乙個位元組

帶源路由選項的IP報文

為了實現一些附加功能,ip協議規範在ip報頭中增加了選項字段,這個字段可以有選擇的攜帶一些數 據,以指明中間裝置 路由器 或最終目標計算機對這些ip報文進行額外的處理。源路由選項便是其中乙個,從名字中就可以看出,源路由選項的目的,是指導中間裝置 路由器 如 何 該資料報文的,即明確指明了報文的傳輸路...

多源對多源最短路徑

魔方國有n座城市,編號為1 sim n1 n。城市之間通過n 1條無向道路連線,形成乙個樹形結構。在若干年之後,其中p座城市發展成了大都會,道路的數量也增加到了m條。大都會之間經常有 往來,因此,對於每座大都會,請你求出它到離它最近的其它大都會的距離。蒟蒻第一次見多源對多源最短路,沒想到是這種處理方...

關於最短源路徑問題

在計算最短源路徑中,涉及到了兩個比較重要的演算法,即bellman ford演算法和dijkstra演算法。bellman ford演算法是判斷乙個有向圖裡面是否存在負權迴路,此演算法是運用鬆弛技術,對每個頂點v,逐步減小從源s到v的最短路徑的權的估計值d v 直至達到實際最短路徑的權為止。演算法返...