/**
本篇博客由
汗青ZJF整理并發(fā)布, 轉(zhuǎn)載請注明出處:
http://blog.csdn.net/zjf280441589/article/category/1854365*/
什么是虛擬網(wǎng)絡(luò)互連?
所謂虛擬互連網(wǎng)絡(luò)也就是邏輯互連網(wǎng)絡(luò),它的意思就是互連起來的各種物理網(wǎng)絡(luò)的異構(gòu)性本來是客觀存在的(比如局域網(wǎng)有的采用的是以太網(wǎng), 有的采用令牌環(huán)網(wǎng)),但是我們利用 IP 協(xié)議就可以使這些性能各異的網(wǎng)絡(luò)從用戶角度來看好像是一個統(tǒng)一的網(wǎng)絡(luò)(在網(wǎng)絡(luò)的上層, 我們看不到各網(wǎng)絡(luò)具體的異構(gòu)網(wǎng)絡(luò)細(xì)節(jié))。使用IP 協(xié)議的虛擬互連網(wǎng)絡(luò)可簡稱為 IP 網(wǎng)。
好處是: 當(dāng)互聯(lián)網(wǎng)上的處于不同網(wǎng)絡(luò)的主機之間進行通信時, 就好像在一個網(wǎng)絡(luò)上通信一樣, 而看不見互連的各具體的網(wǎng)絡(luò)異構(gòu)細(xì)節(jié)(如具體的編址方案, 路由選擇協(xié)議等).
IP報文
各個字段說明
版本
IP協(xié)議版本號, IPv4此字段值為4, IPv6此字段值為6
首部長度
取值范圍5(0101)~15(1111), 單位為4字節(jié),包括固定部分和可選部分, 因此首部最長為60字節(jié), 最短為20字節(jié)(不包括選項和填充部分);
服務(wù)類型
長度為8位(由于該字段一直棄而不用, 因此不用考慮)
總長度
該字段長度為16位, 以字節(jié)為單位, 總長度包含IP的頭部和數(shù)據(jù)部分, IP數(shù)據(jù)報最大長度為65535字節(jié), 但是注意最大不要超過MTU的長度
標(biāo)識
16位長度, 唯一標(biāo)識一個數(shù)據(jù)報,可以將之當(dāng)成一個計數(shù)器, 每發(fā)送一個數(shù)據(jù)包, 則該值加1, 如果數(shù)據(jù)報分片,則每個分片的標(biāo)識都一樣, 各個分片共享一個標(biāo)識號
標(biāo)志
3位標(biāo)志中第一位不使用, 第二位為DF(Don`t Fragment不分片), 如果該位為1, 并且傳輸?shù)臄?shù)據(jù)報超過最大傳輸單元(MTU), 則該數(shù)據(jù)報會被丟棄, 并發(fā)送一個ICMP差錯報文; 第三位MF(More Fragment更多分片),表示是否有更多的分片, 如果該位為1, 則說明后續(xù)還有分片, 最后一片MF為0
片偏移
用以指出該分段的第一個數(shù)據(jù)字節(jié)在原始數(shù)據(jù)報中的偏移位置(以8字節(jié)為單位),IP分片后每一個分組都具有自己的首部, 而且標(biāo)志位相同, 但是片偏移值不同, 通過片偏移值接收端可以重新組裝IP包
生存時間(TTL)
表示數(shù)據(jù)報最多可經(jīng)過的路由器的數(shù)量. 取值0~255,每經(jīng)過一個路由器, TTL值減1,為0時被丟棄, 并發(fā)送ICMP報文通知源主機, TTL可以避免數(shù)據(jù)報在路由器之間不斷循環(huán)(Tranceroute程序的實現(xiàn)原理)
協(xié)議類型
指明IP層上承載的是哪個高級協(xié)議, 在分用的過程中, 協(xié)議棧知道該交給上層的哪個協(xié)議處理, 如1為ICMP, 2為IGMP, 6為TCP, 17為UDP等.
頭部校驗和
保證數(shù)據(jù)報頭部的數(shù)據(jù)完整性,但校驗不包括數(shù)據(jù)部分。這樣做的目的有二:一是所有將數(shù)據(jù)封裝在IP數(shù)據(jù)包中的高層協(xié)議均含有覆蓋整個數(shù)據(jù)的校驗和,因此IP數(shù)據(jù)報沒有必要再對其所承載的數(shù)據(jù)部分進行校驗。二是每經(jīng)過一個路由器,IP數(shù)據(jù)報的頭部要發(fā)生改變(如TTL),而數(shù)據(jù)部分不變,這樣只對發(fā)生改變的頭部進行校驗,顯然不會浪費太多的時間。為了減少計算時間,一般不用CRC校驗碼,而是采用更簡單的網(wǎng)際校驗和(Internet Checksum)。
選項與填充
增加首部的可變部分是為了增加IP數(shù)據(jù)報的功能, 如支持排錯, 測量以及安全等, 選項長度從1到40字節(jié)不等, 取決于所選擇的項目(選項為4字節(jié)整數(shù)倍,否則用0填充); 但這樣就增加了每一個路由器處理數(shù)據(jù)的開銷, 實際上這些選項很少被使用, 很多路由器都并不考慮IP首部的選項字段;
IP地址分類
IP地址的編址方法,共經(jīng)歷了三個歷史階段。這三個階段是:
1)分類的 IP 地址。這是最基本的編址方法;
2)劃分子網(wǎng)。這是對最基本的編址方法的改進;
3)構(gòu)成超網(wǎng)。這是比較新的無分類編址方法,提出后很快得到推廣, 并沿用至今;
分類的IP地址:
A)為了適應(yīng)不同網(wǎng)絡(luò)規(guī)模的需求,將IP地址進行分類,不同類型IP地址擁有的主機數(shù)不一樣。兩級的 IP 地址可以記為:
IP 地址 ::= { <網(wǎng)絡(luò)號>, <主機號>}
B)特殊地址
對于因特網(wǎng) IP 地址中有特定的專用地址,不作分配(但他們還是IP地址):
(1) 主機地址全為"0"
不論哪類網(wǎng)絡(luò),主機地址全為"0"表示指向本網(wǎng),常用在路由表中。
(2) 主機地址全為"1"
主機地址全為"1"表示廣播地址,向特定的所在網(wǎng)上所有主機發(fā)送數(shù)據(jù)報。
(3) 32位全為"1"
若 IP 地址 4 字節(jié) 32 比特全為"1",表示僅在本網(wǎng)內(nèi)進行廣播發(fā)送(見Arp協(xié)議)。
(4) 網(wǎng)絡(luò)為127
TCP/IP 協(xié)議規(guī)定網(wǎng)絡(luò)號 127 不可用于任何網(wǎng)絡(luò)。其中有一個特別地址:127.0.0.1 稱之為還回地址(loop-back);
C)使用范圍:
網(wǎng)絡(luò)類別
最大網(wǎng)絡(luò)數(shù)
第一個可用的網(wǎng)絡(luò)號
最后一個可用的網(wǎng)絡(luò)號
每個網(wǎng)絡(luò)中的最大主機數(shù)
A
2^7 -2
1
126(127不可用)
2^24 -2
B
2^14 -1
128.1
191.255
2^16 -2
C
2^21 -1
192.0.1
223.255.255
2^8 -2
D)IP地址的重要特點
1)IP 地址是一種分等級的地址結(jié)構(gòu)。分兩個等級的好處是:
a. IP 地址管理機構(gòu)在分配 IP 地址時只分配網(wǎng)絡(luò)號,而剩下的主機號則由得到該網(wǎng)絡(luò)號的單位自行分配。這樣就方便了 IP 地址的管理。
b. 路由器僅根據(jù)目的主機所連接的網(wǎng)絡(luò)號來轉(zhuǎn)發(fā)分組(而不考慮目的主機號), 這樣就可以使路由表中的項目數(shù)大幅度減少,從而減小了路由表所占的存儲空間。
2)實際上 IP 地址是標(biāo)志一個主機/路由器和一條鏈路的接口。
當(dāng)一個主機同時連接到兩個網(wǎng)絡(luò)上時,該主機就必須同時具有兩個IP 地址,其網(wǎng)絡(luò)號 net-id 必須是不同的; 由于一個路由器至少應(yīng)當(dāng)連接到兩個網(wǎng)絡(luò)(這樣它才能將 IP 數(shù)據(jù)報從一個網(wǎng)絡(luò)轉(zhuǎn)發(fā)到另一個網(wǎng)絡(luò)),因此一個路由器至少應(yīng)當(dāng)有兩個不同的 IP 地址。
3)用轉(zhuǎn)發(fā)器或網(wǎng)橋連接起來的若干個局域網(wǎng)仍為一個網(wǎng)絡(luò),因此這些局域網(wǎng)都具有同樣的網(wǎng)絡(luò)號 net-id。
4)所有分配到net-id 的網(wǎng)絡(luò), 無論是范圍很小的局域網(wǎng),還是覆蓋很大地理范圍的廣域網(wǎng),都是平等的。
分組轉(zhuǎn)發(fā)算法
(1) 從數(shù)據(jù)報的首部提取目的站的 IP 地址 D, 得出目的網(wǎng)絡(luò)地址為 N。
(2) 若網(wǎng)絡(luò) N 與此路由器直接相連,則直接將數(shù)據(jù)報直接交付給目的站 D;否則是間接交付,執(zhí)行(3)。
(3) 若路由表中有目的地址為 D 的特定主機路由,則將數(shù)據(jù)報傳送給路由表中所指明的下一跳路由器;否則,執(zhí)行(4)。
(4) 若路由表中有到達(dá)網(wǎng)絡(luò) N 的路由,則將數(shù)據(jù)報傳送給路由表指明的下一跳路由器;否則,執(zhí)行(5)。
(5) 若路由表中有一個默認(rèn)路由,則將數(shù)據(jù)報傳送給路由表中所指明的默認(rèn)路由器;否則,執(zhí)行(6)。
(6) 報告轉(zhuǎn)發(fā)分組出錯。
子網(wǎng)劃分
一個擁有許多物理網(wǎng)絡(luò)的單位,可將所屬的物理網(wǎng)絡(luò)劃分為若干個子網(wǎng)。劃分子網(wǎng)純屬一個單位內(nèi)部的事情。本單位以外的網(wǎng)絡(luò)看不見這個網(wǎng)絡(luò)是由多少子網(wǎng)組成,因為這個單位對外仍然表現(xiàn)一個網(wǎng)絡(luò)。
劃分子網(wǎng)的方法是從網(wǎng)絡(luò)的主機號借用若干位作為子網(wǎng)號subnet-id。劃分子網(wǎng)增加了靈活性,但也減少了能夠連接在網(wǎng)絡(luò)上主機總數(shù)。于是兩級IP地址在本單位內(nèi)部就變?yōu)槿塈P地址:
IP地址 ::= {<網(wǎng)絡(luò)號>,<子網(wǎng)號>,<主機號>}
凡是從其他網(wǎng)絡(luò)發(fā)送給本單位某個主機的IP數(shù)據(jù)報,仍然是根據(jù)IP數(shù)據(jù)報的目的網(wǎng)絡(luò)號找到連接在本單位網(wǎng)絡(luò)上的路由器。但此路由器在收到IP數(shù)據(jù)報后,在按目的網(wǎng)絡(luò)號和子網(wǎng)號找到目的子網(wǎng),把IP數(shù)據(jù)報交付給目的主機;
子網(wǎng)掩碼
子網(wǎng)掩碼也是32位,由一串1和跟隨的一串0組成。子網(wǎng)掩碼中的1對應(yīng)于IP地址中原來的網(wǎng)絡(luò)號和子網(wǎng)號,而子網(wǎng)掩碼中的0對應(yīng)于現(xiàn)在的主機號。故將子網(wǎng)掩碼和IP地址進行按位”與“運算(AND),就可得出網(wǎng)絡(luò)地址, 由此可知:
A 類網(wǎng)絡(luò)的缺省的子網(wǎng)掩碼是
255.0.0.0
B 類網(wǎng)絡(luò)的缺省的子網(wǎng)掩碼是
255.255.0.0
C 類網(wǎng)絡(luò)的缺省的子網(wǎng)掩碼是
255.255.255.0(最常見)
不同的子網(wǎng)掩碼可以得出相同的網(wǎng)絡(luò)地址, 但不同的掩碼的效果是不同的.
使用子網(wǎng)時分組的轉(zhuǎn)發(fā)過程:
使用子網(wǎng)劃分后,路由表必須包含以下三項內(nèi)容:{目的網(wǎng)絡(luò)地址,子網(wǎng)掩碼和下一跳地址}, 路由器轉(zhuǎn)發(fā)分組的流程如下:
1)從收到的數(shù)據(jù)報首部提取目的IP地址D;
2)先判斷是否為直接交付。對路由器直接相連的網(wǎng)絡(luò)進行逐個檢查:用各網(wǎng)絡(luò)的子網(wǎng)掩碼和D逐位相與,看結(jié)果是否和相對應(yīng)的網(wǎng)絡(luò)地址匹配。若匹配,則把分組進行直接交付,轉(zhuǎn)發(fā)任務(wù)結(jié)束。否則就是間接交付,執(zhí)行(3)。
3)若路由表中有目的地址為D的特定主機路由,則把數(shù)據(jù)報傳送給路由表中所指明的下一跳路由,否則執(zhí)行(4)。
4)對路由表的每一行,用其中的子網(wǎng)掩碼和D逐位相與,其結(jié)果為N。若N與該行的目的網(wǎng)絡(luò)地址匹配,則把數(shù)據(jù)報傳送給該行指明的下一跳路由器,否則執(zhí)行(5)。
5)若路由表中有一個默認(rèn)路由,則把數(shù)據(jù)報傳送給路由表中所指明的默認(rèn)路由器;否則執(zhí)行(6)。
6)報告轉(zhuǎn)發(fā)分組出錯。
無分類編址(CIDR)
無分類域間路由選擇(CIDR)是在變長子網(wǎng)掩碼的基礎(chǔ)上提出的一個消除A, B, C類網(wǎng)絡(luò)劃分, 并且可以在軟件的支持下實現(xiàn)構(gòu)造超網(wǎng)的一種IP地址的劃分方法;
CIDR的主要特點:
1)消除了傳統(tǒng)的A,B,C類地址以及子網(wǎng)劃分的概念, 因而可以更加有效的分配IPv4的地址空間. CIDR使用”網(wǎng)絡(luò)前綴”的概念代替網(wǎng)絡(luò)號的概念, 這樣IP地址的無分類兩級編址就變?yōu)?
IP::= {<網(wǎng)絡(luò)前綴>,<主機地址>}
CIDR還使用”斜線記法”, 即: <IP地址>/<網(wǎng)絡(luò)前綴所占位數(shù)>. 其中, 網(wǎng)絡(luò)前綴所占位數(shù)對應(yīng)于網(wǎng)絡(luò)號部分, 等效于子網(wǎng)掩碼中連續(xù)1的部分, 因此通過逐位相”與”的方法依然可以得到該地址的網(wǎng)絡(luò)前綴;
注:CIDR并不使用子網(wǎng), CIDR并沒有在32位地址中指明若干位作為子網(wǎng)字段, 但分配到一個CIDR地址塊的組織仍可以在本組織內(nèi)根據(jù)需要劃分出一些子網(wǎng);
2)將網(wǎng)絡(luò)前綴都相同的連續(xù)的IP地址組成”CIDR地址塊”, 一個CIDR地址塊可以表示很多地址, 這種地址的聚合成為路由聚合, 或稱構(gòu)成超網(wǎng); 路由聚合使得路由表中的一個項目可以表示很多個原來傳統(tǒng)分類地址的路由, 有利于減少路由器之間的路由選擇信息的交換, 從而提高網(wǎng)絡(luò)性能.
最長前綴匹配
使用CIDR時, 路由表中的每個項目由”網(wǎng)絡(luò)前綴”和”下一跳地址”組成. 在查找路由表時可能會得到不止一個匹配結(jié)果, 應(yīng)當(dāng)從匹配結(jié)果中選擇具有最長網(wǎng)絡(luò)前綴的路由, 因為網(wǎng)絡(luò)前綴越長, 其地址塊就越小, 因而路由就越具體;
CIDR查找路由表的方法: 為了進行更加有效地查找最長前綴匹配, 通常是將無分類編址的路由表存放在一種層次的數(shù)據(jù)結(jié)構(gòu)中, 然后自上而下地按層次進行查找, 這就是最常用的二叉線索;
網(wǎng)絡(luò)地址轉(zhuǎn)換NAT
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT,Network Address Translation)屬接入廣域網(wǎng)(WAN)的技術(shù),是一種將私有(保留)地址轉(zhuǎn)化為合法IP地址的轉(zhuǎn)換技術(shù). NAT不僅完美地解決了IP地址不足的問題,而且還能夠有效地避免來自網(wǎng)絡(luò)外部的攻擊,隱藏并保護網(wǎng)絡(luò)內(nèi)部的計算機。
三個私有IP地址塊
A 類
10.0.0.0 ~ 10.255.255.255
B 類
172.16.0.0 ~ 172.31.255.255
C 類
192.168.0.0 ~ 192.168.255.255
上述三個范圍內(nèi)的地址不會在因特網(wǎng)上被分配(因此路由器并不會路由這些IP地址),因此可以不必向ISP 或注冊中心申請而在公司或企業(yè)內(nèi)部自由使用。
NAT工作流程
①如圖這個 client(終端) 的 gateway (網(wǎng)關(guān))設(shè)定為 NAT 主機,所以當(dāng)要連上 Internet 的時候,該封包就會被送到 NAT 主機,這個時候的封包 Header 之 source IP為 192.168.1.100;
②而透過這個 NAT 主機,它會將 client 的對外聯(lián)機封包的 source IP ( 192.168.1.100 ) 偽裝成 ppp0 ( 假設(shè)為撥接情況 )這個接口所具有的公共 IP ,因為是公共 IP 了,所以這個封包就可以連上 Internet 了!同時 NAT 主機并且會記憶這個聯(lián)機的封包是由哪一個 ( 192.168.1.100 ) client 端傳送來的;
③由 Internet 傳送回來的封包,當(dāng)然由 NAT主機來接收了,這個時候, NAT 主機會去查詢原本記錄的路由信息,并將目標(biāo) IP 由 ppp0 上面的公共 IP 改回原來的 192.168.1.100 ;
④最后則由 NAT 主機將該封包傳送給原先發(fā)送封包的 Client.
ARP協(xié)議
ARP協(xié)議的用途:解決同一個局域網(wǎng)內(nèi)主機或路由器的IP地址和MAC地址的映射問題。
如圖所示,假設(shè)在一個以太網(wǎng)上的 4 臺計算機,分別是計算機 A 、 B 、 X 和 Y ,通過TCP/IP 協(xié)議進行通信,那么雙方的數(shù)據(jù)鏈路層必須知道對方的 MAC 地址。每臺計算機都要在各自的高速緩存區(qū)中存放一張 IP 地址到 MAC 地址的轉(zhuǎn)換表,稱 ARP 表。其中存放著最近用到的一系列和它通信的處于同一子網(wǎng)的計算機的 IP 地址和 MAC 地址的映射。在主機初始啟動時, ARP 表為空?,F(xiàn)在源端計算機 A ( 192.168.3.1 )要和計算機 B(192.168.3.2)通信。在計算機 A 發(fā)送信息前, 必須首先得到計算機B的MAC地址的映射關(guān)系。 ARP 協(xié)議工作過程如下:
(1)主機 A 首先查看自己的高速緩存中的 ARP緩存表,看其中是否有與 192.168.3.2 對應(yīng)的 ARP 表項。如果找到,則直接利用該 ARP 表項中的 MAC 值把 IP 數(shù)據(jù)包封裝成幀發(fā)送給主機B。
(2)如果在 ARP 表中找不到對應(yīng)的地址項,則創(chuàng)建一個 ARP 請求數(shù)據(jù)包,并以廣播方式發(fā)送(把以太幀的目的地址設(shè)置為 FF-FF-FF-FF-FF-FF) 。包中有需要查詢的目的計算機的 IP 地址(192.168.3.2) , 以及主機 A 自己的 IP 地址和 MAC 地址。
(3)包括計算機 B 在內(nèi)的屬于 192.168.3.0 網(wǎng)絡(luò)上的所有計算機都收到 A 的 ARP 請求包,然后將計算機 A 的 IP 地址與 MAC 地址的映射關(guān)系存入各自的 ARP 表中。
(4)計算機 B 創(chuàng)建一個 ARP 響應(yīng)包,在包中填入自己的 MAC 地址,以單播方式直接發(fā)送給主機 A。
(5) 主機 A 收到響應(yīng)后, 從包中提取出所需查詢的 IP 地址及其對應(yīng)的 MAC 地址, 添加到自己的 ARP 表中。并根據(jù)該 MAC 地址將所需要發(fā)送的數(shù)據(jù)包封裝成幀發(fā)送出去。
注意:
(1)ARP 表的內(nèi)容是定期更新的,如果一條 ARP 表項很久沒有使用了,則它將被從 ARP 表中刪除。
(2)如果所要找的主機和源主機不在同一個局域網(wǎng)上, 那么就要通過ARP找到一個位于本局域網(wǎng)上的某個路由器的硬件地址, 然后把分組發(fā)送給這個路由器, 讓這個路由器把分組轉(zhuǎn)發(fā)給下一個網(wǎng)絡(luò), 剩下的工作就由下一個網(wǎng)絡(luò)來做.
DHCP協(xié)議
DHCP動態(tài)主機配置協(xié)議常用于給主機動態(tài)地分配IP地址, 他提供了即插即用聯(lián)網(wǎng)的機制,這種機制允許一臺計算機加入新的網(wǎng)絡(luò)和獲取IP地址而不用手工參與; DHCP是應(yīng)用層協(xié)議, 他是基于UDP的;
DHCP工作原理:
首先,DHCP客戶端發(fā)送DHCPDISCOVER消息(DHCP發(fā)現(xiàn)),這個消息是通過廣播方式發(fā)送出去的,所有網(wǎng)絡(luò)中的DHCP服務(wù)器都將接收到這個消息。
隨后,網(wǎng)絡(luò)中的DHCP服務(wù)器會回應(yīng)一個DHCPOFFER消息(DHCP提供),由于這個時候客戶端還沒有網(wǎng)絡(luò)地址,所以DHCPOFFER也是通過廣播的方式發(fā)送出去的。需要注意的是,由于網(wǎng)絡(luò)中可能存在不止一臺的DHCP服務(wù)器,所以,如果不考慮網(wǎng)絡(luò)丟包的話,客戶端將接收到不止一條的DHCPOFFER消息。那么客戶端會選擇它接收到的第一條DHCPOFFER作為獲取配置的服務(wù)器。
然后,DHCP客戶端向該服務(wù)器發(fā)送DHCPREQUEST消息(DHCP請求)。雖然這個時候客戶端已經(jīng)明確知道選擇的DHCP服務(wù)器的地址所在,但仍將采用廣播的方式發(fā)送,這樣做不僅可以通知選中的服務(wù)器向客戶端分配IP地址,同時也可以通知其他沒有選中的DHCP服務(wù)器不需要再響應(yīng)它的請求。在DHCPREQUEST消息中將包含客戶端申請的IP地址。
最后,DHCP服務(wù)器將回送DHCPACK(DHCP確認(rèn))的響應(yīng)消息來通知客戶端可以使用該IP地址,該確認(rèn)里面包含了分配的IP地址和該地址的一個穩(wěn)定期限的租約(默認(rèn)是8天),并同時更新DHCP數(shù)據(jù)庫。
當(dāng)租約過了一半時(即4天),客戶端將和設(shè)置它的TCP/IP配置的DHCP服務(wù)器更新租約。當(dāng)租約過了85.7%時,如果客戶端仍然無法與當(dāng)初的DHCP服務(wù)器聯(lián)系上,他將與其他DHCP服務(wù)器通信,如果網(wǎng)絡(luò)中再沒有任何DHCP服務(wù)器在運行時,該客戶端停止使用該IP地址,并重新發(fā)送一個DHCPDISCOVER消息,再一次重復(fù)整個過程。
ICMP協(xié)議
IP提供的是盡最大努力交付的無連接服務(wù),因此并不能解決網(wǎng)絡(luò)層中的數(shù)據(jù)報丟失、重復(fù)、延遲或亂序等問題,為了提高IP數(shù)據(jù)報成功交付的機會, 在網(wǎng)絡(luò)層使用ICMP(Internet Control Message Protocol:Internet控制報文協(xié)議)協(xié)議來允許主機或者路由器報告差錯和異常情況.
ICMP的特征
a.ICMP就像一個更高層的協(xié)議那樣使用IP協(xié)議(ICMP消息被封裝在IP數(shù)據(jù)報中);然而,ICMP是IP的一個組成部分,并且所有IP模塊都必須實現(xiàn)它。
b.ICMP用來報告錯誤,是一個差錯報告機制。它為遇到差錯的路由器提供了向最初源站報告差錯的辦法,源站必須把差錯交給一個應(yīng)用程序或采取其它措施來糾正問題。
c.ICMP報文的種類有兩種: ICMP差錯報告報文和ICMP詢問報文;
ICMP差錯報告報文
ICMP差錯報告報文類型
終點不可達(dá)
當(dāng)路由器檢測到數(shù)據(jù)報無法傳遞到目的地時,向創(chuàng)建數(shù)據(jù)報的源主機發(fā)出終點不可達(dá)報文。這類報文分為:網(wǎng)絡(luò)不通(如路由器故障),目的主機連不通(沒開機),協(xié)議不可達(dá)、端口不可達(dá)等共15種不同的情況,用不同代碼表示。
源點抑制
當(dāng)路由器/主機收到太多的數(shù)據(jù)報以致來不及處理時,在丟棄所收數(shù)據(jù)報的同時,向創(chuàng)建數(shù)據(jù)報的源主機發(fā)送源點抑制報文。 使源點知道應(yīng)當(dāng)把數(shù)據(jù)報的發(fā)送速率放慢。
時間超過
有兩種情況需要發(fā)送超時報文:
1.路由器把數(shù)據(jù)報的生存時間減至零時,路由器丟棄數(shù)據(jù)報,并向源主機發(fā)送時間超過報文;2.當(dāng)終點在預(yù)先規(guī)定的時間內(nèi)不能收到一個數(shù)據(jù)報的全部數(shù)據(jù)報分片時, 就把已收到的數(shù)據(jù)報片全部丟棄, 并向源點發(fā)送時間超過報文;
參數(shù)問題
當(dāng)路由器/目的主機收到的數(shù)據(jù)報的首部有的字段的值不正確時, 就丟棄該數(shù)據(jù)報, 并向源點發(fā)送參數(shù)問題報文;
改變路由(重定向)
當(dāng)一個源主機創(chuàng)建的數(shù)據(jù)報發(fā)至某路由器,該路由器發(fā)現(xiàn)數(shù)據(jù)報應(yīng)該選擇其他路由時,則向源主機發(fā)送改變路由報文。改變路由的報文能指出網(wǎng)絡(luò)或特定主機的變化,一般發(fā)生在一個網(wǎng)絡(luò)連接多路由器的情況下.
不應(yīng)發(fā)送ICMP差錯報告報文的幾種情況:
1)對ICMP差錯報告報文不再發(fā)送ICMP差錯報告報文。
2)對第一個分片的數(shù)據(jù)報片的所有后續(xù)數(shù)據(jù)報片都不發(fā)送ICMP差錯報告報文。
3)對具有多播地址的數(shù)據(jù)報都不發(fā)送ICMP差錯報告報文。
4)對具有特殊地址(如127.0.0.0或0.0.0.0)的數(shù)據(jù)報不發(fā)送ICMP差錯報告報文。
ICMP詢問報文
回送請求和回答報文, 時間戳請求和回答報文, 掩碼地址請求和回答報文, 路由器詢問和通告報文;
常用的ICMP詢問報文有兩種,即:
1)回送請求和回答: ICMP回送請求報文是由主機或路由器向一個特定的目的主機發(fā)出的詢問。收到此報文的主機必須給源主機或路由器發(fā)送ICMP回送回答報文。這種詢問報文用來測試目的站是否可達(dá)以及了解其有關(guān)狀態(tài)(Ping實現(xiàn)機制)。
2)時間戳請求和回答: ICMP時間戳請求報文是請某個主機或路由器回答當(dāng)前的日期和時間。在ICMP時間戳回答報文中有一個32位的字段,其中寫入的整數(shù)代表從1900年1月1日起到當(dāng)前時刻一共有多少秒。時間戳請求與回答可用來進行時鐘同步和測量時間。
Ping實現(xiàn)原理
Ping(Packet Internet Groper)分組網(wǎng)間探測是ICMP的一個重要應(yīng)用,用來測試兩個主機之間的連通性。Ping使用了ICMP回送請求與回答報文。Ping是應(yīng)用層直接使用網(wǎng)絡(luò)層ICMP的一個例子。它沒有通過運輸層的TCP或UDP。
實現(xiàn)原理為: ping向目的主機發(fā)送4個32字節(jié)長的ICMP回送請求報文,若目的主機正常工作并且響應(yīng)了該ICMP回送請求報文,就將發(fā)回ICMP回送回答報文。最后可得出的統(tǒng)計結(jié)果為目的IP地址,發(fā)送的,收到的和丟失的分組數(shù),及往返時間的最小值、最大值和平均值。
ping命令格式為 ping <host-name> #host-name為要測試連通性的主機名/IP地址。
TraceRoute原理
Traceroute(Linux)/tracert(Windows)是用來偵測主機到目的主機之間所經(jīng)路由情況的重要工具。它的原理如下:
源主機首先給目的主機發(fā)送一個TTL=1的UDP數(shù)據(jù)包,而經(jīng)過的第一個路由器收到這個數(shù)據(jù)包以后,就自動把TTL減1,而TTL變?yōu)?以后,路由器就把這個包給丟棄了,并同時產(chǎn)生”目的主機不可達(dá)”的ICMP差錯報告報文給源主機。源主機收到這個數(shù)據(jù)報以后再發(fā)一個TTL=2的UDP數(shù)據(jù)報給目的主機,然后刺激第二個路由器給源主機發(fā)送差錯報文。如此往復(fù)直到到達(dá)目的主機。這樣,traceroute就拿到了所有的路由器IP。
RIP協(xié)議
路由信息協(xié)議RIP是一種分布式的基于距離向量的路由選擇協(xié)議, 屬于內(nèi)部網(wǎng)關(guān)協(xié)議(IGP)。RIP協(xié)議中的“距離”也稱為“跳數(shù)”,每經(jīng)過一個路由器,跳數(shù)就加1。協(xié)議規(guī)定: 同一自治系統(tǒng)(A.S.)中的路由器每30秒會與相鄰的路由器交換路由信息,以動態(tài)的建立路由表。當(dāng)傳輸數(shù)據(jù)時,RIP將選擇一條具有最少路由器的路由。
RIP協(xié)議規(guī)定:
1) 網(wǎng)絡(luò)中的每一個路由器都要維護從它自己到其他每一個目的網(wǎng)絡(luò)的距離記錄(因此, 這是一組距離, 稱”距離向量”);
2) 距離也稱為跳數(shù)(Hop Count), 規(guī)定從一路由器到直接連接的網(wǎng)絡(luò)跳數(shù)為1, 而每經(jīng)過一個路由器, 則跳數(shù)加1;
3) RIP認(rèn)為好的路由就是它通過的路由器的數(shù)目少, 即優(yōu)先選擇跳數(shù)少的路徑;
4) RIP允許一條路徑最多只能包含15個路由器(即最多允許15跳), 因此距離等于16時表示網(wǎng)絡(luò)不可達(dá). 可見RIP只適用于小型互聯(lián)網(wǎng).
5) RIP默認(rèn)在任意兩個使用RIP協(xié)議的路由器之間每30秒廣播一次RIP路由更新信息. 以便于自動建立并維護路由表(動態(tài)維護).
6) 在RIP中不支持子網(wǎng)掩碼的RIP廣播, 所以RIP中每個網(wǎng)絡(luò)的子網(wǎng)掩碼必須相同. 但在新的RIP2中, 支持變長子網(wǎng)掩碼和CIDR.
RIP 協(xié)議特點:
1)僅和相鄰路由器交換信息?!咀ⅰ咳绻麅蓚€路由器之間的通信不需要經(jīng)過另一個路由器,那么這兩個路由器就是相鄰的。RIP協(xié)議規(guī)定,不相鄰的路由器不交換信息。
2)路由器交換的信息是當(dāng)前本路由器所知道的全部信息,即自己的路由表?!咀ⅰ拷粨Q的信息是:“我到本自制系統(tǒng)中所有網(wǎng)路的(最短)距離,以及到每個網(wǎng)絡(luò)應(yīng)該經(jīng)過的下一跳路由器?!?div style="height:15px;">
(3)按固定的時間間隔交換路由信息?!咀ⅰ棵扛?0秒,路由器根據(jù)收到的路由信息更新路由表。當(dāng)網(wǎng)路拓?fù)浒l(fā)生變化時,路由器也及時向相鄰路由器通告拓?fù)渥兓蟮穆酚尚畔ⅰ?div style="height:15px;">