您當(dāng)前位置: 主頁(yè) > 資訊動(dòng)態(tài) > IT知識(shí)庫(kù) >
DNS同時(shí)占用UDP和TCP端口53是公認(rèn)的,這種單個(gè)應(yīng)用協(xié)議同時(shí)使用兩種傳輸協(xié)議的情況在TCP/IP棧也算是個(gè)另類(lèi)。但很少有人知道DNS分別在什么情況下使用這兩種協(xié)議。
DNS同時(shí)占用UDP和TCP端口53是公認(rèn)的,這種單個(gè)應(yīng)用協(xié)議同時(shí)使用兩種傳輸協(xié)議的情況在TCP/IP棧也算是個(gè)另類(lèi)。但很少有人知道DNS分別在什么情況下使用這兩種協(xié)議。
TCP與UDP
TCP:面向連接的協(xié)議,提供可靠的數(shù)據(jù)傳輸,一般服務(wù)質(zhì)量要求比較高的情況,使用這個(gè)協(xié)議。
UDP:用戶(hù)數(shù)據(jù)報(bào)協(xié)議,是一種無(wú)連接的傳輸層協(xié)議,提供面向事務(wù)的簡(jiǎn)單不可靠信息傳送服務(wù)。
TCP與UDP的區(qū)別
UDP和TCP協(xié)議的主要區(qū)別是兩者在如何實(shí)現(xiàn)信息的可靠傳遞方面不同。
TCP協(xié)議中包含了專(zhuān)門(mén)的傳遞保證機(jī)制,當(dāng)數(shù)據(jù)接收方收到發(fā)送方傳來(lái)的信息時(shí),會(huì)自動(dòng)向發(fā)送方發(fā)出確認(rèn)消息;發(fā)送方只有在接收到該確認(rèn)消息之后才繼續(xù)傳送其它信息,否則將一直等待直到收到確認(rèn)信息為止。
與TCP不同,UDP協(xié)議并不提供數(shù)據(jù)傳送的保證機(jī)制。如果在從發(fā)送方到接收方的傳遞過(guò)程中出現(xiàn)數(shù)據(jù)報(bào)的丟失,協(xié)議本身并不能做出任何檢測(cè)或提示。因此,通常人們把UDP協(xié)議稱(chēng)為不可靠的傳輸協(xié)議。
相對(duì)于TCP協(xié)議,UDP協(xié)議的另外一個(gè)不同之處在于如何接收突發(fā)性的多個(gè)數(shù)據(jù)報(bào)。不同于TCP,UDP并不能確保數(shù)據(jù)的發(fā)送和接收順序。事實(shí)上,UDP協(xié)議的這種亂序性基本上很少出現(xiàn),通常只會(huì)在網(wǎng)絡(luò)非常擁擠的情況下才有可能發(fā)生。
既然UDP是一種不可靠的網(wǎng)絡(luò)協(xié)議,那么還有什么使用價(jià)值或必要呢?其實(shí)不然,在有些情況下UDP協(xié)議可能會(huì)變得非常有用。因?yàn)?/span>UDP具有TCP所望塵莫及的速度優(yōu)勢(shì)。
雖然TCP協(xié)議中植入了各種安全保障功能,但是在實(shí)際執(zhí)行的過(guò)程中會(huì)占用大量的系統(tǒng)開(kāi)銷(xiāo),無(wú)疑使速度受到嚴(yán)重的影響。
反觀UDP由于排除了信息可靠傳遞機(jī)制,將安全和排序等功能移交給上層應(yīng)用來(lái)完成,極大降低了執(zhí)行時(shí)間,使速度得到了保證。
DNS在進(jìn)行區(qū)域傳輸?shù)臅r(shí)候使用TCP協(xié)議,其它時(shí)候則使用UDP協(xié)議。
DNS的規(guī)范規(guī)定了2種類(lèi)型的DNS服務(wù)器,一個(gè)叫主DNS服務(wù)器,一個(gè)叫輔助DNS服務(wù)器。
在一個(gè)區(qū)中主DNS服務(wù)器從自己本機(jī)的數(shù)據(jù)文件中讀取該區(qū)的DNS數(shù)據(jù)信息,而輔助DNS服務(wù)器則從區(qū)的主DNS服務(wù)器中讀取該區(qū)的DNS數(shù)據(jù)信息。當(dāng)一個(gè)輔助DNS服務(wù)器啟動(dòng)時(shí),它需要與主DNS服務(wù)器通信,并加載數(shù)據(jù)信息,這就叫做區(qū)傳送(zone transfer)。
為什么既使用TCP又使用UDP?
首先了解一下TCP與UDP傳送字節(jié)的長(zhǎng)度限制:
UDP報(bào)文的最大長(zhǎng)度為512字節(jié),而TCP則允許報(bào)文長(zhǎng)度超過(guò)512字節(jié)。當(dāng)DNS查詢(xún)超過(guò)512字節(jié)時(shí),協(xié)議的TC標(biāo)志出現(xiàn)刪除標(biāo)志,這時(shí)則使用TCP發(fā)送。通常傳統(tǒng)的UDP報(bào)文一般不會(huì)大于512字節(jié)。
區(qū)域傳送時(shí)使用TCP,主要有一下兩點(diǎn)考慮:
· 輔助域名服務(wù)器會(huì)定時(shí)(一般是3小時(shí))向主域名服務(wù)器進(jìn)行查詢(xún)以便了解數(shù)據(jù)是否有變動(dòng)。如有變動(dòng),則會(huì)執(zhí)行一次區(qū)域傳送,進(jìn)行數(shù)據(jù)同步。區(qū)域傳送將使用TCP而不是UDP,因?yàn)閿?shù)據(jù)同步傳送的數(shù)據(jù)量比一個(gè)請(qǐng)求和應(yīng)答的數(shù)據(jù)量要多得多。
· TCP是一種可靠的連接,保證了數(shù)據(jù)的準(zhǔn)確性。
域名解析時(shí)使用UDP協(xié)議
客戶(hù)端向DNS服務(wù)器查詢(xún)域名,一般返回的內(nèi)容都不超過(guò)512字節(jié),用UDP傳輸即可。不用經(jīng)過(guò)TCP三次握手,這樣DNS服務(wù)器負(fù)載更低,響應(yīng)更快。
雖然從理論上說(shuō),客戶(hù)端也可以指定向DNS服務(wù)器查詢(xún)的時(shí)候使用TCP,但事實(shí)上,很多DNS服務(wù)器進(jìn)行配置的時(shí)候,僅支持UDP查詢(xún)包。
相關(guān)文章