Outline
Introduction
IP Address & MAC Address
TCP/UDP/ICMP
IP Gateway, Network Mask, TTL
Routing Protocol
Network Address Translation (NAT)
Domain Name System (DNS)
Dynamic Host Configuration Protocol (DHCP) / Asymmetric Digital Subscriber Line (ADSL)
HyperText Transfer Protocol (HTTP) Protocol
Virtual Private Network (VPN)
DNS 簡介
Domain Name System (DNS)
概念及機制是定義在RFC 1034,實作和規格的 部分是定義在RFC 1035中
DNS是在TCP/IP通訊協定中用來對應主機名稱 以及IP位址的分散式資料庫
以主機名稱查詢IP位址
以IP位址查詢主機名稱
與 Mail System 結合,提供 Mail routing 的功能
IP Address 便利電腦處理,但不方便人腦記 憶,故使用階層式之名稱Domain Name
例:www.google.com↔72.14.235.99
DNS server
www.google.com 的IP address為
早期這個
domain name 與 IP 的對應表是記
在每部機器內,當電腦個數不多還好,但是電腦 數目一多就會發生問題了,主要有下列問題: Traffic & Load
Conflict
Consistency
整個Internet上的電腦如此眾多,如何保證兩 部電腦不會有相同的
domain name/IP 是一
個很重要的問題。 幾個重要的觀念如下: Domain (網域)
將整個 internet 分成許多 domain,每個 domain 下又 細分為許多 domain,然後這些細分的 domain 視實際 需求又再細分成許多 domain,一直循環下去。基本上 每個 domain 內的 mapping 由一部主機負責管理。
Authorize (授權)
每個 domain 都可因實際需求再細分成許多 sub domain。上層的 domain 可以將其分出的某個 sub domain 的 domain name 與 IP mapping 交由另一部 機器管理,這個動作我們稱之為 authorize。
DNS 架構
網域(Domain)
命名原則
分散式, 分層管理
基本分類
正解網域(forward domain):以Domain Name 查IP Address
反解網域(reverse domain):以IP Address 查 Domain Name
根(Root):位於DNS階層最上層之DNS伺服器
DNS 根伺服器下的正解網域可分成兩種:
國家網域(ccTLD:country-code Top-Level Domain):以國家為根伺服器的,如台灣
www.edu.tw,日本www.google.co.jp
一般分類網域(gTLD:generic Top-Level
Domain):以一般分類為根伺服器的Domain Name,
如網路組織www.hinet.net,組織www.linux.org
完整網域及反解網域
完整網域(Fully-Qualified Domain
Name, FQDN):絕對網域名稱
Domain Name 為階層式的,有相對及絕對之分,於 Domain Name 最後面加上. 即為絕對網域名稱
例:www.linux.org.
In-Addr.Arpa網域:反解網域
在網域架構中另外有一個特殊的分支為反解網域
作用在於可查詢IP Address 歸屬的Domain Name
一般設定Domain Name 與反解網域無關,必須額外 設定才行
ARPA(Advanced Research Project Agency) 美國高等研究計劃署(乃美國國防高等研究計劃 署之前身,創立了Internet的前身ARPANET)
正解:
winnie.corp.hp.com -> 15.16.192.152 代表在負責 corp.hp.com 這個 sub domain 的機器上, 可以查到其
mapping table 上有一筆記錄是 winnie -> 15.16.192.152.
反解:
15.16.192.152 -> winnie.corp.hp.com 代表在負責 192.16.15.in-addr. Arpa (注意是反過來寫, 因為 top domain 要 在最後面) 這個 sub domain 的機器 上, 可以查到其 mapping table 上有一 筆記錄是 152 -> winnie.cop.hp.com Hostname winnie.cop.hp.com
Note
負責
forward mapping 和 reverse mapping 的機器不一定是同一部
負責 corp.hp.com domain 與負責 192.16.15.in-
addr.arpa 的機器不一定是同一部機器,即使在同一部 機器,如果不注意的話,兩邊的內容可能也會有不
match 的情形。
domain 與 ip subnet 並沒有一對一關係
舉例:成大電機的 domain 是 ee.ncku.edu.tw,但是因 為成大電機內部機器數多的關係,所用到的 IP subnet 有 140.116.72,140.116.49,140.116.163,
140.116.156,140.116.227 共 5 組
Name server
負責記錄
forward/reverse mapping 的機
器會執行一個叫name server 的軟體, 透過這
個軟體回應來自其它機器對domain name 或 IP 的查詢
zone & domain
每個
domain交由一個機器來負責,其實更精
確地說應該是每個zone 交由一個 name
server 來負責,所謂 zone 就是把一個
domain 扣掉分給下層負責的部份,剩下來的
就是zone
Zone
edu com gov
princeton
mil uk
mit cisco
… … yahoo
cs ee physics
Primary/Secondary
每個
zone 交由一部 name server負責的作
法會有一個問題,萬一這個name server 當
掉,可能造成Internet上其它機器無法取得屬
於這個zone 的資料(就是 domain name
和ip mapping)。為了避免這種情形, 我們可
以把這個zone 的資料同時交給多部 name server 負責。原本的這部稱為 primary name server,其它的稱為 secondary
name server。Secondary name server
會定期將primary name server 上 zone
的資料拷貝一份下來備用。對於上層的
name server 而言,它只是設定
某個zone 同時授權給一部以上的下層 DNS server,但是它並不去分辨誰是真正的
primary,誰是 secondary。它只是依據順
序尋問,當第一部負責某個zone 的 DNS
server 當掉時,它會依序找下一個負責的DNS
server。
DNS 的組成
DNS 系統由三個部分組成:
DNS 的資訊資料部分
DNS Server
Resolver(可以說是DNS Client)
User
Program Resolver Name
Server User
Queries
User Responses
References Cache Additions Responses
Queries
Local Cache Network Kernel
cache
DNS 的運作
1.應用程式呼叫Resolver,開始DNS 查詢 2.Resolver查詢本身的Cache 是否有相關資
訊,若有則回傳,無則產生DNS Packet 發送 給Primary DNS,若無回應則傳給
Secondary DNS
3.DNS伺服器接到查詢後,查詢本身的Cache 和 DNS 資料庫是否有相關的資料,有則將資料傳
回,無則視DNS 查詢的類別而定:
A.Iterative Query:回傳給查詢者一串DNS 伺服器的清 單,讓查詢者自己查詢以得到答案
B.Recursive Query:繼續往上層的DNS 查詢,直到查 到結果後自己將結果傳給查詢者
4.DNS伺服器會以3. 的方式查詢直到找到結果或
是確定無結果為止,往上到Root 後會往下面相 關的DNS 找5.在各伺服器查詢到後會儲存在其cache裡一段時
間,直到該資料儲存時間截止(expire)Note
一般說來,resolver 對 local DNS server 都是
recursive query,而 DNS server 之
間的query 多是iterative。
大部份的
DNS server 都可以接受
recursive 和 iterative 兩種 query 方式,
但是考量負載問題,
root name server 只接
受iterative query。
Recursive(遞回式):
客戶端只丟出一個詢問給其所屬的DNS伺服器
DNS伺服器就會不斷地查詢,直到有結果為止
最後把結果傳回來給客戶端 DNS server
Resolver DNS
query
Upper level DNS server lists
Iterative(交談式):
詢問其他DNS伺服器是否知道結果
如果沒有這個記錄,則會傳回一個參考位址,也許這個位 址可以查到需要的資料
DNS server
Resolver DNS
query
Answer to DNS query
Question:
當
local DNS 的Cache存下一些資料以便加速
時, 萬一真正的資料有修改時怎麼辦呢?Answer:
DNS server 針對它負責的 domain 資料有
一個TTL(time to leave)參數, 用來告訴其
它DNS 在 cache 其資料時, 資料只應該
cache 多久. 超過 TTL, 那個 cache 就要視為
過期無效.DNS 查詢範例
DNS查詢一般是以 UDP packet傳送查 詢訊息向name
server索取資料
查詢
www.dynadns.com.tw
DNS Packet
上面範例之實際Packet 列表
由下圖可看出有部分查詢為Recursive,部分 為Iterative
DNS Response Packet
Server 只提供Iterative Query,因此回傳
Authoritative DNS 的列表
*gethostbyname()
Unix 系統下用來設定或是由Domain Name 取 得位址資訊
gethostbyname() 的回傳Structure in_addr 的資料結構不只有IP 資訊,還有Official Name 以及Alias 等資訊
回傳NULL 為查詢錯誤,狀況有兩種:
在/etc/hosts 檔案裡面沒有相關的資訊
查詢/etc/resolv.conf裡的DNS Server 找不到資訊
DNS Proxy
由於Internet 的連線狀況多,比起LAN不穩定,
因此可使用DNS Proxy避免對外線路出問題,並 可加速DNS Query的速度
DNS Proxy
Internet
Internet
DNS server
DNS server Resolver
Resolver
*DNS Packet (1)
DNS Packet 是由一個以上的Resource Record (RR) 所組成
Resource Record 的類型:
A:IP 位址
CNAME:Domain Name
MX:Mail Exchange Records
NS:其他Name Server 的主機名稱
PTR:指向其他Domain Name Space 的指標
SOA:Zone 的授權(Authority)
*DNS Packet (2)
Linux Dynamic DNS Client/Server
Dynamic DNS(DDNS)
動態IP位址的廣泛使用,造成傳統DNS的不適用
IETF (Internet Engineering Task Force)定義了RFC 2136:對原有的DNS系統增加了Update的動作,讓它 能夠處理動態IP位址的網域名稱(domain Name)和IP 位址的相互查詢
DDNS運作原理
DDNS兩種運作模式
Client端直接對Server送出DNS Update要求修改主機 和IP address的對應
透過其他的Client/Server程式,來修改DNS的 resource records.
DDNS Server Client
DNS Server DNS
update packet
DNS update
packet
Names translated into addresses
Mail Program
TCP
IP Name
Server
User
c user@cs.princeton.edu
d cs.princeton.edu
e 192.12.69.5 f 192.12.69.5
g 192.12.69.5
Zone
edu com gov
princeton
mil uk
mit cisco
… … yahoo
cs ee physics
Name resolution
Root name server
Princeton name server
CS name server Local
name server Client
cicada.cs.princeton.edu
c
j
192.12.69.60
e princeton.deu,128.196.128.233
f cicada.cs.princeton.deu
gcs.princeton.deu,128.196.128.233
d cicada.cs.princeton.deu
h cicada.cs.princeton.deu
i cs.princeton.deu,192.12.69.60