可以把整個網絡(一個自治系統AS)看成一個王國,這個王國可以分成幾個區(area),現在我們來看看區域內的某一個人(你所在的機器root)是怎樣得到一張世界地圖(routing table)的。
首先,你得跟你周圍的人(同一網段如129.102)建立基本聯系。你大叫一聲“我在這!”(發HELLO報文),於是,周圍的人知道你的存在,他們也會大叫,這樣你知道周圍大概有哪些人,你與他們之間建立了鄰居(neighbor)關系,當然,他們之間也有鄰居關系。
在你們這一群人中,最有威望(Priority優先級)的人會被推薦為首領(Designated Router)首領與你之間是上下級關系(adjacency鄰接),它會與你建立單線聯系,而不許你與其它鄰居有過多交往,他會說:“那樣做的話,街上太擠了”。
你只好通過首領來知道更多的消息了,首先,你們互通消息,他告訴你他知道的所有地圖的地名,你也會告訴他你現知道的地名,當然上也許只有你一個點。(Database Description數據庫描述報文)
你發現地名表中有你缺少的或比你新的東西,你會問他要一份更詳細的資料,他發現你的地名表中有他需要的東西,他也會向你索求新資料。(Link State Request連接狀態請求報文)
當然,你們毫不猶豫地將一份詳細資料發送給對方。(Link State Update連接狀態升級報文)
收到地圖後,互相致謝表示收到了。(Link State Ack連接狀態響應報文)
現在,你已經盡你所能得到一份地圖(Link State DataBase連接狀態數據庫),你去查找地圖把到所有地方的路挑一條最近(shortest path最短路)的,記為一張表格(routing table路由表),當然以後查這份表格就知道到目的地的一條最近的路了。地圖也要收好,萬一表格上的某條路不通了可以通過圖去找一條新的路。
其實跟你有聯系的,只是周圍一群人,外面的消息要通過首領來知道。因為你的地圖是跟首領的一致,我們假設你是首領,你要去畫一份世界地圖。
你命令所有手下向你通報消息,你可以知道你這一群人的任何一點點小動靜(event事件)。你手下還會有同時屬於兩群人的家伙(同一區內兩網段),他會告訴你另一群人的地圖,當然也會把你們這一群人的地圖洩露,(不過,無所謂啦)。這樣,整個區的地圖你知道了(對於不知道的那也沒辦法,我們盡力了)。