本篇继续介绍IP协议相关的内容,主要介绍IP的辅助技术,包括DNS、ARP、ICMP、ICMPv6、DHCP、NAT等。
DNS
- DNS的产生:TCP/IP网络中要求每一个互连的计算机都具有其唯一的IP地址,并基于这个IP地址进行通信,然而,我们平时需要访问网站(比如谷歌)的时候,输入的是类似于www.google.com的网址,而不是直接输入一个IP地址(当然,你如果记得IP的话,也可以直接输入IP)。DNS就是将网址转换成具体的IP地址的。
互联网最初给每一台计计算机添加一个叫主机识别码的东西,即为每台计算机赋以唯一的主机名,在通信时直接使用主机名称而不需要输入IP。为此,系统必须通过一个hosts的数据库文件,自动将主机名转成具体的IP地址。随着网络规模的不断扩大,接入的计算机个数不断增加,这种处理方式就变得不可行。在此背景下,就产生了一个可以有效管理主机名和IP地址之间对应关系的系统,这就是DNS系统。在这个系统中,主机的管理机构可以对数据进行变更和设定。
- 域名:理解DNS规范,就必须了解什么是域名。域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。例如,kusa.ac,jp,kusa表示某大学的域名,ac表示高等教育的相关机构,最后的jp表示日本,在使用域名的时候,可以在每个主机名后面追加上组织机构的域名。DNS的分层结构如下图所示。
- 域名服务器:域名服务器是指管理域名的主机和相应的软件,他可以管理所在分层的域的相关信息。各个域的分层上都设有各自的域名服务器。各层域名服务器都了解该层以下分层中所有域名服务器的IP地址,因此,他们从根域名服务器开始呈树状结构相互连接。所有域名服务器都了解根域名服务器的IP地址。所以若从根开始按照顺序追踪,可以访问世界上所有域名服务器的地址。
- DNS查询:如下图所示,解析器向域名服务器进行查询,接收这个查询请求的域名服务器首先会在自己的数据库进行查询,如果有该域名所对应的IP地址则返回,没有则域名服务器再向上一层根域名服务器进行查询。因此,如图所示,从根开始对这棵树按照顺序进行遍历,直到找到指定的域名服务器,并由这个域名服务器返回想要的数据。解析器和域名服务器会将最新了解到的信息暂时保存在缓存里面。
ARP
在数据链路通信时,有必要了解买个IP地址对应的MAC地址。ARP就是解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不再同一个链路上时,可以通过ARP查找下一跳路由器的MAC地址。ARP只适用于IPv4,IPv6中使用ICMPv6代替ARP发送邻居探索消息。
- ARP工作机制:ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。如下图所示,主机A向主机B发送IP包,主机A为了获得主机B的MAC地址,通过广播发送一个ARP请求包,这个包中包含了想要了解其MAC地址的主机IP地址,ARP请求包会被同一链路上所有的主机或路由器进行解析。如果ARP请求包中的目标IP地址与自己的IP地址一致,那么这个节点就将自己的MAC地址塞入ARP响应包返回给主机A。
- RARP:是从ARP反过来,从MAC地址定位IP地址的一种协议。例如,将打印机服务器等小型嵌入式设备接入到网络时用到。
ICMP
- ICMP主要功能:确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。在IP通信中,如果某个IP包因为某种原因未能到达目标地址,那么这个具体的原因将由ICMP负责通知。ICMP的消息大致分为两类:一类是通知出错原因的错误消息,一类是用于诊断的查询消息。
- 主要的ICMP消息:
- ICMP目标不可达消息:IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息,并在这个消息中显示不可达的具体原因,包括主机不可达,MTU探索等。
- ICMP重定向消息:如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向的消息给主机,这个消息中包含了最合适的路由信息和源数据。
- ICMP超时消息:IP包中有一个TTL(生命周期),他的值随着每经过一次路由器就会减一,直到减到0时该IP包就会被丢弃,此时,IP路由器将会发生一个ICMP超时的消息给发送端主机,并通知该包已被丢弃。
- ICMP回送消息:用于通信主机和路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息,可以向对端主机发送回送请求的消息,也可以接收对端主机发送回来的回送应答信息。网络上的ping命令就是利用这个消息使实现的。
-ICMPv6:在IPv6中,从IP地址定位MAC的协议从ARP换成ICMP的邻居探索消息。
DHCP
DHCP是为了实现自动设置IP地址、统一管理ID地址分配的功能的。DHCP的工作机制如下图所示。为了检查所要分配的IP地址是否可用,DCHP服务器和DHCP客户端必须具有以下功能:
- DCHP服务器:在分配IP地址之前发送ICMP回送请求包,确认没有返回应答;
- DHCP客户端:针对从DHCP那里获得的IP地址发送ARP请求包,确认没有返回应答。
NAT
NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除了转换IP地址外,还出现了可以转换TCP、UDP端口号的NAPT技术,由此可以实现用一个全局IP地址与多个主机的通信。NAT实际上是为正在面临地址枯竭的IPv4而开发的技术。
IP隧道
一般情况下,紧接着IP首部的是TCP或者UDP的首部,然而,现在应用当中,会出现IP首部的后面还是IP首部或者IP首部的后面是IPv6的首部的情况,这种在网络层的首部后面追加网络层首部的通信方法就叫做IP隧道。比如:A网络时IPv6,B网络时IPV6,位于AB中间的C网络是IPv4,此时,A与B无法进行直接通信,就必须采用IP隧道这种技术。
IP任播
想象以下,报警电话110与消防电话119等系统,当人们拨打110或者119时,其接收电话并不只有一个,而是可以拨打到一个区域管辖范围内的所有公安或者消防部门。这种机制的实现,在互联网上就是IP任播。
IP任播是指为那些提供同一种服务的服务器配置同一个IP地址,并与最近的服务器进行通信的一种方法。