前言
主机地址
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文件:
![](https://img.haomeiwen.com/i1197462/de7df279aee98b6d.png)
hosts文件中,IP和主机名字有相互的对应关系。名称解析的过程。早期的文件解析都是通过hosts实现本地解析的。如果这个互联网中只有这4台服务器,那么这里的hosts文件只需要有4行数据就行了。如果服务器太多,那么Hosts文件就不容易实现查询和记录,还有的问题就是主机名。
这样的问题就出现了名称管理机构。早期叫作IANA(The Internet Assigned Numbers Authority),互联网数字分配机构。
那么现在如果一个主机想使用一个主机名,那么先向IANA申请。如果没有别别人用,那么你才可以使用。
![](https://img.haomeiwen.com/i1197462/0ee17c8459746135.png)
如果ABC没有被使用,那么IANA会分配给这台主机。其他的主机都要在hosts文件中新增这条记录,然后才能识别。怎么加才好呢?如果每个主机都手动维护自己的hosts文件,那么工作量是非常大的。
所以那时候,IANA就提供了一个专门的服务器,早期是一个FTP服务器,通过共享某个目录,里面有自己维护的hosts文件,所有的主机的对应关系都放在这里面,当新增或者修改,这个Hosts文件都会被修改,其他的主机下载并且覆盖这个hosts文件就实现了。那么多久下载一次呢?就使用周期性任务计划,每隔一个时间段去更新。这样在某种程度上解决了一些问题,至少不会手动去维护自己的hosts文件。
随着互联网的规模爆炸性增长,hosts文件的容量变大了,那么问题又来了,一个主机解析一个主机名的效率是非常低的。所以DNS的解析结构就会重新设计了。
在根服务器下设计多个一级域:
![](https://img.haomeiwen.com/i1197462/90789529f844a163.png)
这些一级域名归属于IANA来维护。不属于任何一家公司也不属于任何一个人可用。要想使用,那么必须在这个一级域下面再申请:
![](https://img.haomeiwen.com/i1197462/48d454684bd0f40e.png)
比如我们这里申请的是:
magedu.com.
,注意这里的根是一个点(.
)
我们这里申请的是名称后缀,不是名称。
我们作为一个组织作为一个公司,可能有多个服务器,那么我们怎么去命名我们的服务器呢?
我们可以直接就在我们申请的名称后缀前面新增服务器名就行了。
注意:magedu.com.
是我们在IANA那里去申请到的,我们就估计使用它了。我们组织下的所有服务器,我们可以直接在前面新加二级域名去实现:
www.magedu.com
ftp.magedu.com
所以后缀是申请获得的,名称则是自己添加的。
互联网的DNS就组织为这样的方式。
为何要组织为这样的形式呢?
目的是要实现分布式应用。
IANA把我们的DNS组织成了一种层次性结构了。
IANA使用一个服务器专门用于名称解析,也就是说一个客户端就再也不用保存为大量的名称了,和对应关系了,只需要告诉自己,将要把某个名称转换为IP地址的时候,去某个服务器上找就行了。
![](https://img.haomeiwen.com/i1197462/597222e96a47cbcf.png)
实现了DNS的集中管理,每一个本地的管理员再也不用去下载hosts文件了。而且一旦IANA更新了它的DNS服务器,那么我们的服务器随机获取随机解析就可以得到数据了。
集中管理,那么DNS服务器的压力十分大,但是不能挂掉。DNS就在它的分布式结构上面下功夫了。
就像政府单位,中央管理各省,省级管理市级, ...。
![](https://img.haomeiwen.com/i1197462/e120866269080836.png)
注意:每一个层级都有上级和下级,除了根之外。
这样形成了一个树状结构。
![](https://img.haomeiwen.com/i1197462/0fa52080f6906a3a.png)
那么我们访问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这个范围(蓝色框)。
![](https://img.haomeiwen.com/i1197462/59f15c27e2256703.png)
那么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也放在另外一个文件中。
网友评论