企业资料通讯Week6 (1) | DNS(网域名称系统)[二]

DNS Message

DNS 的讯息传递也是两种:Query 与 Reply(就是要求与回覆),它的设计比较像HTTP,而不是邮件传输交互性那麽细碎。
这边要注意,DNS 的Query 与 Reply 的格式是一样的!
架构如图:参见Explain DNS message format with neat diagram.
https://ithelp.ithome.com.tw/upload/images/20211031/20135414ftyfOOS6rC.png

The query message consists of a header and question records; the response message consists of a header, question records, answer records, authoritative records, and additional records.
由於有些栏位只有reply需要回答,所以query的那些地方会是0

用课本的图来说明:
https://ithelp.ithome.com.tw/upload/images/20211031/20135414crChvJnoOz.png
因为栏位长度是固定的,所以栏位之间实际上没有任何符号或空格区隔。

Header 包含:Identification 与 Flag

-Identification:
ID是这个message的编号,每次client问问题的ID都是16bit的随机数。server会把client的id给copy过来,用以识别是哪一个reply。

-Flag: 也是16bit,由复合式的栏位组成,如图:
https://ithelp.ithome.com.tw/upload/images/20211031/20135414n31tkXJTqq.png
下面是简单说明flag 的复合栏位们:

  • QR:1-bit(0为query/1为response)。
  • OpCode:4-bit,定义哪种message。
  • AA (authoritative answer):1-bit,是否此server 是authoritative server。
  • TC (truncated):1-bit。response 是否大於512 Byte?
  • RD: 1-bit(recursion desired)就是client是否要recursive 的答案。
  • RA: 1-bit(recursion available)就是是否能提供recursive的答案。
  • Reserved: This is a 3-bit subfield set to 000.
  • rCode:4-bit,显示response的错误状态。

一次读进16bit,依序先读Identification、Flag、questions(问题的数目)、answers(答案的数目,如果没有就是0)、authority RRs(有几个答案是authoritative 的答案)、additional RRs。[这里都是指数目]

再看一下课本的图
https://ithelp.ithome.com.tw/upload/images/20211101/20135414S99QrBHckJ.png

之後四行每一行分别是 questions section、answers section 、authority RRs、additional RRs,它们分别对应到上面questions(问题的数目)、answers(答案的数目)

实际上就会像是这样子:
https://ithelp.ithome.com.tw/upload/images/20211101/20135414PzmYVRIC08.png

DNS 注册纪录

刚刚是查询,现在这里讲注册纪录
https://ithelp.ithome.com.tw/upload/images/20211101/20135414wFjpHIshU9.png

我们要跟authoritative name server注册,如果是一般小公司或是家里要注册DNS,为了节省成本,可以请代管EX:GoDaddy
它是一个域名注册与网站代管的上市公司,是ICANN(负责全世界domainname管理的机构)认证的全球最大注册商。

DNS Attack

参见:
https://ithelp.ithome.com.tw/upload/images/20211102/20135414UqNd1nQxJr.png

透过攻击希望能达到:

  • 窃取用户凭据
  • 将恶意软件注入用户的设备
  • 获取敏感网站数据
  • 玷污组织的网站
  • 安装勒索软件

DNS攻击不只造成网路瘫痪,还会造成企业严重损失与机密(EX:密码泄漏)等严重後果。

我归纳常见攻击性质主要是
1)忙死 2)欺骗

「忙死」,是想办法耗尽DNS资源,忙死DNS server或是塞爆网路,不只local DNS server,Root DNS server也会被攻击。它会透过乱问问题(甚至问不存在的东西),使DNS 解析器不知道指定 IP 位址的网站,之後询问其他 DNS 服务器,如此会一直问下去,然後瘫痪服务,一般来说这类攻击称为拒绝服务 (DoS) 攻击;「欺骗」是给你一个假的回覆,但是假得很像真的。

DDoS attacks

DoS攻击中最常见的是 DDoS ( Distributed Denial-of-Service )攻击,攻击者不只一个,像是一个军团。
DDoS 中又分三个子类型攻击,分别是:洪水攻击、应用层攻击、协议攻击,放大攻击也是属於DDos的一种。
见详情请看:Four major DNS attack types and how to mitigate them

redirect attacks

拦截式的中间人攻击,攻击者拦截client的封包,并给它一个假的回覆,如此client可能会被带到另外一个长很像的网站(说不定会骗你的金融帐密!?);DNS 中毒也是中间人攻击的一种,给你一个错误的回覆让DNS中毒。
还有一种欺骗方法是传假的source IP,让Server 以为是那个假的IP的要求,所以就传回覆给那个假的IP位址,这是spoofed source。

Q:DNS 为甚麽使用UDP?

因为UDP比较快,但是DNS 如果在返回的数据量大於512Bytes会使用TCP,但因为大部分的回报大小不会超过512Bytes所以通常用UDP。
参见:51CTO|为什麽 DNS 协定使用 UDP? 只使用了UDP吗?

上一篇文章:阿沁的DNS(1)

参考文章:
Explain DNS message format with neat diagram.
DNS Message — How to Read Query and Response Message
What is a DNS attack? Types of DNS attacks and how to prevent them
51CTO|为什麽 DNS 协定使用 UDP? 只使用了UDP吗?


<<:  【从零开始的 C 语言笔记】第二十一篇-continue & break

>>:  Leetcode: 114. Flatten Binary Tree to Linked List | 含C++笔记

Day04【JS】Promise、Async 和 Await

Promise 保证执行之後才会做什麽事情 对於「未来的值」的独立封装 状态 pending:尚未被...

day21: side effect

今天提到的是 side effect,就像之前提到的, side effect 通常出现在以下几种情...

Day 08 : ML 工程师职责与分工

资料团队组建 当各行业意识数据带来业务成长新动能时,追求卓越的企业意识到要充分运用企业数据,必须组建...

【Day 05】从零开始的 Line Chatbot-公开 APP 网址

昨天稍微简介了一下 ngrok 在做甚麽,今天我们要让我们的 Line Channel 公开,这个 ...

[Day02] JavaScript - ES6 概要&语法

ES6 概念 ECMAScript 6 (简称 ES6),是JavaScript语言新一代的标准,在...