169 254 0 0 16 位址的原理及用途

2021-09-10 17:37:36 字數 1616 閱讀 4568

當dhcp伺服器故障,或者dhcp超時,不致於裝置沒有ip而造成連線不上。

lla在rfc3927中有詳細的描述,它分為三個階段,先probing,探測網路中某個ip有沒有被占用,如果有,則換乙個ip重新探測,如果沒有則announcing,即繫結該ip,向網路中發arp,公告該ip被我繫結了,如果此時沒有衝突,則進入bound,表示ip繫結成功。

下面給出一幅流程圖,這樣就更清楚了:

圖1:主流程圖

圖2:arp回應流程圖

流程圖中有一些時間的定義,在rfc3927中是這樣描述的:

l   probe_wait :表示初次探測的延時,規定的值為1秒;

l   probe_min: 重複探測的最小延時 ,規定的值為1秒;

l   probe_max : 重複探測的最大延時 ,規定的值為2秒;在連續發arp探測包的時候,相隔的時間要在這個最大和最小的範圍。

l   probe_num:傳送探測資料報的數量,這裡規定的值是3;

l   announce_wait :三個探測包發出去後,要有足夠的時間等arp的回應,然後再進入公告階段,這個時間規定為2秒;

l   announce_num:傳送公告包的數量,規定值為2;

l   announce_interval:連續發公告包的延遲 ,規定值為2秒;

l   max_conflicts:有一種情況,就是連續探測多次後,還是沒有成功繫結到ip,這需要將首次傳送探測包的間隔時間拉長一點,以避開其它裝置也在探測同樣的ip,這個引數是最大衝突的次數,規定值為10;

l   rate_limit_interval:這個是超過max_conflicts後,設定的間隔時間,規定值為60s;

l   defend_interval:ip探測時沒有發現衝突,而繫結後發現了衝突,這裡會重**乙個arp包確定一次,只要是在defend_interval時間內不重複出現衝突,則忽略該衝突。否則重新配製。規定值為10s。

下面我們來看一下詳細的工作過程:

首先,在開始local link時,需要將自已的ip和掩碼閘道器都設為0,並隨機生成乙個ip,網段在169.254.1.0 to 169.254.254.255這個範圍,rfc3927中建議使用mac來生成ip位址,這樣可以使每個裝置生成的ip都不一樣,將裝置同時探測同乙個ip的可能性降到了最低。

探測包發完了,並且在規定的時間內沒有收到來自源ip為a的主機回應,則認為該ip沒有被占用,於是設定本機ip為a,rfc3927  2.5節中描述,位址衝突的檢測並不侷限於位址選擇階段,在任何時候,如果裝置收到乙個arp,其中源ip位址和本機ip一致,但mac不一致,都將認為這是乙個衝突。於是就有了圖2中的階段2。

結語:

rfc3927 中的ip衝突檢測機制還是很完善的,考慮了多個裝置在同時local link時的情況;考慮到每到主機都必須要有乙個ip位址,169.254.x.x跟ipv6的fe80開頭的位址是作用是一樣的。

3 2 7 位址翻譯

有乙個tlb與乙個data cache 儲存器以位元組為編址單位 虛擬位址14位 實體地址12位 頁面大小為64位元組 tlb為四路相連,共有16個條目 data cache是物理定址,直接對映的,行大小為4個位元組,總共有16個組 寫出訪問位址0x03d4,0x00f1和0x0229的過程 因為本...

5 4 位址算數運算

define allocsize 10000 可用空間大小 static char allocbuf allocsize alloc使用的儲存區 static char allocp allocbuf 下乙個空閒位置 char alloc int n 返回指向n個字元的指標 else 空閒空間不夠 ...

6 位址,Block,SEL,多型

int maxvalue int a,int b int main int argc,const char argv block 暴風雨來了 block自己不會執行,必須呼叫才會執行block大括號裡面的 段 2.有引數無返回值 void maxblock int,int int a,int b m...