iT邦幫忙

2019 iT 邦幫忙鐵人賽

1
自我挑戰組

30日Linux學習系列 第 24

IP的Class概念

  • 分享至 

  • xImage
  •  

IP的Class概念
二進位:
IP=XXXXXXXX.XXXXXXXX.XXXXXXXX.XXXXXXXX
十進位:
IP=XXX.XXX.XXX.XXX

二進位:
如果是以“0”開頭的,這是一個A Clas的IP
如果是以“10”開頭的,這是一個B Class的IP
如果是以“110”為開頭的,則屬於C Class的IP
十進位:
由 1 到 126 開頭的 IP 是 A Class
由 128 到 191開頭的 IP是 B Class
由 192 到 223 開頭的則為 C Class

A Class的IP:最前面一組數字Net ID,其餘三組Host ID
B Class的IP:前面兩組數字Net ID,另兩組Host ID
C Class的IP:前面三組數字Net ID,剩下的一組Host ID

建一個單一的 IP 網路,得分配相同的 Net ID 給所有主機,而各主機的 Host ID 卻必須是唯一的。如果網路還要連上internet 或其它網路的話,那麼使用的Net ID也必須是唯一的,也就是必需經過註冊才能獲得否則就會造成衝突了。

比如電話號碼,如果是1234567(Host ID) 的話,那麼在相同區號02(Net ID)裡,其他人將不會再使用這個號碼,然而,你不能保證在其它區號05裡面沒有1234567這個號碼﹔然而,若台北使用了區號02的話,屏東就不能使用02而必須改用其它(如08)。無論如何,整個區號加電話號碼必須是唯一的。
所以整個IP位址 (Net ID + Host ID)在 Internet上也必須是唯一的。

有一個很特別的Net ID:127 (即二進位的 01111111)是保留給本機回路測試使用的。不可以被運用於實際的網路中,其中的127.0.0.1則代表任何一台IP主機本身。

就是C:\Windows\System32\drivers\etc\hosts有個
127.0.0.1 localhost

還有一個規則我們還必須遵守的:在指定 Host ID 的時候,換成二進位的話,不可以是全部為0,也不可以是全部為 1。當 Host ID 全部為0的時候,指的是網路本身識別碼;而全部為1的時候,則為該網路的廣播位址,代表的是該網路上的所有主機。

所以當在算Net ID時,要扣掉Net ID:127
所以當在算host ID時,要扣掉2(網路本身識別碼和廣播位址)
https://ithelp.ithome.com.tw/upload/images/20181224/20112174pVSAlyWr8u.png
劃分子網路:
網路都有一定的節點極限的,比如 Ethernet通常最多只能連接1,200台主機,如果您獲得一個B Class的 Net ID,豈不是浪費很多Host ID了嗎?是使用A Class就更浪費

這時候可以用Sub-net Mask,不然預設的Host ID太多了,像是A Class就有16777214個Host ID,B Class就有65534個Host ID,所以把一些Host ID拿來當
Sub-net ID(子網路,就是原本的Net ID切割的網路),就是Sub-net Mask

範例:
IP (139.175.152.254)為例子
是屬於B class
所以預設的Net Mask是:
11111111.11111111.00000000.00000000
如果借用了Host ID的其中三個bit來當Sub-net ID的話
將原來的Net Mask和Sub-net Mask做一個 OR 的運算:
11111111.11111111.00000000.00000000
OR
00000000.00000000.11100000.00000000
得出:
11111111.11111111.11100000.00000000
所以實際的Net Mask就是11111111.11111111.11100000.00000000
十進位就是: 255.255.224.0

所以因為借用的ID有3個 bit,可以將原來的B Class網路切割為8個子網路,而Sub-net ID則分別從000到111這8個組合

本來是16個 bit的Host ID只剩下13個 bit了。也就是說:在每個子網路裡面,最多只能有2的13次方- 2 = 8,190台主機

不分等級的IP:
IP是139.175.152.254,而Net Mask則為255.255.255.0。是否用錯了net mask呢﹖
139.175.152.254是屬於b class,所以Net Mask應該為255.255.0.0,但為什麼是255.255.255.0?
Subnet-->增加net
Supernet-->增加host
所以只要Subnet或Supernet就不用管原本預設的A、B、C class了,這樣就是
不分等級 IP,所用的技術叫CIDR (Classless Inter-Domain Routing)
例如: 192.168.1.1的Net Mask是255.255.255.0,可以表示成192.168.1.1/24
如果要增加3個net,就是192.168.1.1/27
增加3個host就是192.168.1.1/21

"公共 IP" 與 "私有 IP ":
要將網路連上 Intetnet 的時候,必須先註冊好 Net ID,如果該 ID已經被使用了,就必須選用另外的 ID 了。負責 Internet IP註冊的機構叫做InterNIC (Network Information Center),他們的網路位址是http://www.internic.net 。不過,實際上的運作,一般機構或個人是不太可能直接從InterNIC上註冊 IP 的,而是經ISP分配下來。這些經過合法授權使用的 IP ,稱之為公共 IP( Public IP )

然而,由於 Internet 的爆炸性成長,IP 的位址買少見少,而且在很多機構裡,也不是所有機器都有必要使用註冊的 IP 位址。於是,就在 A、B、C 這三個層級裡面,各劃出一些位址範圍保留給私有位址所用,它們分別是﹕
10.0.0.0 - 10.255.255.255
172.16.0.0 - 172.31.255.255
192.168.0.0 - 192.168.255.255

所以在電腦查到的IP通常都是10.xxx.xxx.xxx或是192.168.xxx.xxx就是私有IP,而http://dir.twseo.org/ip-check.php 所查詢的就是公有IP。

如果每個裝置都有自己的公有IP,就不用透過router的Network Address Translation,來連到internet了,但那樣是不行的,因為IPV4的位址已經快用盡了,也是因為快用盡才會有Network Address Translation。
但是如果是IPV6的話,就可以每個裝置都有公有IP,因為以地球人口70億人計算,每人平均可分得約4.86×10的28次方(486117667×10的20次方)個IPv6位址,非常多地址可以用。

之後學IPV6


上一篇
Linux 關於IPv4
下一篇
Linux 了解IPV6
系列文
30日Linux學習30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言