淺析路由器的工作原理

現(xiàn)在路由器的組成

現(xiàn)在路由器跟計算機網(wǎng)絡(luò)中的路由其實不太一樣娄周,因為現(xiàn)在大家家里常用的路由器一般是集成了交換機功能的路由器箕憾,即既有路由器轉(zhuǎn)發(fā) ip 數(shù)據(jù)包的功能泥技,又有交換機以橋接的方式連接內(nèi)網(wǎng)里設(shè)備的功能(這里說的外網(wǎng)不是指 Google鞋仍,Youtube 這些相對中國大型局域網(wǎng)的外網(wǎng),而是指包括 Google 在內(nèi)也包括 Baidu 在內(nèi)的我們每天在用的 Internet磕洪。內(nèi)網(wǎng)簡單來說在自己家里可以看作是同一個路由器下面連接的所有設(shè)備吭练、在公司里可以看作是 kwai-staff 下連接的所有設(shè)備所處的網(wǎng)絡(luò)環(huán)境)。

image.png

如圖所示析显,位于中間的 ADSL Router 左右兩側(cè)的防火墻以及下面的所有 PC鲫咽、Network Server 同處在一個內(nèi)網(wǎng)以下,而對于這些設(shè)備來說谷异,上面的 WAN 和 Cable Router 就屬于外網(wǎng)分尸。

路由器的路由功能:

先明確一下計算機中對路由器的定義

節(jié)點(Node):任何一個實現(xiàn)了 ip 協(xié)議(能夠處理網(wǎng)絡(luò)數(shù)據(jù)報文)的設(shè)備。

路由器(Router):擁有處理不是給自己的報文的設(shè)備歹嘹。

主機(Host):除了 Router 以外的 Node(手機箩绍、電腦、switch(指任天堂的 switch尺上,不是交換機)材蛛、掃地機器人等等)。

從上面可以看出怎抛,路由器的定義就是除了可以處理給自己的包以外卑吭,還可以處理經(jīng)過自己但是不是給自己的包。所以哪天你在自己的電腦上更新了 iptables 規(guī)則马绝,實現(xiàn)包的自定義轉(zhuǎn)發(fā)陨簇,那此時你的電腦在網(wǎng)絡(luò)拓撲中承擔的角色就是路由器而并非只是一個主機了。

在同一個路由器下的設(shè)備中迹淌,都會被分配一個內(nèi)網(wǎng) ip河绽,而這些設(shè)備想要上網(wǎng)則需要跟外網(wǎng)的 ip 進行數(shù)據(jù)包的雙向傳輸。路由器起到的作用就是對內(nèi)網(wǎng)提供一個 ip唉窃,對外網(wǎng)提供另一個 ip耙饰。內(nèi)網(wǎng)設(shè)備發(fā)起的網(wǎng)絡(luò)請求,可以大致被分為兩個過程

  1. 內(nèi)網(wǎng) ip 把數(shù)據(jù)包傳給路由器纹份,路由器通過接受方的 ip 將數(shù)據(jù)包轉(zhuǎn)發(fā)出去儿普,被 A 接受;
  2. A 通過路由器外網(wǎng)側(cè)的 ip 傳回給路由器尘应,路由器再通過內(nèi)網(wǎng)的 ip 轉(zhuǎn)發(fā)給對應(yīng)的內(nèi)網(wǎng)設(shè)備。

可能你想問:不對啊笋额,路由器完全多余的,因為我的設(shè)備也實現(xiàn)了 ip 協(xié)議篷扩,為什么路由器可以把包發(fā)到外網(wǎng)的 ip 地址兄猩,而且是轉(zhuǎn)發(fā),我尋思自己的手機也能直接發(fā)凹础枢冤?比如這樣!
image.png

問得好,在這里一個繞不過去的原因其實是 ipv4 的地址不夠用铜秆,常見的 ip 地址格式是 114.51.4.3淹真,分成 4 個數(shù)字的部分,每個部分的取值范圍是 0-255连茧,因此可以算出 ip 地址其實是有數(shù)量上限的核蘸,從 0.0.0.0 到 255.255.255.255,粗略來算大概是 40 億個 ip 地址啸驯,如果跟設(shè)備一一對應(yīng)的話...比如我自己就有 1 臺臺式機客扎、2 個筆記本、1 個樹莓派坯汤、若干個手機、一臺服務(wù)器等搀愧《枘簦總之需要分配 ip 地址上網(wǎng)的設(shè)備不下 10 個,40 億個 ip 地址是肯定不夠全世界人口用的咱筛,加上大量的地址都在一些較早接入互聯(lián)網(wǎng)的發(fā)達國家手里搓幌,帝國主義亡我之心不死,再有其他的原因就是出于安全或者速度等其他方面的考量了迅箩。

這里自然而然帶出了兩個概念:公網(wǎng)ip 和 內(nèi)網(wǎng)ip溉愁,前者是指在 Internet 上正常情況下可以訪問到的唯一的 ip 地址,而路由器起到的功能就是對外提供唯一的一個公網(wǎng) ip饲趋,后者是指路由器給機器分配的 ip拐揭,內(nèi)網(wǎng) ip 的格式一般是 10.x.x.x、172.x.x.x奕塑、192.x.x.x堂污,而且在同一個內(nèi)網(wǎng)里的設(shè)備之間互相通訊不需要經(jīng)過路由器。

由于路由器下設(shè)備都共用一個公網(wǎng) ip龄砰,數(shù)據(jù)包在傳回的時候根據(jù)公網(wǎng) ip 能找到的設(shè)備只有路由器盟猖,所以需要路由器接受到數(shù)據(jù)包之后根據(jù)自己的記錄來決定數(shù)據(jù)包轉(zhuǎn)發(fā)給哪個設(shè)備讨衣。

路由功能的核心--NAT(Network Address Translation)

NAT 是一種通過包含路由功能的設(shè)備時對 ip 報文頭部的信息進行更新(更改 Source Address 或者 Destnation Address)的方式。 說到 NAT式镐,就需要從 ipv4 的報文結(jié)構(gòu)開始說起反镇。

表中展示的就是一個 ipv4 報文的結(jié)構(gòu),在這個場景下需要關(guān)心的只有 4 個 源地址(Source Address)娘汞、目的地址(Destination Address)歹茶、首部校驗和(CheckSum) 和 TTL(Time To Live)。

image.png

源地址:發(fā)出報文的 ip 地址
目的地址:接受報文的 ip 地址
首部校驗和:用于防止數(shù)據(jù)包內(nèi)容出錯進行校驗价说,每次經(jīng)過一個路由器更新的報文頭部的信息之后會重新計算一次辆亏。
TTL:是一個整數(shù),因為數(shù)據(jù)包在傳遞的時候需要經(jīng)過多次路由選擇鳖目,每經(jīng)過一次路由 TTL 都會減 1扮叨,減到 0 如果還沒有到達目的地址,該數(shù)據(jù)包會被丟棄领迈。

注:數(shù)據(jù)包從一個路由傳到下一個路由被稱作一跳(Hop)彻磁,這是一個無狀態(tài)的過程。這里的無狀態(tài)是指數(shù)據(jù)包的每一跳都由當前路由進行選擇狸捅,而且彼此之間獨立衷蜓,所以可能會出現(xiàn)同一個數(shù)據(jù)包在兩個路由之間來回傳遞的情況,該設(shè)計是為了防止數(shù)據(jù)包在兩個路由之間來回傳尘喝,導(dǎo)致耗盡兩個路由之間的資源磁浇。

前面說到公網(wǎng) ip 是唯一的,與之對應(yīng)的內(nèi)網(wǎng) ip 則不是唯一的(但是這里的不唯一是指在不同的內(nèi)網(wǎng)下不唯一朽褪,在同一個路由器下的所有設(shè)備里置吓,每個設(shè)備的內(nèi)網(wǎng) ip 也是唯一的)。

假設(shè)手機的 ip 是 192.168.1.30缔赠,路由器內(nèi)網(wǎng)側(cè)(LAN 側(cè))的 ip 是 192.168.1.1衍锚,外網(wǎng)側(cè)(WAN 側(cè))的 ip 是 125.23.3.2,想要跟 ip 為 123.1.13.3 的機器進行通訊嗤堰,那數(shù)據(jù)包經(jīng)過 NAT 進行傳輸?shù)倪^程可以簡化為下圖!
image.png

從圖中可以很容易看出 NAT 的作用戴质,

  1. 在往外傳輸經(jīng)過路由的時候?qū)⒃吹刂愤M行更換
  2. 在數(shù)據(jù)往回傳輸經(jīng)過路由的時候,對目的地址進行更換

往返的這兩個過程分別稱為 SNAT 和 DNAT踢匣,其實就是對源地址的 NAT 和對目的地址的 NAT告匠。

路由器的交換機功能

路由器背后一般會有 1-N 個網(wǎng)線接口,一般會有其中一個顏色與其他的不同离唬。如果有 1 個網(wǎng)線接口凫海,那這個網(wǎng)線接口是 WAN 口(連接路由器和 Internet 的接口),其他的網(wǎng)線接口則是對內(nèi)提供交換機功能的 LAN 口(連接路由器和路由器下內(nèi)網(wǎng)的接口)男娄。

路由器的 LAN 和 WAN 之間是獨立的行贪,也就是說在 WAN 口不能用(無法訪問外網(wǎng))的情況下漾稀,仍然不會影響 LAN 口下各個設(shè)備之間的互相通訊。

如果家里有機器需要用路由器后面的網(wǎng)線接口建瘫,一定要確認自己插入的接口是百兆網(wǎng)口還是千兆網(wǎng)口崭捍,因為后面的接口可能速率有差。舉個例子來說啰脚,我家里用的聯(lián)通的光貓 + 路由器 + 交換機的一體機背后的 4 個 LAN 口只有第一個 LAN 口是千兆網(wǎng)口幸好我有千兆交換機殷蛇,其余全是百兆,使用的時候一定要看一下說明

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末橄浓,一起剝皮案震驚了整個濱河市粒梦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌荸实,老刑警劉巖匀们,帶你破解...
    沈念sama閱讀 216,544評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異准给,居然都是意外死亡泄朴,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,430評論 3 392
  • 文/潘曉璐 我一進店門露氮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來祖灰,“玉大人,你說我怎么就攤上這事畔规【址觯” “怎么了?”我有些...
    開封第一講書人閱讀 162,764評論 0 353
  • 文/不壞的土叔 我叫張陵叁扫,是天一觀的道長三妈。 經(jīng)常有香客問我,道長陌兑,這世上最難降的妖魔是什么沈跨? 我笑而不...
    開封第一講書人閱讀 58,193評論 1 292
  • 正文 為了忘掉前任由捎,我火速辦了婚禮兔综,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘狞玛。我一直安慰自己软驰,他們只是感情好,可當我...
    茶點故事閱讀 67,216評論 6 388
  • 文/花漫 我一把揭開白布心肪。 她就那樣靜靜地躺著锭亏,像睡著了一般。 火紅的嫁衣襯著肌膚如雪硬鞍。 梳的紋絲不亂的頭發(fā)上慧瘤,一...
    開封第一講書人閱讀 51,182評論 1 299
  • 那天戴已,我揣著相機與錄音,去河邊找鬼锅减。 笑死糖儡,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的怔匣。 我是一名探鬼主播握联,決...
    沈念sama閱讀 40,063評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼每瞒!你這毒婦竟也來了金闽?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,917評論 0 274
  • 序言:老撾萬榮一對情侶失蹤剿骨,失蹤者是張志新(化名)和其女友劉穎代芜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體懦砂,經(jīng)...
    沈念sama閱讀 45,329評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡蜒犯,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,543評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了荞膘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片罚随。...
    茶點故事閱讀 39,722評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖羽资,靈堂內(nèi)的尸體忽然破棺而出淘菩,到底是詐尸還是另有隱情,我是刑警寧澤屠升,帶...
    沈念sama閱讀 35,425評論 5 343
  • 正文 年R本政府宣布潮改,位于F島的核電站,受9級特大地震影響腹暖,放射性物質(zhì)發(fā)生泄漏汇在。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,019評論 3 326
  • 文/蒙蒙 一脏答、第九天 我趴在偏房一處隱蔽的房頂上張望糕殉。 院中可真熱鬧,春花似錦殖告、人聲如沸阿蝶。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,671評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽羡洁。三九已至,卻和暖如春爽丹,著一層夾襖步出監(jiān)牢的瞬間筑煮,已是汗流浹背辛蚊。 一陣腳步聲響...
    開封第一講書人閱讀 32,825評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留真仲,地道東北人嚼隘。 一個月前我還...
    沈念sama閱讀 47,729評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像袒餐,于是被迫代替她去往敵國和親飞蛹。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,614評論 2 353