IP 協定 - 翻轉工作室
文章推薦指數: 80 %
表示 IP 封包的 IP 版本。
(2) 網際標頭長度(Internet Header Length, IHL):4 位 ...
電腦網路與連結技術:第十
三章TCP/IP與Internet連結技術 上一頁
下一頁
13-3IP
協定
內容:
13-3-1IP封包格式
13-3-2IP位址
13-3-3IP協定特性
13-3-4IP路徑選擇
13-3-1IP封包格式
IP
協定是TCP/IP網路之中最主要的協定,用來在廣泛複雜的網路上找到所欲連接之工作站,並負責雙方的連線。
IP通訊協定所採用的連接技術是『電報傳輸』(Datagram)(請參考本書第四章),主要工作有二:(1)
為每一部工作站定名,使成為網路唯一的識別名稱,有了這個名稱呼叫,才可以連結其它工作站,或被其它工作站連結,宛如電話號碼一般。
(2)尋找連結路徑。
在廣泛複雜網路之中,尋找出可到達目的地的最佳路徑。
因此,IP通訊協定是TCP/IP網路中最為重要、也最為複雜的通訊軟體。
目前Internet網路已連結全世界上億的電腦,任何地區的網路只要透過簡單的路由器就可銜接上Internet,每一部路由器的主要功能就是實現IP通訊協定功能,所以IP必須有足夠的共通性和連結性,本節就依照這個方向介紹IP通訊協定。
首先,我們來觀察IP協定的封包格式,如圖13-5所示,各欄位功能如下:
圖13-5IP封包之結構
(1)版本(Version):4位元。
表示IP封包的IP版本。
(2)網際標頭長度(InternetHeaderLength,IHL):4位元。
表示本IP封包標頭的長度(位元組表示)。
範圍為5~15,預設值為5。
(3)服務型態(TypeofService,TOS):8位元。
其內容為"PPPDTRUU",PPP表示本IP封包的優先權(Precedence);D=0表示一般延遲(Delay),D=1表示低延遲;T=0為一般傳送量(Throughput),T=1為高傳送量;R=0為一般可靠度,R=1為高可靠度(Reliability);UU保留未用。
(4)總長度(TotalLength):16位元。
是指該封包的總長度,包括封包標頭及資料的長度。
範圍由576~65535位元組。
(5)辨識碼(Identification):8位元。
表示資料分割(fragmentation)的識別編號。
同一筆資料如被分割成若干個區段,每段給予相同的辨識碼,接收端再依辨識碼組合回原來資料封包。
(6)旗標(Flags):3位元。
其格式為"0DM"。
D=0表示可以分段,D=1為不可分段(Don’tfragment);M=0表示最後分段,M=1為不是最後分段(Morefragment)。
(7)分段偏移(FragmentOffset):13位元。
表示目前的分段在原始的資料中所在的位址。
原始分段允許有8192個分段,以每8個位元為一個基本偏移量,所以最大容許65536位元資料,此值和總長度一樣。
因此範圍為0~8191,預設值為0。
(8)存活時間(TimetoLive,TTL):8位元。
表示該資料片在網路上的存活時間,封包每經過一個路由器(或網路閘門),該值就被減一。
如路由器發現某封包的TTL=0,便將該資料片丟棄而不轉送。
範圍0~255。
(9)協定號碼(ProtocolNumber):8位元。
表示該IP封包所承載通訊協定的協定號碼。
在TCP/IP協定中,許多通訊協定(如IP、ICMP、TCP、UDP等等)都被包裝成IP封包,而以IP通訊協定發送。
所以,在IP封包裡必須有協定號碼欄位,來表示目前所承載之資料是屬於哪一個通訊協定(IP、ICMP、TCP等等)。
一些較常用著名(well-known)的協定號碼如表13-1所示。
(10)標頭檢查集(HeaderChecksum):16位元。
做標頭錯誤檢查用。
(11)來源位址(SourceAddress):32位元。
發送此IP封包的來源位址。
(12)目的位址(DestinationAddress):32位元。
目的主機之位址。
(13)選項欄位(Options):可變長度。
提供多種選擇性服務。
例如:來源路徑選擇(Sourcerouting)用來追蹤IP封包所經過的路徑等等。
(14)填補欄位(Padding):IP資料片的標頭一定是32位元的整數倍,當Options欄位不足32位元整數倍時由Padding欄位補足。
表13-1著名協定號碼(節錄)
協定名稱
協定號碼
協定全名(協定包裝在IP資料片內)
ICMP
1
InternetControlMessageProtocol
IGMP
2
InternetGroupManagementProtocol
GGP
3
Gateway-to–GatewayProtocol
IP
4
IPinIPencapsulation
TCP
6
TransmissionControlProtocol
EGP
8
ExteriorGatewayProtocol
IGP
9
InteriorGatewayProtocol
UDP
17
UserDatagramProtocol
13-3-2IP位址
(A)IP位址結構
在TCP/IP網路中,任何一部連線的電腦或網路設備都稱為主機(host)。
TCP/IP被設計成適合連接全球各地不同類型、位置的網路系統,為了方便標定每部主機,TCP/IP定義了一套通用的定址方法。
當時所期望的定址格式是,必須能提供足夠的路徑選擇(routing)資訊,而且不要佔用太多記憶體空間,因此,將『IP位址』(IPAddress)的長度設定為32位元。
為方便表達,我們將此32位元分割成四段,每連續8位元為一組,每組並以十進位值(0~255)表示,每組之間以點(dot)分隔。
整個IP位主表示法就如下所示:
dec3.dec2.dec1.dec0(如163.15.2.1)
雖然IP位址長為32為元,但其中包含兩種號碼:網路號碼(Networknumber)及主機號碼(Hostnumber),因此IP位址也可以表示成:(如圖13-6所示)
圖13-6IP位址結構
實務連接的時候,並非每一部主機上都只有一個IP位址,一般IP位址都依照網路介面卡(Ethernet網路卡)設定。
如主機有特殊需要安裝多個網路介面卡(如當路由器使用),每只網路介面卡上都必須設定一個IP位址,因此,一部主機上就擁有多個IP位址,TCP/IP網路也容許類似虛擬主機的設定,表示一只網路介面卡上可設定多個IP位址。
(B)IP位址分級
下面我們要談,在32位元長度的位址中,應該用多少位址長度來表示網路位址或主機位址。
TCP/IP網路依照所能容納的主機和網路的數量多寡分成A、B、C、D和E五種類級(class),如圖13-7所示,其中ClassD目前為多點廣播(Multicast)位址,ClassE則保留未來發展之用。
分級技巧是配置不同數目的網路位址,網路位址的位元數愈多,所能指定的網路數量就愈多,但相對應的主機位址就愈少。
ClassC所能容納的網路位址最多,所以在國際間網路上,大多採用ClassC定址模式。
ClassA所能容納的主機位址最多,但相對應的所能容納的網路位址最少,一般使用在區域網路的定址模式。
各類級的特性如下:
圖13-7各類級的IP位址結構
(1)ClassA:以最高位元(第31位元)為0表示ClassA模式。
前一位元組(8位元)表示網路位址;而後24位元表示主機位址。
網路位址由1.0.0.0~126.0.0.0,所能表示的主機位址是1.0.0.0~126.255.255.255的範圍之內。
Netmask=255.0.0.0(下小節說明)。
(2)ClassB:以二個最高位元為10表示ClassB模式。
前16位元表示網路位址;而後16位元表示主機位址。
網路位址由128.0.0.0~191.255.0.0,所能表示的主機位址為128.0.0.0~191.255.255.255的範圍之內。
Netmask=255.255.0.0。
(3)ClassC:以前三個最高位元為110表示ClassC模式。
前24位元是網路位址;而後8位元為主機位址。
網路位址由192.0.0.0~223.255.255.0,所能表示的主機位址為192.0.0.0~223.255.255.255的範圍之內。
Netmask=255.255.255.0。
(4)ClassD:以前四個位元為1110表示ClassD模式。
其主要應用於多點廣播(Multicast),一些特殊應用軟體皆用此模式,來對某些定點(工作站)廣播,如隨選視訊(VOD)就用此定址模式,對若干個定點工作站廣播視訊。
(5)ClassE:以前四個最高位元為1111表示ClassE模式。
目前保留尚未使用。
另外,網路位址0和127保留給特殊用途使用。
網路0代表預設路徑位址,通常都將主機的『預設路由器』(Defaultrouter)位址設定為0.0.0.0。
網路127代表回繞(Loopback)位址,方便主機自己定址使用,並以127.0.0.1表主機本身自己。
在一般網路上,設定某一個網路位址的主機位址都為1時,稱之為『廣播位址』(BroadcastAddress),表示針對這個網路上的主機廣播,例如在162.15.0.0網路上的廣播位址為162.15.255.255。
又對於網路上所有主機廣播的位址為255.255.255.255。
剛開始設計TCP/IP網路時,電腦還未普及,網路也非常少,TCP/IP協定開始應用時只連結大型主機,因此32位元容量的IP位址對當時來講已足足有餘,沒有想到後來Internet網路竟然大為風行,導致IP位址不足問題的發生。
理論上,任何一部電腦連結上Internet網路都需要一個獨一無二的IP位址,因此IP位址將會在短期內被耗盡。
雖然目前已提出IPv6的解決方案,但要網路上使用中的路由器和主機都更新為IPv6的通訊協定,並非易事。
目前網路上大都是透過『網路位址轉換器』(NetworkAddressTranslator,NAT)來增加私人網路位址,以解決IP位址不足的問題。
(C)網路遮罩(NetworkMask,Netmask)
IP位址是由網路號碼和主機號碼組成的32位元,為方便起見,一般都用[network#,host#]表示。
網路號碼決定主機所屬的網路位址,因此主機在傳遞封包之前,會先過濾出網路號碼,再決定封包應該往哪一個網路傳送。
為使能由IP位址中過濾出網路號碼,我們使用『網路遮罩』(Netmask)來過濾。
網路遮罩亦為32位元,在位元中"1"表示網路位址;而 "0"表示主機位址,其遮罩方式如圖13-8所示。
如IP分級方式,ClassA網路遮罩為255.0.0.0;ClassB為255.255.0.0;ClassC為255.255.255.0。
在一般網路遮罩,皆是IP位址的前面若干位元設定為"1",因此,我們以網路號碼的長度(也是網路遮罩的長度)來代表網路位址的範圍,以『主機號碼/網路號碼長度』來表示一個網路位址,如163.15.2.3/16(網路遮罩長度為16)表示該主機是在163.15.0.0網路中的0.0.2.3位址。
圖13-8IPNetmask
(D)次網遮罩(SubnetMask)
如果硬要將網路位址區分為三個類級(ClassA~C),也許很難滿足各種環境需求。
例如,目前TANet網路使用ClassB的定址模式,分配到每一個學校2~3個網路號碼。
每一個學校裡的網路,是由多個系所的區域網路所構成。
在技術上,每一個區域網路都要有一個網路號碼,因此網路號碼一定不符所需,這就是IP分級所衍生的問題之一。
解決的方法是再劃分次網路(Subnet),產生次網路的基本原理,是將原有主機號碼的幾個位元拿來當網路號碼,並不改變原來32位元的IP位址格式。
如欲劃分次網路,就必須有次網路的編號,原來IP位址所表達的是[network#,host#]方式,就必須更換為[network#,subnet#,host#]形式。
而增加次網路號碼,就必須犧牲原來主機號碼的數量,次網路號碼增加愈多,主機號號碼就減少愈多,這樣做並不會改變整個位址格式,因為原來網路號碼並未改變,對外部網路而言,次網路位址也被視為主機位址,因此不影響外部網路的連結問題。
我們以一個例子說明,假使希望在163.15.0.0的網路上增加8個次網路,基本上,163.15.0.0/16網路是屬於ClassB格式,它原來的IPNetmask為255.255.0.0。
我們為了增加8個次網路,必須將3個位元的主機號碼拿來當次網路號碼,因此Netmask為255.255.224.0,如圖13-9所示。
圖13-9次網路號碼
分割後所產生的網路位址為:(Networknumber=163.15.0.0、Netmask=255.255.224.0)
163.15.0.0/19、163.15.32.0/19、163.15.64.0/19、163.15.96.0/19、
163.15.128.0/19、163.15.160.0/19、163.15.192.0/19、162.15.224.0/19。
主機位址和網路位址範圍為:
第1個次網路範圍:163.15.0.0~163.15.31.255。
第2個次網路範圍:163.15.32.0~163.15.63.255。
第3個次網路範圍:163.15.64.0~163.15.95.255。
第4個次網路範圍:163.15.96.0~163.15.127.255。
第5個次網路範圍:163.128.0.0~163.15.159.255。
第6個次網路範圍:163.160.0.0~163.15.191.255。
第7個次網路範圍:163.15.192.0~163.15.223.255。
第8個次網路範圍:163.15.224.0~163.15.255.255。
依照RFC950規範,將網路位址為0,保留給預設路由器使用;主機位址都是1時保留給廣播位址使用。
因此,經過此網路分割後,子網路位址為0或都是1(如163.15.0.0與163.15.224.0網路),還是必須保留,不可分配給工作站使用。
13-3-3IP協定特性
基本上,IP的連接技術是非連接方式的『電報傳輸』(Datagram),因此在網路通訊的技術上,具有下列特性:
(1)IP是非連接(Connectionless)服務。
表示IP在傳送封包之前,雙方並未事先建立連線。
發送端直接將封包發送到網路上,由網路上各個路由器(或網路閘門)負責轉送到達目的地。
(2)IP無錯誤偵測功能。
當封包進入路由器時,路由器只針對封包標頭上的目的位址轉送,並不保證該封包是否可安全無恙傳送到目的地,因此沒有針對封包內的資料作錯誤偵測。
封包在傳輸當中,是否受到干擾或其他原因,而發生錯誤,這必須由委託傳送(或上層)的通訊軟體自行負責偵測。
(3)封包彼此之間的次序,經傳送到對方後,可能和原來的不同。
因為,每個封包都自行依當時網路情況尋找路徑(電報傳輸方式),所經過的路徑也不一定相同,到達的次序就不一定會和原來次序相同。
(4)封包可能被重複傳送。
重複傳送的原因可能是發送端的上一層協定在溢時後,未收到接收端的回應確認(中途遺失?),再發送另一個同樣的封包。
而實際上,接收端在收到第一個封包時已作回應(對方沒收到?),結果又再收到同樣的封包。
IP本身只負責傳送封包,封包是否重複傳送,這必須由上層通訊軟體負責偵測。
(5)IP並不驗證目的主機是否有確實收到正確的資料。
13-3-4IP路徑選擇
IP路徑選擇(IPRouting)是所有TCP/IP網路最主要的中心樞紐。
上層的應用程式若想在浩瀚的網路之中找到欲通訊的對象,就得利用IP路徑選擇的功能。
在傳送過程之中,也許會經過許多『網路閘門』(Gateway)或『路由器』(Router),這些設備都必須具有路徑選擇的功能。
當一筆資料由傳送端發出後,它將不知道,也不可能知道,這筆資料是否可安全到達目的地,和可能經過哪些路徑。
所經過的路徑都是由封包到達某一路由器後,再由該路由器決定應該往哪一下個路徑(Nexthop)傳送。
因此,一筆資料可安全到達目的地,是由網路上所經過的路由器共同來完成,並非發送端事先可以控制的。
通常區域網路的範圍較小,在同一網路內,主機和主機之間無須借助路徑選擇即可通訊,一般都使用廣播方式(Broadcast)通訊。
傳送主機將封包廣播到網路上,同一網路上所有主機收到該封包後,會先檢查封包標頭的目的位址是否和自己的位址相符,如果相符就收下該封包;否則忽略它。
但在廣域網路上就無法利用廣播方式來傳送封包,如果每部主機都廣播,則整個網路將被廣播封包所佔滿。
因此網路之間需設置一個以上的對外網路閘門或路由器,網路閘門就是負責過濾對外的通訊封包,它們卡在網路之間,只讓必要的封包通過,且阻擋不必要的封包經過。
以下說明路徑選擇的處理方式。
當某一部主機或路由器(網路閘門)要發送封包時,首先檢查封包之目的IP位址,其處理程序如下:
(1)一般路由器(或網路閘門)都安裝有兩個以上的網路卡,每個網路卡連接一個網路,也代表一個網路號碼。
當它由任一個網路(或網路卡)上收到一個封包後,依照下列 )、2、3處理。
(2)若目的位址的網路號碼與本主機(或路由器)的網路號碼相同時,則表示目的主機在本網路內,不需選擇路徑,直接將封包送出,例如採用廣播方式(查詢ARP動作)。
(3)若目的位址的網路號碼與本主機(或路由器)的網路號碼不同時,則表示目的主機不在本網路內,必須跨越路由器到其他網路。
就將該封包轉送給另一路由器,由它去負責轉送。
當主機(或路由器)發現所要發送(或轉送)的封包不在本網路內,而必須將該封包轉送給其它路由器負責傳送時,如果網路上有多個路由器,應該轉送給哪一個路由器?或給哪一個路由器最為理想?這就牽涉到路徑選擇的問題。
一般在路由器(或網路閘門)內部皆有維護一個『路由表』(RoutingTable),當封包進入時,依照路由表上尋找出應該傳送給哪一個路由器,才可到達目的地(或最佳路徑)。
建構(或維護)這路由表有兩種方法:
(1)靜態路徑選擇(Staticrouting):路由表是由人工建立而成,建立後除非再由人工修改,否則不會變更。
系統維護人員會依照網路狀況或規劃網路拓樸圖架構來建立靜態路由表。
(2)動態路徑選擇(Dynamicrouting):路由表是由網路上路由器(或網路閘門)隨時交換訊息所建立而成。
因此,路由器會隨時依照網路狀況自動維護路由表。
至於路由表如何建立的技術,在本書第四章有詳細介紹其演算法。
當路由器欲轉送封包時,首先查閱靜態路由表,如有適合的路徑便傳送出去,否則再搜尋動態路由表,找出較適當的路徑再傳送。
我們以圖13-10來說明IP路徑選擇的運作程序。
圖中有三個網路:163.15.2.0/24、163.15.3.0/24和163.15.4.0/24(ClassB位址分割子網路),利用兩個路由器(Router_A與Router_B)所連結而成。
每一路由器上都有兩個連接埠口,並個別設定IP位址。
圖13-10(b)為兩個路由器的路由表,其可能是靜態路由(StaticRouting)或動態路由(DynamicRouting)。
我們以下列三種情況來說明路徑選擇的運作程序:
圖13-10(a)IP路徑選擇範例
圖13-10(b)RouterA和B的路由表
(1)主機A(163.15.2.1)欲傳送封包給主機B(163.15.2.2):主機A發現目的網路位址和自己網路號碼相同(163.15.2.0/24),便將封包直接廣播到網路上,主機B由網路上收到封包。
(2)主機A(163.15.2.1)欲傳送封包給主機C(163.15.3.1):目的網路號碼不同,必須透過路由器轉送。
主機A便將封包傳送給Router_A的R1a(預定路由器)。
Router_A由Ra1埠口收到封包(目的位址為163.15.3.1)後,便由路由表上得知網路位址是163.15.3.0/24的封包,必須轉送到163.15.3.254(Ra2),便將該封包由Ra2埠口廣播出去(163.15.3.0/24網路)。
主機C由網路上讀取到該封包。
(3)主機A(163.15.2.1)欲傳送封包給主機D(163.15.4.1):Router_A是網路(163.15.2.0/24)的唯一出口,主機(163.15.2.1)勢必將封包傳送給Router_A(與網路號碼無關)。
Router_A由路由表上查詢後,便由Ra2(163.15.3.254)廣播出去(也可直接傳給163.15.3.253)。
Router_B由Rb1收到封包,再由路由表上查出,應轉送到Rb2(163.15.4.254),便由Rb2埠口將封包廣播出去。
主機D由網路上(163.15.4.1/24)收到該封包。
上述中,我們都假設直接將封包廣播到網路上,其實它必須經過查詢網路實體位址(Ethernet位址)後,再傳送給對方,這方面將在下一節中說明。
翻轉工作室:粘添壽
電腦網路與連結技術:
第一章電腦網路概論
第二章實體層
第三章鏈路層
第四章網路層
第五章傳輸層
第六章
交談層、表現層與應用層
第七章區域網路模型
第八章FastEthernet網路
第九章GigabitEthernet網路
第十章區域網路連結技術
第十一章ATM電信網路
第十二章ATM網路連結技術
第十三章TCP/IP與Internet網路技術
13-1TCP/IP網路簡介
13-2TCP/IP協定堆疊
13-3IP協定
13-4ARP與RARP協定
13-5ICMP協定
13-6TCP與UDP協定
13-7IPv6協定
13-8Internet網路連結
13-9網域內繞路選擇
13-10自治系統內繞路選擇
13-11自治系統之間繞路選擇
13-12習題
第十四章廣域網路連結技術與寬頻網路
第十五章WirelessLAN網路
第十六章BluetoothLAN網路
第十七章Token-Bus與Token-Ring網路
第十八章FDDI/CDDI網路
翻轉電子書系列:
資訊與網路安全技術
電子商務安全概論
Java程式設計(一)含程式邏輯
Java
程式設計(二)含物件導向
資料庫系統概論(含邏輯設計)
資料庫程式設計-PHP+MySQL
網路規劃與管理技術
電腦網路與連結技術
TCP/IP協定與Internet網路
Linux伺服器管理-CentOS
Unix/Linux系統管理實務
延伸文章資訊
- 1IP协议头部| protocol
IP协议头部 ... IP包头长度(Internet Header Length):长度4比特。这个字段的作用是为了描述IP包头的长度,因为在IP包头中有变长的可选部分。该部分占4个bit位,单...
- 2IP 協定 - 翻轉工作室
表示 IP 封包的 IP 版本。 (2) 網際標頭長度(Internet Header Length, IHL):4 位 ...
- 3IP头部详解 - 知乎专栏
IP包头最小长度为20字节。 ... IP包总长(Total Length):长度16比特。 以字节为单位计算的IP包的长度(包括头部和数据),所以IP包最大长度65535字节。 标识 ...
- 4TCP/IP
IP 封包表頭格式
- 5IP协议头部格式 - 简书
Header Length(IP 协议头部长度):IP 协议头部的长度,单位字节(32 bit)需要这个值是因为任选字段的长度是可变的, 这个字段占4bit(最多能表示15 ...