日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

一、前言

之前在聊到 App 網絡優化時,聊到通過 HTTPDNS 替換掉傳統的 DNS 解析,來達到網絡優化的效果。其中提到 DNS 解析,是支持 UDP 和 TCP 雙協議的。

但是細心的朋友通過 wireshark、sniffer、tcpdump 等抓包工具分析,會發現基本上所有客戶端發起 DNS 查詢的場景下,都只使用到了 UDP 協議。

那在 DNS 中,TCP 協議在什么場景下才會用到呢?

今天我們就來聊聊,DNS 的 TCP 的使用場景。

二、DNS

2.1 什么是 DNS

先來簡單了解一下 DNS。

在網絡的世界中,每個有效的域名背后都有為其提供服務的服務器,而我們網絡通信的首要條件,就是知道服務器的 IP 地址。

但是記住域名(網址)肯定是比記住 IP 地址簡單。如果有某種方法,可以通過域名,查到其提供服務的服務器 IP 地址,那就非常方便了。這里就需要用到 DNS 服務器以及 DNS 解析。

DNS(Domain Name System),它的作用就是根據域名,查出對應的 IP 地址,它是 HTTP 協議的前提。只有將域名正確的解析成 IP 地址后,后面的 HTTP 流程才可以繼續進行下去。

DNS 同時占用了 UDP 和 TCP 的 53 端口,但是大多數情況下,DNS 查詢都只使用到了 UDP,而 TCP 只在一些特殊情況下才會被使用到。

簡單來說,DNS 使用 TCP 的情況,只有兩種:

  1. DNS 查詢響應報文大于 512 字節時。
  2. DNS 主、輔助服務器之間,進行區域傳送時。

使用 TCP 的場景,基本上就是以上兩種場景,當然,如果客戶端主動發起一個 TCP 的 DNS 查詢,也會使用 TCP 協議,這就不在討論的范圍內了。

2.2 DNS 響應報文大于 512 字節

說到 DNS 響應報文,先來看看 DNS 數據包的結構,對于 DNS 來說,請求報文和響應報文的結構是一樣的。

DNS 支持 TCP 和 UDP 雙協議,但為何偏偏只鐘情 UDP?

 

這其中,我們主要關注 Flags 這個標志位的結構。

DNS 支持 TCP 和 UDP 雙協議,但為何偏偏只鐘情 UDP?

 

在 Flags 中,每個字段都有其自己的含義,在這里我們做重關注 QR 和 TC 兩個字段。

  • QR 是一個 Bit,用于標識當前是查詢報文(0)還是響應報文(1)。
  • TC 也是一個 Bit,當它的值為 1 時,表示當前響應報文總長度,已經超過 512 字節,所以做了截斷處理,只返回前 512 個字節。

當遇到這種情況時,DNS 解析器會使用 TCP 來重發原來的查詢請求,UDP 要求相應報文在 512 字節以內,而 TCP 則沒有此限制,TCP 能用多個報文段來傳送任意長度的用戶數據。

DNS 查詢是一個過程復雜,但是結果簡單的過程。通常返回的數據不會大于 512 字節,這也就是為什么我們通過抓包的手段,得到的結果都是 DNS 在使用 UDP 協議。

需要注意的是,在實際使用中,很多 DNS 服務器在進行配置的時候,就把 TCP 查詢包的方式關閉,僅支持 UDP 查詢包。

2.3 DNS 主、輔助服務器的區域傳送

DNS 服務器,在設計時就要求一定要是高可用、高并發和分布式的服務器,它被分為多個層次結構,分別是根 DNS 服務器、頂級域 DNS 服務器、權威 DNS 服務器。

這三類 DNS 服務器,組成一種類似樹的結構。

DNS 支持 TCP 和 UDP 雙協議,但為何偏偏只鐘情 UDP?

 

在這個"樹"中,一個獨立管理的 DNS 子樹,稱為一個區域(zone)。一個 DNS 服務器負責管理一個或多個區域,為了滿足高可用,一個區域的管理者必須為該區域提供一個主 DNS 服務器和至少一個輔助 DNS 服務器

主 DNS 服務器和輔助 DNS 服務器,必須是獨立和冗余的,以便當某個 DNS 服務器發生故障時,不會影響該區域的 DNS 查詢。

既然 DNS 服務器有主和輔助之分,那必然面臨了數據同步的情況,我們將輔助服務器從主服務器同步信息的動作,稱為區域傳送,而在觸發區域傳送試,使用的就是 TCP 協議。

觸發 DNS 區域傳送的情況有兩種:

  1. 新上線一臺輔助服務器,會從主服務器執行區域傳送,進行同步數據。
  2. 輔助服務器會定時(通常是 3 小時),向主服務器查詢,以便了解到主服務器的數據是否發生變動,如果變動,也會觸發一次區域傳送。

區域傳送會使用 TCP 協議,一方面是為了保證數據的可靠,另一方面此時傳送的數據,也遠比一個查詢或響應大的多。

三、小結時刻

到此我們就了解清楚了,雖然 DNS 服務器支持 TCP 和 UDP 雙協議,但是通常我們在做 DNS 查詢的時候,也只用到了 UDP 協議。

TCP 只有在以下兩種情況下,才會被使用到:

  1. DNS 響應報文大于 512 字節,通過 TC 標記為截斷是,才會使用 TCP 重新查詢一遍。
  2. DNS 主服務器和輔助服務器之間,進行區域傳送時,為了保證穩定以及傳輸數據太大的原因,也會使用 TCP 協議傳輸。

DNS 查詢和響應,通常都在廣域網上通信,對于 DNS 客戶端,保證好的重傳和超時機制,就顯得尤為重要了。

分享到:
標簽:UDP
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定