局域網(wǎng)內終端是如何訪(fǎng)問(wèn)外網(wǎng)?答案在最后
一、家庭網(wǎng)
這個(gè)問(wèn)題說(shuō)難不難,但是要想解釋清楚,我們還是需要一些基礎知識。
1. 家庭網(wǎng)絡(luò )簡(jiǎn)介
如上圖是一口君家庭網(wǎng)絡(luò )組網(wǎng)環(huán)境。
要連接公網(wǎng),必須通過(guò)Modem撥號才能上網(wǎng),撥號通過(guò)pppoe協(xié)議撥號 wlan路由器的wan口鏈接ADSL 貓,會(huì )動(dòng)態(tài)獲取一個(gè)公網(wǎng)IP地址100.87.59.254,在廣域網(wǎng)內,任何一個(gè)主機,均可以訪(fǎng)問(wèn)到該ip地址 臺式機、手機、ipad、筆記本等終端可以通過(guò)有線(xiàn)或者無(wú)線(xiàn)的方式通過(guò)共享無(wú)線(xiàn)路由器的wan口訪(fǎng)問(wèn)公網(wǎng) 終端通過(guò)路由器的dhcp協(xié)議自動(dòng)獲取的地址是局域網(wǎng)地址,pc獲得地址是192.168.0.104,網(wǎng)段是192.168.0.0/24,但是我們無(wú)法使用該地址直接訪(fǎng)問(wèn)公網(wǎng) 局域網(wǎng)內終端通過(guò)共享WAN地址上網(wǎng),所有走wlan路由器的數據包都要通過(guò)NAT協(xié)議進(jìn)行源、目的IP,源、目的端口號的轉換 局域網(wǎng)內終端之間通信運行的是以太網(wǎng)協(xié)議,網(wǎng)卡通過(guò)mac地址過(guò)濾數據幀 要獲取局域網(wǎng)內其他網(wǎng)口的mac地址需要通過(guò)arp協(xié)議 公網(wǎng)內路由器之間數據傳輸一般是ppp協(xié)議
WAN口地址:「100.87.59.254」
2. 本地IP地址
一口君的pc是通過(guò)無(wú)線(xiàn)連接的無(wú)線(xiàn)路由器。PC網(wǎng)絡(luò )信息如下:
ipconfig /all
本機無(wú)線(xiàn)網(wǎng)卡信息:
ip地址:「192.168.0.104」mac地址:「44-33-4C-FF-5A-22」子網(wǎng)掩碼:「255.255.255.0」默認網(wǎng)關(guān):「192.168.0.1」DHCP服務(wù)器:「192.168.0.1」
后面幾章我們普及下一些網(wǎng)絡(luò )的基礎知識。
二、router路由器
路由器(Router)是互聯(lián)網(wǎng)的主要結點(diǎn)設備。路由器通過(guò)路由決定數據的轉發(fā)。
轉發(fā)策略稱(chēng)為路由選擇(routing),這也是路由器名稱(chēng)的由來(lái)(router,轉發(fā)者)。
作為不同網(wǎng)絡(luò )之間互相連接的樞紐,路由器系統構成了基于TCP/IP 的國際互聯(lián)網(wǎng)絡(luò )Internet 的主體脈絡(luò ),也可以說(shuō),路由器構成了Internet的骨架。
第一章圖中的無(wú)線(xiàn)路由器就是我們最常用的路由器。
通常有一個(gè)wan口,4個(gè)物理連接網(wǎng)口。既可以通過(guò)網(wǎng)線(xiàn)連接,也可以通過(guò)無(wú)線(xiàn)連接,通常帶寬100M到450M。
此外還有只有在一些大型的機房中才能看到的大型路由器。這些路由器性能強悍,帶寬可高達T一級。
以下是1個(gè)企業(yè)級網(wǎng)絡(luò )的組網(wǎng)拓撲圖,我們通常用圖中的圖標表示路由器:
路由器的一些使用規則:
路由器工作在IP(網(wǎng)絡(luò ))層; 路由器用來(lái)連接不同的網(wǎng)絡(luò ); 路由器的每一個(gè)接口都必須是不同網(wǎng)段的; 路由器之間互聯(lián)是接口直接連接,一般用ppp協(xié)議通信; 處于不同網(wǎng)絡(luò )中的2個(gè)設備要想互相通信,必須通過(guò)路由器; 一個(gè)成熟穩定的網(wǎng)絡(luò ),路由器必須知道每一個(gè)網(wǎng)絡(luò )設備到達另外一個(gè)網(wǎng)絡(luò )的通路,否則會(huì )直接丟棄,路由器通過(guò)路由表來(lái)維護這些通路; 路由器只解析到數據包的IP層(傳輸層和應用層不會(huì )查看)
三、路由表
剛才我們說(shuō)了,公網(wǎng)里,數據包要想到達目的地,必須通過(guò)設備路由器,那么路由器是如何知道把數據包送到目的地的呢?
就要通過(guò)路由表。
1. 「ip頭」
公網(wǎng)中的數據包都是ip數據包,ip數據包頭中有個(gè)非常重要的協(xié)議字段:「目的地址」。
一口君隨機抓取了一個(gè)本機網(wǎng)絡(luò )通信的ip數據包:
如上圖所示, 源ip地址是:192.168.0.104 目的ip地址是:140.246.147.33
很顯然,源地址是一個(gè)c類(lèi)地址,就是本機地址,也是一個(gè)私網(wǎng)地址, 目的地址是一個(gè)公網(wǎng)地址。
路由器之所以能轉發(fā)數據包就是靠路由表和ip數據包的目的ip地址+源ip地址。
2. 路由表
以下是windows下的路由表
route print
路由表中包含了若干個(gè)路由條目。
「PC路由條目:」
名稱(chēng) 說(shuō)明 網(wǎng)絡(luò )目標 表示要到達某個(gè)網(wǎng)段的網(wǎng)絡(luò ),可以查詢(xún)該條路由條目 網(wǎng)絡(luò )掩碼 點(diǎn)分十進(jìn)制法,配合網(wǎng)絡(luò )目標,可得出最終的目標網(wǎng)絡(luò )號 網(wǎng)關(guān) 數據包要發(fā)送給哪個(gè)網(wǎng)口所在的路由器 接口 表示數據包要從哪個(gè)本地的接口發(fā)送出去 躍點(diǎn)數 數據包在網(wǎng)絡(luò )中最多能經(jīng)過(guò)多少個(gè)路由器,放置數據包在網(wǎng)絡(luò )中無(wú)限轉發(fā)
永久路由:
網(wǎng)絡(luò )地址 網(wǎng)絡(luò )掩碼 網(wǎng)關(guān)地址 躍點(diǎn)數 0.0.0.0 0.0.0.0 192.168.0.1 默認
該條路由其實(shí)是一條默認路由,表示如果查找不到路由條目,就將數據包發(fā)送給192.168.0.1這個(gè)ip地址所在的路由器。
3. 公網(wǎng)中路由器非常的多,路由器是如何知道到達所有的網(wǎng)絡(luò )的通路的呢?
通常借助ospf、rip等協(xié)議可以動(dòng)態(tài)學(xué)會(huì )到達各個(gè)網(wǎng)絡(luò )的協(xié)議。
廣域網(wǎng)中的設備路由協(xié)議更加復雜,往往需要專(zhuān)業(yè)的網(wǎng)絡(luò )工程師搭建網(wǎng)絡(luò )。
此塊內容不再
四、DHCP+wlan
家用路由器也是路由器一種,只是他只能連接兩個(gè)網(wǎng)絡(luò ),一個(gè)是局域網(wǎng),一個(gè)是與運營(yíng)商連接的那個(gè)網(wǎng)絡(luò )。
無(wú)線(xiàn)路由器上設置撥號賬號以及設置無(wú)線(xiàn)ssid、密碼在此不討論。
1. PPPOE撥號
家用路由器上網(wǎng)通常是通過(guò)PPPoE撥號上網(wǎng),賬號密碼由運營(yíng)商提供。
撥號成功后會(huì )獲得一個(gè)公網(wǎng)IP。
如果擁有一個(gè)固定的公網(wǎng)IP,那么此處也可以設置固定ip。
「一口君當年第一份工作是在ZTE,參與開(kāi)發(fā)的第一個(gè)項目就是在路由器中實(shí)現PPPoE client模塊,一把辛酸淚啊?!?/strong>
2. DHCP
DHCP(動(dòng)態(tài)主機配置協(xié)議)是一個(gè)局域網(wǎng)的網(wǎng)絡(luò )協(xié)議。指的是由服務(wù)器控制一段IP地址范圍,客戶(hù)機登錄服務(wù)器時(shí)就可以自動(dòng)獲得服務(wù)器分配的IP地址和子網(wǎng)掩碼。
如上,地址池地址是192.168.0.100~192.168.0.199;這就是為什么我們的終端連接家用路由器之后,獲得地址「192.168.0.104」。
分配動(dòng)態(tài)ip地址的時(shí)候,同時(shí)也會(huì )分配DNS服務(wù)器地址和網(wǎng)關(guān)地址。這也就是為什么,我們并沒(méi)有設置任何路由條目,但是我們能上網(wǎng)的原因。
以下是連接到無(wú)線(xiàn)路由器的客戶(hù)端的MAC地址和IP地址信息:
3. 局域網(wǎng)
以太網(wǎng)是一種局域網(wǎng),但是因為現在大部分的局域網(wǎng)均為以太網(wǎng),因此一般提及局域網(wǎng)都會(huì )默認為以太網(wǎng)。
以太網(wǎng)是一種總線(xiàn)型局域網(wǎng),它并不是一種具體網(wǎng)絡(luò ),而是一種技術(shù)規范,由施樂(lè )公司創(chuàng )建,并由施樂(lè )、Intel和Dec公司聯(lián)合開(kāi)發(fā)的局域網(wǎng)規范。
上述家用的無(wú)線(xiàn)網(wǎng)絡(luò ),大多數是無(wú)線(xiàn)局域網(wǎng),是基于IEEE802.11標準,在這個(gè)標準下的無(wú)線(xiàn)局域網(wǎng)大多使用的是2.4GHz 或5GHz的射頻。
「工作原理:」
采用載波監聽(tīng)多點(diǎn)接入/碰撞檢測(CSMA/CD)機制。
以太網(wǎng)中結點(diǎn)都可以收到在網(wǎng)絡(luò )中傳送的所有信息。因此,以太網(wǎng)是一種廣播網(wǎng)絡(luò )。
「實(shí)例:」
總線(xiàn)上的每一個(gè)工作的計算機都能檢測到 B 發(fā)送的數據信號。由于只有計算機 D 的地址與數據幀首部寫(xiě)入的地址一致,因此只有 D 才接收這個(gè)數據幀。其他所有的計算機(A, C 和 E)都檢測到不是發(fā)送給它們的數據幀,因此就丟棄這個(gè)數據幀而不能夠收下來(lái)。這樣就在具有廣播特性的總線(xiàn)上實(shí)現了一對一的通信。
4. Mac地址
在以太網(wǎng)中,硬件地址又稱(chēng)為物理地址,或 MAC 地址,6個(gè)字節,共48 位。
IEEE 的注冊管理機構 RA 負責向廠(chǎng)家分配地址字段的前三個(gè)字節(即高位 24 位)。
適配器從網(wǎng)絡(luò )上每收到一個(gè) MAC 幀就首先用硬件檢查 MAC 幀中的 MAC 地址.
如果是發(fā)往本站的幀則收下,然后再進(jìn)行其他的處理,否則就將此幀丟棄,不再進(jìn)行其他的處理。
5. ARP
假如我們要訪(fǎng)問(wèn)局域網(wǎng)中的另外一個(gè)pc上的進(jìn)程,假設我們只知道對方的IP地址,那么如何才能知道對方的mac地址呢?
可以通過(guò)ARP協(xié)議。
ARP(地址解析)協(xié)議是一種解析協(xié)議,本來(lái)主機是完全不知道這個(gè)IP對應的是哪個(gè)主機的哪個(gè)接口,當主機要發(fā)送一個(gè)IP包的時(shí)候,會(huì )首先查一下自己的ARP高速緩存(就是一個(gè)IP-MAC地址對應表緩存),如果查詢(xún)的IP-MAC值不存在,那么主機就向網(wǎng)絡(luò )發(fā)送一個(gè)ARP協(xié)議廣播包。
這個(gè)廣播包里面就有待查詢(xún)的IP地址,而直接收到這份廣播的包的所有主機都會(huì )查詢(xún)自己的IP地址,如果收到廣播包的某一個(gè)主機發(fā)現自己符合條件,那么就準備好一個(gè)包含自己的MAC地址的ARP包傳送給發(fā)送ARP廣播的主機。
而廣播主機拿到ARP包后會(huì )更新自己的ARP緩存(就是存放IP-MAC對應表的地方)。發(fā)送廣播的主機就會(huì )用新的ARP緩存數據準備好數據鏈路層的的數據包發(fā)送工作。
windows 的arp表查詢(xún):
arp -a
如上圖所示,是PC緩存的arp表。其中192.168.0.1 80-8f-1d-c7-a6-07就是無(wú)線(xiàn)路由器的LAN口ip地址、MAC地址。
5. NAT
最后一個(gè)知識點(diǎn)是,局域網(wǎng)內的終端是如何共用一個(gè)wan口來(lái)上網(wǎng)的?
主要通過(guò)NAT(Network Address Translation,網(wǎng)絡(luò )地址轉換)協(xié)議來(lái)實(shí)現的。
NAT是1994年提出的。當在專(zhuān)用網(wǎng)內部的一些主機本來(lái)已經(jīng)分配到了本地IP地址(即僅在本專(zhuān)用網(wǎng)內使用的專(zhuān)用地址),但現在又想和因特網(wǎng)上的主機通信(并不需要加密)時(shí),可使用NAT方法。
這種方法需要在專(zhuān)用網(wǎng)連接到因特網(wǎng)的路由器上安裝NAT軟件。裝有NAT軟件的路由器叫做NAT路由器,它至少有一個(gè)有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時(shí),都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網(wǎng)連接。
另外,這種通過(guò)使用少量的公有IP 地址代表較多的私有IP 地址的方式,將有助于減緩可用的IP地址空間的枯竭。在RFC 2663中有對NAT的說(shuō)明。
「舉例:」
經(jīng)過(guò)NAT轉換的數據包IP地址替換見(jiàn)下圖:
如上圖所示:
從局域網(wǎng)內部發(fā)往路由器的數據包,源ip:192.168.0.104,經(jīng)過(guò)路由器之后源ip替換為WAN口地址:100.87.59.254 從服務(wù)器返回的數據包目的ip地址:100.87.59.254,經(jīng)過(guò)路由器之后又被替換成了192.168.0.104,這樣數據包就可以發(fā)送到局域網(wǎng)內部的某個(gè)終端了
五、 總結
綜上,我們可知,粉絲的問(wèn)題答案:
路由器的IP地址分wan口和lan口,wan口地址是PPPoE撥號時(shí)運營(yíng)商的其他設備分配的用于公網(wǎng)尋址,lan口地址在路由器中設置, 用于和局域網(wǎng)內終端通信 終端連接無(wú)線(xiàn)路由器時(shí),路由器通過(guò)dhcp協(xié)議給終端分配了動(dòng)態(tài)ip地址,通過(guò)DHCP的地址池可以設置分配的ip地址的范圍 分配ip地址的時(shí)候,同時(shí)終端會(huì )將無(wú)線(xiàn)路由器的lan口地址設置為自己的默認網(wǎng)關(guān),所以pc訪(fǎng)問(wèn)外網(wǎng),所有的數據包都會(huì )發(fā)送給網(wǎng)關(guān),就是無(wú)線(xiàn)路由器 當用戶(hù)要訪(fǎng)問(wèn)外網(wǎng)的時(shí)候,需要知道網(wǎng)關(guān)的mac地址,如果arp緩存中沒(méi)有對應的的arp條目,那么就通過(guò)arp協(xié)議找到lan口的mac地址,因為網(wǎng)關(guān)地址已分配 局域網(wǎng)內終端通過(guò)共享WAN地址上網(wǎng),所有走wlan路由器的數據包都要通過(guò)NAT協(xié)議進(jìn)行源、目的IP,源、目的端口號的轉換