一條信息的網(wǎng)絡(luò)請(qǐng)求過(guò)程

一 前言

最近有用戶手機(jī)用流量無(wú)法登陸app儿子,最終發(fā)現(xiàn)原因是ip被防火墻拉黑了趟薄,本來(lái)想去了解ip的分配機(jī)制,隨著一個(gè)個(gè)知識(shí)點(diǎn)的了解典徊,發(fā)現(xiàn)還是系統(tǒng)記錄下來(lái)更能加深理解,特此記錄恩够。

二 知識(shí)點(diǎn)

1. 計(jì)算機(jī)網(wǎng)絡(luò)協(xié)議: TCP/IP

image

以太網(wǎng)絡(luò)上面的傳輸使用網(wǎng)絡(luò)卡卡號(hào)為基準(zhǔn)的 MAC 訊框卒落,配合 CSMA/CD 的標(biāo)準(zhǔn)來(lái)傳送訊框,這就是硬件部分蜂桶。在軟件部分儡毕,我們知道 Internet 其實(shí)就是 TCP/IP 這個(gè)通訊協(xié)議的通稱,Internet 是由 InterNIC所統(tǒng)一管理的, 但其實(shí)他僅是負(fù)責(zé)分配 Internet 上面的 IP 以及提供相關(guān)的 TCP/IP 技術(shù)文件而已腰湾。

1.1 TCP

image

當(dāng)應(yīng)用程序用TCP傳送數(shù)據(jù)時(shí)雷恃,數(shù)據(jù)被送入?yún)f(xié)議棧中,然后逐個(gè)通過(guò)每一層直到被當(dāng)作一串比特流送入網(wǎng)絡(luò)费坊。其中每一層對(duì)收到的數(shù)據(jù)都要增加一些首部信息(有時(shí)還要增加尾部信息)倒槐,該過(guò)程如圖所示。


image

不論是服務(wù)器端還是客戶端附井,都必須要透過(guò)一次 SYN 與 ACK 來(lái)建立聯(lián)機(jī)讨越,所以總共會(huì)進(jìn)行三次的交談


image

封包發(fā)起時(shí),在 TCP 的表頭當(dāng)中永毅,必須要帶有 SYN 的主動(dòng)聯(lián)機(jī)(SYN=1)把跨,并且記下發(fā)送出聯(lián)機(jī)封包給服務(wù)器端的序號(hào) (Sequence number = 10001) 。

當(dāng)服務(wù)器接到這個(gè)封包沼死,并且確定要接收這個(gè)封包后着逐,就會(huì)開(kāi)始制作一個(gè)同時(shí)帶有 SYN=1, ACK=1 的封包, 其中那個(gè) acknowledge 的號(hào)碼是要給 client 端確認(rèn)用的意蛀,所以該數(shù)字會(huì)比(A 步驟)里面的 Sequence 號(hào)碼多一號(hào) (ack = 10001+1 = 10002)耸别, 那我們服務(wù)器也必須要確認(rèn)客戶端確實(shí)可以接收我們的封包才行,所以也會(huì)發(fā)送出一個(gè) Sequence (seq=20001) 給客戶端浸间,并且開(kāi)始等待客戶端給我們服務(wù)器端的回應(yīng)喔

1.2 IP

目前IP有兩個(gè)版本太雨。 IPv4 (Internet Protocol version 4, 因特網(wǎng)協(xié)定第四版)和IPV6,目前運(yùn)用最廣泛的還是IPV4魁蒜,所以下面講的是IPV4囊扳。

我們知道 IP (Internet Protocol) 其實(shí)是一種網(wǎng)絡(luò)封包,而這個(gè)封包的表頭最重要的就是那個(gè) 32 位的來(lái)源與目標(biāo)地址兜看! 為了方便記憶锥咸,所以我們也稱這個(gè) 32 bits 的數(shù)值為 IP 網(wǎng)絡(luò)地址就是了。

IP 最小可以由 0.0.0.0 一直到 255.255.255.255 细移,主要分為 Net_ID (網(wǎng)域號(hào)碼)與 Host_ID (主機(jī)號(hào)碼) 兩部份搏予。

11000000.10101000.00000000.11111111     192.168.0.255
|----------Net_ID---------|-host--|
第一組表示IP的等級(jí),第四組為主機(jī)號(hào)碼

在同一個(gè)網(wǎng)段內(nèi)弧轧,Net_ID 是不變的雪侥,而 Host_ID 則是不可重復(fù);Host_ID 在二進(jìn)制的表示法當(dāng)中精绎,不可同時(shí)為 0 也不可同時(shí)為 1 速缨,因?yàn)槿珵?0 表示整個(gè)網(wǎng)段的地址 (Network IP)而全為 1 則表示為廣播的地址 (Broadcast IP)代乃。

在同一網(wǎng)域內(nèi)旬牲,這些主機(jī)都可以透過(guò) CSMA/CD 的功能直接在區(qū)網(wǎng)內(nèi)用廣播進(jìn)行網(wǎng)絡(luò)的聯(lián)機(jī)。透過(guò)路由器 (router) 來(lái)進(jìn)行溝通才能將兩個(gè)網(wǎng)域連結(jié)在一起。

IP 的分級(jí)
以二進(jìn)制說(shuō)明 Network 第一個(gè)數(shù)字的定義:
Class A : 0xxxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開(kāi)頭是 0
          |--net--|---------host------------|
Class B : 10xxxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開(kāi)頭是 10
          |------net-------|------host------|
Class C : 110xxxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開(kāi)頭是 110
          |-----------net-----------|-host--|
Class D : 1110xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開(kāi)頭是 1110
Class E : 1111xxxx.xxxxxxxx.xxxxxxxx.xxxxxxxx  ==> NetI_D 的開(kāi)頭是 1111

五種分級(jí)在十進(jìn)制的表示:
Class A :   0.xx.xx.xx ~ 127.xx.xx.xx
Class B : 128.xx.xx.xx ~ 191.xx.xx.xx
Class C : 192.xx.xx.xx ~ 223.xx.xx.xx
Class D : 224.xx.xx.xx ~ 239.xx.xx.xx
Class E : 240.xx.xx.xx ~ 255.xx.xx.xx

在 IPv4 里面就只有兩種 IP 的類(lèi)別原茅,分別是:

  • Public IP : 公共 IP 吭历,經(jīng)由 INTERNIC 所統(tǒng)一規(guī)劃的 IP,有這種 IP 才可以連上 Internet 擂橘;
  • Private IP : 私有 IP 或保留 IP晌区,不能直接連上 Internet 的 IP , 主要用于局域網(wǎng)絡(luò)內(nèi)的主機(jī)聯(lián)機(jī)規(guī)劃贝室。

私有 IP 也分別在 A, B, C 三個(gè) Class 當(dāng)中各保留一段作為私有 IP 網(wǎng)段契讲,那就是:

  • Class A:10.0.0.0 - 10.255.255.255
  • Class B:172.16.0.0 - 172.31.255.255
  • Class C:192.168.0.0 - 192.168.255.255
Netmask (子網(wǎng)掩碼)

用來(lái)達(dá)成子網(wǎng)的切分

如果我們以 192.168.0.0 ~ 192.168.0.255 這個(gè)網(wǎng)段來(lái)說(shuō),要是給予 Net_ID 是 26 位時(shí)滑频,總共分為幾段呢捡偏? 因?yàn)?26-24=2 ,所以總共用掉兩個(gè)位峡迷,因此有 2 的 2 次方银伟,得到 4 個(gè)網(wǎng)段。再將 256 個(gè) IP 平均分配到 4 個(gè)網(wǎng)段去绘搞, 那我們就可以知道這四個(gè)網(wǎng)段分別是:

192.168.0.0~192.168.0.63
192.168.0.64~192.168.0.127
192.168.0.128~192.168.0.191
192.168.0.192~192.168.0.255

1.3 以太網(wǎng)絡(luò)的傳輸協(xié)議:CSMA/CD

局域網(wǎng)絡(luò)使用的設(shè)備-以太網(wǎng)絡(luò)彤避。

整個(gè)以太網(wǎng)絡(luò)的重心就是以太網(wǎng)絡(luò)卡。所以說(shuō)夯辖,以太網(wǎng)絡(luò)的傳輸主要就是網(wǎng)絡(luò)卡對(duì)網(wǎng)絡(luò)卡之間的數(shù)據(jù)傳遞而已琉预。 每張以太網(wǎng)絡(luò)卡出廠時(shí),就會(huì)賦予一個(gè)獨(dú)一無(wú)二的卡號(hào)蒿褂,那就是所謂的 MAC (Media Access Control) 圆米。

CSMA/CD 傳送出去的MAC幀數(shù)據(jù),其實(shí)就是 MAC 啄栓!我們又簡(jiǎn)稱網(wǎng)卡卡號(hào)為 MAC娄帖。

在發(fā)送端,數(shù)據(jù)鏈路層把網(wǎng)絡(luò)層傳下來(lái)得數(shù)據(jù)封裝成幀昙楚,然后發(fā)送到鏈路上去近速;在接收端,數(shù)據(jù)鏈路層把收到的幀中的數(shù)據(jù)取出并交給網(wǎng)絡(luò)層堪旧。不同的數(shù)據(jù)鏈路層協(xié)議對(duì)應(yīng)著不同的幀削葱,所以,幀有多種淳梦,比如PPP幀佩耳、MAC幀等,其具體格式也不盡相同谭跨。

image

上圖中的目的地址與來(lái)源地址指的就是網(wǎng)卡卡號(hào) (hardware address, 硬件地址).

硬件地址最小由 00:00:00:00:00:00 到 FF:FF:FF:FF:FF:FF (16 進(jìn)位法), 這 6 bytes 當(dāng)中,前 3bytes 為廠商的代碼螃宙,后 3bytes 則是該廠商自行設(shè)定的裝置碼了

2. ARP

地址解析協(xié)議(Address Resolution Protocol)蛮瞄,其基本功能為透過(guò)目標(biāo)設(shè)備的IP地址,查詢目標(biāo)設(shè)備的MAC地址谆扎,以保證通信的順利進(jìn)行挂捅。它是IPv4中網(wǎng)絡(luò)層必不可少的協(xié)議,不過(guò)在IPv6中已不再適用堂湖,并被鄰居發(fā)現(xiàn)協(xié)議(NDP)所替代

在發(fā)送數(shù)據(jù)包時(shí)闲先,首先要通過(guò)目的IP(主機(jī)或路由器)獲取局域網(wǎng)內(nèi)要發(fā)送對(duì)象的MAC地址,再將MAC地址封裝到數(shù)據(jù)包內(nèi)發(fā)送无蜂。而ARP的作用就在通過(guò)IP獲取MAC地址伺糠,通過(guò)廣播來(lái)發(fā)送ARP請(qǐng)求報(bào)文

假設(shè)主機(jī)A和B在同一個(gè)網(wǎng)段斥季,主機(jī)A要向主機(jī)B發(fā)送信息训桶,具體的地址解析過(guò)程如下:

(1) 主機(jī)A首先查看自己的ARP表,確定其中是否包含有主機(jī)B對(duì)應(yīng)的ARP表項(xiàng)酣倾。如果找到了對(duì)應(yīng)的MAC地址舵揭,則主機(jī)A直接利用ARP表中的MAC地址,對(duì)IP數(shù)據(jù)包進(jìn)行幀封裝躁锡,并將數(shù)據(jù)包發(fā)送給主機(jī)B午绳。

(2) 如果主機(jī)A在ARP表中找不到對(duì)應(yīng)的MAC地址,則將緩存該數(shù)據(jù)報(bào)文映之,然后以廣播方式發(fā)送一個(gè)ARP請(qǐng)求報(bào)文拦焚。ARP請(qǐng)求報(bào)文中的發(fā)送端IP地址和發(fā)送端MAC地址為主機(jī)A的IP地址和MAC地址,目標(biāo)IP地址和目標(biāo)MAC地址為主機(jī)B的IP地址和全0的MAC地址惕医。由于ARP請(qǐng)求報(bào)文以廣播方式發(fā)送耕漱,該網(wǎng)段上的所有主機(jī)都可以接收到該請(qǐng)求,但只有被請(qǐng)求的主機(jī)(即主機(jī)B)會(huì)對(duì)該請(qǐng)求進(jìn)行處理抬伺。

(3) 主機(jī)B比較自己的IP地址和ARP請(qǐng)求報(bào)文中的目標(biāo)IP地址螟够,當(dāng)兩者相同時(shí)進(jìn)行如下處理:將ARP請(qǐng)求報(bào)文中的發(fā)送端(即主機(jī)A)的IP地址和MAC地址存入自己的ARP表中。之后以單播方式發(fā)送ARP響應(yīng)報(bào)文給主機(jī)A峡钓,其中包含了自己的MAC地址妓笙。

(4) 主機(jī)A收到ARP響應(yīng)報(bào)文后,將主機(jī)B的MAC地址加入到自己的ARP表中以用于后續(xù)報(bào)文的轉(zhuǎn)發(fā)能岩,同時(shí)將IP數(shù)據(jù)包進(jìn)行封裝后發(fā)送出去寞宫。

image

3. NAT

NAT名字很準(zhǔn)確伦忠,網(wǎng)絡(luò)地址轉(zhuǎn)換豺鼻,就是替換IP報(bào)文頭部的地址信息茶凳。NAT通常部署在一個(gè)組織的網(wǎng)絡(luò)出口位置,通過(guò)將內(nèi)部網(wǎng)絡(luò)IP地址替換為出口的IP地址提供公網(wǎng)可達(dá)性和上層協(xié)議的連接能力淘钟。

一個(gè)對(duì)外的訪問(wèn)請(qǐng)求在到達(dá)目標(biāo)以后,表現(xiàn)為由本組織出口設(shè)備發(fā)起涛贯,因此被請(qǐng)求的服務(wù)端可將響應(yīng)由Internet發(fā)回出口網(wǎng)關(guān)厕氨。出口網(wǎng)關(guān)再將目的地址替換為私網(wǎng)的源主機(jī)地址,發(fā)回內(nèi)部篷就。這樣一次由私網(wǎng)主機(jī)向公網(wǎng)服務(wù)端的請(qǐng)求和響應(yīng)就在通信兩端均無(wú)感知的情況下完成了射亏。依據(jù)這種模型,數(shù)量龐大的內(nèi)網(wǎng)主機(jī)就不再需要公有IP地址了竭业。

  • 網(wǎng)絡(luò)被分為私網(wǎng)和公網(wǎng)兩個(gè)部分智润,NAT網(wǎng)關(guān)設(shè)置在私網(wǎng)到公網(wǎng)的路由出口位置,雙向流量必須都要經(jīng)過(guò)NAT網(wǎng)關(guān)
  • 除靜態(tài)NAT未辆,網(wǎng)絡(luò)訪問(wèn)只能先由私網(wǎng)側(cè)發(fā)起窟绷,公網(wǎng)無(wú)法主動(dòng)訪問(wèn)私網(wǎng)主機(jī);
  • NAT網(wǎng)關(guān)在兩個(gè)訪問(wèn)方向上完成兩次地址的轉(zhuǎn)換或翻譯鼎姐,出方向做源信息替換钾麸,入方向做目的信息替換;
  • NAT網(wǎng)關(guān)的存在對(duì)通信雙方是保持透明的炕桨;
  • NAT網(wǎng)關(guān)為了實(shí)現(xiàn)雙向翻譯的功能饭尝,需要維護(hù)一張關(guān)聯(lián)表,把會(huì)話的信息保存下來(lái)献宫。
  1. 靜態(tài)轉(zhuǎn)換是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公有IP地址钥平,IP地址對(duì)是一對(duì)一的,是一成不變的姊途,某個(gè)私有IP地址只轉(zhuǎn)換為某個(gè)公有IP地址涉瘾。借助于靜態(tài)轉(zhuǎn)換,可以實(shí)現(xiàn)外部網(wǎng)絡(luò)對(duì)內(nèi)部網(wǎng)絡(luò)中某些特定設(shè)備(如服務(wù)器)的訪問(wèn)捷兰。
  2. 動(dòng)態(tài)轉(zhuǎn)換是指將內(nèi)部網(wǎng)絡(luò)的私有IP地址轉(zhuǎn)換為公用IP地址時(shí)立叛,IP地址是不確定的,是隨機(jī)的贡茅,所有被授權(quán)訪問(wèn)上Internet的私有IP地址可隨機(jī)轉(zhuǎn)換為任何指定的合法IP地址秘蛇。當(dāng)ISP提供的合法IP地址略少于網(wǎng)絡(luò)內(nèi)部的計(jì)算機(jī)數(shù)量時(shí)《タ迹可以采用動(dòng)態(tài)轉(zhuǎn)換的方式赁还。
  3. 端口多路復(fù)用(Port address Translation,PAT)是指改變外出數(shù)據(jù)包的源端口并進(jìn)行端口轉(zhuǎn)換,即端口地址轉(zhuǎn)換(PAT驹沿,Port Address Translation).采用端口多路復(fù)用方式艘策。可隱藏網(wǎng)絡(luò)內(nèi)部的所有主機(jī)渊季,有效避免來(lái)自internet的攻擊朋蔫。因此罚渐,目前網(wǎng)絡(luò)中應(yīng)用最多的就是端口多路復(fù)用方式。
  4. ALG(Application Level Gateway)斑举,即應(yīng)用程序級(jí)網(wǎng)關(guān)技術(shù):傳統(tǒng)的NAT技術(shù)只對(duì)IP層和傳輸層頭部進(jìn)行轉(zhuǎn)換處理搅轿,但是一些應(yīng)用層協(xié)議,在協(xié)議數(shù)據(jù)報(bào)文中包含了地址信息富玷。為了使得這些應(yīng)用也能透明地完成NAT轉(zhuǎn)換,NAT使用一種稱作ALG的技術(shù)既穆,它能對(duì)這些應(yīng)用程序在通信時(shí)所包含的地址信息也進(jìn)行相應(yīng)的NAT轉(zhuǎn)換赎懦。

4. 路由器

路由器根據(jù)收到數(shù)據(jù)包中的網(wǎng)絡(luò)層地址以及路由器內(nèi)部維護(hù)的路由表決定輸出端口以及下一跳地址,并且重寫(xiě)鏈路層數(shù)據(jù)包頭實(shí)現(xiàn)轉(zhuǎn)發(fā)數(shù)據(jù)包幻工。路由器通過(guò)動(dòng)態(tài)維護(hù)路由表來(lái)反映當(dāng)前的網(wǎng)絡(luò)拓?fù)淅剑⑼ㄟ^(guò)網(wǎng)絡(luò)上其他路由器交換路由和鏈路信息來(lái)維護(hù)路由表。

路由器的主要工作就是為經(jīng)過(guò)路由器的每個(gè)數(shù)據(jù)幀尋找一條最佳傳輸路徑囊颅,并將該數(shù)據(jù)有效地傳送到目的站點(diǎn)当悔。由此可見(jiàn),選擇最佳路徑的策略即路由算法是路由器的關(guān)鍵所在踢代。為了完成這項(xiàng)工作盲憎,在路由器中保存著各種傳輸路徑的相關(guān)數(shù)據(jù)――路由表(RoutingTable),供路由選擇時(shí)使用胳挎。

路由工作包含兩個(gè)基本的動(dòng)作:

1. 確定最佳路徑

為了幫助選路饼疙,路由算法初始化并維護(hù)包含路徑信息的路由表,路徑信息根據(jù)使用的路由算法不同而不同慕爬。路由算法根據(jù)許多信息來(lái)填充路由表窑眯。

分級(jí)路由廣泛應(yīng)用于互聯(lián)網(wǎng)路由中,并且使用了多種路由協(xié)議医窿。使用DV(距離向量)算法來(lái)查找節(jié)點(diǎn)間的最佳路由磅甩,在分級(jí)路由中,路由器被分成很多組姥卢,稱為區(qū)域卷要。每個(gè)路由器都只有自己所在區(qū)域路由器的信息,而沒(méi)有其他區(qū)域路由器的信息隔显。所以在其路由表中却妨,路由器只需要存儲(chǔ)其他每個(gè)區(qū)域的一條記錄。再使用路由表轉(zhuǎn)發(fā)最長(zhǎng)匹配原則進(jìn)行數(shù)據(jù)分發(fā)括眠。

image

當(dāng)路由器收到一個(gè)IP數(shù)據(jù)包時(shí)彪标,會(huì)將數(shù)據(jù)包的目的IP地址與自己本地路由表中的表項(xiàng)進(jìn)行bit by bit的逐位查找,直到找到匹配度最長(zhǎng)的條目掷豺,這叫最長(zhǎng)匹配原則捞烟。

關(guān)于路由查找的幾個(gè)重點(diǎn)內(nèi)容:

  • 不同的前綴(網(wǎng)絡(luò)號(hào)+掩碼薄声,缺一不可),在路由表中屬于不同的路由
  • 相同的前綴题画,通過(guò)不同的協(xié)議獲取默辨,先比AD,后比metric
  • 這是一般情況苍息,當(dāng)然有二般情況缩幸,這就要看特定的環(huán)境和特定的路由協(xié)議了
  • 默認(rèn)采用最長(zhǎng)匹配原則,匹配竞思,則轉(zhuǎn)發(fā)表谊;無(wú)匹配,則找默認(rèn)路由盖喷,默認(rèn)路由都沒(méi)有爆办,則丟棄
  • 路由器的行為是逐跳的,到目標(biāo)網(wǎng)絡(luò)的沿路徑每個(gè)路由器都必須有關(guān)于目的地的路由
  • 數(shù)據(jù)是雙向的课梳,考慮流量的時(shí)候距辆,要關(guān)注流量的往返
2. 通過(guò)網(wǎng)絡(luò)傳輸信息

多數(shù)情況下,某主機(jī)決定向另一個(gè)主機(jī)發(fā)送數(shù)據(jù)暮刃,通過(guò)某些方法(如ARP)獲得路由器的地址后跨算,源主機(jī)發(fā)送指向該路由器的物理(MAC)地址的數(shù)據(jù)包,其協(xié)議地址是指向目的主機(jī)的沾歪。

路由器查看了數(shù)據(jù)包的目的協(xié)議地址后漂彤,確定是否知道如何轉(zhuǎn)發(fā)該包,如果路由器不知道如何轉(zhuǎn)發(fā)灾搏,通常就將之丟棄挫望。如果路由器知道如何轉(zhuǎn)發(fā),就把目的物理地址變成下一跳的物理地址并向之發(fā)送狂窑。下一跳可能就是最終的目的主機(jī)媳板,如果不是,通常為另一個(gè)路由器泉哈,它將執(zhí)行同樣的步驟蛉幸。當(dāng)分組在網(wǎng)絡(luò)中流動(dòng)時(shí),它的物理地址在改變丛晦,但其協(xié)議地址始終不變奕纫。

工作原理

路由器是第三層網(wǎng)絡(luò)設(shè)備,這樣說(shuō)大家可能都不理解烫沙,就先說(shuō)一下集線器和交換機(jī)吧匹层。集線器工作在第一層(即物理層),它沒(méi)有智能處理能力锌蓄,對(duì)它來(lái)說(shuō)升筏,數(shù)據(jù)只是電流而已撑柔,當(dāng)一個(gè)端口的電流傳到集線器中時(shí),它只是簡(jiǎn)單地將電流傳送到其他端口您访,至于其他端口連接的計(jì)算機(jī)接收不接收這些數(shù)據(jù)铅忿,它就不管了。交換機(jī)工作在第二層(即數(shù)據(jù)鏈路層)灵汪,它要比集線器智能一些檀训,對(duì)它來(lái)說(shuō),網(wǎng)絡(luò)上的數(shù)據(jù)就是MAC地址的集合享言,它能分辨出幀中的源MAC地址和目的MAC地址肢扯,因此可以在任意兩個(gè)端口間建立聯(lián)系,但是交換機(jī)并不懂得IP地址担锤,它只知道MAC地址。路由器工作在第三層(即網(wǎng)絡(luò)層)乍钻,它比交換機(jī)還要“聰明”一些肛循,它能理解數(shù)據(jù)中的IP地址,如果它接收到一個(gè)數(shù)據(jù)包银择,就檢查其中的IP地址多糠,如果目標(biāo)地址是本地網(wǎng)絡(luò)的就不理會(huì),如果是其他網(wǎng)絡(luò)的浩考,就將數(shù)據(jù)包轉(zhuǎn)發(fā)出本地網(wǎng)絡(luò)夹孔。

NAT與路由器

上面介紹路由的轉(zhuǎn)發(fā),是說(shuō)只替換MAC地址來(lái)進(jìn)行轉(zhuǎn)發(fā)析孽,但I(xiàn)P卻不會(huì)改變搭伤,這種轉(zhuǎn)發(fā)在Internet內(nèi)傳播是沒(méi)有問(wèn)題的,因?yàn)镮P都是公共IP袜瞬。

但如果路由器是連接這局域網(wǎng)和外部網(wǎng)絡(luò)怜俐,這是IP就不能通用了,必須經(jīng)過(guò)NAT轉(zhuǎn)換成外部網(wǎng)絡(luò)IP邓尤。我們?nèi)粘<矣玫穆酚善鞫际荖AT模式拍鲤,先進(jìn)行NAT(如地址轉(zhuǎn)換、端口轉(zhuǎn)換等)汞扎,再根據(jù)路由表進(jìn)行轉(zhuǎn)發(fā)季稳。

三 一條信息的網(wǎng)絡(luò)請(qǐng)求過(guò)程

如果看完聯(lián)網(wǎng)上面介紹的知識(shí)點(diǎn),對(duì)于這個(gè)標(biāo)題其實(shí)就已經(jīng)有了大概的答案了澈魄。重點(diǎn)還是在路由器上景鼠,由它執(zhí)行數(shù)據(jù)發(fā)送。

  1. 源主機(jī)在發(fā)起通信之前一忱,將自己的IP與目標(biāo)主機(jī)的IP進(jìn)行比較莲蜘,如果兩者位于同一網(wǎng)段(用子網(wǎng)掩碼計(jì)算后具有相同的網(wǎng)絡(luò)號(hào))谭确,那么源主機(jī)直接向目的主機(jī)發(fā)送ARP請(qǐng)求,在接收到目的主機(jī)的ARP應(yīng)答后獲取對(duì)方MAC地址票渠,然后用對(duì)方的MAC地址作為目標(biāo)MAC地址進(jìn)行報(bào)文發(fā)送逐哈,位于同一VLAN(網(wǎng)段)的主機(jī)互訪時(shí)屬于這種情況,這是互聯(lián)的交換機(jī)做二層轉(zhuǎn)發(fā)问顷。
  2. 當(dāng)源主機(jī)判斷目的主機(jī)與自己位于不同網(wǎng)段時(shí)昂秃,它會(huì)通過(guò)網(wǎng)關(guān)來(lái)提交報(bào)文,即發(fā)送ARP請(qǐng)求來(lái)獲取網(wǎng)關(guān)IP地址對(duì)應(yīng)的MAC杜窄,在得到網(wǎng)關(guān)的ARP應(yīng)答后肠骆,用網(wǎng)關(guān)MAC作為報(bào)文目的MAC進(jìn)行報(bào)文發(fā)送……也就是路由器的某個(gè)端口。注意塞耕,報(bào)文的源IP是源主機(jī)IP蚀腿,目的IP依然是目的主機(jī)IP
  3. 當(dāng)網(wǎng)關(guān)路由器接收到以太網(wǎng)數(shù)據(jù)幀時(shí)扫外,發(fā)現(xiàn)數(shù)據(jù)幀中的目標(biāo)MAC地址是自己的某一個(gè)端口的物理地址莉钙,這時(shí)路由器會(huì)把以太網(wǎng)數(shù)據(jù)幀的封裝去掉。路由器認(rèn)為這個(gè)IP數(shù)據(jù)包是要通過(guò)自己進(jìn)行轉(zhuǎn)發(fā)筛谚,如果路由器轉(zhuǎn)發(fā)IP在同一個(gè)網(wǎng)絡(luò)磁玉,接著它就在匹配路由表(包含目標(biāo)地址和指向目標(biāo)地址的指針)。匹配到路由項(xiàng)后驾讲,它就將包發(fā)往下一條地址蚊伞。路由器轉(zhuǎn)發(fā)數(shù)據(jù)包也是這樣,它始終是不會(huì)改IP地址的吮铭,只會(huì)改源/目標(biāo)MAC时迫。
  4. 如果目的地址經(jīng)路由表對(duì)比,發(fā)現(xiàn)轉(zhuǎn)發(fā)IP不是在本網(wǎng)中沐兵,有nat就將改變?cè)吹刂返腎P(原源地址的Ip地址改為了路由器的IP地址)别垮,路由器將數(shù)據(jù)包轉(zhuǎn)發(fā)到相應(yīng)的端口,進(jìn)行通信扎谎。
  5. 萬(wàn)一路由遇到目的MAC是廣播地址怎么辦碳想?IP的廣播有三種:
    255.255.255.255叫本地廣播,也叫直播毁靶,direct broadcast胧奔,不跨路由器
    172.16.33.255叫子網(wǎng)廣播预吆,廣播給172.16.33.0這個(gè)子網(wǎng)龙填,可以跨路由器
    172.16.255.255叫全子網(wǎng)廣播,廣播給172.16.0.0這個(gè)主網(wǎng)岩遗,可以跨路由器扇商。
    路由器是三層設(shè)備,可以隔離廣播宿礁,但并不是所有廣播都隔離案铺。事實(shí)上只有本地廣播路由器才不轉(zhuǎn)發(fā),對(duì)于子網(wǎng)廣播和全子網(wǎng)廣播梆靖,路由器是轉(zhuǎn)發(fā)的控汉。為什么呢?我們來(lái)看255.255.255.255的廣播返吻,在MAC的封裝中姑子,對(duì)應(yīng)的目的MAC是廣播,而子網(wǎng)廣播和全子網(wǎng)廣播测僵,對(duì)應(yīng)的目的MAC是單播街佑,所以路由器會(huì)轉(zhuǎn)發(fā)。所以路由器隔離的廣播是目的MAC為全1的廣播捍靠,對(duì)于目的MAC是單播的上層廣播舆乔,路由器是不能隔離的
  6. IP數(shù)據(jù)包經(jīng)由路由轉(zhuǎn)發(fā)的時(shí)候 源/目的IP剂公,源/目的MAC是否發(fā)生改變,如何改變吊宋?
    A—–(B1-B2)—–(C1-C2)——E
    如上拓?fù)鋱D為例纲辽,B1和B2是路由器B上的兩個(gè)接口,C1和C2是路由器C上的兩個(gè)接口璃搜,A和E是PC拖吼,由主機(jī)A向主機(jī)E發(fā)送數(shù)據(jù)包,那么在主機(jī)A形成的數(shù)據(jù)包的目的IP就是E的IP这吻,源IP就是主機(jī)A的IP地址吊档,目標(biāo)MAC地址就是B1的MAC地址,源MAC地址就是A的MAC地址唾糯。
    由A發(fā)給路由器B怠硼,B經(jīng)過(guò)重封裝后,源IP和目標(biāo)IP是不變的移怯,源MAC地址變成B2的MAC地址香璃,目標(biāo)MAC地址變成C1的MAC地址,封裝完成發(fā)送給路由器C舟误,路由器C接收到數(shù)據(jù)包后和B做的操作是一樣的葡秒,源IP和目標(biāo)IP的不變的,源MAC地址變成C2的MAC地址,目標(biāo)MAC地址變成主機(jī)E的MAC地址眯牧,然后發(fā)送給主機(jī)E蹋岩,這樣E就收到了這個(gè)數(shù)據(jù)包,當(dāng)恢復(fù)數(shù)據(jù)包的時(shí)候就是把收到的數(shù)據(jù)包的源IP地址(主機(jī)A的IP地址)和源MAC地址(接口C2的MAC地址)作為他的目標(biāo)IP和目標(biāo)MAC地址学少。

參考

ARP詳解

NAT(地址轉(zhuǎn)換技術(shù))詳解

路由表轉(zhuǎn)發(fā)最長(zhǎng)匹配原則

路由表

路由表的原理和作用

路由

一次完整的HTTP請(qǐng)求響應(yīng)過(guò)程(很詳細(xì))

路由器轉(zhuǎn)發(fā)規(guī)則

IP數(shù)據(jù)包經(jīng)由路由轉(zhuǎn)發(fā)的時(shí)候,源ip和目的IP是否改變

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末剪个,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旱易,更是在濱河造成了極大的恐慌禁偎,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,968評(píng)論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件阀坏,死亡現(xiàn)場(chǎng)離奇詭異如暖,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)忌堂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門(mén)盒至,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人士修,你說(shuō)我怎么就攤上這事枷遂。” “怎么了棋嘲?”我有些...
    開(kāi)封第一講書(shū)人閱讀 153,220評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵酒唉,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我沸移,道長(zhǎng)痪伦,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 55,416評(píng)論 1 279
  • 正文 為了忘掉前任雹锣,我火速辦了婚禮网沾,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘蕊爵。我一直安慰自己辉哥,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評(píng)論 5 374
  • 文/花漫 我一把揭開(kāi)白布攒射。 她就那樣靜靜地躺著醋旦,像睡著了一般。 火紅的嫁衣襯著肌膚如雪会放。 梳的紋絲不亂的頭發(fā)上浑度,一...
    開(kāi)封第一講書(shū)人閱讀 49,144評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音鸦概,去河邊找鬼箩张。 笑死甩骏,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的先慷。 我是一名探鬼主播饮笛,決...
    沈念sama閱讀 38,432評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼论熙!你這毒婦竟也來(lái)了福青?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,088評(píng)論 0 261
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤脓诡,失蹤者是張志新(化名)和其女友劉穎无午,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體祝谚,經(jīng)...
    沈念sama閱讀 43,586評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡宪迟,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了交惯。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片次泽。...
    茶點(diǎn)故事閱讀 38,137評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖席爽,靈堂內(nèi)的尸體忽然破棺而出意荤,到底是詐尸還是另有隱情,我是刑警寧澤只锻,帶...
    沈念sama閱讀 33,783評(píng)論 4 324
  • 正文 年R本政府宣布玖像,位于F島的核電站,受9級(jí)特大地震影響齐饮,放射性物質(zhì)發(fā)生泄漏御铃。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評(píng)論 3 307
  • 文/蒙蒙 一沈矿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧咬腋,春花似錦羹膳、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,333評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至寇壳,卻和暖如春醒颖,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背壳炎。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,559評(píng)論 1 262
  • 我被黑心中介騙來(lái)泰國(guó)打工泞歉, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,595評(píng)論 2 355
  • 正文 我出身青樓腰耙,卻偏偏與公主長(zhǎng)得像榛丢,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子挺庞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容