什么叫路由器?
路由器「英文:Router」又稱網(wǎng)關(guān)設(shè)備(Gateway),專業(yè)來說是用于連接多個(gè)邏輯上分開網(wǎng)絡(luò)的一種設(shè)備,所謂邏輯網(wǎng)絡(luò)是代表一個(gè)單獨(dú)的網(wǎng)絡(luò)或者一個(gè)子網(wǎng)。當(dāng)數(shù)據(jù)從一個(gè)子網(wǎng)傳輸?shù)搅硪粋(gè)子網(wǎng)時(shí),可通過路由器的路由功能來完成。
因此,路由器具有判斷網(wǎng)絡(luò)地址和選擇IP路徑的功能,它能在多網(wǎng)絡(luò)互聯(lián)環(huán)境中,建立靈活的連接,可用完全不同的數(shù)據(jù)分組和介質(zhì)訪問方法連接各種子網(wǎng),路由器只接受源站或其他路由器的信息,屬網(wǎng)絡(luò)層的一種互聯(lián)設(shè)備。
路由器是用來共享網(wǎng)絡(luò)的,可以實(shí)現(xiàn)多臺(tái)電腦使用上網(wǎng),無線路由器還可以實(shí)現(xiàn)無線上網(wǎng)。作為一個(gè)找路的工具,路由器的使命就是尋找各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)之間的路。換句話說,路由器就像是快遞中轉(zhuǎn)站,包裹會(huì)經(jīng)過一個(gè)個(gè)的中轉(zhuǎn)站,從遙遠(yuǎn)的地方寄到你家附近,數(shù)據(jù)包也是一樣。
路由器是連接兩個(gè)網(wǎng)絡(luò)的硬件設(shè)備,承擔(dān)尋路功能,是網(wǎng)絡(luò)的大門,因此,路由器又叫做網(wǎng)關(guān)設(shè)備(Gateway)。
路由表
路由器和交換機(jī)一樣,也有自己的小本本,這個(gè)路由表上記載了到各個(gè)網(wǎng)絡(luò)節(jié)點(diǎn)之間的路,會(huì)記錄數(shù)據(jù)來源、相應(yīng)的路由條目以及下一跳。
路由表就相當(dāng)于路由器的導(dǎo)航,路由器只需要按照路由表的指示走就可以了。當(dāng)然前提是,路由表中存在匹配該數(shù)據(jù)包目的 IP 地址的路由條目。路由表會(huì)周期性更新,當(dāng)網(wǎng)絡(luò)拓?fù)浒l(fā)生變化時(shí)也會(huì)更新,不用擔(dān)心走錯(cuò)路。
路由器收發(fā)數(shù)據(jù)包的流程
路由器在收發(fā)數(shù)據(jù)包的時(shí)候會(huì)先查看路由表,如果路由表里有匹配項(xiàng),就會(huì)把數(shù)據(jù)包交給下一跳。如果沒有匹配項(xiàng),就會(huì)直接丟棄數(shù)據(jù)包,然后告訴主機(jī),這個(gè)目的地不可達(dá)。
直連、靜態(tài)路由、動(dòng)態(tài)路由
路由條目的獲取來源有很多種,比如說直連、靜態(tài)路由和動(dòng)態(tài)路由。
直連,也就是路由器的直接鄰居。路由器會(huì)自己去認(rèn)識(shí)鄰居,然后記錄下來。
當(dāng)然,也可以通過手動(dòng)添加的方式告訴路由器目的網(wǎng)段的路徑,也就是靜態(tài)路由,適合網(wǎng)絡(luò)規(guī)模比較小的場景。但是當(dāng)網(wǎng)絡(luò)拓?fù)浒l(fā)生變化,或是規(guī)模擴(kuò)大的時(shí)候,配置和維護(hù)的成本就會(huì)很高。
這時(shí)候就需要結(jié)合動(dòng)態(tài)路由,讓路由器通過動(dòng)態(tài)的方式來學(xué)習(xí)。在大型網(wǎng)絡(luò)中,往往采用這種動(dòng)、靜路由相結(jié)合的方式進(jìn)行部署。
三層尋址
二層尋址就是交換機(jī)根據(jù) MAC 地址,在物理層進(jìn)行尋址。
三層尋址就是指路由器根據(jù) IP 地址,在網(wǎng)絡(luò)層進(jìn)行尋址。
路由器三層尋址流程
當(dāng)主機(jī)想要發(fā)送數(shù)據(jù)的時(shí)候,首先會(huì)查看目的地是否和自己在同一個(gè)網(wǎng)段,如果在同一個(gè)網(wǎng)段就會(huì)讓交換機(jī)進(jìn)行二層轉(zhuǎn)發(fā)。
如下圖所示,PC1 要給 PC2 發(fā)送數(shù)據(jù),就會(huì)通過交換機(jī)來完成。
如果不在同一個(gè)網(wǎng)段,主機(jī)會(huì)把數(shù)據(jù)包交給自己的路由器,路由器再根據(jù)目的 IP 查詢自己的路由表,如果有匹配的條目,則交給下一跳,沒有就丟棄。
如下圖所示,PC1 要給 PC3 發(fā)送數(shù)據(jù),發(fā)現(xiàn) PC3 和自己不在同一個(gè)網(wǎng)段,就會(huì)把數(shù)據(jù)包交給路由器 A,再根據(jù)路由表的條目轉(zhuǎn)發(fā)給路由器 B -> C,最后通過交換機(jī) C 送達(dá) PC3。
尋路原則
既然路由器是負(fù)責(zé)找路的,那條條大路通羅馬,哪條大路最近呢?
默認(rèn)情況下,路由的查詢遵循最長匹配原則,也就是掩碼越長、越精確,路由器就會(huì)優(yōu)先選擇那條路。
然后考慮路徑開銷,比如說帶寬、管理距離、度量值等。也就是如果從這條路走,要花上多少時(shí)間和金錢。絕大部分?jǐn)?shù)據(jù)通信行為是雙向的,考慮流量的時(shí)候,還要關(guān)注流量的往返,從這條路去,也得從這條路回來,回來的時(shí)候沒路了,這也不行。
路由查詢的行為是逐跳的,到目標(biāo)網(wǎng)絡(luò)沿途的每個(gè)路由器都必須有關(guān)于該目標(biāo)網(wǎng)段的路由信息。簡單來說,數(shù)據(jù)包每經(jīng)過一個(gè)路由器,路由器就會(huì)告訴它下一跳是誰,該往哪個(gè)方向走。