TCP-IP-part7-IP协议相关技术(一)

前言

仅凭IP是无法完成通信的,需要一些IP的辅助技术。这些技术的包格式可能不一样,但它们都是基于IP地址进行的,都是通过匹配路由表来进行的,只是功能不一样。例如DHCP分配IP地址,它只管通知这条信息,具体怎么分还要依靠上层。

TCP/IP相关内容第七部分,包含:

  • DNS
  • ARP
  • ICMP

一、DNS

IP地址不好记,我们希望用主机名代替。DNS负责将主机名转换为具体的IP地址。

早期的方法是集中管理一个大型的数据库,所有主机都要下载这个文件,更新主机名和地址的时候要通知所有人,非常麻烦。
现在用DNS维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。地址和主机名的变更只需要在组织机构内部进行即可,不需要向别的机构申请或报告。较小的范围内通过DNS管理主机名映射,很方便。

域名的构成

域名是指为了识别主机名称和组织机构名称的一种具有分层的名称。在使用域名时,可以在每个主机名后追加上组织机构的域名。主机名重合,但只要组织机构域名不重合就可以。

分层结构呈树状结构,顶点是根,下一层第一层域名包括国家域名和特定机构域名(如所有美国教育机构.edu、所有美国企业.com),在下一层可以是地域的通用域名,或是不同组织机构的属性域名。

域名服务器

每层域名都有一个域名服务器,实质上是个软件。每个域名服务器都有一个IP地址,本层的域名服务器都了解(注册了)本域内下层域名服务器的IP地址,直到再无下一层域名,就可以连主机,指定主机名给IP地址了。另外,每个域名服务器必须注册所在区域的根域名服务器的IP地址(全球共13个),在查找非本域的时候从跟开始。

为了提高容灾能力,一个域名至少设置两个以上域名服务器。

解析器

解析器,即需要进行DNS查询的主机,就是你的电脑。其至少要注册一个以上的域名服务器IP地址,解析器不仅可以访问本域名中的域名服务器,也可访问其他域的域名服务器,进行域名查询。

DNS查询

解析器相域名服务器申请查询,域名服务器会先在自己的数据库查找,没找到则相跟域名服务器申请查询,从上往下顺序遍历,找到返回。解析器和域名服务器都有缓存,可以保存最新了解到的信息,可以减少查询。

DNS不仅保留主机名和IP地址的映射,也保留了其他如邮件地址等映射。

二、ARP

主机发送IP数据包,封装成帧时的目的MAC只是同一个数据链路上的节点的MAC,甚至同一个链路上也可能只知道IP,不知道MAC。

用来根据IP地址查询MAC地址。ARP只适用于IPv4,IPv6用ICMPv6替代ARP发送邻居探索信息。

工作机制

借助ARP请求和ARP响应完成。ARP发送的包格式与IPv4是不一样的,因此需要不同的程序去处理。

起初通过广播发送一个ARP请求包,包中包含了目的主机的IP地址,在链路层,ARP包会被链路层默认封装成广播帧,在网络层,接收方默认认为ARP包是广播的,不想IP包目的IP要全1才是广播,才接受下来去解析。当解析后发现目的IP与自己的IP一致,则返回ARP响应包,里面有自己的MAC地址,目的IP是从请求包中了解到的。ARP包会被路由器隔离。

IP地址和MAC地址的信息缓存一段时间,下次发送时会先查表,可以减少ARP查询。但要定时清楚缓存,要是不换的话IP可能已经更换了MAC设备,就不可达了。

RARP

与ARP相反。设置RARP服务器,设备发送自己的MAC地址给服务器,可以获得IP地址来设置。因为有些硬件设备不具备DHCP动态获取IP的功能,只能用RARP获取IP。

代理ARP

通常ARP包会被路由器隔离,采用代理ARP可以将ARP请求转发给邻近的网段,使两个以上的网段节点像在一个网段上一样通信。

三、ICMP

起到辅助IP的作用,ICMP数据是放在IP首部的后面,就像TCP/UDP一样明文传输,因此是IP的上层协议,但它是为了分担IP的一部分功能,因此仍属于网络层。ICMP两大类型:

  1. 通知出错原因的错误信息
  2. 用于诊断的查询信息

ICMP有多个消息类型,每个消息类型有自己的错误号来说明信息。

1、主要的ICMP消息

ICMP目标不可达信息(类型3)

IP路由器无法将IP包发送给目标地址时,会给发送端主机返回一个目标不可达信息。错误号为1表示主机不可达,即找不到目的IP的MAC,ARP没人响应。错误号0表示网络不可达,即在路由表中找不到下一跳的IP。错误号4用于MTU发现,包不可分片。

ICMP重定向信息(类型5)

路由器发现发端主机使用了次优的路径发送路径,就返回一个ICMP重定向信息,包含更合适的路由信息。但路由信息并不包含子网掩码,因此主机追加更优路由信息时,只会以“主机路由”形式(/32)为这个目的IP地址追加下一跳路由信息,且在一定时间后自动清除。一般不进行重定向设置。

ICMP超时信息(类型11)

错误号0表示TTL减到0,IP包被抛弃,返回ICMP超时消息。错误号1表示路由器在规定时间内没有收到所有分片,重组超时。

traceroute命令就是利用ICMP超时信息工作。显示到达特定主机之前经历多少路由器。原理是利用IP包生存周期从1开始递增,同时发送UDP包,强制接收超时消息。

ICMP回送信息(类型0、8)

可以向对端主机发送回送请求(类型8),主机收到后回复一个应答消息(类型0)。Ping命令就是用这个实现的。

ICMP原点抑制信息(类型4)

低速广域网时,WAN路由器遇到网络拥堵,会向源地址发送ICMP原点抑制信息。收到后主机打开IP包的传输间隔。一般不用。

ICMP路由器探索信息(类型9、10)

用于发现与自己相连网络中的路由器。主机发出ICMP路由请求(类型10),路由器返回公告消息(类型9)。

ICMP地址掩码信息(类型17、18)

主机或路由器向了解子网掩码情况。向目标主机或路由器发送ICMP地址掩码请求信息(类型17),收方返回地址掩码应答信息(类型18),收房获得子网掩码信息。

2、ICMPv6

同样分为错误消息和信息消息。IPV6中使用的ICMP,不再是辅助作用,而是不可缺少。IPV4中的ARP就是通过ICMPv6的邻居探索消息实现。

邻居探索消息,类型133-137。用于查询IPv6地址和MAC地址的对用关系。采用多播地址传输。

得益于IPV6用MAC地址作主机标识,IPv6也实现了即插即用,不需要DHCP服务器也能自动获取IP地址。在没有路由器的网络,就是用MAC地址作为链路本地单播地址。在有路由器的网络环境中,从路由器中获取前64bit,后64bit用MAC地址设置。

您的支持是我创造源源不断地动力