日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP?

發布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

之前在聊到 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 的情況,只有兩種:

  • DNS 查詢響應報文大于 512 字節時。

  • DNS 主、輔助服務器之間,進行區域傳送時。

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

    2.2 DNS 響應報文大于 512 字節

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

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

    在 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 子樹,稱為一個區域(zone)。一個 DNS 服務器負責管理一個或多個區域,為了滿足高可用,一個區域的管理者必須為該區域提供一個主 DNS 服務器和至少一個輔助 DNS 服務器

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

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

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

  • 新上線一臺輔助服務器,會從主服務器執行區域傳送,進行同步數據。

  • 輔助服務器會定時(通常是 3 小時),向主服務器查詢,以便了解到主服務器的數據是否發生變動,如果變動,也會觸發一次區域傳送。

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

    三、小結時刻

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

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

  • DNS 響應報文大于 512 字節,通過 TC 標記為截斷是,才會使用 TCP 重新查詢一遍。

  • DNS 主服務器和輔助服務器之間,進行區域傳送時,為了保證穩定以及傳輸數據太大的原因,也會使用 TCP 協議傳輸。

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

    reference:《TCP/IP 詳解卷一》14.8 用 UDP 還是 TCP

    http://www.xumenger.com/dns-udp-tcp-20180604

    本文對你有幫助嗎?留言、點贊、轉發是最大的支持,謝謝!


    「聯機圓桌」?推薦我的知識星球,一年 50 個優質問題,上桌聯機學習。

    公眾號后臺回復成長『成長』,將會得到我準備的學習資料,也能回復『加群』,一起學習進步;你還能回復『提問』,向我發起提問。

    推薦閱讀:

    關于字符編碼,你需要知道的都在這里 | 圖解:HTTP 范圍請求 | Java 異常處理 | 安卓防止用戶關閉動畫導致動畫失效 | Git 找回遺失的代碼 | 阿里的 Alpha 助力 App 啟動速度優化

    總結

    以上是生活随笔為你收集整理的simulink 解析udp数据_DNS 支持 TCP 和 UDP 双协议,但为何偏偏只钟情 UDP?的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。