# DNS預解析
### DNS全稱為Domain Name System(域名系統)
### 是域名和IP地址相互映射的一個分布式數據庫
*****
域名解析即通過主機名,最終得到該主機名對應的IP地址的過程。
瀏覽器對網站第一次的域名DNS解析查找流程依次為:
```
瀏覽器緩存-系統緩存-路由器緩存-ISP DNS緩存-遞歸搜索
```
```
為什么需DNS預解析?
DNS解析時間可能導致大量用戶感知延遲,DNS解析所需的時間差
異非常大,延遲范圍可以從1ms(本地緩存結果)到普遍的幾秒
鐘時間。所以利用DNS預解析是有意義的。
```
```
DNS 實現域名到IP的映射。通過域名訪問站點,每次請求都要做
DNS解析。目前每次DNS解析,通常在200ms以下。針對DNS解析
耗時問題,一些瀏覽器通過DNS Prefetch 來提高訪問的流暢性
```
### 解決方法:DNS預備解析
```
DNS預解析是瀏覽器試圖在用戶訪問鏈接之前解析域名,這是
計算機的正常DNS解析機制
```
* DNS產生背景
>在用戶與互聯網某平臺的主機進行通信時,必須知道對方的IP地址,用戶很難記住很長的二進制主機地址(32位),即使是十進制的地址也很難記住,但是在應用層為了方便用戶記憶各種網絡的應用,連接在互聯網的主機不僅僅包含IP還有對應的主機名字,我們的域名系統(DNS)就是把主機名轉化為計算機可以識別的IP地址
* DNS前身
>早在ARPANET時代,整個網絡上只有數百臺的計算機,那時候使用一個叫做hosts的文件,列出所有的主機名字和對應的IP地址,只用用戶輸入對應的主機名字,就可以很快的把主機的名字轉化為對應的二進制IP地址
* 插入-->
># IP地址

IP地址是有兩部分組成:網絡號和主機號
> ip地址根據網絡規模可以分為,A類,B類,C類,D類和E類。其中A、B、C是基本類,D、E類作為多播和保留使用。IP地址類型 :
> A類從1.0.0.0/8到126.0.0.0/8 (子網掩碼默認是:255.0.0.0)
> B類從128.0.0.0/16到191.255.0.0/16;(子網掩碼默認是:255.255.0.0)
>C類從192.0.0.0/24到223.255.255.0/24;(子網掩碼默認是:255.255.255.0)
D類:是多播地址。該類IP地址的最前面為“1110”,所以地址的網絡號取值于224~239之間。一般用于多路廣播用戶
E類:是保留地址。該類IP地址的最前面為“1111”,所以地址的網絡號取值于240~255之間。
偷偷告訴你:--------》
在IP地址3種主要類型里,各保留了3個區域作為私有地址,其地址范圍如下:?
A類地址:10.0.0.0~10.255.255.255?
B類地址:172.16.0.0~172.31.255.255?
C類地址:192.168.0.0~192.168.255.255
回送地址:127.0.0.1。?也是本機地址,等效于localhost或本機IP。一般用于測試使用。例如:ping 127.0.0.1來測試本機TCP/IP是否正常。
* 獲取子網掩碼:
給定IP為210.31.233.128?,子網掩碼為255.255.255.128
首先判斷他屬于哪個IP類型,后面直接計算得出
* 子網掩碼是什么?
>子網掩碼(subnet mask)又叫網絡掩碼、地址掩碼、子網絡遮罩,它是一種用來指明一個IP地址的哪些位標識的是主機所在的子網,以及哪些位標識的是主機的位掩碼。
子網掩碼不能單獨存在,它必須結合IP地址一起使用。子網掩碼只有一個作用,就是將某個IP地址劃分成網絡地址和主機地址兩部分。?
子網掩碼是一個32位地址,用于屏蔽IP地址的一部分以區別網絡標識和主機標識,并說明該IP地址是在局域網上,還是在遠程網上。
子網掩碼——屏蔽一個IP地址的網絡部分的“全1”比特模式。對于A類地址來說,默認的子網掩碼是255.0.0.0;對于B類地址來說默認的子網掩碼是255.255.0.0;對于C類地址來說默認的子網掩碼是255.255.255.0。
* 通過子網掩碼,就可以判斷兩個IP在不在一個局域網內部。
* 子網掩碼可以看出有多少位是網絡號,有多少位是主機號
* 網關
># 網關
* * *
網關(Gateway)又稱網間連接器、協議轉換器。默認網關在網絡層上以實現網絡互連,是最復雜的網絡互連設備,僅用于兩個高層協議不同的網絡互連。網關的結構也和路由器類似,不同的是互連層。網關既可以用于廣域網互連,也可以用于局域網互連
網關實質上是一個網絡通向其他網絡的IP地址。
比如有網絡A和網絡B,網絡A的IP地址范圍為“192.168.1.1~192. 168.1.254”,子網掩碼為255.255.255.0;網絡B的IP地址范圍為“192.168.2.1~192.168.2.254”,子網掩碼為255.255.255.0。
在沒有路由器的情況下,兩個網絡之間是不能進行TCP/IP通信的,即使是兩個網絡連接在同一臺交換機(或集線器)上,TCP/IP協議也會根據子網掩碼(255.255.255.0)判定兩個網絡中的主機處在不同的網絡里。
而要實現這兩個網絡之間的通信,則必須通過網關。如果網絡A中的主機發現數據包的目的主機不在本地網絡中,就把數據包轉發給它自己的網關,再由網關轉發給網絡B的網關,網絡B的網關再轉發給網絡B的某個主機。
所以說,只有設置好網關的IP地址,TCP/IP協議才能實現不同網絡之間的相互通信。那么這個IP地址是哪臺機器的IP地址呢?網關的IP地址是具有路由功能的設備的IP地址,具有路由功能的設備有路由器、啟用了路由協議的服務器(實質上相當于一臺路由器)、代理服務器(也相當于一臺路由器)。
># 廣播地址
>廣播地址(Broadcast Address)是專門用于同時向網絡中所有工作站進行發送的一個地址。
在使用TCP/IP 協議的網絡中,主機標識段host ID 為全1 的IP 地址為廣播地址,廣播的分組傳送給host ID段所涉及的所有計算機。例如,對于10.1.1.0 (255.255.255.0 )網段,其廣播地址為10.1.1.255 (255 即為2 進制的11111111 ),當發出一個目的地址為10.1.1.255 的分組(封包)時,它將被分發給該網段上的所有計算機。
### 將IP地址和子網掩碼換算為二進制,子網掩碼連續全1的是網絡地址,后面的是主機地址
### IP地址和子網掩碼進行與運算,結果是網絡地址(即主機號全0是網絡地址)
### 將運算結果中的網絡地址不變,主機地址變為1,結果就是廣播地址
## IP地址 子網掩碼 廣播地址的轉化
**示例**
一個主機的IP地址是202.112.14.137,掩碼是255.255.255.224,要求計算這個主機所在網絡的網絡地址和廣播地址
## 根據子網掩碼可以分割網絡號+主機號
* * *
`255.255.255.224`?轉二進制:
> 11111111 11111111 11111111 11100000
網絡號有27位,主機號有5位
網絡地址就是:把IP地址轉成二進制和子網掩碼進行與運算
11001010 01110000 00001110 10001001
IP地址&子網掩碼
```
11001010 01110000 00001110 10001001
11111111 11111111 11111111 11100000
-----------------------------------------------------
11001010 01110000 00001110 10000000
即:202.112.14.128
廣播地址:網絡地址的主機位全部變成1 ,10011111 即159
即:202.112.14.159
主機數:2*2*2*2*2*2-2=30
```
* 回來-----》
## 為什么機器處理IP數據的時候只只要IP地址,不要域名呢?
>因為IP地址的長度是固定的32位,(如果是IPV6地址,那就是128位,也是定長的),但是域名不是定長的
## 如何域名注冊?

審核完一周就能用了
>由于互聯網的規模很大,讓然并不是只使用一個域名服務器,早在1983年互聯網就采用層次樹狀結構的命名法,并且使用分布式域名系統DNS,互聯網的域名系統DNS被設計為聯機的分布式數據庫系統,采用客戶服務器方式,大多數的DNS在本地就可以被解析,僅少量在互聯網上通信,所以DNS系統的效率很高,即使單個出現了問題,也不會影響整個系統的運行
* 域名到IP解析是由分布在互聯網上的許多域名服務器程序共同完成的
>域名到IP的流程:
某個應用,調用解析程序,成為一個DNS客戶,把待解析的域名放在DNS請求報文中,以UDP的形式發送到本地域名服務器(使用UDP是節省成本),本地的域名服務器查找域名后,把IP地址放在回答報文中返回,應用進程獲得目的駐地的IP地址后即可通信,但是如何本地的域名服務器不能回答呢?
那么域名服務器就暫時稱為DNS中的一個客戶,并且向其他的域名服務器發出查詢請求,這種過程直至找到能夠回答該請求的域名服務器位置
## 互聯網的域名結構
>背景:早期的時候,互聯網使用的是非等級的名詞空間,其優點是名字簡短,但是當互聯網上的用戶急劇增加時,用非等級的用戶的名字空間來管理一個很大的命名空間來管理一個很大的而且是經常變化的名字集合是非常的困難,因為互聯網采用樹狀的命名方法,就像全球的郵政系統和電話系統一樣,在任何的一個連接在互聯網的主機或者路由器都有一個唯一的層次結構,叫做域名。,這里的域是名字空間可被管理的劃分,域可以分為子域,子域還可以劃分子域。這樣就形成了頂級域,二級域,三級域等
例如:中央電視臺收發電子郵件的計算機域名
`mail.cctv.com`
* mail:三級域名
* cctv:二級域名
* com:頂級域名
### 域名的規則:
>DNS規定,域名的標號都是有英文字母和數字組成,每個標號都不能超過63個字符(但是一般都不會超過12個字符,因為太長不方便記憶),當然也不會區分大小寫,在標號中除了-之外不能使用個其他的標點符號,級別低的域名寫在最左,級別高的寫在右側,總共的域名不能超過255個字符,DNS不規定一個域名包含多少下級域名,也不會規定每個級別分別代表什么意思,,各級的域名由上一級的域名管理器管理,,但是最高的級別由ICANN管理,用這種的方法可以使每個域名在整個互聯網內是唯一的。并且放便查找
* 注意1:
域名并不是指計算機的物理地址,只是方便記憶的字符串,而IP是定長的32位二進制數字,很方便計算機處理
* 注意2
域名中的點和十進制的點不是一一對應的關系,在我們的十進制的點 只能是三個,但是在我們的域名點沒有要求
### 頂級域名的分類
>在2012年5月的統計,現在的頂級域名TLD(Top Level Domain)已有326個,之前的頂級域名被分為三大類
* (1)國家頂級域名(nTLD),采用ISO 3166規定
>如:cn---中國 us---美國 uk----英國
也叫ccTLD (cc是國家代碼 country-code),到2012年5月,國家域名總數有296個
* (2)通用頂級域名 (gTLD),
>到2006年12月為止,通用頂級域名的總數已經達到20個,之前確定的有7個
如:com(公司企業) net(網絡服務機構)
## 域名服務器、
- git-第一天
- Git-第二天
- git-第三天
- http-基礎
- HTTP構成和狀態碼
- 瀏覽器輸入URL,經歷的過程
- TCP/IP 詳解三次握手 四次揮手
- http-DNS系統
- http與https之間的區別
- HTTPS握手和HTTP握手
- HTTP小試牛刀
- Tcp初探
- TCP報文格式
- HTML5
- HTML基礎
- Mock
- css 選擇器
- css 動畫
- css 定位
- position/display/float/z-index第一課時
- 行內、塊、脫標 三種狀態下的元素如何實現、水平、垂直居中
- clientHeight/offsetHeight/scrollHeight
- js 數據類型
- 變量提升
- 堆棧關系