摘要:
随着业务的复杂化和多样化,RFC1035中定义的DNS消息格式和它支持的消息内容已经不足以满足一些DNS服务器的需求,于是,RFC2671中提出了一种扩展DNS机制EDNS(Extension Mechanisms for DNS),并在其中推荐了一种传递包大小的EDNS0。我将EDNS0中的一些关键内容总结在这篇文章中,以便日后翻阅,同时希望能够帮助到像我这样迷茫过的、探寻EDNS很久才知道其概貌的新人。 一,什么是EDNS? EDNS就是在遵循已有的DNS消息格式的基础上增加一些字段,来支持更多的DNS请求业务。 需要注意的是,像DNS服务器这样一个大型且广泛应用的系统软件,新增... 阅读全文
摘要:
BIND中有一些操作是定时任务,server.c的run_server函数中创建了三个定时任务,分别执行interface_timer_tick、heartbeat_timer_tick和pps_timer_tick;其他模块中还有很多时间任务。我们知道linux中的定时器可以用条件变量实现(用其... 阅读全文
摘要:
因为从事的是DNS方面的工作,而且也很想学习高性能服务器的知识,所以学习BIND9的实现既能兼顾工作又可以学到高性能服务器的知识。 BIND9的代码前前后后也读了很久,相关的实现自己也整理了一些,之所以开这个博客专题出于以下两个方面的原因: 一是市面上BIND9源码分析的资料太少了,而且代码量又很大,所以对于像我这样的新手来说入门门槛实在太高,所以想把自己的总结分享出来,帮助那些新人。by the way,我现在工作的部门的宗旨就是:基础、极致、分享。 二是想借此机会认识更多的从事DNS服务器维护或者开发的人员,这个圈子说大不大,说小不小,技术人员是一家人,希望大家能共同努力,做出真... 阅读全文
摘要:
一,简介空谈误国,要让一大堆抽象的DNS概念落地,还是需要了解DNS消息格式的,本文会尽量详细地介绍DNS消息格式的每一个字段。也可以移步rfc1035了解。二,概览DNS消息主要由五部分组成,如下图所示:Header消息头部QuestionDNS请求Answer回答请求的资源记录(Resource... 阅读全文
摘要:
在很多人看来,DNS只是为外部提供DNS解析服务(我以前也是这么认为的,直到膝盖中了一箭),但作为互联网的基础设施,DNS远没有想象的那么简单。如果你没有听说过DNS查询、反向解析、zone传输、动态更新、DNS安全,那你可以从本文中得到关于他们的最简明的诠释。一、 DNS协议 DNS在53端口上监听请求并提供响应的服务。出于性能的考虑,DNS查询请求用UDP协议交互并且每个请求的大小小于512字节,但是如果返回的请求大小大于512字节,交互双方会协商使用TCP协议。二、 DNS查询 DNS中的域名服务器最主要的功能就是响应域名解析器的查询请求(这个域名解析器可能是PC端的解析器,也可... 阅读全文
摘要:
一,简介相对于存储和大数据领域,CDN是一个相对小的领域,但行行出状元,BIND就是CDN领域的蝉联N届的状元郎。BIND是一款非常常用的DNS开源服务器,全球有90%的DNS用BIND实现。值得一提的是,BIND9.8.1用C语言实现,代码量巨大,其设计实现几乎涵盖了服务器编程的所有细节。本文简要... 阅读全文
摘要:
prtotocol buffer是google于2008年开源的一款非常优秀的序列化反序列化工具,它最突出的特点是轻便简介,而且有很多语言的接口(官方的支持C++,Java,Python,C,以及第三方的Erlang, Perl等)。本文从protobuf如何将特定结构体序列化为二进制流的角度,看看 阅读全文
摘要:
pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和连接需要的参数等。这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和连接器使用。 阅读全文