golang实现dns域名解析(二)
2024-09-03 11:05:44
上一节已经讲了如何构造dns请求包的情况,这一节接着上一节的情况,谈谈dns查询报文中的问题部分。问题部分中每个问题的格式如下:
查询名是要查找的名字,它是一个或者多个标识符的序列。每个标识符以首字母字节的计数值来说明随后标识符的字节长度,每个查询名以最后字节为0结束,长度为0的标识符是根标识符。具体情况我们抓个包看看:
我们看到请求的名字是www.baidu.com发出的包的内容是下面的红线标识的部分,要查找的名字被转变成了3www5baidu3com这种的格式,所以我们在构造dns查询请求包的时候,需要把查询的名字格式改改:
var (
buffer bytes.Buffer
segments []string = strings.Split(domain, ".")
)
for _, seg := range segments {
binary.Write(&buffer, binary.BigEndian, byte(len(seg)))
binary.Write(&buffer, binary.BigEndian, []byte(seg))
}
binary.Write(&buffer, binary.BigEndian, byte(0x00))
return buffer.Bytes()
完整的代码请移步上一节。查询报文中的问题部分就简单介绍到这里。
最新文章
- 意法STM32F1系列MCU单片机解密芯片破解复制
- J2EE与JavaWeb的区别
- jQuery设置disabled属性
- fis自动化部署
- atom 震动特效
- 我的第一个python爬虫程序
- android让你的TabHost滑动起来
- 【斜率DP】bzoj1597: [Usaco2008 Mar]土地购买
- 【转】Effective-Objective-C-读书笔记-Item-4-如何正确定义常量 -- 不错
- hql查询技巧
- 在 Azure 网站上使用 Memcached 改进 WordPress
- hdu 1542 Atlantis 段树区,并寻求,,,尼玛真坑人数据,不要打开一小阵!
- 【锋利的Jquery】读书笔记四
- hibernate5使用注解遇到的问题
- phpstorm 2017.2激活
- Sql Server中的nvarchar(n)和varchar(n)
- 【算法】【python实现】二叉搜索树插入、删除、查找
- Fiddler使用教程(转)
- AVPass技术分析:银行劫持类病毒鼻祖BankBot再度来袭,如何绕过谷歌play的杀毒引擎?
- CSS3笔记1
热门文章
- Python虚拟机类机制之instance对象(六)
- easyui tree datagrid动态添加表头和表格数据,动态弹出框,修改和删除按钮
- [转]using components in Cakephp 2+ Shell
- Group Policy Object Editor
- OpenStack之Glance源码简析
- 【Median of Two Sorted Arrays】cpp
- 【POI 2010】反对称 Antisymmetry
- log4j2用Log4jContextSelector启动参数配置全局异步日志是如何使用disruptor
- Python+Selenium基础篇之3-打开和关闭IE/Chrome浏览器
- SQL Server 2014存储过程的备份和还原