中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
UC頭條:重學(xué)網(wǎng)絡(luò)系列之(Ping與網(wǎng)關(guān))

網(wǎng)關(guān),路由,其實(shí)我們每個(gè)人上網(wǎng)都是需要的,但是具體的原理是不是得安排下。

重學(xué)網(wǎng)絡(luò)系列之(HTTP的前世今生)

重學(xué)網(wǎng)絡(luò)系列之(我的名字叫IP)

人生一世,如鏡花水月,今朝姹紫嫣紅,明日已成夢幻泡影。與其追憶故園芳菲,莫不如放下繁華,重覓一片竹海。一支瘦笛,一曲笑傲江湖。一彎冷月,一肩千古情仇。

ICMP和Ping

基本上我們都碰到過網(wǎng)絡(luò)連不上的問題,那臺機(jī)器明明就在那里,你甚至都可以通過機(jī)器的終端連上去看。它看著好好的,可是就是連不上去,究竟是哪里出了問題呢

一般來說我們都會想到用Ping,那你知道Ping是如何工作的嗎?

ping是基于ICMP協(xié)議工作的。ICMP全稱InternetControlMessageProtocol,就是互聯(lián)網(wǎng)控制報(bào)文協(xié)議。這里面的關(guān)鍵詞是“控制”,那具體是怎么控制的呢?

ICMP協(xié)議是一個(gè)網(wǎng)絡(luò)層協(xié)議。

一個(gè)新搭建好的網(wǎng)絡(luò),往往需要先進(jìn)行一個(gè)簡單的測試,來驗(yàn)證網(wǎng)絡(luò)是否暢通;但是IP協(xié)議并不提供可靠傳輸。如果丟包了,IP協(xié)議并不能通知傳輸層是否丟包以及丟包的原因。所以我們就需要一種協(xié)議來完成這樣的功能–ICMP協(xié)議。

ICMP協(xié)議的功能

確認(rèn)IP包是否成功到達(dá)目標(biāo)地址

通知在發(fā)送過程中IP包被丟棄的原因

我們需要注意幾點(diǎn):

ICMP是基于IP協(xié)議工作的,但是它并不是傳輸層的功能,因此仍然把它歸結(jié)為網(wǎng)絡(luò)層協(xié)議

ICMP只能搭配IPv4使用,如果是IPv6的情況下,需要是用ICMPv6

ICMP協(xié)議的格式

ICMP報(bào)文包含在IP數(shù)據(jù)報(bào)中,IP報(bào)頭在ICMP報(bào)文的最前面。一個(gè)ICMP報(bào)文包括IP報(bào)頭(至少20字節(jié))、ICMP報(bào)頭(至少八字節(jié))和ICMP報(bào)文(屬于ICMP報(bào)文的數(shù)據(jù)部分)。當(dāng)IP報(bào)頭中的協(xié)議字段值為1時(shí),就說明這是一個(gè)ICMP報(bào)文。ICMP報(bào)頭如下圖所示。

點(diǎn)擊加載圖片

ping的發(fā)送和接收過程。

點(diǎn)擊加載圖片

假定主機(jī)A的IP地址是192.168.1.1,主機(jī)B的IP地址是192.168.1.2,它們都在同一個(gè)子網(wǎng)。那當(dāng)你在主機(jī)A上運(yùn)行“ping192.168.1.2”后,會發(fā)生什么呢?

ping命令執(zhí)行的時(shí)候,源主機(jī)首先會構(gòu)建一個(gè)ICMP請求數(shù)據(jù)包,ICMP數(shù)據(jù)包內(nèi)包含多個(gè)字段。最重要的是兩個(gè),第一個(gè)是類型字段,對于請求數(shù)據(jù)包而言該字段為8;另外一個(gè)是順序號,主要用于區(qū)分連續(xù)ping的時(shí)候發(fā)出的多個(gè)數(shù)據(jù)包。每發(fā)出一個(gè)請求數(shù)據(jù)包,順序號會自動加1。為了能夠計(jì)算往返時(shí)間RTT,它會在報(bào)文的數(shù)據(jù)部分插入發(fā)送時(shí)間。

然后,由ICMP協(xié)議將這個(gè)數(shù)據(jù)包連同地址192.168.1.2一起交給IP層。IP層將以192.168.1.2作為目的地址,本機(jī)IP地址作為源地址,加上一些其他控制信息,構(gòu)建一個(gè)IP數(shù)據(jù)包。

接下來,需要加入MAC頭。如果在本節(jié)ARP映射表中查找出IP地址192.168.1.2所對應(yīng)的MAC地址,則可以直接使用;如果沒有,則需要發(fā)送ARP協(xié)議查詢MAC地址,獲得MAC地址后,由數(shù)據(jù)鏈路層構(gòu)建一個(gè)數(shù)據(jù)幀,目的地址是IP層傳過來的MAC地址,源地址則是本機(jī)的MAC地址;還要附加上一些控制信息,依據(jù)以太網(wǎng)的介質(zhì)訪問規(guī)則,將它們傳送出去。

主機(jī)B收到這個(gè)數(shù)據(jù)幀后,先檢查它的目的MAC地址,并和本機(jī)的MAC地址對比,如符合,則接收,否則就丟棄。接收后檢查該數(shù)據(jù)幀,將IP數(shù)據(jù)包從幀中提取出來,交給本機(jī)的IP層。同樣,IP層檢查后,將有用的信息提取后交給ICMP協(xié)議。

主機(jī)B會構(gòu)建一個(gè)ICMP應(yīng)答包,應(yīng)答數(shù)據(jù)包的類型字段為0,順序號為接收到的請求數(shù)據(jù)包中的順序號,然后再發(fā)送出去給主機(jī)A。在規(guī)定的時(shí)候間內(nèi),源主機(jī)如果沒有接到ICMP的應(yīng)答包,則說明目標(biāo)主機(jī)不可達(dá);如果接收到了ICMP應(yīng)答包,則說明目標(biāo)主機(jī)可達(dá)。

MAC頭和IP頭的細(xì)節(jié)

一旦配置了IP地址和網(wǎng)關(guān),往往就能夠指定目標(biāo)地址進(jìn)行訪問了。由于在跨網(wǎng)關(guān)訪問的時(shí)候,牽扯到MAC地址和IP地址的變化,這里有必要詳細(xì)描述一下MAC頭和IP頭的細(xì)節(jié)。

點(diǎn)擊加載圖片

在MAC頭里面,先是目標(biāo)MAC地址,然后是源MAC地址,然后有一個(gè)協(xié)議類型,用來說明里面是IP協(xié)議。IP頭里面的版本號,目前主流的還是IPv4,這里到了下一層的協(xié)議,也就是,是TCP還是UDP。最重要的就是源IP和目標(biāo)IP。先是源IP地址,然后是目標(biāo)IP地址。

在任何一臺機(jī)器上,當(dāng)要訪問另一個(gè)IP地址的時(shí)候,都會先判斷,這個(gè)目標(biāo)IP地址,和當(dāng)前機(jī)器的IP地址,是否在同一個(gè)網(wǎng)段。怎么判斷同一個(gè)網(wǎng)段呢?需要CIDR和子網(wǎng)掩碼。

如果是同一個(gè)網(wǎng)段,例如,你訪問你旁邊的兄弟的電腦,那就沒網(wǎng)關(guān)什么事情,直接將源地址和目標(biāo)地址放入IP頭中,然后通過ARP獲得MAC地址,將源MAC和目的MAC放入MAC頭中,發(fā)出去就可以了。

如果不是同一網(wǎng)段,例如,你要訪問你們校園網(wǎng)里面的BBS,該怎么辦?這就需要發(fā)往默認(rèn)網(wǎng)關(guān)Gateway。Gateway的地址一定是和源IP地址是一個(gè)網(wǎng)段的。往往不是第一個(gè),就是第二個(gè)。例如192.168.1.0/24這個(gè)網(wǎng)段,Gateway往往會是192.168.1.1/24或者192.168.1.2/24。

如何發(fā)往默認(rèn)網(wǎng)關(guān)呢?網(wǎng)關(guān)不是和源IP地址是一個(gè)網(wǎng)段的么?這個(gè)過程就和發(fā)往同一個(gè)網(wǎng)段的其他機(jī)器是一樣的:將源地址和目標(biāo)IP地址放入IP頭中,通過ARP獲得網(wǎng)關(guān)的MAC地址,將源MAC和網(wǎng)關(guān)的MAC放入MAC頭中,發(fā)送出去。網(wǎng)關(guān)所在的端口,例如192.168.1.1/24將網(wǎng)絡(luò)包收進(jìn)來,然后接下來怎么做,就完全看網(wǎng)關(guān)的了。

網(wǎng)關(guān)往往是一個(gè)路由器,是一個(gè)三層轉(zhuǎn)發(fā)的設(shè)備。啥叫三層設(shè)備?前面也說過了,就是把MAC頭和IP頭都取下來,然后根據(jù)里面的內(nèi)容,看看接下來把包往哪里轉(zhuǎn)發(fā)的設(shè)備。

很多情況下,人們把網(wǎng)關(guān)就叫作路由器。其實(shí)不完全準(zhǔn)確,而另一種比喻更加恰當(dāng):路由器是一臺設(shè)備,它有五個(gè)網(wǎng)口或者網(wǎng)卡,相當(dāng)于有五只手,分別連著五個(gè)局域網(wǎng)。每只手的IP地址都和局域網(wǎng)的IP地址相同的網(wǎng)段,每只手都是它握住的那個(gè)局域網(wǎng)的網(wǎng)關(guān)。

任何一個(gè)想發(fā)往其他局域網(wǎng)的包,都會到達(dá)其中一只手,被拿進(jìn)來,拿下MAC頭和IP頭,看看,根據(jù)自己的路由算法,選擇另一只手,加上IP頭和MAC頭,然后扔出去。

IP頭和MAC頭哪些變、哪些不變?

MAC地址是一個(gè)局域網(wǎng)內(nèi)才有效的地址。因而,MAC地址只要過網(wǎng)關(guān),就必定會改變,因?yàn)橐呀?jīng)換了局域網(wǎng)。兩者主要的區(qū)別在于IP地址是否改變。不改變IP地址的網(wǎng)關(guān),我們稱為轉(zhuǎn)發(fā)網(wǎng)關(guān);改變IP地址的網(wǎng)關(guān),我們稱為NAT網(wǎng)關(guān)。

結(jié)合下面的圖

點(diǎn)擊加載圖片

服務(wù)器A要訪問服務(wù)器B。首先,服務(wù)器A會思考,192.168.4.101和我不是一個(gè)網(wǎng)段的,因而需要先發(fā)給網(wǎng)關(guān)。那網(wǎng)關(guān)是誰呢?已經(jīng)靜態(tài)配置好了,網(wǎng)關(guān)是192.168.1.1。網(wǎng)關(guān)的MAC地址是多少呢?發(fā)送ARP獲取網(wǎng)關(guān)的MAC地址,然后發(fā)送包。包的內(nèi)容是這樣的:

源MAC:服務(wù)器A的MAC

目標(biāo)MAC:192.168.1.1這個(gè)網(wǎng)口的MAC

源IP:192.168.1.101

目標(biāo)IP:192.168.4.101

包到達(dá)192.168.1.1這個(gè)網(wǎng)口,發(fā)現(xiàn)MAC一致,將包收進(jìn)來,開始思考往哪里轉(zhuǎn)發(fā)。

在路由器A中配置了靜態(tài)路由之后,要想訪問192.168.4.0/24,要從192.168.56.1這個(gè)口出去,下一跳為192.168.56.2。

于是,路由器A思考的時(shí)候,匹配上了這條路由,要從192.168.56.1這個(gè)口發(fā)出去,發(fā)給192.168.56.2,那192.168.56.2的MAC地址是多少呢?路由器A發(fā)送ARP獲取192.168.56.2的MAC地址,然后發(fā)送包。包的內(nèi)容是這樣的:

源MAC:192.168.56.1的MAC地址

目標(biāo)MAC:192.168.56.2的MAC地址

源IP:192.168.1.101

目標(biāo)IP:192.168.4.101

包到達(dá)192.168.56.2這個(gè)網(wǎng)口,發(fā)現(xiàn)MAC一致,將包收進(jìn)來,開始思考往哪里轉(zhuǎn)發(fā)。在路由器B中配置了靜態(tài)路由,要想訪問192.168.4.0/24,要從192.168.4.1這個(gè)口出去,沒有下一跳了。因?yàn)槲矣沂诌@個(gè)網(wǎng)卡,就是這個(gè)網(wǎng)段的,我是最后一跳了。

于是,路由器B思考的時(shí)候,匹配上了這條路由,要從192.168.4.1這個(gè)口發(fā)出去,發(fā)給192.168.4.101。那192.168.4.101的MAC地址是多少呢?路由器B發(fā)送ARP獲取192.168.4.101的MAC地址,然后發(fā)送包。包的內(nèi)容是這樣的:

源MAC:192.168.4.1的MAC地址

目標(biāo)MAC:192.168.4.101的MAC地址

源IP:192.168.1.101

目標(biāo)IP:192.168.4.101

包到達(dá)服務(wù)器B,MAC地址匹配,將包收進(jìn)來。

通過這個(gè)過程可以看出,每到一個(gè)新的局域網(wǎng),MAC都是要變的,但是IP地址都不變。在IP頭里面,不會保存任何網(wǎng)關(guān)的IP地址。所謂的下一跳是,某個(gè)IP要將這個(gè)IP地址轉(zhuǎn)換為MAC放入MAC頭。

上面的過程遇到的問題

大家想想看哈,局域網(wǎng)之間沒有商量過,各定各的網(wǎng)段,因而IP段沖突了,如下圖

點(diǎn)擊加載圖片

最左面的地址是192.168.1.101,最右面的地址也是192.168.1.101,如果單從IP地址上看,簡直是自己訪問自己,其實(shí)是192.168.1.101要訪問192.168.1.101

怎么解決這個(gè)問題呢?既然局域網(wǎng)之間沒有商量過,你們各管各的,那到國際上,也即中間的局域網(wǎng)里面,就需要使用另外的地址。就像出國,不能用咱們自己的身份證,而要改用護(hù)照一樣,而不能用自己國家的身份證。

首先,目標(biāo)服務(wù)器B在國際上要有一個(gè)國際的身份,我們給它一個(gè)192.168.56.2。在網(wǎng)關(guān)B上,我們記下來,國際身份192.168.56.2對應(yīng)國內(nèi)身份192.168.1.101。凡是要訪問192.168.56.2,都轉(zhuǎn)成192.168.1.101。

于是,源服務(wù)器A要訪問目標(biāo)服務(wù)器B,要指定的目標(biāo)地址為192.168.56.2。這是它的國際身份。服務(wù)器A想,192.168.56.2和我不是一個(gè)網(wǎng)段的,因而需要發(fā)給網(wǎng)關(guān),網(wǎng)關(guān)是誰?已經(jīng)靜態(tài)配置好了,網(wǎng)關(guān)是192.168.1.1,網(wǎng)關(guān)的MAC地址是多少?發(fā)送ARP獲取網(wǎng)關(guān)的MAC地址,然后發(fā)送包。包的內(nèi)容是這樣的:

源MAC:服務(wù)器A的MAC

目標(biāo)MAC:192.168.1.1這個(gè)網(wǎng)口的MAC

源IP:192.168.1.101

目標(biāo)IP:192.168.56.2

包到達(dá)192.168.1.1這個(gè)網(wǎng)口,發(fā)現(xiàn)MAC一致,將包收進(jìn)來,開始思考往哪里轉(zhuǎn)發(fā)。

在路由器A中配置了靜態(tài)路由:要想訪問192.168.56.2/24,要從192.168.56.1這個(gè)口出去,沒有下一跳了,因?yàn)槲矣沂诌@個(gè)網(wǎng)卡,就是這個(gè)網(wǎng)段的,我是最后一跳了。

于是,路由器A思考的時(shí)候,匹配上了這條路由,要從192.168.56.1這個(gè)口發(fā)出去,發(fā)給192.168.56.2。那192.168.56.2的MAC地址是多少呢?路由器A發(fā)送ARP獲取192.168.56.2的MAC地址。

當(dāng)網(wǎng)絡(luò)包發(fā)送到中間的局域網(wǎng)的時(shí)候,服務(wù)器A也需要有個(gè)國際身份,因而在國際上,源IP地址也不能用192.168.1.101,需要改成192.168.56.1。發(fā)送包的內(nèi)容是這樣的:

MAC:192.168.56.1的MAC地址

標(biāo)MAC:192.168.56.2的MAC地址

IP:192.168.56.1

標(biāo)IP:192.168.56.2

包到達(dá)192.168.56.2這個(gè)網(wǎng)口,發(fā)現(xiàn)MAC一致,將包收進(jìn)來,開始思考往哪里轉(zhuǎn)發(fā)。路由器B是一個(gè)NAT網(wǎng)關(guān),它上面配置了,要訪問國際身份192.168.56.2對應(yīng)國內(nèi)身份192.168.1.101,于是改為訪問192.168.1.101。

在路由器B中配置了靜態(tài)路由:要想訪問192.168.1.0/24,要從192.168.1.1這個(gè)口出去,沒有下一跳了,因?yàn)槲矣沂诌@個(gè)網(wǎng)卡,就是這個(gè)網(wǎng)段的,我是最后一跳了。

于是,路由器B思考的時(shí)候,匹配上了這條路由,要從192.168.1.1這個(gè)口發(fā)出去,發(fā)給192.168.1.101。

那192.168.1.101的MAC地址是多少呢?路由器B發(fā)送ARP獲取192.168.1.101的MAC地址,然后發(fā)送包。內(nèi)容是這樣的:

源MAC:192.168.1.1的MAC地址

目標(biāo)MAC:192.168.1.101的MAC地址

源IP:192.168.56.1

目標(biāo)IP:192.168.1.101

從服務(wù)器B接收的包可以看出,源IP為服務(wù)器A的國際身份,因而發(fā)送返回包的時(shí)候,也發(fā)給這個(gè)國際身份,由路由器A做NAT,轉(zhuǎn)換為國內(nèi)身份。

從這個(gè)過程可以看出,IP地址也會變。這個(gè)過程用英文說就是NetworkAddressTranslation,簡稱NAT。

其實(shí)這第二種方式我們經(jīng)常見,現(xiàn)在大家每家都有家用路由器,家里的網(wǎng)段都是192.168.1.x,所以你肯定訪問不了你鄰居家的這個(gè)私網(wǎng)的IP地址的。所以,當(dāng)我們家里的包發(fā)出去的時(shí)候,都被家用路由器NAT成為了運(yùn)營商的地址了。

如何配置路由?

路由器就是一臺網(wǎng)絡(luò)設(shè)備,它有多張網(wǎng)卡。當(dāng)一個(gè)入口的網(wǎng)絡(luò)包送到路由器時(shí),它會根據(jù)一個(gè)本地的轉(zhuǎn)發(fā)信息庫,來決定如何正確地轉(zhuǎn)發(fā)流量。這個(gè)轉(zhuǎn)發(fā)信息庫通常被稱為路由表。一張路由表中會有多條路由規(guī)則。每一條規(guī)則至少包含這三項(xiàng)信息。

目的網(wǎng)絡(luò):這個(gè)包想去哪兒?

出口設(shè)備:將包從哪個(gè)口扔出去?

下一跳網(wǎng)關(guān):下一個(gè)路由器的地址。

例如,我們設(shè)置iprouteadd10.176.48.0/20via10.173.32.1deveth0,就說明要去10.176.48.0/20這個(gè)目標(biāo)網(wǎng)絡(luò),要從eth0端口出去,經(jīng)過10.173.32.1。

動態(tài)路由算法

在大學(xué)里面學(xué)習(xí)計(jì)算機(jī)網(wǎng)絡(luò)與數(shù)據(jù)結(jié)構(gòu)的時(shí)候,知道求最短路徑常用的有兩種方法,一種是Bellman-Ford算法,一種是Dijkstra算法。在計(jì)算機(jī)網(wǎng)絡(luò)中基本也是用這兩種方法計(jì)算的。

距離矢量路由算法

鏈路狀態(tài)路由算法

結(jié)尾

問大家?guī)讉€(gè)問題

當(dāng)你訪問www.taobao.com的時(shí)候,你發(fā)送的包需要通過NAT轉(zhuǎn)換成公網(wǎng)ip,然后淘寶返回的數(shù)據(jù)又要從公網(wǎng)IP變成你的局域網(wǎng)IP,假設(shè)我局域網(wǎng)很多IP,他怎么知道哪個(gè)對應(yīng)的是哪個(gè)

NAT在進(jìn)行地址替換時(shí)不僅僅包含IP地址,還有端口號。具體說來就是,我們在進(jìn)行連接外網(wǎng)服務(wù)器請求的數(shù)據(jù)包中,除了源、目的IP地址外,還有源、目的端口號。其中目的端口號是固定的,比如21或80等等。但源端口號是隨機(jī)生成的。當(dāng)數(shù)據(jù)包到達(dá)進(jìn)行NAT的設(shè)備時(shí),除了私有IP地址會被替換成公網(wǎng)IP地址外,端口號也會被替換成NAT隨機(jī)生成的端口號。NAT的端口號和局域網(wǎng)中的主機(jī)一一對應(yīng),同時(shí)NAT設(shè)備維護(hù)一張端口號和主機(jī)對應(yīng)的表。當(dāng)外網(wǎng)服務(wù)器返回?cái)?shù)據(jù)到NAT設(shè)備時(shí),NAT設(shè)備通過返回?cái)?shù)據(jù)包中的端口號找到局域網(wǎng)中的主機(jī)并將數(shù)據(jù)轉(zhuǎn)發(fā)。

這樣就完整的實(shí)現(xiàn)了局域網(wǎng)主機(jī)上外網(wǎng)的功能。

當(dāng)我們網(wǎng)絡(luò)中的包在網(wǎng)絡(luò)中傳輸?shù)臅r(shí)候,目標(biāo)mac地址和源mac地址的變化,目標(biāo)ip和源Ip的變化。

這個(gè)答案在文章中。

參考

趣談網(wǎng)絡(luò)

ICMP作原理。

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
TCP/IP詳解
網(wǎng)絡(luò)編程——通信基礎(chǔ)
交換機(jī)和路由器的數(shù)據(jù)包轉(zhuǎn)發(fā)流程簡述
計(jì)算機(jī)網(wǎng)絡(luò)模型——網(wǎng)絡(luò)層
局域網(wǎng)內(nèi)pc是如何訪問外網(wǎng)?答案在最后
Ping命令不能PING通的種種解惑
更多類似文章 >>
生活服務(wù)
熱點(diǎn)新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服