IP控制協議
IP協議只負責傳送IP包,無法檢測和控制網路中的一些問題,這些工作有Internet的控制協議來完成。
ICMP(Internet Control Message Protocol)
(1)IP協議提供的是儘力而為的通訊服務。
(2)資料報的丟失、重複延遲、亂序在所難免。
(3)ICMP提供了一種把通訊服務中的差錯向來源站點點報告的機制。
ICMP報文格式
ICMP資料連同它的頭標一起封裝在一個IP分組中,但TCP/IP模型的協議分層中,並未把ICMP單列為一層。
0類型;1代碼;2~3校正和;4~n資料區
ICMP報文主要類型
類型
類型域 ICMP報文類型
差錯報文
3 目的網站不可達(有許多不同的類型由程式碼片段表明)
11
資料報逾時
12
資料報參數錯
控制報文
4 源抑制(用於擁塞控制)
5
重新導向
請求/應答報文
8 回應請求(回應請求和應答一般用於測試網路是否通)
0
回應應答
13
時間截請求(這兩個主要用於兩主機協作同步時鐘)
14
時間截應答
ICMP應用舉例
(1)ping命令實際上就是用ICMP回應請求和回應應答實現的。使用ping命令,將向目的網站發送一個ICMP回應請求報文(包括一些任選的資料),如目的網站接收到該報文,必須向來源站點點發回一個ICMP回應應答報文,來源站點點收到應答報文(且其中的任意資料與發送的相同),則認為目的網站是可達的,否則為不可達。
(2)路由跟蹤tracert命令(Unix下為traceroute)。tracert過程是通過ICMP資料報逾時報文來得到一張途徑路由列表的。源主機向目的主機發送一個IP報文,並設定hop為1,到達第一個路由器時,hop減1,為0,則該路由器回傳一個ICMP資料報逾時報文,源主機取出路由器的IP地址即為途經的第一個路由器連接埠地址。接著源主機再向目的主機發第二個IP報文,並設定hop為2,然後再發第3個、第4個IP資料報,……直至到達目的主機。但互連網啟動並執行環境是動態,每次路徑的選擇有可能不一致,所以,只有在相對穩定(相對變化較緩慢)的互連網中,tracert才是有意義的。
(3)得到路徑中的最小MTU。源主機發送一系列的探測IP資料報,共置DF=1,即不允許分段,如途徑某個網路的MTU較小,則路由器將丟棄該資料報並發揮一個ICMP資料報參數錯,要求分段,源主機則逐步減小資料報長度,並仍置DF=1,直至某個探測報文成功到達目的主機,即得到路徑中的最小MTU。畢竟能資料包能不分段盡量不分段,重組麻煩。
位址解析
ARP(RFC 1512)(Address Resolution Protocol)
位址解析的作用
(1)協議地址
軟體提供的抽象地址,如IP地址,它使整個互連網看成一個網路,但真正的物理網路並不能通過IP地址來定位機器。
(2)物理地址
硬體地址,如MAC地址。
(3)位址解析
協議地址和物理地址之間的轉換,如IP地址和MAC地址之間的轉換,將IP地址轉換為MAC地址。位址解析必須在某一物理網路中進行,一台主機在向同一物理網路上的另一台電腦發送資料時,現作位址解析,然後按物理地址直接發送資料幀。IP地址是虛擬,到達一個路由器,將IP資料包解鎖裝,得到IP地址,做位址解析,得到MAC地址,封裝再發送。
位址解析通訊協定ARP
工作原理(以IP網路為例)
(1)一個ARP請求訊息是一個資料幀,其中包含發送網站的硬體地址和協議地址,以及目的網站的IP地址,並把此資料幀再本物理網路內廣播。
(2)一個ARP應答訊息是一個資料幀,其中包含應答網站的硬體地址和協議地址,以及原發送網站的IP地址,並把此資料幀發送給原發送網站。
(3)靜態:每個網站都有一張表。集中:ATM網路這張表由一個伺服器負責。分布式:Internet用,每一台機器都儲存自己的IP地址和MAC地址,尋找時通過廣播。
(4)網站W有資料發送給目的網站Y,但目前尚不知道網站Y的MAC地址,無法組成資料幀。ARP的詢問報文中包含目的網站Y的IP地址,ARP的應答報文中包含目的網站Y的MAC地址。
ARP訊息在乙太網路中,直接封裝在物理幀中發送。ARP訊息幀的類型值為0X806。
暫存ARP應答和處理接收的ARP訊息
(1)ARP應答暫存於Cache或記憶體中,以後即可查表,不必再發詢問報文,以減少網路的通訊量。
(2)從訊息中取出發送方的協議地址和硬體地址,更新cache中已有資訊。
(3)檢查訊息時請求還是應答,若是應答,則接收;若是請求,檢查是否為發送給本站的,如是,則發應答訊息。
RARP、BOOTP和DHCP
這三個協議將MAC地址轉換為IP地址,常用在無盤工作站中。無盤工作站沒有磁碟,不能儲存TCP/IP的設定檔,因此必須有協議實現MAC地址轉換為IP地址。
RARP(RFC 903)(Reverse Address Resolution Protocol)
給出一個乙太網路地址,找到相應IP地址。
每個子網需要一個RARP伺服器,當工作站要得到其IP地址時,將它的乙太網路地址廣播出去,RARP伺服器得到此資訊,再其設定檔中找到該乙太網路地址,把對應的IP地址返回該工作站。RARP的訊息不能跨路由器,因此每個子網中都必須有一個RARP的伺服器。
BOOTP(Bootstrap Protocol)
BOOTP時一個高層的程式,它可以渠道RARP伺服器得到IP地址、開機檔案地址和配置資訊。BOOTP協議採用客戶/伺服器工作方式,需要得到配置資訊的一方稱為BOOTP客戶,提供配置資訊的一方稱為BOOTP伺服器。客戶方首先利用局部廣播(如果子網中有BOOTP伺服器)或全域廣播(BOOTP伺服器不在同一子網中)的IP地址發送一條請求報文,否則再請求報文中的發送方IP地址部分放入全0,表示客戶方需要得到IP地址,BOOTP的伺服器用廣播位址返回一條包含客戶的IP地址及其它啟動資訊的應答報文。
BOOTP的問題
需要手工配置IP地址和MAC地址的對應表,當一台新的主機加入某一LAN時,它不能立即用BOOTP啟動,必須等到管理員賦給它一個IP地址,並把該IP地址和MAC地址的對應關係手工寫入BOOTP的設定檔。
DHCP(Dynamic Host Configuration Protocol)
(1)可以靜態或動態為主機分配IP地址。(撥接的時候由DHCP伺服器動態分配一個IP地址,否則無IP地址)
(2)基於客戶/伺服器的工作方式。
(3)不需要為每個LAN設定一台DHCP伺服器,多個LAN可共用一台DHCP伺服器,但每個LAN必須有一台DHCP中繼代理,負責轉寄客戶請求。
DHCP工作過程
(1)客戶首先廣播一條包含它自己的客戶編碼的報文(DHCP DISCOVER報文),以聲明自己的出現。
(2)每個收到客戶DHCP DISCOVER的伺服器檢查使用者的設定檔決定時分配一個靜止地址或動態地址,如果是要一個動態地址,伺服器從“位址集區”裡選擇一個IP地址,如果是要靜態地址,伺服器從設定檔中取出該客戶的靜態地址,伺服器從設定檔中取出該客戶的靜態地址,將該地址放在一條DHCP
OFFER報文中,送回使用者。
(3)客戶收到DHCP OFFER報文後,在眾多的伺服器中選擇一個伺服器,這通常是根據DHCP OFFER報文中提供的選項來決定。
(4)客戶再廣播一條DHCP REQUEST報文,之處選擇了哪一個伺服器,並申請使用該伺服器提供的IP地址。
(5)當伺服器收到DHCP REQUEST報文,並且該報文之處使用了它提供的地址,則伺服器將該地址標記為租用,如如武器收到的報文指出客戶接收了另一伺服器提供的地址,則將地址退回給“位址集區”,如果在一段時間沒有收到報文,伺服器也將地址退回“位址集區”,選中的伺服器發送一條應答,報文DHCP
ACK。
(6)客戶確定該配置資訊是否合法,接收了合法的租用後,客戶指定一個綁定binding伺服器的聲明,繼續使用該IP地址和選項。
from:http://blog.chinaunix.net/space.php?uid=7921481&do=blog&id=1616850