-
1 # 三僡然
-
2 # 山上的老白白
回答這個問題,首先要解釋一下dns的作用。dns是域名服務的縮寫,用於將www.xxx.com此類網址或者域名翻譯成ip地址的網際網路基礎服務,當然反過來翻譯也可以。最主要的原因是網際網路的任何訪問都是基於ip地址的,但是ip地址不方便記憶,域名方便記憶,所以網際網路使用者記住域名就好了,翻譯的事情交給dns。這種網路基礎協議使用非常之頻道,幾乎開啟每個網頁都要使用一次,甚至是多次。所以協議設計必須簡單,高效。否則提供這種服務的伺服器開銷會非常大,組網的成本也會變得非常大。使用udp最大的好處就是不需要進行三次握手,將tcp的最低5次互動獲取資訊,變為2次互動獲取資訊。此外dns報文設計的也極為簡單,幾乎沒什麼驗證或者加密的協議欄位,而且完全使用明文,這都是為了減小其在提供服務時的網路開銷。但是該協議使用到現在的弊病也非常明顯,就是因為在udp協議層和應用層沒有加密,dns解析報文非常容易被劫持,篡改。後續的dns協議將使用tcp協議,高層使用https。
-
3 # 極客談科技
“網路極客”,全新視角、全新思路,帶你遨遊神奇的網路世界。
很好的一個技術問題,DNS同時支援TCP和UDP,使用的是53這個埠;
那麼,很少有人知道DNS什麼時候使用TCP,什麼時候使用UDP協議。
先來簡單認識一下TCP和UDP協議,在來看看究竟什麼時候使用吧。TCP/UDP協議TCP協議
TCP面向連線的可靠的傳輸協議,在資料傳輸之前需要建立三次握手;
有點類似我們打的電話,通話之前需要先建立連線,雙方確認線上後在進行資料傳輸。
UDP協議
UDP面向非連線的不可靠的傳輸協議,不必建立連線,直接傳送資料;
DNS中對TCP和UDP的使用透過抓包軟體,我們常看到的是UDP的資料包,那麼究竟什麼時候使用TCP協議呢?
DNS的區域傳輸時使用TCP協議
什麼是DNS的區域傳輸,DNS伺服器分為主DNS伺服器和輔DNS伺服器;
在副DNS伺服器和主DNS伺服器進行通訊,載入DNS資訊時叫做DNS的區域傳輸。
DNS的區域傳輸使用的是TCP協議,能夠提供更加可靠的資料。
DNS的域名解析時使用UDP協議
使用者端向DNS伺服器發起域名解釋,使用的是UDP協議;
UDP協議無需建立連線,能夠提供更快的資料訪問。
關於DNS使用何種協議的更多問題?
-
4 # 日衝資訊 黃
UDP和TCP
UDP和TCP是網路通訊的兩種基本協議,這兩種協議各有優缺點。TCP採用連線式的通訊方式,可進行多資料包的傳輸,並保證多資料包的傳輸順序,防止丟包, TCP是一種信賴度較高的方式。但是,TCP傳輸延遲的問題比較明顯,而且一次則只能向一臺已建立連線的主機發送請求。TCP不適用於需要實時和多方通訊的場合。UDP是非連線的傳送方式,除了傳送資料以外什麼都不做。UDP的傳輸速度較快,但容易丟包。UDP比較適合進行單一資料包的傳輸,一個數據包大小是512位元組,它的傳輸速度非常快,同時,UDP還可以同時向網段內多臺主機發送資料包,這也使得UDP被很多需要實時和多方通訊的應用所青睞。為了提高UDP資料傳輸的信賴度,在UDP的基礎上,人們還開發了RTP等實時傳輸協議。
DNS的前世今生網路通訊依靠的是IP地址,但IP地址不太容易記憶。因此,人們給網路上的主機起了一些比較容易記憶的名稱。最初,這些名稱被儲存在名為hosts.txt的文字檔案中,這種方法現在仍然被保留著,比如,Linux上該檔案被儲存在/etc/hosts下。為了共享這些資訊,人們把hosts.txt儲存在FTP伺服器上,並透過匿名訪問實現統一管理。但是,這個檔案迅速增大,同時,FTP伺服器也不堪重負,於是,80年代初人們制定了DNS標準(RFC1034和RFC1035),對域名實施分散式管理。
DNS使用的協議域名伺服器同時使用TCP和UDP。進行域名解析的時候使用UDP,此時用一個UDP包就夠了,延遲少響應快的優勢可以最大限度地發揮出來。客戶端或者輔助DNS需要同主DNS上的域名列表快取進行同步時(一般3小時一次),則使用TCP協議,因為此時的資料已經遠超一個UDP包的大小了。
隨著IPv6的使用,域名解析的資料包已經超過了512位元組,使用UDP進行域名解析就不那麼可靠了,面對這個新課題,人們正在研究擴充套件UDP協議的辦法。
-
5 # 一個存在感小透明
作為985院校的本碩畢業生來回答來自《計算機網路》課程的實際問題。
TCP/UDP首先,我們要了解什麼是TCP和UDP協議。我們現在每天使用的網路使用的是OSI(通訊系統互連參考模型)七層結構,從下至上分別是物理層,資料鏈路層,網路層,傳輸層,會話層,表示層和應用層。其中我們常說的IP層是網路層的,而這兩個都是傳輸層的協議,要比IP更高一層。主要透過埠號來將資料傳給指定的應用程式。
其中,UDP協議是不可靠的傳輸協議,好處是資料延時非常少,當然這是以丟失部分資料為代價的。主要用於影片電話,電話會議這種對資料正確性要求不高的場景,因為就算對話過程中對面影片偶爾出現卡頓,也不會影響整場會議的質量。
而TCP協議就是透過犧牲了一部分效能來保證質量的可靠傳輸協議。大家可能經常聽過TCP協議的三次握手和四次揮手。這裡的握手是指透過TCP協議建立連線,需要甲傳送一個標誌位A告訴乙,要開始傳輸資料給乙了,然後乙回覆一個標誌位A+1和B告訴甲,它已經準備好了,然後甲最後再回復一個A+1和B+1訊息說,好,那下一步開始我就要傳輸資料了。為什麼要這麼麻煩呢,就是為了防止已經失效的連線請求突然有傳送給了乙,因而產生錯誤。從這個過程就能看出,TCP協議是以安全性為首要任務的。
DNSDNS(domain names system)是網路的一種服務,是一個將域名和IP地址相互對映的分散式資料庫。怎麼理解呢,我們常見的網站地址通常是
www.xx.com
格式,這就是DNS的功勞,使我們可以記錄服務相關的字串作為網站地址,而不是服務不相干的IP地址。讓你記錄baidu.com是很容易的事情,如果讓你記錄50.98.26.14(此IP地址為我瞎編的)為百度的頁面地址,恐怕百度的流量會比現在要少得多的多的多。正因如此,以瀏覽器為例,每個請求的響應時間其實是DNS域名解析時間(將字串解析為ip地址)+TCP建立連線時間+HTTP響應時間三者之和,其中,TCP有固定的三次握手,HTTP基於REQUEST/RESPONSE,都很難再進行保證資料準確性的簡化了。因此,要提高請求效率,自然是希望將DNS域名解析時間減少。
如果採用TCP傳輸:DNS域名解析時間=TCP連線時間+DNS交易時間
如果採用UDP傳輸 : DNS域名解析時間=DNS交易時間
從上面的等式對比我們可以很清楚的看出來了,如果使用者在訪問一些冷門網站的時候,由於DNS伺服器沒有冷門網站域名-ip的對映關係,可能會與多層域名伺服器通訊迭代查詢,如果使用TCP傳輸,每次查詢都要多幾次TCP連線時間,因此就會多出很多時間消耗。
因此,有時候出於效率>安全性的考慮,有的DNS使用的就是UDP通訊,而不是TCP通訊。
-
6 # 愛答問題的小星星
域名解析(DNS,Domain Name System ):就是網站的域名解析成對應的IP,IP地址是一串數字,為了方便人們的記憶,通常將某個域名和IP地址繫結,當我們向瀏覽器輸入URL地址的時候,瀏覽器就會向域名伺服器發起請求,域名伺服器收到請求後,透過查詢繫結對映關係將查詢結果返回給瀏覽器,這樣瀏覽器就獲得了URL對應的IP地址,然後訪問特定IP地址的資源。下面我麼具體講一下域名解析為什麼使用UDP更適合。
1. 域名結構
域名按層級結構進行管理和服務的,目前網際網路的域名體系結構中有三類頂級域名,分別如下:
地理頂級域名:像.CN代表中國,.JP代表日本,.UK代表英國等等。
類別頂級域名:共有7個:.COM(公司),.NET(網路機構),.ORG(組織構),.EDU(美國教育),.GOV(美國政府部門),.ARPA(美國軍方),.INT(國際組織)。
新增頂級域名:隨著網際網路的不斷髮展,新增頂級域名出現了,像.BIZ(商業),COOP(合作公司),.INFO(資訊行業),.AERO(航空工業)等
隨著網際網路的不斷髮展,這些頂級域名不斷擴充套件,像中國的
.cn
域名下面有設定了.COM,.EDU,.NET
等二級域名,還擴充套件了一些地域域名,.SH(上海),.BJ(北京)等2. 域名伺服器
域名服務就是為域名解析服務的,當前網際網路的域名伺服器是按照層次為不同層級的域名服務。主要分為以下四類:
根域名伺服器:處於最上層的域名伺服器,相當於一個國家的首腦,全球有13臺域名伺服器,這13臺域名伺服器並不是一個域名對應一臺物理伺服器的地址,而是作為一個伺服器叢集的入口。
頂級域名伺服器:頂級域名伺服器位於根域名伺服器的下一級,相當於一個省的省長,他們負責管理頂級域名下注冊的二級域名,頂級域名則是由根域名伺服器驚醒管理和維護。
權威域名伺服器:負責某個地區的域名解析服務,相當於一個省下面的市長,區長,鎮長等,頂級域名伺服器也可以算作是權威域名伺服器,只不過由於其特殊性,我們專門把它劃分為一類。因此權威域名伺服器通常是指頂級域名以下的管理二級、三級、四級等域名的伺服器。
本地域名伺服器:
本地域名伺服器不同於前面三類域名伺服器,當個人PC發出聯網請求時,此時的域名解析服務就會發送到本地域名伺服器,本地域名伺服器負責回答本次DNS請求,或是代替個人PC向不同層級的域名伺服器傳送查詢請求。
3. 域名解析的過程
域名解析大概分為兩步:
第一步:向本地域名伺服器發起查詢請求,請求報文裡面含有需要查詢的域名;
第二步:本地域名伺服器返回DNS響應,響應報文中含有DNS解析的IP地址;
在DNS解析過程中使用的是迭代查詢——本地域名伺服器向根域名伺服器發起查詢,根域名伺服器告訴本地域名伺服器下一步該往哪個域名伺服器走,一步步按照域名服務的查詢路徑找到域名對應的IP返回給請求發起方。4. UDP與TCP
UDP和TCP處於OSI模型的傳輸層,其是《TCP/IP》協議的重要協議,傳輸層提供點到點的傳輸服務,格式化資料流的作用。UDP更適合DNS的主要原因還是TCP和UDP協議的不同。
TCP(Transmission Control Protocol,傳輸層控制協議):首先傳輸控制協議TCP是一種面向連線的、可靠的、基於位元組流的運輸層通訊協議。是專門為了在不可靠的網際網路絡上提供一個可靠的端到端位元組流而設計的。他主要透過三次握手和四次揮手,擁塞控制等機制提供可靠的端到端的通訊。
UDP(User Data Protocol,使用者資料報協議):是一種無連線的不可靠使用者資料報傳輸協議,在傳送資料前部和對端建立連線,他只是儘可能的資料報文傳輸到對端,至於對端能不能完整的收到資料報它不在關心,通常UDP用於對資料報完整性和及時性不是很高的場合像影片傳輸等。
4. 為什麼UDP更適合DNS
有上面的介紹可知,UDP因無連線佔用資源少等有點更適合DNS解析,總結一下DNS使用UDP的優點:
UDP基於無連線傳輸,所以傳輸效率高;
TCP響應時間=TCP連線時間 + DNS查詢時間;UDP響應時間=DNS查詢時間;當前網際網路對響應速度的要求越來越高,效率為王,UDP因無連線不佔用系統資源等有點,使得UDP成為DNS解析快速響應的不二選擇。
回覆列表
DNS是一種應用層協議。所有應用層協議都使用兩種傳輸層協議之一UDP和TCP。TCP是可靠的,UDP不可靠。DNS應該是可靠的,但它使用UDP,為什麼?
關於傳輸層上的TCP和UDP,有以下有趣的事實證明了上述情況。
1)UDP速度更快。TCP很慢,因為它需要3次握手。DNS伺服器上的負載也是一個重要因素。DNS伺服器(因為它們使用UDP)沒有保持連線。
2)DNS請求通常非常小,非常適合UDP段。
3)UDP不可靠,但可以在應用層新增可靠性。應用程式可以使用UDP,並且可以透過在應用程式層使用超時和重新發送來實現可靠性。