網際網路控制訊息規約
一 、說明
任何一個網路系統或多或少都會有些錯誤發生這些錯誤或機器失效會使系統不能正確的運作例如傳輸線損壞TTL的計時器可能用光目的主機可能已經斷線使網際網路規約無法順利傳送資料包中間的路由器可能相當壅塞而無法處理不斷流入的資料包。
當這些情形發生時網際網路軟體系統怎麼辦?一般硬體系統若發生錯誤或失效都會設計有相關的機制告訴主機發生錯誤。相對的通訊軟體也應該要有軟體來報告錯誤或失效的訊息。因此網際網路上加入了一個訊息控制的機制到TCP/IP的規約土此機制稱之為網際網路控制訊息規約(lntenet Control MessageProtocol稱ICMP)
路由器如何使用相關的ICMP機制來報告資料包傳遞的訊息此外主機如何利用它來測試目的地主機是否可順利到達。 ICMP基本上是一套錯誤報告的機制它只負責將錯誤報告回原始的主機再由原來的主機針對錯誤的敘述通知給相關的應用程式知道上以便採取適當的步驟改正錯誤。所以ICMP只負責「通知」 而改正問題或錯誤的處理則不在ICMP的定義範圍內。
在這裡有個重點是 ICMP通知「原始主機」 這是因為在IP的資料包裡只有原始主機與目的地主機兩個IP位址而已從資料包我們無法獲知它所走過的路徑除非利用IP的「記錄路徑」的選項 所以ICMP報告只能報告給原始主機而已。另外I CMP只負責報告而已並不負責更正。
二 、 ICMP訊息的格式
ICMP的訊息是放置在IP資料包的資料區。如下圖
ICMP資料區
IP資料區
訊框資料區
ICMP的訊息是放置在IP的資料區裡形成IP的資料包整個IP的資料包是訊框的資料包" 。如此一層一層的封裝。另外一方面解封裝由訊框的型態
0800來獲知是IP。
IP的表頭之「規約」欄位如果註明01即表示資料包內包著ICMP的資料。雖然每一ICMP的訊息都有著它自己的格式但是起頭的三個欄位為 8位元的
「型態」 8位元「編碼」及16位元的「檢查碼」應該都一樣。
我們要介紹的是「型態」(type) ICMP常見的型態如下表。
「編號」則是在特定型態底下更細的分類。我們在討論相關的型態時會再仔細的說明編號所代表的意思。
I CMP常見的型態
在ping指令頇指明IP位址另外也可加入送出資料塊的大小選項若不加以說明規定則以32個位元組回覆回來的訊息有bytes=32, time=1 ms TTL=254分別表示回覆資料塊為32位元組回覆時間為l x 10-3秒TTL值254。表示「回音請求」與「回音回覆」的格式。
下圖的例子中第一份資料包是由主機140.113.167.203向主機140.113.167.195發送一份「回音請求」 。第二份資料包是主機140.113.167.195回送一份「回音回覆」 。
140.113.167.203 140.113.167.195
45000020 版本=4 表頭長度=5 服務型態=00 總長度=0X20
00000000 資料包編號=0 旗標=0 資料塊位差=0fa01586b 存活時間=0xfa 規約編號=01 表頭檢查碼=0x586b
8c71 a7cb 來源端IP位址=140.113.167.203
8c71a7c3 目的端IP位址=140.113.167.195
080052f9 ICMP型態=08 編碼=00檢查碼=52f9
95060f00 訊息編號=0x9506 訊息流水碼=0x0f00
45000020 版本=4 表頭長度=5 服務型態=00 總長度=0X20af3e0000 資料包編號=af 旗標=3e 資料塊位差=0ff01 a42c 存活時間=0xff規約編號=01 表頭檢查碼=0xa42c
8c71a7c3 來源端IP位址=140.113.167.195
8c71 a7cb 目的端IP位址=140.113.167.203
00005af9 ICMP型態=00 編碼=00檢查碼=5af9
95060f00 訊息編號=0x9506 訊息流水碼=0x0f00
四 、資料包無法抵達目的地
網路系統並非完美無缺的有時會出現硬體故障或連線損壞的情形。在這種狀況下資料包就會有可能無法順利的抵達目的地。當資料包無法繼續向前傳遞時 ICMP會傳出一份ICMP的資料包型態註明了表示目的無法抵達此一資料包會傳回給最初的的發送站。
同時在資料的部分會填上原先被丟棄資料的IP表頭再加前64位元的資料。
請下圖的格式。
五 、資料包壅塞與流量的控制
由於資料包的傳送是非連線式的傳送所以路由器並不會為特定的資料包事前保留暫存記憶體位置或通訊相關的資源因此當大量的資料包湧入路由器時很可能很快的會用盡路由器的各項網路資源按著下來就是路由器無法負荷資料包流通量而發生系統停滯或當機的現象。舉例而言網際網路透過路由器達到網網相連這網路的連結情形就像公路系統的道路網一般想像一下如果有大量的車潮湧入高速公路就會造成高速公路塞車如果車潮不退反增高速公路會癱瘓就像一座條形的大停車場一般。那如何控制車流流入高速公路閘道儀控管制是一種不錯的方法。
哪些情形可能會產生網路的壅塞
1 因為網際網路並非事前經整體規劃整體鋪設所以某些高速電腦主機可能會瞬間產生大量的資料湧入網路中來一般高速主機會連接到高速的區域網路上但當資料是指定給遠方的主機此時資料可能會經過低速的廣域網路才能到達對方。因此資料會擠在廣域網路的節點上而造成這些節點的壅塞。
2尖峰時段所引起的某些時段正好有大量的主機同時將資料送入網路來而造成瞬間的壅塞現象。
路由器若發現有壅塞的情形時可透過I C MP送出「原始主機熄火」的訊息來疏解壅塞。原始主機熄火訊息是用來通知發送資料的主機降低傳送得速
六 、路徑更改要求
在一般的情形下路由器由於會參與路由規約的運作所以它應知道正確的路徑安排而主機並不參與路由規約的運作它只能由路由器端學習到新的路徑。所以當路由器發現主機所利用的路徑並非最佳的路徑時路由器會發送ICMP「更改方向」的訊息要求主機更改方向下圖即表示路徑更改的例子。
在下圖A主機S要送資料給主機D假設走的路徑是:主機S 路由器G 路由器G2 主機D。但當路由器G2在轉送由主機S來的資料包時發現主機S是與G2有直接相連G2在轉送資料包給主機D後會送出路徑更改的ICMP訊息要求主機S更改路由表。下次主機S有資料包要送給主機D時會由主機S 路由器G2 主機D的路徑中間不會再經過路由器G 如下圖B。
另一值得注意的問題是 ICMP的路徑更改是路由器發出給主機並不能給其
造成路徑更改的原因如下表
R1與R2 在R1的路由表中要到目的地主機B下一站頇送到R2 反過來R2的路由表中要到主機B下一站頇送到R1 因此有個資料要送到主機B若經過路由器R1或R2就會陷入環狀路徑中而繞不出來。下圖即顯示此一現
象。
為了解決此環狀路徑的錯誤會因資料繞不出來而癱瘓環狀路徑上的路由器。在IP的表頭中我們設計有一個存活時間T T L(t ime-to-liv e)的欄位或稱中繼
路由器會送出ICMP「逾時」通知它此一資
料包路徑過長而被丟掉。
另一種情形是分割後的資料包是分別到達目的地主機所以針對每一分割的資料包當分割後資料包第一份到達時我們起動一個計時器然後開始等其
存資源被佔用而不釋放這時IP的運作是在計時器用完走後就清除沒到齊的資料塊將之丟棄然後送出ICMP 「逾時」的訊息給原始主機通知它此資料包逾時而被丟棄。
八 、資料包的追蹤
在UN IX作業系統中有一個「trac ero ute」的指令可以用來追蹤瞭解資料包由原始主機到目的主機所定的路徑。下圖即是在140.130.45.136的主機之UN IX系統上執行trac ero ute的指令。
#tracero ute 140.113.167.195traceroute to 140.113.167.195(140.113.167.195),30 hops max,40 byte p ackets
1 pc450254(140.130.45.254) 1.329ms 1.289ms 1.011ms
2 140.130.251.123(140.130.251.123) 2.364ms 1.632ms 1.555ms
3 TANet-NCTU.edu.tw(203.72.38.113) 27.560 ms 23.651 ms 17.133 ms4 TANet-HcRC.nctu.edu.tw(140.113.247.254) 18.536 ms* 51.900 ms
5 ATM-Gw-GE.nctu.edu.tw(140.113.57.253) 54.112 ms 48.941 ms 45.533 ms
6 CIS-E3sw.nctu.edu.tw(140.113.53.63) 41.518 ms 49.590 ms 44.106 ms
7 Monet.cis.nctu.edu.tw(140.113.167.195) 31.846 ms 41.426 ms 33.733 ms#
由主機140.130.45.136出發經140.130.45.254、 140.130.251.123 、…、
140.113.53.63到140.113.167.195主機。
那trac ero ute指令是如何製作的?事實上由原始主機送出一份資料給
140.113.167.195 在IP的表頭中TT L的欄位填l 那麼這份資料到達第l個路由器時T TL的值會減去l 變為0。此時TC P/IP的軟體會認為此份資料逾時則會送出一份ICMP 「逾時」的訊息回給原始主機140.130.45.137 。在trace ro ute這應用程式收到「逾時」訊息它可由「逾時」訊息中取出發送此訊息主機之IP位址此即為第一站。接下來trac ero ute應用程式會送出TT L值為2的資料所以第1站的路由器減去1以後TTL還剩1 接下來第1站路由器將這份資料往下送到第2站時TTL值會被減為0 此時若未到達目的地主機時則會送回ICMP 「逾時」之訊息若已到達目的地主機時則會回送ICMP目的地到達訊息。
pacificrack在最新的7月促销里面增加了2个更加便宜的,一个月付1.5美元,一个年付12美元,带宽都是1Gbps。整个系列都是PR-M,也就是魔方的后台管理。2G内存起步的支持Windows 7、10、Server 2003\2008\2012\2016\2019以及常规版本的Linux!官方网站:https://pacificrack.com支持PayPal、支付宝等方式付款7月秒杀VP...
wordpress简洁英文主题,wordpress简洁通用大气的网站风格设计 + 更适于欧美国外用户操作体验,完善的外贸企业建站功能模块 + 更好的移动设备特色模块支持,更高效实用的后台自定义设置 + 标准高效的代码程序功能结构,更利于Goolge等国际搜索引擎的SEO搜索优化和站点收录排名。点击进入:wordpress简洁通用型高级外贸主题主题价格:¥3980 特 惠 价:¥1280安装环境:运...
profitserver正在对德国vps(法兰克福)、西班牙vps(马德里)、荷兰vps(杜廷赫姆)这3处数据中心内的VPS进行5折优惠促销。所有VPS基于KVM虚拟,纯SSD阵列,自带一个IPv4,不限制流量,在后台支持自定义ISO文件,方便大家折腾!此外还有以下数据中心:俄罗斯(多机房)、捷克、保加利亚、立陶宛、新加坡、美国(洛杉矶、锡考克斯、迈阿密)、瑞士、波兰、乌克兰,VPS和前面的一样性...