<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 手機(jī)與無線通信 > 設(shè)計(jì)應(yīng)用 > Linux系統(tǒng)IP路由基礎(chǔ)理論

          Linux系統(tǒng)IP路由基礎(chǔ)理論

          作者: 時(shí)間:2017-06-12 來源:網(wǎng)絡(luò) 收藏

          也許你知道如何在上用命令netstat或route來查找(甚至是增加/刪除)已經(jīng)存在的路由。但是在你做這些操作的時(shí)候你可能并不知道IP路由是如何工作的。本文將幫助你理解IP路由的原理,以及它是如何工作的。IP路由涉及到IP數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)。如果主機(jī)與目的主機(jī)直接相連,那么主機(jī)可以直接發(fā)送IP報(bào)文到目的主機(jī),這個(gè)過程比較簡單。例如,通過點(diǎn)對點(diǎn)的鏈接或通過網(wǎng)絡(luò)共享。如果主機(jī)與目的主機(jī)沒有直接相連,那么主機(jī)會將IP報(bào)文發(fā)送給默認(rèn)的路由器,然后由路由器來決定往哪發(fā)送IP報(bào)文。

          本文引用地址:http://www.ex-cimer.com/article/201706/352987.htm

          IP路由涉及到IP數(shù)據(jù)報(bào)文的轉(zhuǎn)發(fā)。如果主機(jī)與目的主機(jī)直接相連,那么主機(jī)可以直接發(fā)送IP報(bào)文到目的主機(jī),這個(gè)過程比較簡單。例如,通過點(diǎn)對點(diǎn)的鏈接或通過網(wǎng)絡(luò)共享。如果主機(jī)與目的主機(jī)沒有直接相連,那么主機(jī)會將IP報(bào)文發(fā)送給默認(rèn)的路由器,然后由路由器來決定往哪發(fā)送IP報(bào)文。

          路由原理

          一個(gè)普通的主機(jī)與路由器之間的根本區(qū)別在于,主機(jī)不會將一個(gè)報(bào)文從一個(gè)接口轉(zhuǎn)發(fā)到另一個(gè)接口,而路由器可以轉(zhuǎn)發(fā)報(bào)文。

          如今,大多數(shù)的多用戶系統(tǒng)都可以被配置,從而被當(dāng)作路由器來用。因此,一個(gè)普通路由算法可以被用在路由器上,同樣也可以用在一臺普通主機(jī)上。當(dāng)一臺主機(jī)可以用作路由器時(shí),我們通常說這臺主機(jī)嵌入了路由器的功能。這種具備嵌入路由器功能的主機(jī)平常不會轉(zhuǎn)發(fā)報(bào)文,除非我們對它進(jìn)行了配置,使它開啟這種功能。

          維護(hù)著一張路由表,當(dāng)收到數(shù)據(jù)報(bào)文時(shí),它用此表來決策接下來應(yīng)該做什么操作。當(dāng)從網(wǎng)絡(luò)側(cè)接收到數(shù)據(jù)報(bào)文時(shí),首先會檢查報(bào)文的IP地址是否是主機(jī)自身的地址相同。

          如果數(shù)據(jù)報(bào)文中的IP地址是主機(jī)自身的地址,那么報(bào)文將被發(fā)送到傳輸層相應(yīng)的協(xié)議中去。如果報(bào)文中的IP地址不是主機(jī)自身的地址,并且主機(jī)配置了具備路由的功能,那么報(bào)文將被轉(zhuǎn)發(fā);否則,報(bào)文就被丟棄。

          路由表中的數(shù)據(jù)一般是以條目形式存在。一個(gè)典型的路由表?xiàng)l目包含以下主要的條目項(xiàng):

          ● 目的IP地址:此字段表示目標(biāo)的IP地址。這個(gè)IP地址可以是某一臺主機(jī)的地址,也可以是一個(gè)網(wǎng)絡(luò)地址。如果這個(gè)條目包含的是一個(gè)主機(jī)地址,那么它的主機(jī)ID標(biāo)記為非零;如果這個(gè)條目包含的是一個(gè)網(wǎng)絡(luò)地址,那么它的主機(jī)ID被標(biāo)記為零。

          ● 下一個(gè)路由器的IP地址:為什么我們使用“下一個(gè)”的說法,是因?yàn)橄乱粋€(gè)路由器并不總是最后的目的路由器,但它很可能是一個(gè)中間路由器。條目給出下一個(gè)路由器的地址是用來轉(zhuǎn)發(fā)從相應(yīng)接口收到的IP數(shù)據(jù)報(bào)文。

          ● 標(biāo)志:這個(gè)字段提供了另一組重要信息,如目的IP地址(之前提到的)是一個(gè)主機(jī)地址還是一個(gè)網(wǎng)絡(luò)地址。此外,從標(biāo)志中可以得知下一個(gè)路由器(之前提到的)真的是一個(gè)路由器還是一個(gè)直接相連的接口。

          ● 網(wǎng)絡(luò)接口規(guī)范:一些數(shù)據(jù)報(bào)文的網(wǎng)絡(luò)接口規(guī)范,這個(gè)規(guī)范跟隨報(bào)文一起傳播。

          基本的路由是如何工作的?

          因此,如果我們現(xiàn)在想簡單而形象地描述路由過程,我們將會看到:一旦主機(jī)(被配置成具備路由功能)的接收到從網(wǎng)絡(luò)側(cè)來的數(shù)據(jù)報(bào)文,它將核實(shí)數(shù)據(jù)包中的目的IP地址,如果此IP不是主機(jī)的IP地址,那么包將通過路由表轉(zhuǎn)發(fā)。

          如果任何條目的第一個(gè)字段完全匹配目的IP地址(主機(jī))或部分匹配目的IP地址(網(wǎng)絡(luò)),那么它將指示下一個(gè)路由器的IP地址。這是一個(gè)重要的信息,因?yàn)檫@些信息直接告訴主機(jī)(具備路由功能的)數(shù)據(jù)包應(yīng)該轉(zhuǎn)發(fā)到哪一個(gè)“下一個(gè)路由器”去。而條目中所有其它的字段將提供更多輔助的信息來為路由轉(zhuǎn)發(fā)做決定。

          在上一段中我們對路由轉(zhuǎn)發(fā)過程建立了基本的了解,但如果我們試圖深入了解更多的東西,就必須看看以下關(guān)于路由表算法的一些詳細(xì)信息。

          ● 首先,路由表會去搜索一個(gè)“目的IP地址”字段與數(shù)據(jù)報(bào)文中目的IP地址完全相同的條目。這就意味著IP地址的主機(jī)ID與網(wǎng)絡(luò)ID完全的匹配。如果找到,則數(shù)據(jù)包被發(fā)送到相應(yīng)接口或中間路由器。

          ● 如果沒有找到一個(gè)完全的匹配IP,那么就接著搜索相匹配的網(wǎng)絡(luò)ID。如果找到,那么該數(shù)據(jù)報(bào)文會被轉(zhuǎn)發(fā)到指定的路由器。所以我們看到,這個(gè)網(wǎng)絡(luò)上的所有主機(jī)都通過這個(gè)路由表中的單個(gè)(這個(gè))條目來管理。

          ● 如果上述兩個(gè)條件都不匹配,那么該數(shù)據(jù)報(bào)文將轉(zhuǎn)發(fā)到一個(gè)“默認(rèn)路由器”。

          ● 如果上述步驟失敗,即沒有默認(rèn)路由器,那么該數(shù)據(jù)報(bào)文最終無法被轉(zhuǎn)發(fā)。任何無法投遞的數(shù)據(jù)報(bào)文都將產(chǎn)生一個(gè)ICMP主機(jī)不可達(dá)或不可達(dá)的錯(cuò)誤,并將此錯(cuò)誤返回給生成此數(shù)據(jù)報(bào)文的應(yīng)用程序。

          有時(shí)人們會問,為什么路由表中會有兩種類型的條目?有了更精確的主機(jī)條目為什么還需要網(wǎng)絡(luò)相關(guān)的條目?嗯…在路由表中包含與網(wǎng)絡(luò)相關(guān)的路由條目是一個(gè)很大的優(yōu)點(diǎn)。其優(yōu)點(diǎn)在于,擁有一個(gè)與完整網(wǎng)絡(luò)相關(guān)的條目,能夠避免包含此網(wǎng)絡(luò)中所有單獨(dú)的主機(jī)條目(這個(gè)數(shù)據(jù)量非常巨大)。這使得路由表的大小降到一個(gè)可收受的數(shù)量級,這樣就非常好。

          查看路由表信息的命令,你可以使用netstat命令查看路由表信息。



          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();