IP 位址 靜宜大學資工系 蔡奇偉 2006
大綱 IP 位址簡介 位址空間 IP 位址表示法 IP 位址的分級 網路代碼與主機代碼 網路位址 網路遮罩 多位址裝置 特殊位址 Unicast, Multicast, and Broadcast Addresses
IP 位址簡介 在網路層,要能唯一的辨識網際網路上的每一個裝置,才能讓這些裝置互相通訊。 在 TCP/IP 協定的 IP 層裡,用來辨識每台電腦的東西,稱為網際網路位址(Internet address) 或 IP 位址 ( IP address)。 IP 位址是一個 32 位元的整數。 IP 位址是惟一的。
位址空間 所謂位址空間,是指協定所用的全部位址數目。如果一協定使用 N 個位元定義一個位址,那麼位址空聞為 2N。這是因為每個位元可以為 1 或 0,因此,N 位元可以有 2N 個數值。 IPv4 使用 32 位元位址,這表示位址空間為 232 或4,294,967,296。這意味著,理論上如果沒有別的限制,超過 40 億台電腦可以連到網際網路上。
IP 位址表示法 二進制表示法 (Binary Notation) 以二進制表示時,位址以位元呈現。通常為了容易讀出,在每 8 位元之間會插入空白。譬如: 01110101 10010101 00011101 11101010
點十進制表示法 (Dotted-Decimal Notation) Figure 4-1 點十進制表示法 (Dotted-Decimal Notation) 為了讓 IP 位址看起來易讀,IP 位址通常以十進制表示,並用句點區分位元組。譬如:
十六進制表示法 (Hexadecimal Notation) 有時候,我們看到的 IP 位址是用十六進制表示,每個十六進制數字等於 4 個位元。所以,32 位元共有 8 個十六進制數字。通常這種表示法用在網路程式。誓如: 0111 0101 1001 0101 0001 1101 1110 1010 7 5 9 5 1 D E A 0x75951DEA
129.11.11.239 問題 解答 將下列 IP 位址從二進制表示法,改為點十進制表示法。 10000001 00001011 00001011 11101111 129.11.11.239 解答
問題 解答 01101111 00111000 00101101 01001110 將下列 IP 位址從點十進制表示法,改為二進制表示法。 111.56.45.78 01101111 00111000 00101101 01001110 解答
問題 將下列 IP 位址的錯誤找出來。 111.56.045.78 75.45.301.14 以點十進制表示,數字前面不用加 0 (045). 301 大於 255 的範圍。 解答
問題 解答 將下列 IP 位址,從二進制表示法改為十六進制表示法。 10000001 00001011 00001011 11101111 10000001 00001011 00001011 11101111 0X810B0BEF or 810B0BEF16 解答
IP 位址的分級 IP位址在幾十年前開始時,使用級別 (class) 的觀念。這種架構稱為分級式定址 (classful addressing)。在1990年代中期,一種稱為無級式定址 (classless addressing) 的新架構被提出,這個架構終將會取代原來的分級式架構。不過,這個轉變很慢,大部分的網際網路依舊是使用分級式位址。 使用分級定址時,IP位址分為五級:A、B、C、D、E。
Figure 4-2 級別 位址數目 百分比 A 231 = 2,147,483,648 50% B 230 = 1,073,741,824 25% C 229 = 536,870,912 12.5% D 228 = 268,435,456 6.25% E
Figure 4-3 分辨級別 以二進制位址找出級別 如果位址是以二進制表示,前面幾個位元就可以告訴我們該位址級別:
Figure 4-4
問題 我們如何證明 A 級有 2,147,483,648 個位址? 在 A 級只有一個位元定義其級別,剩下的 31 位元可以作為定址用。所以 231 = 2,147,483,648 個位址。 解答
問題 找出下列各位址的級別: 00000001 00001011 00001011 11101111 11000001 10000011 00011011 11111111 第一個位元 0,這是 A 級位址。 最前 2 位元為 1,第 3 位元為 0,這是 C 級位址。 解答
Figure 4-5 以點十進制位址找出級別 當位址以點十進制表示時,我們可以第一個位元組之數值,決定該位址的級別。如下圖所示,如果第一個位元組的數值在 0到 127 之間,那麼這是 A 級位址。如果是在 128-191 之間則為B 級,依此類推。
問題 Solution 找出下列各位址的級別: 227.12.14.87 193.14.56.22 第一個位元組 227 (在 224 和 239 之間) 級別是 D。 第一個位元組 193 (在 192 和 223之間) 級別是 C。
Figure 4-6 網路代碼與主機代碼 做分級式定址時,A、B、C 的 IP 位址被分成網路代碼 (netid) 和主機代碼 (hostid) 兩個部分,這二者的長度可變,取決於是哪一個級別 (如下圖)。注意 D 和 E 是不分 netid 和 hostid 的。
級別和區塊 每一級被分為一固定數目的位址區塊 (block)。A、B、C 三級以網路代碼來分割成若干區塊,D 和 E 各自成為一區塊。下表列出各級的區塊數與每個區塊所含的位址數: 級別 區塊數 位址數/區塊 A 128 16,777,216 B 16,384 65,536 C 2,097,152 256 D 1 E
Figure 4-7 A 級的區塊:netid 0 至 127
Class A has 128 blocks each block has 224 = 16,777,216 addresses block 0, 10, and 127 are reserved for special usage. the remaining 125 blocks are available for ordinary usages. 分配給超大型機構使用 許多 A 級位址都被浪費掉。
Figure 4-8 B 級的區塊:netid 128.0 至 191.255
Class B has 16,384 blocks each block has 216 = 65,536 addresses 16 blocks are reserved for special usage. the remaining 16,368 blocks are available for ordinary usages. 分配給大型機構使用 許多 B 級位址都被浪費掉。
Figure 4-9 C 級的區塊:netid 192.0.0 至 223.255.255
Class C has 2,097,152 blocks each block has 28 = 256 addresses. 256 blocks are reserved for special usage. the remaining 2,096,896 blocks are available for ordinary usages. 分配給小型機構使用 位址數目對大多數使用單位來講,可能都太少。
Class D D 級位址只有一個區塊,用來做為群播 (multicasting) 之用。D 級的每個位址用來定義一群在網際網路上的主機。當一群組 (group) 被分配一個位址後,在群組裡的每台主機除了有一個群播位址外,也有自己原來的位址。
Class E E 級也只有一個區塊,作為保留位址之用。E 級的最後一個位址為 255.255.255.255,有特定用途。大部分的 E 級位址都被浪費掉了。
網路位址 網路位址在分級定址架構中,有很重要的意義。網路位址具有下列特性: 網路位址為區塊的第一個位址。 網路位址定義該網路在網際網路上的位址。路由器會依據網路位址來做封包的路徑選擇。 給予一個網路位址,可以找到該位址的級別所在區塊,與這個區塊的範圍。 在分級定址架構中,核給使用單位的位址,即為網路位址 (區塊的第一個位址)。給予一個網路位址,可以從這個位址,自動推算出網路的位址範圍。
問題 解答 給予網路位址 17.0.0.0,找出其級別、區塊、與位址範圍。 這是 A 級位址,因為第一個位元組在 0 到 127 之間。區塊的 netid 為 17,位址範圍從 17.0.0.0 到 17.255.255.255。
問題 解答 某網路位址為 132.21.0.0,找出其級別、區塊、與位址範圍。 第一個位元組數值在 128 到 191 之間,所以是 B 級。區塊的 netid 為 132.21,位址範圍從 132.21.0.0 到 32.21.255.255。
問題 解答 某網路位址為 220.34.76.0,找出其級別、區塊、與位址範圍。 第一個位元組數值在 192 到 223 之間,所以是 C 級。區塊的 netid 為 220.34.76,位址範圍從 220.34.76.0 到 220.34.76.255
網路遮罩 (Mask) 網路遮罩是一個 32 位元的二進制數字,此數字與位址的位元做 AND 運算,可以找到網路位址。
AND 運算 AND 運算過程如下: 如果在遮罩的某個位元為 1,則位址內相對應的那個位元,即為結果輸出。 Figure 4-11 AND 運算 AND 運算過程如下: 如果在遮罩的某個位元為 1,則位址內相對應的那個位元,即為結果輸出。 如果遮罩的某個位元為 0,則結果輸出為 0。
預設的網路遮罩 class binary decimal A 11111111 00000000 00000000 00000000 255.0.0.0 B 11111111 11111111 00000000 00000000 255.255.0.0 C 11111111 11111111 11111111 00000000 255.255.255.0
網路位址為每一個區塊的起始位址,可 藉由預設遮罩而獲得,其中 netid 被保 留下來,而 hostid 被設為 0。
問題 解答 給予位址 23.56.7.91 及 A 級的預設遮罩,找出網路位址。 預設遮罩為 255.0.0.0,表示第一個位元組被保留,其他三個位元組則設為 0。所以網路位址為 23.0.0.0。
問題 解答 給予位址 132.6.17.85 及 B 級的預設遮罩,找出網路位址。 預設遮罩為 255.255.0.0,表示前二個位元組被保留,其他二個位元組則設為 0。所以網路位址為 132.6.0.0。
問題 解答 給予位址 201.180.56.5 及 C 級的預設遮罩,找出網路位址。 預設遮罩為 255.255.255.0,表示前三個位元組被保留,剩下一個位元組則設為 0。所以網路位址為 201.180.56.0。
我們不可以將某一級別的預設遮罩, 用到屬於其他級別的位址。
多位址裝置 (Multihomed Devices) 一個 IP 位址定義連在某個網路上的一台電腦,如果有一台電腦所連的網路超過一個,那麼這台電腦就會有超過一個以上的 IP 位址。事實上,這台電腦所連的網路,都有不同的 IP 位址,每個位址可能屬於不同的級別,我們稱這樣的電腦為多位址電腦 (multihomed computer)。 因為路由器有選擇路徑的功能,它所連接的網路一定會超過一條以上。因此,路由器在每一個介面上,都有一個 IP 位址。
Figure 4-12 2 IP’s 3 IP’s
特殊位址 特殊位址 網路代碼 主機代碼 來源/目的 網路位址 特定 位元全為 0 無 直接廣播位址 位元全為 1 目的 有限廣播位址 未知的網址 來源 省略網路位址 迴路位址 127 任何
Figure 4-13 網路位址 區塊的第一個位址即為網路位址。
直接廣播位址 A、B、C 這三級網路的 IP 位址裡,如果主機代碼全部為1,那麼這個位址稱為直接廣播位址 (direct broadcast address)。這個位址是給路由器送封包到網路上的所有電腦,亦即所有在這個網路上的電腦,都會接受以此為目的位址的封包,這個位址只能當做目的位址用。
Figure 4-14 直接廣播位址範例
有限廣播位址 (Limited Broadcast Address) 就 A、B、C 級網路而言,一個主機代碼與網路代碼全部為 1 的 IP 位址,作為所在網路的廣播位址。一台電腦若想送一個封包,給目前所在網路上的每台其他電腦,可以用這個位址作為封包的目的位址。不過,路由器會擋下這類的封包,使其僅能在本身的區域網路中廣播。應注意的是,這個網路位址是屬於E級。
Figure 4-15 有限廣播位址範例
本機在此網路上 如果 IP 位址全部為 0,代表本機在此網路上 (This Host on This Network),這是給一台在開機時不知道自己 IP 位址的電腦使用。當一台電腦開機時,送出封包給一台幫助開機的伺服器來找出自己的位址,這個封包的來源位址全部為 0,而目的位址則是用有限廣播位址。全部為 0 的這個位址,只能用在來源位址。這個位址屬於 A 級,它讓 A 級的網路數目少了一個。
Figure 4-16 本機在此網路上範例
在此網路上的特定主機 (Specific Host on This Network) IP 位址的網路代碼 (netid) 全部為 0 的話,代表這是這個網路上的某特定電腦要送封包到在同一網路上的電腦。路由器會擋下這個封包,使用這種位址的封包就會被局限在目前這個區域網路內。這個位址只能當做目的位址,不論是那種網路。這個位址屬於 A 級。
Figure 4-17 在此網路上的特定主機範例
迴路位址 (Loopback) 第一個位元組是 127 的 IP 位址是迴路位址 (loopback address),用來測試電腦上的軟體。使用這個目的位址的封包,不會離開自己這台電腦,而會回到其協定層軟體。這個位址用來測試軟體,例如 ping 這個指令,可以用迥路位址來測試 IP 軟體,是否可以接收與處理封包。再舉另一個例子,一個用戶端程序 (client process)可以用迴路位址送給在同一台機器上的伺服程序 (server process)。迴路位址只能當作目的位址,它是 A 級位址。
Figure 4-18 迴路位址範例
私有位址 每一級別內,有數個區塊是給私有網路用,這些位址無法被外界認出。這些區塊列在下表中。這些位址不是獨立使用,就是與網路位址轉換 (network address translation) 技術一起使用。 class netid # of blocks A 10 1 B 172.16 to 172.31 16 C 192.168.0 to 192.168.255 256
Unicast, Multicast, and Broadcast Addresses Unicast communication is one-to-one. Multicast communication is one-to-many. Broadcast communication is one-to-all.
單點位址 (Unicast Address) 單點傳送 (unicast) 是以一對一 (one-to-one) 的方式進行通訊。一個封包由一個獨立來源送出到另一個目的地,這是單點傳送。在網際網路上的所有電腦,至少都要有一個唯一的單點目的位址。所有單點位址屬於 A、B、或 C 級。
群播位址 (Multicast Address) 群播傳送是以一對多 (one-to-many) 的方式進行通訊。封包由一個獨立的來源送出到一群接收者。群播位址屬於 D 級位址,位址定義一個群組代號 (groupid)。在網際網路上的系統除了單點位址外,可有超過一個以上的 D 級群播位址。如果一個系統有很多個群播位址,表示它屬於很多群組。值得注意的是,D 級位址只能當作目的位址,不可以是來源位址。 在網際網路上可以做區域性或全區域的群播。以局部區域方式進行時,在區域網路上的電腦,可以給予一個群播位址以形成一個群組。以全區域進行時,在不同網路上的電腦,也可以用一個群播位址來形成一個群組。
已分配的群播位址 (Assigned Multicast Address) 網際網路的管理當局將一些群播位址分給一些特定群組,譬如: 部門 (Category) : 具有特定用途的群播位址。這些群播位址以 224.0.0 開始。 會議 (Conferencing):這些群播位址是給一般會議及電傳會議使用,以 224.0.1 開始。 參考: RFC 1112 http://www.networksorcery.com/enp/protocol/ip/multicast.htm
部門位址 位址 群組 224.0.0.0 保留 224.0.0.1 所有在這個子網上的系統 224.0.0.2 所有在這個子網上的路由器 224.0.0.4 DVMRP ROUTERS 224.0.0.5 OSPFIGP 所有路由器 224.0.0.6 OSPFIGP 某一指定路由器 224.0.0.7 ST 路由器 224.0.0.8 ST 主機 224.0.0.9 RIP2 路由器 224.0.0.10 IGRP 路由器 224.0.0.11 行動代理器
會議用位址 位址 群組 224.0.1.7 AUDIONEWS 224.0.1.10 IETF-1-LOW-AUDIO 224.0.1.11 IETF-1-AUDIO 224.0.1.12 IETF-1-VIDEO 224.0.1.13 IETF-2-LOW-AUDIO 224.0.1.14 IETF-2-AUDIO 224.0.1.15 IETF-2-VIDEO 224.0.1.16 MUSIC-SERVICE 224.0.1.17 SEANET-TELEMETRY 224.0.1.18 SEANET-IMAGE
廣播位址 廣播方式是一對全部 (one-to-all) 的通訊。網際網路只允許在局部區域內進行廣播。之前,我們介紹兩種局部區域所用的廣播位址 (broadcast address),分別是:有限廣播位址 (位址全部為 1) 和直接廣播位址 (網路代碼為特定值,主機代碼全部為 1)。 全區域網路上是不允許廣播的,這表示一台電腦或路由器,不能以廣播的方式,送訊息給網際網路上所有的電腦和路由器。為什麼不能? 自然是為了避免發生訊息大量壅塞的現象。
Figure 4-19 互連網路範例