解釋IP,DNS,GARTWAY,MASK
何謂IP
Internet 中所謂的「IP 位址(IP Address)」,就像現實生活中每戶人家都要擁有唯一的地址一樣,傳送者可以根據 IP 位址進行辨識,將資料傳送到唯一目的地位址完成通訊。世界各地的 IP 位址必須具有一致性,才不會導致辨識上的混亂,故必須依循共同的規範才能達成。
目前我們所使用的 IP 位址為第四版 IP 位址,一般稱為 IPv4 位址。為滿足使用上的需求,又陸陸續續發展 IPv5、IPv6,IPv5 是提供給 Stream Protocol 實驗協定使用,而 IPv6 則是 IPv4 的擴充,為因應位址數量不敷使用的問題,在標頭格式也提供動態欄位設定。
IPv4 位址是由 32 位元所組成,一般以 8 位元為單位(octet)將 32 位元分成四部份,彼此間以 "." 做區隔,例如 "100100011.00001110.01001000.00011100",此即為「加點二進位表示法(dotted binary notation)」,由於二進位表示法太長不易記憶,故通常使用十進位來表示,上述的二進位 IP 位址即可表示成 "163.14.75.28",此即為「加點十進位表示法(dotted decimal notation)」。由於每一部份均由 8 位元所組成,故每個十進位值均介於 0 ~ 255 之間。
IP 位址主要分為兩部份:網路位元(Network bits)和主機位元(Host bits)。網路位元主要是用來辨識其 IP 位址是屬於哪一個網路系統;而主機位元則是用來辨識其 IP 位址在其所屬的網路系統中是屬於哪一台電腦主機。
IP 位址 = 網路位元 + 主機位元
IPv4 將位址分成 A、B、C、D、E 五類,分別用來表示不同的網路位址種類,各類的位址型態可從左邊固定的位元進行判斷。以下為各類 IP 位址的格式,其中沒有框的位元為固定位元,用以判別位址是屬於哪一類,N 代表network(網路)位元,H 代表host(主機)位元,而 M 和 R 則分別代表 D 類的多點傳送位元(Muticast bits)和 E 類的保留位元(Reserved bits)。class A、B、C IP 位址是最常使用的,而class D、E IP位址則是提供特殊用途。
class A IP 位址:0NNNNNNN.HHHHHHHH.HHHHHHHH.HHHHHHHH
class B IP 位址:10NNNNNN.NNNNNNNN.HHHHHHHH.HHHHHHHH
class C IP 位址:110NNNNN.NNNNNNNN.NNNNNNNN.HHHHHHHH
class D IP 位址:1110MMMM.MMMMMMMM.MMMMMMMM.MMMMMMMM
class E IP 位址:1111RRRR.RRRRRRRR.RRRRRRRR.RRRRRRRR
N:網路位元 H:主機位元 M:群播位元 R:保留位元
在Class A、B、C(有網路位元和主機位元)IP 位址中,各含有兩個特殊位址不做主機位址使用。一為將 IP 位址中所有主機位元均設為 "0",即為「網域位址(Domain Address)」,用來判斷 IP 位址之所屬網域;另將所有主機位元值均設為 "1",即為「廣播位址(Broadcast Address)」,用來對所屬網域之所有主機進行廣播。以下將分別對各類型的IP位址設定做詳細的說明。
Class A IP 位址
Class A IP 位址的最左邊位元固定為 "0",後接 7 個網路位元及 24 個主機位元。由於有 7 個網路位元 "0NNNNNNN",故可提供 2^7 = 128 個網路系統,該位元組的十進位則介於 0 ~ 127 之間,其中 0 和 127 兩個網域做特殊用途使用。
除了 " 0.0.0 .0" 和 "127.0.0.0" 兩個網域外,Class A IP 位址另外保留網域 "10.0.0.0",提供給企業內網路(Intranet)IP 位址設定。由於 Intranet 彼此間獨立的網路架構,故分別使用 "10.0.0.0" 網域並不會互相衝突。若 Intranet 要與外部的 Internet 連繫,必須透過「網路位址轉譯(Network Address Translation,NAT)」路由器提供一個可辨識使用的 IP 位址與外界溝通。由於各個 Intranet 均可提供以 "10.0.0.0" 為網域的所有主機位址,故可改善 IP 位址不足的現象。
由上述可知,原本 128 個網路系統,扣掉 0、10、127 三個特殊網域,故實際上可用的網域為 1 ~ 9、11 ~ 126 共 125 個網域。
ClassA IP 位址的 24 個主機位元則可提供 2^24 個主機位址,各位元組的十進位值介於 0 ~ 255 之間,其中將所有主機位元設為 "0",用十進位將 IP 位址表示成 "N.0.0.0" 為網域位址;將所有主機位元設為 "1", 用十進位將 IP 位址表示成 "N.255.255.255" 為廣播位址。故個主機位址扣掉網域位址和廣播位址,實際上可用的主機位址為 2^24 -2 = 16,777,214 個。
從上述得知Class A IP 位址可提供 125 個網域,而各網域可用( 2^24 - 2)個主機位址,故A類位址共可提供約 125 × 16,777,214 = 2,097,151,750 個 IP 位址。Class A IP 位址已分配給早期參與 Internet 的組織機構使用,所以現在沒有空的Class A IP 位址以供申請。
Class A IP 位址保留 "127.0.0.1" 用來進行「迴路回測(Loopback Testing)」,主要是透過本身主機將訊息送回本身主機,以檢查主機的 TCP / IP 的設定是否正確,所使用的指令為 "ping 127.0.0.1",若 TCP / IP 設定不完整會出現錯誤訊息。
Class B IP 位址
Class B IP 位址的最左邊兩個位元固定為 "10",後接 14 個網路位元及 16 個主機位元。IP 位址的左邊第一個網路位元組 "10NNNNNN" 可提供 2^6 個組合,該位元組的十進位值介於 128 ~ 191 之間,而第二個網路位元組 "NNNNNNNN" 則可提供 2^8 個組合,十進位值介於 0 ~ 255 之間﹔另外,類別 B IP 位址保留 "172.16.0.0 ~ 172.31.255.255" 網域作為Intranet使用。由此二個網路位元組即可提供 2^14 -8 = 16,376 個domain(網域)。
Class B IP 位址的 16 個主機位元則可提供 2^16 個主機位址,各位元組的十進位值介於 0 ~ 255 之間,同樣將所有主機位元設為 "0",十進位 IP 位址表示法 "N.N.0.0" 為網域位址;將所有主機位址設為 "1",十進位 IP 位址表示法 "N.N.255.255" 為廣播位址。故個主機位址扣掉網域位址和廣播位址,實際上可用的主機位址有 2^16 - 2 = 65,534 個。Class B IP 位址也已發送完畢,所以現在沒有空的Class B IP 位址以供申請。
由上述可知,class B IP 位址可提供 2^14 個網域,而各網域可用 65,534 個主機位址,故class B IP 位址共可提供約 16,376 × 65,534 = 1,073,184,784 個 IP 位址。
Class C IP 位址
Class C IP 位址的最左邊三個位元固定為 "110",後接 21 個網路位元及 8 個主機位元。IP 位址左邊第一個網路位元組 "110NNNNN" 可提供 2^5 = 32 個組合,該位元組的十進位值介於 192 ~ 223 之間,而第二、三個網路位元組 "NNNNNNNN" 則分別可提供 2^8 = 256 個組合,十進位值介於 0 ~ 255 之間,此三個網路位元組可提供 2^21 = 2,097,152 個domain。
Class C IP 位址的 8 個主機位元則提供 2^8 = 256 個主機位址,該主機位元組的十進位值介於 0 ~ 255 之間,同樣將所有主機位元設為 "0",十進位表示法 "N.N.N.0" 為網域位址;將所有主機位元設為 "1",十進位表示法 "N.N.N.255" 為廣播位址。故 256 個主機位址扣掉網域位址和廣播位址,實際上可用主機位址有 254 個。
另外,clsee C IP 位址保留 "192.168.0.0" 網域作為Intranet使用。由此可知 C 類位址可提供 2,097,152 - 1 = 2,097,151 個網域,而各網域可用 254 個主機位址,故C類位址共可提供約 2,097,151 × 254 = 532,676,354 個 IP 位址。
Class D IP 位址
Class D IP 位址的最左邊四個位元固定為 "1110",後接 28 個群播設定位元。IP 位址的左邊第一群播位元組 "1110MMMM" 可提供 2^4 個組合,十進位介於 224 ~ 239 之間,其他三個群播位元組則分別提供 2^8 個組合,十進位值介於 0 ~ 255 之間,故類別 D IP 位址共可提供 2^28 = 268,435,456 個群播 IP 位址。多點傳送操作並沒有區分網路位元與主機位元。
所謂「多點傳送(Muticasting)」,或稱「群播」,是指一電腦主機可透過「多點傳送路由器(MRouter;Muticasting Router)」同時對多部主機傳送相同的資料。使用單點傳送(1 對 1)將相同資料送到三台主機,需要傳送三次才能完成;而多點傳送(1 對多)只需傳送一次即可,故多點傳送可以降低在網路上的資訊傳送量。欲進行多點傳送的群組必須擁有一個Class D IP 位址方可彼此連繫。
在Class D IP 位址中,224.0.0.0 ~ 224.0.0.255(224.0.0.0/24)是保留給區域子網路(local subnet)之用,其封包不會被路由器傳送出去,不論其 TTL 為何﹔而 IP 位址在 224.0.1.0 ~ 238.255.255.255 是為多點傳送正常使用﹔IP 位址在 239.0.0.0 ~ 239.255.255.255(239.0.0.0/8)則是保留給管理用途。
Microsoft 支援class D IP 位址,作為應用程式多點傳送資料至 Internet 上可多點傳送的主機。
Class E IP 位址
Class E IP 位址最左邊四個位元固定為 "1111",後接 28 個保留位元。IP 位址的左邊第一個保留位元組 "1111RRRR" 之十進位值介 240 ~ 255 之間,類別 E IP 位址和類別 D IP 位址一樣,沒有網路位元和主機位元,共可提供 2^28 = 268,435,456 個 IP 位址。類別 E IP 位址是保留給實驗網路所使用。
何謂DNS的來由
如果您為您的機器設定過internet連線﹐那麼您一定接觸過DNS了﹐但DNS又是什麼東東呢﹖說穿了﹐DNS是用來幫助記憶網路地址的﹐完全是為了遷就人類的記憶思維而設的。
DNS的全稱是Domain Name System﹐當您連上一個網址﹐在URL打上﹕www.hotmail.com的時候﹐可以說就是使用了DNS的服務了。但如果您知道這個www.hotmail.com的IP地址﹐直接輸入209.185.243.135也同樣可以到達這個網址。其實﹐電腦使用的只是IP地址而已(最終也是0和1啦)﹐這個www.hotmail.com只是讓人們容易記憶而設的。因為我們人類﹐對一些比較有意義的文字記憶(如﹕www.hotmail.com)﹐比記憶那些毫無頭緒的號碼(如﹕209.185.243.135)﹐往往容易得多。DNS的作用就是為我們在文字和IP之間擔當了翻譯﹐而免除了強記號碼的痛苦。
假如您的電話有名字記憶功能﹐您只需知道對方的名字﹐就可以撥號給友人了﹐我們可以說﹐這電話也具備如DNS的功能了呢﹗但是﹐我們在網路中使用的DNS系統﹐就是這麼簡單嗎﹖非也﹐複雜得很呢﹗下面﹐就讓我們一起去探索一下DNS的奧秘﹕
在早期的IP網路世界裡面﹐每台電腦都只用IP地址來表示﹐不久人們就發現這樣很難記憶﹐於是﹐一些UNIX的使用者﹐就建立一個HOSTS對應表﹐將IP和主機名字對應起來﹐這樣﹐用戶只需輸入電腦名字﹐就可以代替IP來進行溝通了。如果你安裝了Linux系統﹐在/etc下面就可以找到這個hosts檔案了﹔在NT的系統裡﹐你也可以在winntsystem32driversetc下面找到它。不過這個HOSTS檔是要由管理者手工維護的﹐最大的問題是無法適用於大型網路﹐而且更新也是件非常頭痛的事情。這就是DNS大派用場的時候了。
DNS的結構
DNS是一個分層級的分散式名稱對應系統﹐有點像電腦的目錄樹結構﹕在最頂端的是一個“root”﹐然後其下分為好幾個基本類別名稱﹐如﹕com﹑org﹑edu等﹔再下面是組織名稱﹐如﹕sony﹑toshiba﹑intel等﹔繼而是主機名稱﹐如﹕www﹑mail﹑ftp等。因為當初internet是從美國發起的﹐所以當時並沒有國域名稱﹐但隨著後來internet的蓬勃發展﹐DNS也加進了諸如tw﹑hk﹑au等國域名稱。所以一個完整的dns名稱就好像是這樣的﹕www.xyz.com.tw﹐而整個名稱對應的就是一個IP地址了。
在開始的時候﹐root下面只有六個組織類別﹕
類別名稱 代表意思
edu 教育﹑學術單位
org 組織﹑機構
net 網路﹑通訊單位
com 公司﹑企業
gov 政府機關
mil 軍事單位
不過﹐自從組織類別名稱開放以後﹐各種各樣五花八門的名稱也相繼涌現出來了﹐但無論如何﹐取名的規則最好儘量適合網站性質。除了原來的類別資料由美國本土的NIC(Network Information Center)管理之外﹐其它在國域以下的類別分別由該國的NIC管理。這樣的結構看起來就像這樣﹕
在結構中﹐各組織的DNS經過申請後由該組織或其委託機構管理﹐(通常當您申請註冊一個domain域名稱的時候﹐都要指定兩台DNS主機負責該域名的DNS管理)。
DNS的運作
在我們設定IP網路環境的時候﹐通常都要告訴每台主機關於DNS伺服器的地址﹐(我們可以手動的在每一台主機上面設置﹐也可以使用DHCP來設定)。
下面讓我們看看DNS是怎樣運作的﹕
當被詢問到有關本域名之內的主機名稱的時候﹐DNS伺服器會直接做出回答﹔如果所查詢的主機名稱屬於其它域名的話﹐會檢查記憶體﹐看看有沒有相關資料﹔如果沒有發現﹐則會轉向root伺服器查詢﹔然後root伺服器會將該域名之授權(authoritative)伺服器(可能會超過一台)的地址告知﹔
本地伺服器然後會向其中的一台伺服器查詢﹐並將這些伺服器名單存到記憶體中﹐以備將來之需(省卻再向root查詢的步驟)﹔
遠方伺服器回應查詢﹔將查詢結果回應給客戶﹐並同時將結果儲存一個備份在自己的快取記憶裡面﹔如果在存放時間尚未過時之前再接到相同的查詢﹐則以存放於快取記憶裡面的資料來做回應。
從這個過程我們可以看出﹐沒有任何一台DNS主機會包含所有域名的DNS資料﹐資料都是分散在全部的DNS伺服器中﹐而NIC只需知道各DNS伺服器地址就可以了。
為了更好地理解一下 DNS 的運作﹐讓我們用下圖看看查詢www.home.netman.com.tw這台主機位址的過程﹕
在這個例子中﹐www.home.netman.com.tw台主機的DNS對應資料﹐是由負責home.netman.com.tw這個域名的DNS伺服器管理的。(在DNS術語中﹐我們稱一個域名為“zone”﹐這個zone可以是您從NIC申請回來的域名﹐也可以是從該域名之下延伸出來的“sub-zone”)。在這台DNS伺服器上面﹐必須有一個關於home.netman.com.tw這個zone的檔案﹐而這檔案裡面必須有一筆關於www的記錄(任何主機都是以“記錄”來表示)。這個記錄可以為一個IP地址﹐也可以以別名形式來對應一台主機名稱﹐但無論如何﹐所對應的主機名稱最終是要被一個IP地址所對應著就是了。
同時﹐DNS還能提供“反查詢”(reverse lookup)功能﹐也就是以IP來查詢主機名稱。網路上面的許多服務﹐如﹕FTP, IRC, WWW﹑等等﹐都需要到這個功能。其實﹐DNS服務本身就必須要使用反查詢功能﹐而且在設定上﹐也必須要為每個網路建立起reverse zone。雖然有些人發覺即使沒有reverse zone也可以利用到DNS服務﹐但其中弊端卻不容易被察覺到﹐在這個(中文)網頁﹕http://dnsrd.nctu.edu.tw/Basic/WhenToUse-Rev.html上面﹐您可以看到忽略revers zone所致一些問題。
DNS的名稱記錄
事實上﹐DNS不僅僅是用來解釋地址用的﹐而且還可以回答更多關於網路和主機的其它信息﹐其中很重要的一個功能就是可以供郵件系統進行路由。這些資料﹐通常會以不同的“記錄”名稱出現在DNS的資料檔案中。下面讓我們參考一個Linux的DNS檔案﹐看看這些記錄是如何表示的﹕
我們姑且不理會開頭那幾行的意思﹐那是給DNS系統本身使用的(我將會在“學習Linux”文章裡面再詳細討論)﹐這裡我們只是看看幾個記錄名稱而已﹕類別名稱代表意思TXT 只是一些說明文字﹐可以用來說明主機/網路環境設定NS 名稱伺服器﹐也就是該zone指定的DNS伺服器名稱MX 郵件伺服器﹐負責經由DNS查詢進行郵件傳遞的郵件伺服器。這樣的好處是﹕如果您要更換郵件伺服器的話﹐只需修改DNS記錄就可以了﹐而對方的郵件伺服器則無需理會您要使用的究竟是哪一台電腦來負責郵件交換。同時﹐您也可以指定多台郵件伺服器來分擔郵件交換工作﹐在MX後面的號數用來指定伺服器的使用順序﹐數字越低越優先。
A 用來對應主機名稱和其IP地址﹐這個記錄最常用﹐而且也是最重要的記錄之一HINFO 和TXT差不多﹐是回答“Host Information”查詢用的CNAME 是一個“別名”記錄﹐可以給A記錄使用另外一個(或多個)名稱讓外面查詢。CNAME可以對應一個A記錄﹐但不鼓勵對應另一個CNAME記錄。
AAAA 和A記錄一樣﹐只不過對應的是IP v6 格式
分擔DNS工作
Primary(master) DNS伺服器是架設在某一個網域下被主要授權並控制所有名稱記錄的主控制伺服器﹐管轄著所有該網域的記錄資料﹐這些記錄資料只有primary(master)可以修改。
但如果在一個比較大型的網路中﹐DNS伺服器就會變得很繁忙了﹐所以您可以設定多個DNS來分擔master的工作﹐但您或許不願意到每一個DNS伺服器去更新資料吧﹖而且就算您願意這樣做﹐也容易出現錯誤或資料不同步的情形。這樣您可以設定其它的伺服器為secondary (slave) DNS來複製master上面的記錄資料﹐這樣﹐其它的電腦可以被指定到不同的DNS做查詢﹐既可以分擔master的工作﹐而且資料也可以自動進行同步工作。您可以設定DNS資料同步的時間間隔﹐在dns檔案中的Refresh設定就是了。同時您還會看到Serial﹐當slave的上面的serial數字少於它﹐資料就會被複製﹐否則會被忽略。
驗證DNS工作
當您建立好一個DNS伺服器之後﹐除了可以直接使用命令 ping (這個會在後面章節說明)直接ping一下上面的記錄之外﹐最好還是使用“nslookup”這個命令進行檢測或除錯﹐(Windows9x系統並不包含此命令)。下面讓我們在Linux中驗證一下﹕當您輸入nslookup之後﹐您會看到您機器目前指定的DNS伺服器的回應﹕
然後您輸入欲查詢的主機或IP地址﹐您會看到從DNS回來的結果﹕
這是一個標準模式下面的查詢﹐我們可以看到﹕不是這台DNS伺服器管理的查詢﹐而且已經在 cache 裡面了﹐會附加一個﹕“Non-authoritative answer:”的回應信息。但如果我們先將查詢模式設為any之後﹐再輸入同樣的主機名稱﹕
您就可以看到更多的資料了﹐例如﹕MX﹑NS﹑和它們的IP地址等信息。假如您使用“除錯模式”的話﹐看到的資料還將更多﹗
另外﹐您還可以用 set q=mx 或 set q=ptr 等模式來查詢特定的記錄﹐也可以用 ls 後接 domain name 來查看某個 domain 的所有主機記錄。善用 nslookup 我們可以找到許多 DNS 的信息﹐而當有問題發生的時候﹐這個工具就變得非常有用了。
同時﹐在設定 DNS 的時候﹐需要比較慎密的設計﹐以免不實資料的氾濫。管理好 DNS 系統是每一個網路管理員應盡的義務來的。
何謂Gateway
Gateway主要功能是用來"連接兩個不同的網段"。也就是說,如果系統判定目的端為不同網段,就會將封包丟給Gateway來做轉送,反之,如果判定為相同網段,即直接傳到目的端,不會經由Gateway.以下我們假設一個環境來說明,您可能會較清楚:
IP分享器IP: 192.168.1.1 / 255.255.255.0 and WAN(經由ADSL)
A電腦IP: 192.168.1.11 / 255.255.255.0 Gateway 192.168.1.1
B電腦IP: 192.168.1.21 / 255.255.255.0 Gateway (空白)
1.A電腦連至B電腦: 相同網段 (不經由Gateway,直接連線)
2.A電腦連至Internet: 不同網段 (封包由Gateway來轉送,經由ADSL連至Internet)
3.B電腦連至A電腦: 相同網段 (不經由Gateway,直接連線)
4.B電腦連至Internet: 不同網段 (封包由Gateway轉送,但因Gateway留空,故無法上網)
經由以上環境可以發現,如果您的電腦不需連上Internet,而只需與內部同網段電腦互通,那Gateway是可以不用設的。
===================================================================
如何判定是否為相同網段?以下說明
假設我們要由A電腦連至C電腦:
A電腦的IP與Subnet Mask做"AND"邏輯運算,得到答案"X"
C電腦的IP與Subnet Mask做"AND"邏輯運算,得到答案"Y"
如果X=Y,則為相同網段,
反之,如果X不等於Y,即為不同網段
Mask就是子網路遮罩,這是幹啥用的呢?
這樣說好了,整個網際網路是一個大網路,可是這個大網路裡會有許多小網路,例如公司的,政府機關的啦,這些就是「子網路」,那我們怎麼知道這些公司裡的電腦是同一個子網路呢?那就得靠子網路遮罩了,子網路遮罩就像一個袋子一樣把這些同一個網段的IP裝起來,子網路遮罩是分割網段的工具,分割後我們就可以在這個網段設閘道啦,防火牆之類的
只是,子網路遮罩使用運算的方式把這些電腦都包起來,怎麼說呢,例如子網路遮罩是255.255.255.0,那如果兩個IP例如192.168.0.1和192.168.0.2,都拿來和255.255.255.0用邏輯的AND方式運算,如果結果是一樣時,就是在同一個網段
子網路遮罩也可以決定一個網段的電腦數量,例如子網路遮罩是255.255.255.0,那這個網段最多就可以有254台電腦,如果是255.255.255.128,那就可以有126台電腦
何謂Mask
Mask就是子網路遮罩,這是幹啥用的呢?
這樣說好了,整個網際網路是一個大網路,可是這個大網路裡會有許多小網路,例如公司的,政府機關的啦,這些就是「子網路」,那我們怎麼知道這些公司裡的電腦是同一個子網路呢?那就得靠子網路遮罩了,子網路遮罩就像一個袋子一樣把這些同一個網段的IP裝起來,子網路遮罩是分割網段的工具,分割後我們就可以在這個網段設閘道啦,防火牆之類的只是,子網路遮罩使用運算的方式把這些電腦都包起來,怎麼說呢,例如子網路遮罩是255.255.255.0,那如果兩個IP例如192.168.0.1和192.168.0.2,都拿來和255.255.255.0用邏輯的AND方式運算,如果結果是一樣時,就是在同一個網段子網路遮罩也可以決定一個網段的電腦數量,例如子網路遮罩是255.255.255.0,那這個網段最多就可以有254台電腦,如果是255.255.255.128,那就可以有126台電腦
留言列表