DNS及mDNS 名字(名称)压缩规则

2023-05-16

---------------------------------------------------------

Author             :Shawn Lee

WebSite            :http://blog.csdn.net/twelvelee

Email               :xiaofengoffice@163.com

Update-Time   : 2011年8月24日星期三

Shawn声明:本人鄙视直接复制本人文章而不加出处的个人或团体,

但不排斥别人转载Shawn Lee的文章,只是请您注明出处并和本人

联系或留言给我。

---------------------------------------------------------

1.名字压缩存在的合理性:

在网络上传送时,如果数据的尺寸太大,就会占用网络很长时间进行发送,这样网络的效率就比较低。想要提高网络的使用效率,就可以减少发送的数据的尺寸。当产生一个mDNS数据包, mDNS执行程序应该对需要压缩的资源记录名字使用名字压缩,当一个数据包含多于一个问题时,一个数据包中的连续问题经常是相似的名字,就可以使用名称压缩来减少整个数据包的字节数。传输压缩之后的数据包,可以使网络更加有效率。

1.1      名字压缩方法:

压缩本质就是使用一个两字节的指针,指向已有的名字,压缩后的名字中包含这个指针,(这个指针并不是通常C语言中的内存地址,而是一个偏移量)。

1.1.1 不使用名字压缩时域名的存储如下:

www.xupt.edu.cn

www.baidu.com

绿色框中的数字表示计数,占用一个字节(它的值表示随后的标识符字节数),之后是标签标示符长度在63字节之内,最后后以字符 ‘\0’ 结尾。

1.1.2 使用压缩时

用一个指向之前的指针来替代之前的出现的名字,这个指针使用字节开头的两个比特是都是1。这就可以将这两字节的一个指针从一个标签中区分出来,因为标签限制在63个字节或更少,标签必须以00比特开始。(10和01组合留作将来使用)。OFFSET段指定一个从消息开始(在域头中ID段的第一个字节)的偏移。零偏移指的是ID段的第一个字节。

压缩方法很简单,当一个域名中的标识符是压缩的,它的“计数”字节中的最高两位将被设置为11。这表示它是一个16 bit指针而不再是8 bit的计数字节。指针中的剩下14 bit表示该标识符在D N S报文中所在的位置偏移(相对于DNS报文头)。注意一个指针可能指向一个完整的域名,也可能只指向域名的结尾部分,并且一个域名也可以前半部分不压缩,仅对后半部分才应用指针压缩。此外嵌套压缩也是存在的,即指针指向的域名也可能是压缩的(包含一个指针)。

OFFSET段指一个从消息开始(在域头中ID段的第一个字节)的偏移。零偏移指的是ID段的第一个字节。

1.2      举例:

如一个数据包中三个名字:

1)         youdian.jsj.com  (假如“y”在数据包中的偏移量为40)

总长度16个字节

2)          xian.youdian.jsj.com

总长度21个字节

    3) youdian.jsj.com

第二个名字经过压缩:

长度由原来的21个字节缩短为现在的7个字节。

第三个名字经过压缩后:

长度有原来的16个字节缩短为现在的两个字节

另外有两点需要注意:

1.     一个域名仅能包含一个指针,要么只有两个字节就只包含一个指针,要么只在结尾部分跟随一个指针。

2.     包含指针的域名无须以字符 ‘\0’ 结尾。

2      参考文献

RFC 1035 的4.1.4节所述massage compression

http://freesoft.org/CIE/RFC/1035/index.htm

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

DNS及mDNS 名字(名称)压缩规则 的相关文章

  • CentOS安装arm-linux-gcc交叉编译器

    xff08 注 xff1a 首先需要明确需要安装centos系统的位数 xff0c 即是32位的还是64位的 xff09 1 下载并解压文件 xff1a 下载arm linux gcc 4 4 3 tgz到任意的目录下 xff0c 进入这个
  • STM32F107之CAN配置

    STM32F107属于STMF10x系列的互联型产品 xff0c 所以配有2个CAN模块即CAN1和CAN2 CAN模块正常工作模式和测试模式 xff0c 且测试模式又分为环回模式 静默模式和环回静默模式 xff0c 但一般都使用正常工作模
  • 元学习基本概念笔记

    元学习是深度学习领域最活跃的研究领域之一 人工智能 xff08 AI xff09 社区中的一些思想流派赞成这样的论点 xff0c 即元学习是解锁人工智能 xff08 AGI xff09 的垫脚石之一 近年来 xff0c 我们已经看到了元学习
  • 【数据库】联合索引的最左匹配原则理解

    索引是基于B 43 树实现 xff0c 所以这个最左匹配原则肯定要站在B 43 树的角度上来思考 首先我们看一下单个索引的B 43 树 xff1a 如上图 xff0c 一颗B 43 树根据一个值来构建 xff0c 很容易理解索引的使用 假如
  • debian非正常关机进不了图形界面的解决方法

    昨天调试一个程序的时候 xff0c 把界面设置成了POPUP方式 xff0c 结果触发断点的时候 xff0c 界面不能最小化 xff0c 程序就死到那了 xff0c 动不了 xff0c 没办法只好按电源了 xff0c 结果启动的时候提示 A
  • CVPR18读文笔记:SINT++:Robust Visual Tracking via Adversarial Postive Instance Generation

    CVPR18一共出现了3篇将Adersarial概念应用于tracking xff0c 解决正样本弱的问题 VITAL是用了GAN xff0c 惊为天人 本文国产 xff0c 索然性能不是最优 xff0c 但是VAE 43 DRL 43 S
  • 甲方乙方

    甲方乙方 个人而言 xff0c 2011年的基调是创业 5月 xff0c 一行十人 xff0c 有的刚刚完婚 xff0c 有的即将成为父亲 xff0c 部分人拿出资金 xff0c 大伙儿领着糊口的生活费 xff0c 怀揣莫可名状的热情 xf
  • vnc远程使用教程图解,vnc远程使用教程图解使用流程(经验之谈)

    vnc远程控制不知道大家听说过没有 xff0c 它的中文名叫虚拟网络控制台 xff0c 这是一款优秀的远程控制工具软件 相信大家看到远程控制软件应该已经猜出来了这款软件到底是干嘛的了吧 大家找到过很好用过的vnc远程控制吗 xff1f 今天
  • 云技术是什么_三分钟了解云技术的原理与发展

    什么是云技术 定义 云技术 xff08 Cloud technology xff09 基于云计算商业模式应用的网络技术 信息技术 整合技术 管理平台技术 应用技术等的总称 xff0c 可以组成资源池 xff0c 按需所用 xff0c 灵活便
  • 怎么在vscode上面使用git仓库管理工具

    如何在vscdoe中使用git仓库管理工具 为什么我们要用vscode上面操作git仓库管理工具呢 xff1f 因为我们安装了git后 xff0c 会在命令窗口 xff08 就是windows 43 r gt 输入cmd运行的命令窗口 xf
  • VMware安装linux镜像

    安装Linux详细教程 一 VMware安装linux镜像二 创建快照三 克隆镜像 一 VMware安装linux镜像 点击创建虚拟机 2 有两种安装方式 xff0c 典型有很多东西会自动配置好所以我们选择自定义安装 3 选择安装版本 4
  • 实施CMMI时必须解决的认识问题

    在基于 CMMI 实施软件过程改善时 xff0c 有些根本的思想认识问题解决不了 xff0c 往往会使实施的周期比较长 xff0c 效果不好 xff0c 甚至导致过程改善的失败或中止 软件企业的高层领导 企业的过程改进主管 项目经理及一般的
  • 使用 OpenCV与 HAAR 级联算法进行人脸检测和人脸识别

    AI人脸识别是一种从数字图像或视频帧中识别或验证人脸的技术 人类可以毫不费力地快速识别面部 这对我们来说是一项轻松的任务 xff0c 但对计算机来说却是一项艰巨的任务 因为存在各种复杂性 xff0c 例如低分辨率 遮挡 光照变化等 这些因素
  • Ubuntu 18.04扩展磁盘容量到单独分区

    vmvare下 扩展原有磁盘容量时 xff0c 一般情况下需要删除分区重新划分 xff0c 这样就删除了原有的数据 xff0c 为了保留原有数据 xff0c 把扩展的分区额外划分到一个分区 xff0c 自动挂载到一个目录 xff0c 减少风
  • Ubuntu 15.10使用vnc工具开启远程桌面

    1 在Ubuntu上首先需要安装vnc4server apt get install vnc4server 2 第一次执行vncserver的时候需要为客户端连接设置8位的密码 3 打开服务后 xff0c 根据客户端号连接 也可以指定客户端
  • n模块管理多个版本的node.js

    安装 homebrew方式 brew span class token function install span n github方式 span class token function curl span L https git io
  • 11.23总结

    今天除了上数学课和心里考试全部坐在电脑前刷题 启航oj 4 xff0c 菜鸟杯 oj3 因为我是一个入门比较晚的菜鸟所以我唯一能做的就是挤出所有的时间全部用来补别人已经明白的东西 今天主要的收获就是 字符串三个函数的应用 字符与二维数组的混
  • 11.24总结

    1 jsua oj 0 打算明后两天集中搞菜鸟杯题组 2 启航oj 5 今天上午满课下午都在敲代码 这真的是大一吗 有了昨天的刷题经验今天自己刷题快多了就是被那些提交语言折磨到窒息白白浪费了好多时间 主要学习了蛇形矩阵的算法根据题意判断从那
  • 11.25总结

    博客被吞了一遍 我吐了想一点前上床睡觉有这么难吗 虽然今天一天满课但是我还是学到了很多知识 今天启航oj 1 菜鸟杯补题 4 写了一篇关于党的19届六中全会的文章 主要学习了汉诺塔的数据变化原理 xff0c 递归 加深我对递归的理解 xff
  • 12.1日总结

    刷题数0 真的是挺无语的因为感觉指针链表栈的知识混成一团了 xff0c 只能各种百度 xff0c 最后发现书本里面的才是最香的 虽然没有做出来栈的题目但是大体的基本概念已经理清了 先从链表讲起 一说到结构体 xff0c 指针 xff0c 链

随机推荐

  • 12.2总结(纵使结局不如意,放弃实属下下签。)

    刷题数三 xff0c 菜鸟杯补题2 xff1b 启航栈1 xff1b 终于知道这两天为什么这么痛苦了 我一度难受到窒息因为我看的是链栈我看了两天硬是对这些题目无从下手 xff0c 因为他吧指针 结构体 链表 栈一起结合起来使用 我去搜各种博
  • 12.3日总结 单调栈

    今天就刷了两个题 xff0c 尝试了一个题 xff0c 主要看了单调栈 xff0c 单调栈分为两种一中是栈中元素从栈顶到栈顶呈从小到大的排序的栈这样的栈称为单调递增栈 另一种从栈顶到栈底数据从大到小称为单调递减栈 单调栈的应用一般可以用来求
  • 12.5总结

    开始着手于项目的编写 其实所有事情都是开头难 xff0c 项目也一样 xff0c 第一次写项目必定要接触到很多新东西 xff0c 今天主要遇到了两个新的头文件里面包含了写项目必备的几个函数 stdlib h里面定义了五种类型 一些宏和通用工
  • 搬运! Windbg调试命令详解

    转载注明 gt gt 作者 xff1a 张佩 原文 xff1a http www yiiyee cn Blog 1 概述 用户成功安装微软Windows调试工具集后 xff0c 能够在安装目录下发现四个调试器程序 xff0c 分别是 xff
  • 使用光盘安装Microsoft media foundation

    一 准备 系统 xff1a widnows server 2012 R2 Datacenter 准备文件 xff1a 安装光盘或iso 双击iso文件 xff0c windows server会自动虚拟出一个光驱 假如光驱或虚拟光驱的盘符为
  • 如何用MindManager将导图导出为HTML5交互式导图?

    最新版MindManager 2017中新增了一种导出方式 HTML5交互式导图 xff0c 相信很多人在了解MindManager 2017新功能的时候就已经知道了 本文 xff0c 小编将给大家演示 xff0c 如何将做好的思维导图导出
  • 判断两个IP是否属于同一个子网

    例如 xff1a 192 168 1 1 24和192 168 1 33 27 192 168 1 1 24的ip地址为192 168 1 1 xff0c 子网掩码为255 255 255 0 转化为二进制 xff1a IP地址为 xff1
  • 记录一次K8s-Flannel插件的坑

    版本 xff1a K8s版本1 17 6 部署方式 xff1a ansible 43 kubeadm部署 架构 xff1a master1 43 node2 43 registry私有仓库 执行kubectl apply f kube fl
  • opencv imencode和imdecode使用,用于网络传输图片

    这是C 43 43 版本的 程序首先读入一个图片 然后encode xff0c 之后把encode后的内容写入文件 xff08 实际应用可以发送到网络 xff09 第二步 xff0c 从文件读取encode的内容 然后解码decode 转换
  • 云计算&云存储

    云计算技术 云计算技术主要分为以下几个部分 xff1a 编程模式海量数据分布存储技术海量数据管理技术虚拟化技术云计算平台管理技术 云计算应用 云计算应用主要包含以下六个部分 xff1a 密码优先检查安全问题加密方法管理密码双重认证备份 云存
  • 用C语言实现字符串反转函数strrev的经典方法

    字符串反转函数strrev不是C语言标准库函数 xff0c 很多C语言编译器并没有提供对它的支持 xff0c 比如你在Linux下输入Shell命令man 3 strlen xff0c 屏幕上会显示 xff0c STRLEN 3 Linux
  • OSPFv3报文格式与作用分析

    OSPFv3报头 xff1a 实际抓包 xff1a 具体内容 xff1a Version xff1a 3 Type xff1a 报文类型 1 Hello 2 DD 3 LSR 4 LSU 5 LSAck Packet length xff1
  • IPv6基础知识

    概述 xff1a IPv6 xff08 Internet Protocol Version 6 xff09 是网络层协议的第二代标准协议 xff0c 也被称为IPng xff08 IP Next Generation xff09 它是Int
  • BGP在数据中心的应用1——数据中心网络介绍

    注 xff1a 本文根据 BGP in the Datacenter 整理 xff0c 有兴趣和英文阅读能力的朋友可以直接看原文 xff1a https www oreilly com library view bgp in the 978
  • 意法nucleo-h723zg原理图,stm32h723zg原理图

    兄弟们 xff1a 我之前一直都在找这个图 xff0c 废了老大的劲才找到 xff0c 并且找到就马上给大家分享了 xff0c 希望能顺手点个赞 Introduction xff1a The STM32H7 Nucleo 144 board
  • MAX30102学习笔记(上)

    MAX30102学习笔记 xff08 上 xff09 一 小简介 max30102是一个将脉搏血氧仪的心率检测仪融为一体的一个传感器模块 简单的说就是一个可以采集心率和血氧数据的小模块 xff0c 使用者只需将其佩戴于手指 xff0c 手腕
  • java---爬虫

    提示 xff1a 以下代码仅能用于学习使用 xff0c 部分代码已脱敏 前言 为了帮助女朋友完成作业从没接触过爬虫的我被赶鸭子上架 xff0c 硬着头皮code 索性是不负所托 xff0c 虽然代码很垃圾但是所期望的功能也完整实现 下面进入
  • 【详细教程】zmq c++ cmake 实现发布订阅

    前言 ZMQ是一种性能极高的通信框架 xff0c 吞吐量大延迟低 xff0c 使用简便 本文手把手讲解如何用c 43 43 实现zmq的订阅和发布 xff0c 编译环境我们选择了cmake 环境准备 zmq 可以参考我写的这篇 xff1a
  • 职场分身术:从给答案到做引导

    在学校读书的时候 xff0c 偶尔作业不会做 xff0c 很可能会问同学 xff0c 他很可能会把答案直接给出来 但是 xff0c 如果去问老师 xff0c 他很可能给一些启发和引导 这正是对不同帮助类型最初的感受 进入职场之后 xff0c
  • DNS及mDNS 名字(名称)压缩规则

    Author Shawn Lee WebSite http blog csdn net twelvelee Email xff1a xiaofengoffice 64 163 com Update Time 2011年8月24日星期三 Sh