路由分组转发过程
IP層轉發(fā)分組的流程
如圖是一個路由表的簡單例子。有4個A類網絡通過3個路由器連接在一起。每一個網絡上都可能又成千上萬個主機。可以想象,若按查找目的主機號來 制作路由表,則所得出的路由表就會過于龐大。但若按主機所在的網絡地址來制作路由表,那么每一個路由器中的路由表就只包含4個項目。具體分組轉發(fā)算法如下
1)從數(shù)據報的首部提取目的站的ip地址D,得出目的網絡地址為N。
2)若N就是與此路由器直接相連的某個網絡地址,則這種交付為直接交付,即不需要再經過其它的路由器。這時就直接通過該網絡將數(shù)據報交付給目的 站D(這里包括將目的主機地址D轉換為具體的硬件地址,將數(shù)據報封裝為MAC幀,再發(fā)送此幀);否則就是間接交付,執(zhí)行(3)。
3)若路由器表中有目的地址為D的特定主機路由,則將數(shù)據報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(4)。
4)若路由表中有到達網絡N的路由,則將數(shù)據報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(5)。
5)若路由表中有一個默認路由,則將數(shù)據報傳送給路由表中所指明的默認路由器;否則,執(zhí)行(6)。
6)報告轉發(fā)分組出錯。
使用子網掩碼的分組轉發(fā)過程
在不劃分子網的兩級ip地址下,從ip地址得出網絡地址是個很簡單的事。但在劃分子網的情況下,從ip卻不能唯一地得出網絡地址來,因為網絡地址取決與那個網絡所采用的子網掩碼,但數(shù)據報的首部并沒有提供子網掩碼的信息。因此分組轉發(fā)的算法也必須做相應的改動。
如下網絡拓撲圖。我們注意到,使用子網劃分后,路由表中的每行所包括的主要內容是:目的網絡地址、子網掩碼和下一跳地址。
若主機H1要向某個主機發(fā)送一個分組。首先,主機H1應判斷是采用直接交付還是間接交付。H1采用的方法是:將分組的目的地址和自己的子網掩碼進行逐比特相“與”的運算。
若運算的結果等于H1的網絡地址,則說明目的主機與H1是連接在同一個子網上,因此可以直接交付而不需要找下一跳路由器來轉發(fā)。
但若“與”運算的結果不等于H1的網絡地址,則表明應采用間接交付,必須將該分組交給本子網上的一個路由器來進行轉發(fā)。
例如,現(xiàn)假定H1要發(fā)送分組給H2,即分組的目的ip是128.30.33.138。H1要做的操作是將本子網的子網掩碼 255.255.255.128與H2的ip做逐比特相與,得出128.30.33.128,不等于H1的網絡地址,這說明H2與H1不在同一子網上。因 此H1必須將分組交給子網上的默認路由器R1,由R1來轉發(fā)。
路由器R1先找到路由表中的第一行,看這一行的網絡地址和收到的分組的網絡地址是否匹配。因為并不知道收到的分組的網絡地址,因此只能試試看。 就是用這一行的子網掩碼和收到的分組的目的ip地址逐比特相與,結果也是128.30.33.128。如果這個數(shù)值和這一行給出的目的網絡地址一致,就說 明收到的分組是發(fā)送個本子網上的某個主機的。但現(xiàn)在比較的結果不一致。
接著,用同樣的方法繼續(xù)往下找第二行。這個結果和第二行的目的網絡地址匹配,說明這個網絡(子網)就是收到的分組所要尋找的目的網絡。于是不需要再找下一個路由器進行間接交付了,R1將分組從接口1直接交付給主機H2。
這樣,我們得出在劃分子網的情況下,路由器轉發(fā)分組的算法:
1)從收到的數(shù)據報的首部提取目的ip地址D。
2)先判斷是否為直接交付。對路由器直接相連的網絡逐個進行檢查:用各網絡的子網掩碼和D逐比特相與,看結果是否和相應的網絡地址匹配。若匹 配,則將分組進行直接交付(需要將D轉換成物理地址,將數(shù)據報分裝成幀發(fā)送出去),轉發(fā)任務結束。否則就是間接交付,執(zhí)行(3)。
3)若路由表中又目的地址為D的特定主機路由,則將數(shù)據報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(4)。
4)對路由表中的每一行(目的網絡地址,子網掩碼,下一跳地址),將其中的子網掩碼和D逐比特相與,其結果為N。若N與該行的網絡地址匹配,則將數(shù)據報傳送給該行指明的下一跳路由器;否則,執(zhí)行(5)。
5)若路由表中有一個默認路由,則將數(shù)據報傳送給路由表中所指明的默認路由器;否則,執(zhí)行(6)。
6)報告轉發(fā)分組出錯
轉載于:https://www.cnblogs.com/hnrainll/archive/2011/10/18/2216880.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎勵來咯,堅持創(chuàng)作打卡瓜分現(xiàn)金大獎總結
- 上一篇: 使用Joson的格式字符串在Socket
- 下一篇: 学习:多项式算法----FFT