DNS,ICMP协议及NAT技术

DNS(Domain Name System)

DNS是一整套从域名映射到IP的系统

在TCP/IP中使用IP地址和端口号来确定网络上的一台主机的一个程序,但是IP地址不方便记忆。所以引出了一种叫主机名的东西,是一个字符串,并且使用hosts文件来描述主机名与IP地址之间的关系 。也就是说,用户简单的输入一个主机名“host-a”通过查文件就可以对应到其IP地址。

最初是通过互联网信息中心(SRI-NIC)来管理这个文件的,但是这样太麻烦,比如说:如果一个新计算机要接入这个网络,或者某个计算机的IP变更了,都需要到信息中心申请变更hosts文件,而且其他的计算机也需要定期的进行下载更新hosts文件才能正确上网。于是就产生了DNS系统。

  • DNS是一个组织的系统管理机构,维护系统内的每个主机的IP和主机名的对应关系
  • 如果新计算机接入网络,将这个信息注册到数据库中
  • 用户输入域名的时候,会自动查询DNS服务器,由DNS服务器去检索数据库,得到对应的IP地址

域名简介

主域名是用来识别主机名称和主机所属的组织机构的一种分层结构的名称。

www.baidu.com

域名使用.进行连接

  • com:一级域名,表示这是一个企业域名。同级的还有"net"(网络提供商),“org”(非盈利组织)等
  • baidu:二级域名,公司名
  • www:只是一种习惯用法,之前人们在使用域名时,往往命名成类似于ftp.xxx.xxx/www.xxx.xxx这样的格式,来表示主机支持的协议

域名解析过程

计算机Li要访问www.lf.org:

  1. 向DNS服务器查询IP地址
  2. 由于Feng的DNS服务器并不知道www.lf.org的IP地址是什么,它向根域名服务器请求进行查询
  3. 由于根域名服务器知道www.lf.org的IP地址,因此将地址返回
  4. 向www.lf.org的域名服务器查询www.lf.org的IP地址
  5. 将查到的IP地址返回给客户端
  6. pepper开始与www.lf.org进行通信

DNS,ICMP协议及NAT技术_第1张图片
简单的来说,过程如下:

  • 输入域名后,先查找自己主机对应的域名服务器
  • 域名服务器先查找自己的数据库中的数据。如果没有,就向上级域名服务器进行查找,依此类推
  • 最多回溯到根域名服务器,肯定能找到这个域名的IP地址
  • 域名服务器自身也会进行一些缓存,把曾经访问过的域名和对应的IP地址缓存起来,可以加速查找过程

ICMP协议

ICMP是一个网络层协议

对于一个新搭建好的网络,往往需要先进行一个简单的测试来测试网络是否畅通,但是IP协议并不提供可靠传输。如果丢包了,IP协议并不能通知传输层是否丢包以及丢包的原因。

ICMP功能

  • 确认IP包是否成功到达目标地址
  • 通知在发送过程中IP包被丢弃的原因
  • ICMP也是基于IP协议工作,但是它并不能传输层的功能,因此人们仍然把它归结为网络层协议
  • ICMP只能搭配IPV4使用。如果是IPV6的话,需要用的是ICMPv6

DNS,ICMP协议及NAT技术_第2张图片

ICMP报文格式

DNS,ICMP协议及NAT技术_第3张图片

ICMP大概分为两类报文:

  • 一类是通知出错原因
  • 一类是用于诊断调查

NAT技术

在之前,我们讨论了关于IPv4协议中IP地址数量不足的问题。NAT技术即是当前解决IP地址不够用的主要手段,是路由器的一个功能。

NAT能将私有IP对外通信时转为全局IP,也就是一种将私有IP和全局IP相互转化的技术方法,很多的学校,家庭,公司内部等多采用每个终端设置私有IP,而在路由器或必要的服务器上设置全局IP。全局IP需要唯一,而私有IP则不需要,在不同的局域网中出现相同的私有IP是完全有可能的。

NAT转换过程

DNS,ICMP协议及NAT技术_第4张图片

  1. NAT路由器将源地址从10.0.0.10替换成了全局IP:202.211.174.37
  2. NAT路由器收到外部的数据时,又会把目标IP从202.211.174.37替换回10.0.0.10
  3. 在NAT路由器内部,有一张自动生成的,用于地址转换的表
  4. 当10.0.0.10第一次向162.221.120.9发送数据时就会生成表中的映射关系

NAPT

此时我们意识到一个问题,如果局域网内同时有多个主机都访问同一个外部的服务器,那么对于服务器返回的数据中目的IP都是相同的,那么NAT路由器如何判定要将这个数据包发给哪个局域网的主机呢?这时候就需要有NAPT来解决问题了,它使用了IP+port来形成一个关联的关系,这个关联关系也是由NAT路由表来维护的

NAT技术的缺陷

我们发现NAT技术的实现,是很依赖这个转换表的,所以就会产生诸多问题:

  1. 无法从NAT外部向内部服务器建立连接
  2. 转换表的生成和销毁都需要额外开销
  3. 通信过程中一旦NAT设备异常那么所有的连接也将会断开

你可能感兴趣的:(Linux基础使用,计算机网络)