網絡之DNS協議圖解

DNS是計算機域名系統 (Domain Name System)

  • 域名系統采用類似目錄樹的等級結構。

域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,并具有將域名轉換為IP地址功能的服務器。

  • 域名服務器為客戶機/服務器模式中的服務器方,它主要有兩種形式:主服務器和轉發服務器。

域名解析是將域名映射為IP地址的過程。

  • DNS是應用層協議,client端(一般指瀏覽器)構建DNS查詢請求,依次被傳輸層,網絡層,數據鏈路層等封裝傳送到達DNS服務器端,最終client端接收到DNS響應消息
  • DNS主要基于UDP運輸層協議
    • 一次UDP名字服務器交換可以短到兩個包:一個查詢包、一個響應包。一次TCP交換則至少包含9個包:三次握手初始化TCP會話、一個查詢包、一個響應包以及四次分手的包交換。
      考慮到效率原因,TCP連接的開銷大得,故采用UDP作為DNS的運輸層協議,這也將導致只有13個根域名服務器的結果。

小插曲,為什么只有13臺根域名解析服務器?

  • 因為要UDP報文中包含所有的根服務器信息
  • 所以現在只能放13條地址在一個包里,也就是416字節,
  • 在IPV4下一個單獨的包,解析后只能有512字節用來描述這些跟域名服務器。一個UDP數據包(512bit)必須包括所用跟服務的主機名和IP 。一個完整的IP 包括8 * 4 個字節 也就是 32 個。(11111111.11111111.11111111.11111111)
  • 那么IP占用是32 * 13 = 416 。十三臺服務器的主機 是 A 到 M (13)其中每個字母占 7 個長度 ( A 表示 為 1000001)(M 表示為 1001101)總共長度為 7 * 13 = 91 。IP+主機名 = 507 所以一個UDP數據包只能放 13 個 這就是根服務器 目前只能有 13個而且主機名只是 A到M 命名的原因
  • 假設是14個 IP + 主機名 = 14 * 32 + 7 * 14 = 546。都已經超過UDP的報文長度了
  • 講了一大堆理論的東西,真正的原因還是因為互聯網這東西是美國興起的,自然占據了主動權,所以目前中國沒有根域名服務器!但是在2000年初,國家有了很多關于國家安全的措施。特此2018國慶,預祝我們祖國越來越昌盛!
  • 關于為什么中國沒有根域名服務器的解析
    如有錯誤希望指正

域名的分層結構

在這里插入圖片描述

DNS 查詢的順序

  1. 是否是本機
  2. 是否是緩存
  3. HOSTS文件查詢
  4. DNS服務器查詢

下面來個生動形象的例子

黑色粗線,表示域名的分層結構!
箭頭表示訪問的順序
在這里插入圖片描述

上面的圖怎么一個用戶,可以直接和根域名服務器有交互,這怎么和我們平時用的不一樣呢?

一個局域網的圖解:在這里插入圖片描述

廣域網WAN: 將遠隔千里的計算機都連在一起;

在這里插入圖片描述

那么天朝是怎么做的?

在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382565.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382565.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382565.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 謂詞,

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> using namespace std;class GreaterThen20 { public:bool operator()(int val){return val > 20;} };//一元謂詞 void test01() {vector<int>v;v.push…

網絡之ARP

地址解析協議&#xff0c;即ARP&#xff08;Address Resolution Protocol&#xff09;&#xff0c;是根據IP地址獲取物理地址的一個TCP/IP協議。 主機發送信息時將包含目標IP地址的ARP請求廣播到網絡上的所有主機&#xff0c;并接收返回消息&#xff0c;以此確定目標的物理地址…

C++ 內建函數對象

STL內建了一些函數對象。分為:算數類函數對象,關系運算類函數對象&#xff0c;邏輯運算類仿函數。這些仿函數所產生的對象&#xff0c;用法和一般函數完全相同&#xff0c;當然我們還可以產生無名的臨時對象來履行函數功能。使用內建函數對象&#xff0c;需要引入頭文件 functi…

網絡之ICMP協議

ICMP 主要功能&#xff1a; 確認IP包是否成功送達目標地址通知在發送過程當中IP包被廢棄的具體原因改善網絡設置等 在IP通信中如果某個IP包因為某種原因未到達目標地址&#xff0c;那么這個原因由ICMP通知。 過程&#xff08;圖解TCP/IP&#xff09; ICMP類型 常見的&am…

C++ 常用算法之遍歷

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> #include <vector> #include <functional> using namespace std;/* 遍歷算法 遍歷容器元素 param beg 開始迭代器 param end 結束迭代器 param _callback 函數回調或者函數…

網絡之NAT協議

由來&#xff1a; 2011年2月3日中國農歷新年&#xff0c; IANA對外宣布&#xff1a;IPv4地址空間最后5個地址塊已經被分配給下屬的5個地區委員會。2011年4月15日&#xff0c;亞太區委員會APNIC對外宣布&#xff0c;除了個別保留地址外&#xff0c;本區域所有的IPv4地址基本耗盡…

C++ 常用查找算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> using namespace std; #include <vector> #include <string> #include <functional> /* find算法 查找元素 param beg 容器開始迭代器 param end 容器結束迭代器 para…

CentOS7卸載并安裝mysql教程

MySQL安裝 先卸載其他 刪除Mysql yum remove mysql mysql-server mysql-libs mysql-server;find / -name mysql 將找到的相關東西delete掉(rm -rf /var/lib/mysql)&#xff1b;rpm -qa|grep mysql(查詢出來的東東yum remove掉) rm /etc/my.cnf查看是否還有mysql軟件&#x…

C++ 常用排序算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> using namespace std; #include <algorithm> #include <vector> #include <functional> #include <ctime> /* merge算法 容器元素合并&#xff0c;并存儲到另一容器中 這兩個容器 必須也是…

排序穩定性的意義

首先&#xff0c;為什么會有排序算法穩定性的說法&#xff1f;只要能排好不就可以了嗎&#xff1f; 看例子 第1行是數字2 記作 1 2 第2行是數字4 記作 2 4 第3行是數字2 記作 3 2 排序后的結果&#xff08;如果看不懂命令的意思&#xff0c;參照這個博客&#xff09; 那么引入…

C++ 常用拷貝和替換算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> #include <algorithm> #include <iterator> using namespace std;/* copy算法 將容器內指定范圍的元素拷貝到另一容器中 param beg 容器開始迭代器 param end 容器結束迭代器 p…

防火墻的基礎知識入門

文章目錄防火墻基于實現方式&#xff0c;防火墻的發展分為四個階段:Linux 環境中主要的防火墻形式TCP wrappers~~詳解~~ 粗解Tcp wrappers的認識它的基本過程是這樣的&#xff1a;iptable攻擊和防御DDOS 攻擊常見的可能受到 DDOS 攻擊體現的癥狀有&#xff1a;而常見的 DDOS 攻…

C++ 常用算數生成算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <vector> using namespace std; #include <algorithm> //不好使 #include <numeric> //好使 #include <iterator> /* accumulate算法 計算容器元素累計總和 param beg 容器開始迭代…

fork()請問下面的程序一共輸出多少個“A”?多少個-?

題目&#xff1a;請問下面的程序一共輸出多少個“-”&#xff1f; #include #include #include int main(void) { int i; for(i0; i<2; i){ fork(); printf("-"); } return 0; } 解析&#xff1a;一共輸出8個。 首先程序一開始&am…

C++ 常用集合算法

#define _CRT_SECURE_NO_WARNINGS #include<iostream> #include <algorithm> #include <vector> #include <iterator> using namespace std;/* set_intersection算法 求兩個set集合的交集 注意:兩個集合必須是有序序列 param beg1 容器1開始迭代器 par…

本能富可敵國,最后卻選擇拯救世界!Bram的Vim和烏干達兒童

他本能富可敵國&#xff0c;最后卻選擇拯救世界 在命令行界面輸入vim會出現一堆文件&#xff0c;但是一直有這么一句話 Help poor children in Uganda! “幫助可憐的烏干達兒童” 查詢了一下這里面相關的歷史背景和知識 在Vim許可證文件結束后的部分翻譯 &#xff0d;如果…

linux 常用命令01

/bin/bash 就是linux默認的shell ls命令 ls -a 顯示所有文件 包含隱藏文件 ls -R 遞歸顯示子目錄 ls -l 顯示詳細信息 ls -lrt 按照時間排序&#xff0c;顯示文件信息 配合通配符使用 ls *.c *匹配任意多個字符 ls xx.? 匹配任意一個字符 cd 命令 cd - 為切換到上次目錄 cd 回…

Linux基礎查漏補缺

文章目錄第二遍重新回顧Linux基礎查看主機名修改主機名查看IP地址Linux的 “--”和“-”根目錄文件的意義和作用alias直接在命令行界面輸入firefox數組越界發生什么命令行光標移動的幾個操作重定向第二遍重新回顧Linux基礎 1.查找忽略的知識點 2.再次記憶一些基礎知識 3.鞏固基…

linux 常用命令02--文件屬性 以及軟硬鏈接

文件屬性和用戶用戶組 通過ls-l 顯示文件詳細信息 drwxrwxr-x 2 user usergroup 4096 10月 30 20:55 stu1drwxrwxr-x d代表目錄文件&#xff0c; -代表普通文件 rwx rwx r-x 歸屬用戶的權限 歸屬組的權限 其他用戶的權限 權限位數字表示法(8進制數…

linux查漏補缺之常用命令

wc命令 -c, --bytes, --chars輸出字節統計數。-l, --lines輸出換行符統計數。-L, --max-line-length輸出最長的行的長度。-w, --words輸出單詞統計數。grep命令 圖解