Application DNS

DNS(Domain Name System,網域名稱系統)
可用網域名稱查到ip位址,幫助人們更容易得到ip位址
ps:ip位址也可查到網域名稱
早期arpanet時用hosts.txt實現
支援TCP53,UDP53(大部份查詢用)
最初定義在RFC-882,RFC-883,1987從新定義在RFC-1034,RFC-1035
其他相關定義在RFC-920,RFC-973,RFC-974,RFC-1032,RFC-1033,RFC-1101,RFC-1296

… 

常見單位 

ICANN(Internet Corporation for Assigned Names and Numbers,網際網路名稱與號碼分配機構)
負責指派與配置public IPv4,IPv6的位置

IANA(Internet Assigned Numbers Authority,Internet號碼分配局/網際網路位址指派機構)
執行ICANN所交付的政策
負責將位置分配給RIR

RIR(Regional Internet Registry,區域網際網路註冊管理機構)
管理世界上某特定地區internet資源的組織,RIR whois database
共有5個:
ARIN(American Registry for Internet Numbers,美洲網際網路號碼註冊管理機構)North America,部分加勒比地區
RIPE NCC(RIPE Network Coordination Centre,歐洲IP網路資源協調中心)Europe,the Middle East and Central Asia
APNIC(Asia-Pacific Network Information Centre,亞太網路信息中心):Asia Pacific region
LACNIC(Latin American and Caribbean Internet Address Registry,拉丁美洲及加勒比地區網際網路地址註冊管理機構):southen and central america and caribbean
AfriNIC(African Network Information Centre,非洲網路信息中心):Africa 

… 

常見名詞 

TDL(top-level-domain,最高層網域名稱)網路上約200個以上
管理TDL是ICANN
TDL分國家和一般類別:
一般別領域:com,edu.gov,mil,net,org,int(國際組織)
2000.11後更新增biz(商業),info(資訊),name(人名),pro(專業),aero(太空領域),coop(企業),museum(博物館)…等

FQDN(Full Qualified Domain Name,完整領域名稱)
主機名+域名,ex:www + systw.net=www.systw.net
ps:真正的fqdn後面應該有一個點,像是”www.systw.net.”,之所以最後不用加點是因為解析器已幫我們處理掉了

Forward(正解)/Reverse(反解)
forward mapping:用domain name查詢IP
一般的查詢都是,ex:打網址時
ps:只可網域查對應的ip用ping
ps:查hostname用nslookup,host,dig
reverse mapping:用IP查詢domain name
ex:
#nslookup 8.8.8.8
…omit…
Non-authoritative answer:
8.8.8.8.in-addr.arpa name = google-public-dns-a.google.com.
應用:判斷是否為spam mail,若反解不到來源mailserver則可能會被列為垃圾信主機並阻擋信件
ps:ip對應網域用tracert,nslookup,host,dig

forward mapping和reverse mapping的機器不一定是同一部
負責記錄forward/reverse mapping的機器會執行name server的軟體,回應來自其它機器對domain name或IP的查詢
domain與ip subnet並沒有一對一關係,網域名可對多ip,ip也可對多網域
完整的正反查記錄能夠使dns運作時能從IP對應到domain name及從 domain name對應到IP

……………………………………..

分散式資料庫與階層式架構:
將整個internet分成許多domain,每個domain下又細分為許多domain,然後這些細分的domain視實際需求又再細分,一直循環下去
ps:domain長度的限制是63個字元,僅限ASCII字元的一個子集
Delegation(授權):
 上層的domain將其分出的某個sub domain的domain name與IP mapping交由另一部機器管理的動作
 每個domain(嚴格上來說是zone)內的mapping由一部主機負責管理
zone:
 把一個domain扣掉分給下層負責的部份,剩下來的就是zone,而zone的資料(就是domain name和ip mapping)
Zone transfer:
 用途:Secondary(slave) DNS從Primary(master) DNS獲得該Zone資訊,讓這兩個DNS間的資料可以保持一致與同步
 缺點:容易資訊洩漏,大部分DNS會過濾這樣的DNS Query,
 ps:通常Secondary DNS的要求會使用tcp53
多重伺服程式:
 zone服務給Primary(master)DNS和多台secondary(slave)DNS負責,幫助負載平衡
 可防止單一name server當掉而造成INTERNET上其它機器無法取得屬於這個zone的資料
 primary/secondary在新版name server程式中改稱為master/slave
DNSoptimization(最佳化)效率方案:
 replication(複製):將根伺服程式複製到很多電腦上,讓全世界到處都有根伺服程式,各區域使用最接近的根伺服器
 caching(快取):查詢時會在快取中留下一份對應記錄binding,需連繫其他伺服程式前會先在自己快取中找一遍

……………………………………..

Name Resolution(名稱解析)
定義
Root Name Server:
查詢資料的起點,世界各地共有十多個,記錄了各top domain分別由哪些DNS server負責
Resolver:
DNS server的client端,以函式庫的方式放在作業系統中,各類應用程式經由呼叫resolver函式庫可向DNS查詢得到資料
Recursive Query:
DNS client丟出一個詢問給local DNS,local DNS會不斷地查到答案出來,在把結果傳回來給client的整個程序 
通常resolver對local DNS server都是recursive query,
Iterative Query:
local DNS對其它DNS發出詢問,知道更進一步的線索,然後發問者(local DNS)根據線索再去進一步找答案
通常DNS server之間的query多是iterative,root name server考量負載問題也只接受iterative query
Non-authoritative answer: 
由local DNS的cache中直接讀出來,而不是local DNS向真正負責這個domain的nameserver問來的answer

運作
1client詢問DNS
若是本域名則直接回答,若是其它域名則根據Cache(快取記憶體)回答
若無轉向root伺服器,步驟2
2伺服器提供該域名全部下層authoritative(授權)伺服器,dns順便存到cache內
3轉向下層授權伺服器查詢,遠端回應(回步驟2)直到獲的客戶端所查詢的結果(Recursive Query)
4傳回查詢並備份在Cache,在保存期間中,若有相同查詢則用cache內資料

……………………………………..

RR(resource record,資源記錄) 
dns設定檔中的每一筆資料
可拆成以下欄位:
domain_name(領域名稱):對映的領域名稱,搜尋時的主鍵
time_to_live(存活時間):32bit,單位為秒,決定解析主機要快取該RR多久時間,值越大快取保留越久,可減少重新解析主機的次數,一般使用預設值即可
class(類別):目前只能填IN,代表網際網路資訊
type(型態):記錄的type
value(值):resource_record_data,對應到的資料依型態不同,一般就是所要查詢資料對應的domainname或是IP

type(型態):
SOA(start of authority):各區段只能有一個SOA,說明此區段的授權資料,ex:管理員email    
TXT:說明文字,未經解釋的ASCII文字
NS(名稱伺服器):此領域伺服器名稱
MX(郵件伺服器):優先順序,願意接收信箱的領域
A(address type):定義某個domain name對應的IP,應用程式最常使用的對應值,絕對必要設定,32bitIP
HINFO:回答”Host Information”查詢用,以ASCII表示的CPU及作業系統
CNAME(別名):領域名稱
AAAA:對應IPv6格式
PTR(指標):IP位址的別名,定義某個 IP 對應的 domain name

… 

DNS封包
QID:查詢封包編號
QR:長為1bit,查詢為0回應為1
OPCodes(封包類別),長為4bits,有QUERY, IQUERY, STATUS, Reserved
Flags 4bits表AA(Authoritative Answer)、TC(Truncation)、RD(Recursion Desired)、RA(Recursion Avalable)
Reserved 保留未用
RCodes 4bits回應訊息0,6-15未用1-5:Format Error、Server Failure、Name Error、Not Implemented、Refused
QDCount、ANCount、NSCount、ARCount 表Question、Answer、Authority、Additional Record的長度
Question Section、Answer Section、Authority Section、Additional Records Section
查詢、應答、授權、額外記錄等封包資訊,各分為NAME、TYPE、CLASS 三個子欄位

……………………………………..

DDNS(Dynamic Domain Name Server,動態網域名稱服務)
IP是變動的、隨機的
沒有固定IP位址,但也可架設DNS伺服器
動態DNS使用一個軟體,會自動偵測目前的IP位址,並會自動更新DNS伺服器內的設定

WINS(Windows網際網路名稱服務伺服器)
會動態對應IP位址到電腦名稱 (NetBIOS 名稱),這可讓使用者依電腦名稱而不是IP位址來存取資源
如果想要某台電腦持續追蹤網路中其他電腦的名稱及IP位址,則在這電腦設定為WINS伺服器