前言
主机地址
www.abc.com
IP是逻辑地址。
数据传送本身靠的是什么?
对以太网而言是数据帧。
在广域网中可能是PPP协议来传输,也可能是SNAP协议,如果是光纤,那么是光数据协议来实现。我们不能确定到底是哪一种数据格式,我们可以将它成为PDU(Protocol Data Unit),协议数据单元。
传输层首部有源端口,目标端口,还有标志位。
切片是在IP层做的,添加IP首部。IP首部中包含:源IP,目标IP,等。
我们的IP包之所以要分片,是因为底层的,真正要用于传输数据包的格式,一般是帧(Frame),帧本身能传输的最大值可能是:
目标MAC | 源MAC | 类型 | 数据 | FCS |
---|---|---|---|---|
6字节 | 6字节 | 2字节 | 46-1500字节 | 4字节 |
所以最小6+6+2+46+4 = 64,最大6+6+2+1500+4 = 1518。
FCS:4字节。循环冗余校验码。
所以MTU是帧的数据部分最大1500字节。
无论如何,数据包在添加完IP首部之后,在到数据链路层的时候,就会被封装为数据帧。帧内容的首部会添加信息,尾部也会添加信息。
数据帧会被对应的网络设备(可能是网卡)转换成物理介质上可以传输的电器信号(eg:也可能是光信号,这要看这里是什么样的传输设备)。
我们的计算机网络在诞生初期的时候,服务器最开始也就只有几台服务器。最开始4台,在美国的几个大学中。后来又增加了多个实验室服务器。随着服务器增多,后来记不住IP地址,就投机取巧在每个服务器中生成一个文件,这个文件可以称为名称解析客户端程序。
假设叫作gethostname 程序。它可以将名称解析为IP地址。
假设主机中有host文件:
hosts文件中,IP和主机名字有相互的对应关系。名称解析的过程。早期的文件解析都是通过hosts实现本地解析的。如果这个互联网中只有这4台服务器,那么这里的hosts文件只需要有4行数据就行了。如果服务器太多,那么Hosts文件就不容易实现查询和记录,还有的问题就是主机名。
这样的问题就出现了名称管理机构。早期叫作IANA(The Internet Assigned Numbers Authority),互联网数字分配机构。
那么现在如果一个主机想使用一个主机名,那么先向IANA申请。如果没有别别人用,那么你才可以使用。
如果ABC没有被使用,那么IANA会分配给这台主机。其他的主机都要在hosts文件中新增这条记录,然后才能识别。怎么加才好呢?如果每个主机都手动维护自己的hosts文件,那么工作量是非常大的。
所以那时候,IANA就提供了一个专门的服务器,早期是一个FTP服务器,通过共享某个目录,里面有自己维护的hosts文件,所有的主机的对应关系都放在这里面,当新增或者修改,这个Hosts文件都会被修改,其他的主机下载并且覆盖这个hosts文件就实现了。那么多久下载一次呢?就使用周期性任务计划,每隔一个时间段去更新。这样在某种程度上解决了一些问题,至少不会手动去维护自己的hosts文件。
随着互联网的规模爆炸性增长,hosts文件的容量变大了,那么问题又来了,一个主机解析一个主机名的效率是非常低的。所以DNS的解析结构就会重新设计了。
在根服务器下设计多个一级域:
这些一级域名归属于IANA来维护。不属于任何一家公司也不属于任何一个人可用。要想使用,那么必须在这个一级域下面再申请:
比如我们这里申请的是:
magedu.com.
,注意这里的根是一个点(.
)
我们这里申请的是名称后缀,不是名称。
我们作为一个组织作为一个公司,可能有多个服务器,那么我们怎么去命名我们的服务器呢?
我们可以直接就在我们申请的名称后缀前面新增服务器名就行了。
注意:magedu.com.
是我们在IANA那里去申请到的,我们就估计使用它了。我们组织下的所有服务器,我们可以直接在前面新加二级域名去实现:
www.magedu.com
ftp.magedu.com
所以后缀是申请获得的,名称则是自己添加的。
互联网的DNS就组织为这样的方式。
为何要组织为这样的形式呢?
目的是要实现分布式应用。
IANA把我们的DNS组织成了一种层次性结构了。
IANA使用一个服务器专门用于名称解析,也就是说一个客户端就再也不用保存为大量的名称了,和对应关系了,只需要告诉自己,将要把某个名称转换为IP地址的时候,去某个服务器上找就行了。
实现了DNS的集中管理,每一个本地的管理员再也不用去下载hosts文件了。而且一旦IANA更新了它的DNS服务器,那么我们的服务器随机获取随机解析就可以得到数据了。
集中管理,那么DNS服务器的压力十分大,但是不能挂掉。DNS就在它的分布式结构上面下功夫了。
就像政府单位,中央管理各省,省级管理市级, ...。
注意:每一个层级都有上级和下级,除了根之外。
这样形成了一个树状结构。
那么我们访问www.hp.com
,DNS是由于3号hp DNS在管理。
我们可以将这条DNS记录放在2号com那里,但是未必放那里。可以管但是未必管,因为它只管理3,4就行了。
我们从st1去访问www.hp.com
,由于在st1的resolv.conf
里面DNS服务器指向的是4号DNS服务器,magedu.com这个区域中的服务器,假设地址是1.1.1.1,于是st1就把请求提交给1.1.1.1
了,1.1.1.1
的辖区范围就是magedu这个范围(蓝色框)。
那么1.1.1.1
resolv.conf文件解释:
http://www.cnblogs.com/bangerlee/articles/2460619.html
大家要记住,在DNS这个关系里面,只有上层知道下层,下层是不知道上层的。
magedu能知道com的吗?是不能的。
当magedu不知道的时候,就直接去找根服务器了。比如magedu要找www.a.org。
直接找根,根会告诉它org的DNS服务器在哪儿。 org找到后直接还给st1。
全球一共有13台根服务器,日本,瑞典各一台,其余都在美国。
DNS是互联网的一个基础服务。
主机名转为IP的叫:A记录。
IP转主机名叫:PTR记录。
A记录放在一个文件中,所有的PTR也放在另外一个文件中。
DNS专业名词
我们在购买域名之后的设置中,我们可以看到许多不同种类的记录类型。DNS专业名词有:
A记录
,NS记录
,MX记录
,CNAME记录
,TXT记录
,TTL值
,PTR值
,泛域名
,泛解析
,域名绑定
,域名转向
。
1.DNS
DNS Domain Name System:域名管理系统。
域名是由圆点分开一串字符串构成。每个域名只能对应一个唯一的IP地址,这一命名的方法或这样管理域名的系统叫作域名管理系统。
DNS Domain Name Server: 域名服务器。
域名虽然容易使人们记忆,但是网络中的计算机之间只能相互认识IP地址,它们之间的转换工作称为『域名解析』,域名解析需要由专门的域名解析服务器来完成,DNS Server就是进行域名解析的服务器。
2.A记录
A(Address)记录是用来指定主机名(或域名)对应的IP地址记录。用户可以将该域名下的网站服务器指向到自己的 web server 上。同时也可以设置域名的子域名。通俗地说,A记录就是服务器的IP,域名绑定A记录就是告诉DNS,当你输入域名的时候给你指导向设置在DNS的A记录所对应的服务器。
简单地说,A记录是指的域名
对应的IP地址
。
3.NS记录
NS(Name Server)记录的是域名服务器
记录,用来指定该域名由哪个DNS服务器来进行解析。
您注册域名时,总有默认的DNS服务器,每个注册的域名都是由一个DNS域名服务器来进行解析的,DNS服务器NS记录地址一般以以下的形式出现:
ns1.domain.com
ns2.domain.com
等。
简单地说,NS记录
是指定由哪个DNS服务器
解析你的域名。这个也就相当于我们配置IP时候配置DNS记录。
4.MX记录
MX(Mail Exchanger)记录是邮件交换记录,它指向一个邮件服务器,用于电子邮件系统发邮件时根据收信人的地址后缀来定位邮件服务器。
eg:当Internet上的某用户要发一封信给user@mydomain.com
时候,该用户的邮件系统通过DNS查找mydomain.com这个域名的MX记录,如果MX记录存在,用户计算机就将邮件发送到MX记录所指定的邮件服务器上。
5.CNAME记录
CNAME(Canonical Name)别名记录。
允许您将多个名字映射到同一台计算机,通常用于同时提供WWW和MAIL服务的计算机。例如,有一台计算机名为host.mydomain.com
(A记录),它同时提供WWW和MAIL服务,为了便于用户方位服务。可以为该计算机设置两个别名(CNAME:WWW和MAIL,这两个别名的全称就是www.mydomain.com
和mail.mydomain.com
),实际上他们都指向host.mydomain.com
。
6.TXT记录
TXT记录,一般指某个主机名或域名的说明,如:admin IN TXT 管理员,电话:xxxxxx,mail IN TXT等等,也就是你可以设置TXT内容以便使别人联系到你。
TXT的应用之一,SPF(Sender Policy Framework)反垃圾邮件。SPF是跟DNS相关的一项技术,它的内容写在DNS的TXT类型的记录里面。MX记录的作用是给寄信者指明某个域名的邮件服务器有哪些。SPF的作用于MX相反,它向收信者表明,哪些邮件服务器是经过某个域名认可会发送垃圾邮件。
eg:当邮件服务器收到自称发件人是spam@gmail.com的邮件,那么到底它是不是真的gmail.com的邮件服务器发来的呢,我们可以查询gmail.com的SPF记录,以此防止别人伪造你来发邮件。
7.TTL值
TTL(Time-To-Live),原理:TTL协议包中的一个值,它告诉网络路由器包在网络中的时间是否太长而应该被丢弃。有很多原因使包在一定时间内不能被传递到目的地。
eg:不正确的路由表可能导致包无限循环。一个解决方法就是在一段时间后丢弃这个包,然后给发送者一个报文,由发送者决定是否要重发。TTL的初值通常是系统缺省值,是包头中的8位的域。TTL的最初设想是确定一个时间范围,超过此时间就把包丢弃。由于每个路由器都至少要把TTL域减1,TTL通常表示包在被丢弃前最多能经过的路由器个数。当计数到0时,路由器决定丢弃该包,并发送一个ICMP报文给最初的发送者。
DNS中TTL值设置的应用:
一是增大TTL值,以节约域名解析时间,给网站访问加速。
一般情况下,域名的各种记录是极少更改的,很可能几个月,几年都不变化。我们完全可以增大域名记录的TTL值让记录在各地DNS服务器中缓存时间加长(注意这里是time-to-live,而不是路由上的跳数),这样在更长的一段时间内,我们访问这个网站时,本地ISP的DNS服务器就不需要向域名的NS服务器发出解析请求,而直接从缓存中返回域名解析记录。
二是减小TTL值,减少更换空间时的不可访问时间。
更换空间99.9%会有DNS记录更改的问题,因为缓存的问题,新的域名记录在有的地方可能生效了,但在有的地方可能登上一两天甚至更久才生效。结果就是有的人可能访问了新服务器,有的人访问到了旧的服务器。仅仅是访问的话,这也不是什么大问题,如果设计到了邮件发送,这个就有点麻烦,说不定哪封重要新建就被发送到了那已经停掉的旧服务器上。
8.PTR值
PTR是pointer的简写,用于将一个IP地址映射到对应的域名,也可以看成是A记录的反向,IP地址的反向解析。
PTR主用用于邮件服务器,比如邮箱 AAA@XXX.com给有劲啊BBB@yahoo.com发送一封邮件,yahoo邮件服务器接到邮件时会查看这封邮件的头文件,并且分析是由哪个IP地址发来的,然后根据这个IP地址进行反向解析,如果解析结果对应XXX.com的IP地址就接受这封邮件,反之则拒绝接受这封邮件。
9.泛域名与泛解析
泛域名:
指的是在一个域名根下,以*.domain.com
的形式表示这个域名根所有未建立的子域名。
泛解析:
指的是把*.domian.com
的A记录解析到某个IP地址上,通过访问任意的前缀.domain.com
都能访问到你解析的站点上。
10.域名绑定
域名绑定是指将域名指向服务器IP的操作。
11.域名转向
域名转向又称为域名指向或者域名转发,当用户地址栏中输入你的域名时,将会自动跳转到你所指定的另外一个域名。一般是使用短的好记的域名转向复杂难记的域名。
DNS介绍
(很重要)Linux操作系统搭建DNS服务器:
https://baijiahao.baidu.com/s?id=1619534318658066329&wfr=spider&for=pc
DNS的递归查询和迭代查询:
注意:
1)递归查询是PC向最近的DNS服务器查询,以及同级别的DNS服务器查询
2)迭代查询是查:根域->顶级域->二级域
BIND
Berkeley Internet Name Domain, BIND, DNS服务器软件。
BIND的服务端软件是被称作named的守护进程。BIND不是唯一能够提供域名服务的DNS服务程序,但是它却是应用最为广泛的,BIND可以运行在大多数Linux/UNIX主机中。
每一个DNS服务器都只负责管理一个有限范围(一个或者几个域)内的主机域名和IP地址的对应关系,这些特定的DNS域或IP地址段称为"zone"(区域)。根据所管理的区域地址数据的来源不同,DNS系统可以分为不同的类型。在同一台DNS服务器中,相对于不同的区域来说,也拥有不同的身份。
常见类型:
缓存域名服务器
也称为 唯高速缓存服务器
。
通过向其他域名服务器查询获得域名->IP地址记录,
将域名查询结果缓存到本地,提高重复查询时的速度。
主域名服务器
特定DNS区域的官方服务器,具有唯一性。
负责维护该区域内所有域名->IP地址的映射记录。
从域名服务器
也叫辅助域名服务器。
其维护的域名->IP地址记录来源于主域名服务器。
1)安装bind软件:
yum install -y bind*
2)安装好查看相关软件包:
rpm -qa | grep "^bind"
3)BIND服务
BIND软件包安装完毕后,会自动增加一个名字为named的系统服务。
4)BIND配置文件
主配置文件:
/etc/name.conf (安装的是bind-xxx软件包)
/var/named/chroot/etc/named.conf (安装的是bind-chroot-xxx软件包)
主配置文件中,主要包括:
全局配置,区域配置两个部分。
===
顶级域有三种:组织域(3个字符),地址域(二个字符),反向域(in-addr.arpa)
区(Zone),资源记录:
区是DNS名称空间的一部分,其包含了一组存储在DNS服务器上的资源记录。
使用区的概念,DNS服务器回答关于自己区中主机的查询,每个区都有自己的授权服务器。