IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> 为何全世界根域名服务器只使用13个不同的ip地址 -> 正文阅读

[网络协议]为何全世界根域名服务器只使用13个不同的ip地址

首先是由于数据报的长度决定的

DNS服务在运输层采用的协议为UDP,在网络层则是使用IP协议。

IP协议规定,在互联网中所有的主机和路由器都必须能接受长度不超过576字节的数据报。这是假定上层交付的数据长度有512字节,加上最长IP首部60字节,再加上4字节的富余量,就得到576字节。若发送长度大于576字节,目的主机可能无法接受所要发送的数据报长度,需进行分片。为了提高速度,最好IP数据长度小于等于576字节(不用分片),即UDP数据报总长度小于等于512字节,去掉UDP数据报的首部8字节,数据部分数据长度为504字节。

DNS 协议格式

下面我们从根域名解析的返回数据包截图:

DNS数据格式

?

我们假设根域名由 N 组,计算数据包各部分字节占用的情况如下:

  • Header 部分占用12个字节,包括 Transaction ID (2字节),Flags (2字节),Questions (2字节),Answer RRs (2字节),Authority RRs (2字节),Additional RRs (2字节);
  • Question Section 部分占用5个字节,包括根标签(1字节),Class (2字节,基本取值都是IN),查询类型(2字节);
  • Answer Section 部分占用的字节数为所有记录字节数之和,每条记录包括根标签(1字节),TTL (4字节),Class (2字节,基本取值都是IN),查询类型(2字节),域名存储占用的字节数;因为域名在 DNS 解析协议当中按照长度(2字节)+数据的形式存储,其中数据部分是分段存储的,存储格式如下所示,所以第一条记录的域名存储占用22个字节,继而第一条记录总共占用31个字节;而从第二条记录开始,因为记录中出现的域名存在部分内容与第一条记录重复,即“root-servers.net”部分,这部分可以利用 DNS 指针压缩存储,只需要存储2个字节的指针,指向第一条记录出现的部分,而不需要存储实际的内容,所以第二条记录~N条记录占用的字节数分别为11+4=15个字节;

  • Additional Section 部分占用的字节数为所有记录字节数之和,每条记录包括域名,TTL (4字节),Class (2字节,基本取值都是IN),查询类型(2字节),IP 地址(2字节长度+4字节内容);因为 Additional Section 记录的域名都在 Answer Section 中出现过,所以这部分都可以利用 DNS 指针压缩存储,只需要存储2个字节的指针即可表示对应的域名,所以Additional Section 部分的记录占用的字节数为2+4+2+2+6=16个字节;

综上所述,数据包总长度为12+5+(31+(15(N-1))+16N,再根据前述 DNS 大小限制不超过504字节的要求,可以得 N 不超过15组,再加上早期设计的时候考虑到预留一些 buffer 于是就有了现在全球13组根域名服务器的结果。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2022-05-19 12:04:56  更:2022-05-19 12:05:13 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 11:42:03-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码