| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 系统运维 -> 互联网应用 -- WEEK.6 -> 正文阅读 |
|
[系统运维]互联网应用 -- WEEK.6 |
复习上周学习了关于TELNET协议的内容,这是一种利用终端进行远程登录主机的协议。而telnet是基于这种协议的具体应用,我们需要学会telnet发送数据包的方式,包括指令和数据,以及他这种协商的方式。 Brief introduction to DNSDNS就是用来ip地址和域名互相转化 我们之前学过的 gethostbyname 和 gethostbyaddr 本质就是利用DNS服务器进行查询 这是一个应用层的服务 域名(也就是通过ascii string组成的)一般被主机上的应用所用,这种也易于人读 但是网络只认识二进制地址,也就是ip,所以要互相转化 tip一下,还有mac地址和ip地址转化,这个一般存储在本地路由的APB表中 对于DNS的历史 最初的域名和IP的对应关系保存在一个叫做hosts.txt的文件中,每当有一个新的计算机想接入网络,或者某个计算机IP变更都需要来修改这个文件,其他计算机也需要更新才能上网。 随着ip数量不断变多,这样显然是不可行的,所以诞生了DNS 而DNS的数据是存储在分布式的数据库中,全世界都可以访问,至于为什么是分布式的待会说 但其实hosts.txt依然存在,计算机也会优先查询这个文件再使用DNS,我们使用cat可以看到 Elements of the DNSDomain namespace其实也就是域名的层次性结构,这样就可以达到唯一性 ?eg :我们熟悉的,www.baidu.com 域名系统是一个树状的结构,他们被存储在分布式的数据库中,我们可以理解为一个地理上的区域对应他本地的域名,而本地又从属某个城市,某个国家,一层一层的分布存储。 顶级域名被简称为TLD(top level domain) 有几个顶级域名需要记一下,分为三种:国家,通用,和反向域名(arpa,用于ip获得域名,后面会提) resource records还记得上周的TLV吗,最后被填充在DHCP报文中的option字段 rr同样是一种编码形式,会在后面看到被填充到DNS报文中,我们先简单了解一下rr的格式及内容 反正我们需要知道一个域名对应多种资源:ipv4地址,ipv6,邮箱地址等等等等 具体看看例子 ? Name Service我们刚刚提过,这个树状的结构,通过一个分布式的数据库来存储数据 域名服务器,就是运行这些数据库的服务器,也就是数据的仓库,域名是分层的,所以域名服务器也有好几种类型,参照下面的比喻理解一下,然后就可以理解DNS查询的过程 我们把DNS服务比喻成我去图书馆查一条信息(比如就是一个单词),同时要代入CS结构,我是client,图书馆就是server Name resolvers:DNS解析器,解析器可以理解为特定图书馆的图书管理员,它会询问你的要求,然后传递给服务器。DNS本身也是一个服务器,它通过接受client使用的web浏览器发出的查询,发出其他请求,来实现client的dns查询。所以它相当于DNS的client Root name server:根域名服务器可以理解为图书馆的索引或者导航,告诉你不同类型的书架在哪里,这是ip查询的第一步 TLD name server:顶级域名服务器,可以看作一个特殊的书架,这个书架上是一种类型的书,这是ip查询的下一步 Primary server / Authoritative server:权威服务器,可以看作这就是书架上你要找的那本书,里面就有你需要的信息。权威服务器是IP解析的最后一步,如果成功查询,就会返回给发出初始请求的Name resolver Secondary server:维护权威服务器数据库的副本,可能就是为了数据安全吧 Caching server:如果一些ip经常查询,就会被缓存下来。但这种查询的结果不是权威的 简单梳理一下DNS查询过程: 1.首先搜索浏览器自身的DNS缓存,如果存在,则域名解析到此完成。 后面提了一句话:TLD服务器通常缓存在本地名称服务器中,所以根服务器很少用到 DNS Services这里主要理解一下递归查询和迭代查询的区别 递归可以看到,local服务器会一直等到结果出来才给你回应 迭代则是踢皮球一样,告你接下来去找谁 ? 当然,DNS也可以反向查询,也就是用资源来查域名,有两种方式: Inverse query vs. Pointer query 区别就是 Inverse利用的是跟标准查询一样的域,可能需要搜索整个服务集 pointer用的是 IN-ADDR.ARPA domain DNS Protocols我们主要看一下DNS的报文结构,后面需要跟前面提到的RR关联一下,这里需要理解到,域名对应很多资源,且一次查询也可以同时查好几个(问好几个问题,所以这里面有answer count等等) ? ? ? DNS tools一个是 nslookup 正向查询 一个是 dig 反向查询(pointer) 最后给了一些例子 我们看一下这个,要查询的是BRL.MIL,但是如果发送给了C.ISI.EDU,得到的响应如下 首先他们是不对应的,所以没有answer 但是他给出了权威服务器的记录,可以看到有一个包含EDU的,也就是和我们问的问题相关的权威服务器 在addtition区域将权威服务器的信息给了出来? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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年11日历 | -2024/11/15 19:52:49- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |