成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Android性能優化之網絡優化DNS和HttpDNS知識詳解

移動開發 Android
在 App 訪問網絡的時候,DNS 解析是網絡請求的第一步,默認我們使用運營商的 LocalDNS 服務。有數據統計,在這一塊 3G 網絡下,耗時在 200~300ms,4G 網絡下也需要 100ms。

[[413589]]

本文轉載自微信公眾號「Android開發編程」,作者Android開發編程  。轉載本文請聯系Android開發編程公眾號。

前言小計

在 App 訪問網絡的時候,DNS 解析是網絡請求的第一步,默認我們使用運營商的 LocalDNS 服務。有數據統計,在這一塊 3G 網絡下,耗時在 200~300ms,4G 網絡下也需要 100ms。

解析慢,并不是 LocalDNS 最大的問題,它還存在一些更為嚴重的問題,例如:DNS 劫持、DNS 調度不準確(緩存、轉發、NAT)導致性能退化等等,這些才是網絡優化最應該解決的問題。

想要優化 DNS,現在最簡單成熟的方案,就是使用 HTTPDNS。

今天就來聊聊,DNS、HTTPDNS

一、什么是DNS

  • DNS(Domain Name System)是域名系統的英文縮寫,是一個組織的系統管理機構,維護系統內的每一個主機的ip和主機名(域名)的對應關系;
  • DNS即域名解析系統,這個東西說對于開發者來說,應該是沒有不知道的。說簡單點,這個系統的作用就是將域名解析成IP地址。我們的每一次網絡請求,如果是使用域名,那么就是進行域名解析;
  • 一個優秀的域名服務應該能夠滿足兩點要求,一個是能夠正確的返回IP地址,二就是能夠根據網絡情況返回所請求的域名最近的服務器IP;

二、DNS域名結構

1、DNS域名命名

  • 每個域名都是一個標號序列,用字母、數字和連接符(-)組成;
  • 標號序列總長度不能超過255字符,每個標號都可以看成一個層次域名;
  • 級別最低的域名寫在左邊,級別最高的域名寫在右邊;
  • 域名服務主要通過UDP實現,服務器的端口為53;

2、域名的分級

 

域名可以劃分為各個子域,子域還可以繼續劃分為子域的子域,這樣就形成了頂級域名、二級域名、三級域名等;

頂級域名可以分為三大類:

  • 國家頂級域名:cn、us、uk等;
  • 通用域名:常見的有7個,com、net、org、edu、int、gov、mil;
  • 方向域名:arpa,用于將ip地址轉為域名;
  • 域名服務器;

三、域名解析過程

域名解析的重要兩點:

  • 主機向本地域名服務器查詢一般都是采用遞歸查詢。所謂遞歸查詢就是:如果主機所查詢的本地服務器不知道被查詢的域名的ip地址,那么本地域名服務器就以DNS客戶的身份,向其他根域名服務器繼續發出查詢請求報文(即代替主機繼續查詢),而不是讓主機自己進行下一步查詢。因此,遞歸查詢返回的查詢結果或者是所要查詢的ip地址,或者是報錯,表示無法查詢到所需的ip地址;
  • 本地域名服務器向根域名服務器的查詢是迭代查詢。所謂迭代查詢就是:當根域名服務器收到本地域名服務器發出的迭代查詢請求報文時,要么給出所查詢的ip地址,要么告訴本地服務器:“你下一步應當向哪一個域名服務器進行查詢”。然后讓本地域名服務器進行后續的查詢。根域名服務器通常是把自己知道的頂級域名服務器的ip地址告訴本地域名服務器,讓本地域名服務器再向頂級域名服務器查詢。頂級域名服務器在收到本地域名服務器的查詢請求后,要么給出所要查詢的ip地址,要么告訴本地服務器下一步應當向哪一個權限域名服務器進行查詢。最后,知道了所要解析的ip地址或者報錯,然后把這個結果返回給發起查詢的主機;

以上兩點是域名解析的重要兩步。但是這并不是解析ip地址的完整過程,如果瀏覽器的緩存中有該域名對應的ip地址,就不需要向本地域名服務器請求了等等。下面來看詳細過程:

例如要解析:www.example.com該域名的ip地址;

  • 瀏覽器緩存:當用戶通過瀏覽器訪問某域名時,瀏覽器首先會在自己的緩存中查找是否有該域名對應的ip地址;
  • 操作系統緩存:當瀏覽器緩存中無域名對應IP則自動檢查用戶計算機系統hosts文件,看是否有該域名對應的ip地址;
  • 路由器緩存:當瀏覽器及系統緩存中都沒有域名對應ip地址,則進入路由器緩存中檢查。以上三點都是客戶端的DNS緩存;
  • ISP(網絡服務提供商)的LDNS(本地域名服務器):如果上述三點都沒有找到對應的地址,就要本地域名服務器中進行查詢。比如你是電信的網,則會進入電信的DNS緩存服務器進行查找;
  • 根域名服務器:本地域名服務器沒有找到,本地域名服務器就會到根域名進行查詢。全球僅有13臺根域名服務器。根域名服務器收到請求后,會查看區域文件記錄,若無則將其管轄下的對應的頂級域名的ip地址,這里返回.com的地址;
  • 頂級域名服務器:根域名服務器沒有,則本地域名服務器向頂級域名服務器發送請求,然后返回次級域名服務器的ip地址,這里會返回.example的地址;
  • 主域名服務器:主域名服務器接收請求后查詢自己的緩存,如果沒有則進入下一級域名服務器進行查找,并重復該步驟直至找到正確記錄。
  • 保存結果至緩存:本地域名服務器把返回的結果保存到緩存,以備下一次使用,同時將該結果反饋給客戶端,客戶端通過這個ip地址與web服務器建立連接;

四、DNS安全和優化

1、dns安全問題

  • DNS反射/放大攻擊;
  • DDOS攻擊可能造成域名解析癱瘓;
  • DNS/域名劫持:在劫持的網絡范圍內攔截域名解析的請求,分析請求的域名,返回假的ip地址或者使請求失去響應。DNS劫持通過篡改DNS服務器上的數據返回給用戶一個錯誤的查詢結果來實現;
  • DNS污染:DNS污染是當用戶發起域名解析請求時,某個服務器(非DNS)監控到用戶訪問的已經被標記的地址時,該服務器偽裝成DNS服務器向用戶發回錯誤的地址;
  • DNS污染與DNS劫持的區別:DNS劫持修改了dns解析的結果,DNS污染是不經過DNS服務器的,而是直接返回了錯誤的地址;
  • DNS信息被修改;

2、DNS優化

DNS解析是一個漫長的過程,那么它的優化有哪些?

1、網頁端

用戶在請求請求某個鏈接之前,瀏覽器先嘗試解析該鏈接的域名再將其進行緩存。

可以這樣做:

(1) 在服務器中響應設置X-DNS-Prefetch-Control的值為on啟動預解析

(2) 在HTML中,

(3) 在head中加入link標簽:

  1. 如<link rel="dns-prefetch" href="//tj.koudaitong.com/" /> 

不過現在的Chrome瀏覽器會自動將當前頁面的所有帶href的dns都prefetch一遍。需要手動添加上面的link標簽的場景是:你后面訪問的域名不在當前頁面的所有鏈接中;

正確使用link標簽的姿勢:

  • 對靜態資源域名做手動dns-prefetch
  • 對js里發起的跳轉、請求做手動的dns-prefetch
  • 對重定向跳轉的新域名做手動的dns-prefetch
  • 不用對當前頁面的超鏈接做手動的dns-prefetch

域名收斂:建議將靜態資源只放在一個域名下面,可以減少DNS的請求

2、客戶端

HttpDNS

HttpDNS是使用HTTP協議向阿里云的HTTPDNS服務器的80端口直接進行請求,代替傳統的DNS協議向LDNS服務器的53端口進行請求。從而可以繞過LDNS,可以避免運行商的域名劫持和調度不精準的問題;

五、HttpDNS介紹

  • HttpDNS其實也是對DNS解析的另一種實現方式,只是將域名解析的協議由DNS協議換成了Http協議,并不復雜。使用HTTP協議向D+服務器的80端口進行請求,代替傳統的DNS協議向DNS服務器的53端口進行請求,繞開了運營商的Local DNS,從而避免了使用運營商Local DNS造成的劫持和跨網問題;
  • 接入HttpDNS也是很簡單的,使用普通DNS時,客戶端發送網絡請求時,就直接發送出去了,有底層網絡框架進行域名解析。當接入HttpDNS時,就需要自己發送域名解析的HTTP請求,當客戶端拿到域名對應的IP之后,就向直接往此IP發送業務協議請求;
  • 這樣,就再也不用再考慮傳統DNS解析會帶來的那些問題了,因為是使用HTTP協議,所以不用擔心域名劫持問題了;而且,如果選擇好的DNS服務器提供商,還保證將用戶引導的訪問速度最快的IDC節點上接入HttpDNS之前;

總結:

網絡優化的知識點很多,今天主要介紹了dns的知識點

 

下次繼續介紹Android網絡優化的具體實現方案

 

責任編輯:武曉燕 來源: Android開發編程
相關推薦

2021-07-29 14:20:34

網絡優化移動互聯網數據存儲

2022-02-16 14:10:51

服務器性能優化Linux

2021-11-29 11:13:45

服務器網絡性能

2011-06-14 14:32:46

性能優化

2019-12-13 10:25:08

Android性能優化啟動優化

2023-07-10 16:18:18

性能優化開發

2013-02-20 14:32:37

Android開發性能

2013-09-17 10:32:08

Android性能優化數據庫

2017-01-15 15:13:37

Android性能優化優化點

2010-03-02 09:53:14

MySQL性能優化

2024-03-07 11:03:21

ElasticseaES索引

2015-09-16 14:37:50

Android性能優化運算

2015-09-16 15:48:55

Android性能優化電量

2015-09-16 13:54:30

Android性能優化渲染

2009-06-30 11:23:02

性能優化

2018-01-09 16:56:32

數據庫OracleSQL優化

2017-03-29 14:44:20

網絡性能優化

2015-09-14 09:45:58

虛擬化網絡網絡性能

2017-12-23 14:38:41

Android編程開發優化

2019-09-25 08:03:21

Android加速Google
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲国产精品久久久久婷婷老年 | 最近日韩中文字幕 | 人人看人人草 | 免费黄色片在线观看 | 国产日韩一区二区三免费 | 国产中文原创 | 欧美一区二区三区久久精品 | 午夜在线视频 | 欧美一级在线观看 | 中文字幕视频三区 | 美国十次成人欧美色导视频 | 欧美成年黄网站色视频 | 欧美日韩精品一区 | 精品国产乱码久久久久久图片 | 精品毛片在线观看 | 中文字幕国产精品 | 三级成人在线观看 | 亚洲人a| 成人在线视频免费看 | 久久久久国产视频 | 麻豆精品国产91久久久久久 | 欧美精品一区二区三区在线 | 91视频免费视频 | 国产精品色 | 久草新在线 | 久久久精 | 久久精品国产一区二区电影 | 欧美一级二级在线观看 | 亚洲精品视频二区 | 中文天堂在线一区 | 日韩午夜激情 | 精品免费国产一区二区三区四区 | 97视频网站 | 国产一区二区三区视频 | 欧美性大战xxxxx久久久 | 国产精品国产精品国产专区不卡 | 91欧美精品成人综合在线观看 | 国产一区二区影院 | 日韩在线观看网站 | 在线视频一区二区三区 | 成人免费网站视频 |