1.網(wǎng)關(guān)的解釋:
提到網(wǎng)關(guān),我們就不得不提路由器的工作原理(詳細(xì)介紹請往下看),我們先看看網(wǎng)關(guān)。
先在某度檢索,得到大概這樣的描述:網(wǎng)關(guān)(Gateway)是一個網(wǎng)絡(luò)連接到另一個網(wǎng)絡(luò)的“出口”??芍?.它是一道門;2.與我們的數(shù)據(jù)傳輸有關(guān)。3.與廣域網(wǎng)、局域網(wǎng)通訊有關(guān)
Gateway有2層含義,在硬件層面上,也就是你的出口路由器。例如你家里路由模式下的光貓,家里的路由模式的主路由器等。如果家里的路由器開的是AP模式,那就不是網(wǎng)關(guān)了。
Gateway在軟件層面,有個別稱,叫“下一跳”。你可能會經(jīng)常聽到默認(rèn)網(wǎng)關(guān),靜態(tài)路由等詞,都和網(wǎng)關(guān)有關(guān)系,主要是告訴你下一站的地址。
因?yàn)橛布用娴腉ateway比較好解釋,這一期,我們主要解釋一下軟件層面的“網(wǎng)關(guān)”。
既然是一道“門”,那么,誰在指揮“門”的發(fā)揮關(guān)卡的作用呢?自然是理由器!它是一個指揮、數(shù)據(jù)處理中樞與樞紐。
路由器分硬路由與軟路由(軟路由之所以能夠屏蔽廣告,也與其“關(guān)卡”的作用有關(guān);所謂的硬路由就是我們直接從網(wǎng)上購買到的路由器,主要實(shí)現(xiàn)路由功能。而軟路由則是在普通電腦上安裝openwrt、愛快、Centos,routerOS等路由器系統(tǒng),實(shí)現(xiàn)路由功能的設(shè)備,主要是為了實(shí)現(xiàn)廣告過濾,搭建網(wǎng)絡(luò)隧道等功能。我們以后會在centos系統(tǒng)中實(shí)現(xiàn)部分功能。),我們來看看果子關(guān)于路由器介紹的節(jié)選:
2.路由器的結(jié)構(gòu)與分類:
路由器的本質(zhì)就是一臺電腦,通常插著兩張網(wǎng)卡,其中一張網(wǎng)卡連接廣域網(wǎng)WAN,另外一張網(wǎng)卡連接局域網(wǎng)LAN。
WAN的IP地址由上級網(wǎng)絡(luò)分配,LAN的IP地址可自行設(shè)置。
家用路由器默認(rèn)Lan口IP地址(一般是192.168.1.1/24),在包裝說明書、路由器背面的銘牌中有寫明,也是路由器的默認(rèn)管理地址。
路由器的本質(zhì),另外家用路由器是路由交換一體機(jī)
更高級的路由器可以有多個WAN口,甚至可以添加虛擬網(wǎng)卡,可以實(shí)現(xiàn)“單線多播”負(fù)載均衡疊加網(wǎng)速等更高級的功能。
3.路由器的功能1:尋址與轉(zhuǎn)發(fā)
我們之前講過交換機(jī),交換機(jī)是一個數(shù)據(jù)轉(zhuǎn)發(fā)設(shè)備,在OSI模型中的第二層,數(shù)據(jù)鏈路層工作,通過MAC地址和交換機(jī)端口號的對應(yīng)關(guān)系來轉(zhuǎn)發(fā)數(shù)據(jù)包,忘記的小伙伴可以看果子的第1期視頻。而我們今天要講路由器在OSI模型中的第3層“網(wǎng)絡(luò)層”工作,是一個三層轉(zhuǎn)發(fā)設(shè)備。
我們所說的多少層,不是說設(shè)備只在這一層工作,而是最少能到達(dá)到這一層。
路由器在OSI模型中的工作層級
3.1.路由規(guī)則
路由器最主要的作用就是實(shí)現(xiàn)跨網(wǎng)段的數(shù)據(jù)傳輸與轉(zhuǎn)發(fā)。
就像交通路標(biāo)一樣,指引著車輛和行人的行動,這種指引行為就叫路由,路由器通過路由表來記錄轉(zhuǎn)發(fā)規(guī)則。我們先來看看路由表長什么樣。因?yàn)槠胀酚善鳠o法查看路由表,所以果子在centos7系統(tǒng)上進(jìn)行演示。
路由器主要是為了實(shí)現(xiàn)跨子網(wǎng)的傳輸
我們在centos系統(tǒng)中輸入route -n命令,就可以查詢路由表,查詢到的路由表有8列,其中第1列Destination為目的地址,第2列Gateway為網(wǎng)關(guān)地址,也叫“下一跳”,第3列Genmask為網(wǎng)關(guān)掩碼,第8列Iface為網(wǎng)卡接口。
查詢路由表的方法,路由表
我們將第1列與第3列合并起來,會驚奇地 發(fā)現(xiàn),第一列不就是網(wǎng)絡(luò)地址嗎?忘記的同學(xué)可以翻看第2期視頻。Flag帶有G的規(guī)則代表網(wǎng)關(guān)規(guī)則,若數(shù)據(jù)包的目的IP地址與路由表中目的地址匹配,路由器會將數(shù)據(jù)包轉(zhuǎn)發(fā)到Gateway中的網(wǎng)關(guān)地址。如果flag不帶G,說明本條規(guī)則不是網(wǎng)關(guān)規(guī)則,目標(biāo)地址肯定就在本地鏈路,通過同一個交換機(jī)相連。
如何看路由表
舉個例子,如果想發(fā)送數(shù)據(jù)給某度的服務(wù)器39.156.69.79,匹配到的目的地址是0.0.0.0/0,那么這個數(shù)據(jù)包就會被轉(zhuǎn)發(fā)給網(wǎng)卡eth0,走默認(rèn)網(wǎng)關(guān)192.168.0.1。
局域網(wǎng)內(nèi)發(fā)送消息給百度
如果數(shù)據(jù)包的目的地是果子的辦公室的主機(jī),IP地址為192.168.2.12,那么會同時符合兩個目的網(wǎng)段,0.0.0.0/0和192.168.2.0/24,但是路由器會優(yōu)先匹配更精確的規(guī)則,所以數(shù)據(jù)包通過tun0網(wǎng)卡轉(zhuǎn)發(fā)給網(wǎng)關(guān)192.168.10.12。
數(shù)據(jù)包發(fā)送到辦公室
3.2網(wǎng)絡(luò)數(shù)據(jù)包的長距離傳輸:
網(wǎng)絡(luò)數(shù)據(jù)包長距離傳輸?shù)倪^程中,會經(jīng)過一個個的路由器,我們拿局域網(wǎng)內(nèi)一臺主機(jī)和百度的通訊舉個例子,假設(shè)局域網(wǎng)內(nèi)一臺主機(jī)192.168.0.4/24要訪問公網(wǎng)上的百度主機(jī)39.156.69.79。主機(jī)查詢自己的路由表,把數(shù)據(jù)包發(fā)送給誰呢?
主機(jī)查詢自己的路由表,把數(shù)據(jù)包發(fā)送給默認(rèn)網(wǎng)關(guān)192.168.0.1(路由器LAN端IP地址)。路由器收到數(shù)據(jù)包后,繼續(xù)發(fā)送給更上級的默認(rèn)網(wǎng)關(guān)(運(yùn)營商的路由器),經(jīng)過多個路由的傳遞,最終百度主機(jī)就會收到信息了。
我們在centos系統(tǒng)中,可以使用traceroute -n baidu.com的命令查看中途經(jīng)過了哪些路由器。我們很清晰地看到,第一個經(jīng)歷的路由器就是我們自己的路由器192.168.0.1,第二個路由器是運(yùn)營商的路由器,27.19.176.1,中間的路由器都是城市路由的節(jié)點(diǎn)。
到百度主機(jī)經(jīng)歷的路由器
3.3.路由規(guī)則的獲得
路由器如何獲得路由規(guī)則?
路由器想要實(shí)現(xiàn)路由功能,首先路由器本身得知道數(shù)據(jù)應(yīng)該向哪里傳。
路由器得知這些信息的方式大致有3種,第一種方式是直連路由;第二種是通過手動添加路由規(guī)則,也就是靜態(tài)路由。第三種是通過動態(tài)路由協(xié)議獲得的路由,一般在城市或大型企業(yè)網(wǎng)絡(luò)運(yùn)用比較多,家庭網(wǎng)絡(luò)甚至小型企業(yè)根本用不上,我們主要了解一下前兩種方法。
第一種方式是直連路由。
當(dāng)主機(jī)正確配置好一個IP地址后,會自動生成一條目的地址為該子網(wǎng)的路由。例如樹莓派的網(wǎng)卡eth0通過dhcp獲得192.168.0.4/24的ip地址,那么會自動產(chǎn)生一條目的地址為網(wǎng)段192.168.0.0/24的路由。如果我在網(wǎng)卡tun0上手動設(shè)置IP地址為192.168.10.4/24,也會增加192.168.10.0/24的路由。
第二種方式是手動添加靜態(tài)路由。
例如果子添加目的地址為果子辦公室的子網(wǎng)192.168.2.0/24,網(wǎng)關(guān)地址為192.168.10.12,因?yàn)闃漭杀緳C(jī)根本不知道192.168.2.0/24的子網(wǎng)在哪里,所以必須手動設(shè)置。再例如,在mac系統(tǒng)中,手動配置IP地址時,填寫的網(wǎng)關(guān)或路由,會生成路由表中的默認(rèn)路由。
4.路由器的功能2:DHCP服務(wù)器功能
路由器的第二個功能為DHCP服務(wù)器。
DHCP,也叫動態(tài)主機(jī)配置協(xié)議。
路由器有自帶的DHCP服務(wù)器,為接入的設(shè)備自動分配IP地址,在路由器上開啟DHCP功能,便能使用設(shè)備自動分配IP地址功能。
通過DHCP服務(wù)器,可將配置好的IP地址池,子網(wǎng)掩碼,網(wǎng)關(guān)信息,DNS信息下發(fā)給下聯(lián)的網(wǎng)絡(luò)設(shè)備。
需要注意的是,即便路由器的DHCP功能是開啟的,主機(jī)仍然可以強(qiáng)制手動設(shè)置IP地址,子網(wǎng)掩碼等,只要這些和路由器管理地址處于同一個網(wǎng)段,IP地址不沖突,仍然可以正常和路由器通訊以及上網(wǎng)。
特別值得注意的是,同一個LAN中,最多只能有一個DHCP服務(wù)器處于開啟狀態(tài),否則可能會導(dǎo)致下聯(lián)的設(shè)備不能正確的獲取網(wǎng)絡(luò)配置,從而導(dǎo)致無法上網(wǎng)。
路由器的DHCP功能
5.路由器的功能3:源地址轉(zhuǎn)換NAT
路由器第三個重要功能,就是利用NAT技術(shù)為本地局域網(wǎng)做源IP地址轉(zhuǎn)換SNAT。
NAT,也叫IP偽裝技術(shù)。局域網(wǎng)主機(jī)ip地址是一個私有地址,別人家也可能有相同的地址。假設(shè)發(fā)送到公網(wǎng)的地址是局域網(wǎng)主機(jī)ip地址,百度主機(jī)要返回數(shù)據(jù)包時,不知會傳到哪。
所以,數(shù)據(jù)包在出路由器之前,路由器會將該數(shù)據(jù)包的源IP地址偽裝成路由器WAN口的公網(wǎng)IP地址,當(dāng)百度主機(jī)想返回數(shù)據(jù)包時,目的地址便是我們的公網(wǎng)IP地址了。路由器收到傳回來的數(shù)據(jù)包后,會自動做目的地址轉(zhuǎn)換DNAT,將目的地址從公網(wǎng)IP轉(zhuǎn)換為剛才發(fā)送消息主機(jī)IP地址,內(nèi)部主機(jī)順利接收信息,路由器內(nèi)部所有的設(shè)備也都通過這種方式上網(wǎng)。
局域網(wǎng)能訪問公網(wǎng)的原理
路由器工作原理詳細(xì)介紹
《路由器如何工作?作用是什么?最硬核科普!學(xué)會后可網(wǎng)工級組網(wǎng)》
圖文編輯: 旋律果子 貓小爪
旋律果子: 網(wǎng)絡(luò)Geek/Linux開發(fā)者/中國科學(xué)院大學(xué)在讀博士/科技數(shù)碼博主/國家水利水電二級建造師/優(yōu)質(zhì)科技領(lǐng)域創(chuàng)作者
聯(lián)系客服