TCP/IP_IP协议辅助协议

TCP/IP_IP协议辅助协议

IP让最终目标主机收到数据包,但是这一过程中仅仅有IP是无法实现通信的,必须还有能够解析主机名称和MAC地址的功能,以及数据包在发送过程中异常处理的功能。此外,还会涉及IP必不可少的其他功能。这篇文章将介绍相关的辅助协议。

DNS

TCP/IP网络中要求每一个互连的计算机都具有唯一的IP地址,并且基于这个IP地址进行通信。然而,因为IP地址是一串数据序列组成,并不好记,直接使用IP地址有很多的不便之处。最开始,主机往往利用hosts的数据库文件进行主机名与IP地址之间的转换。
这里写图片描述
但是随着网络规模的不断扩大、接入计算机的个数不断增加,使得这种集中管理主机名和IP地址登录、变更处理的可行性降低。
为例解决上述问题,后面产生了DNS系统,可以有效管理主机名和IP地址之间对应关系。它可以维护一个用来表示组织内部主机名和IP地址之间对应关系的数据库。当用户输入主机名(域名)时,DNS会自动检索那个注册了主机名和IP地址的数据库,并且迅速定位对应的IP地址。并且需要变更时,只需要在组织机构内部进行处理即可,没有必要在向其他机构进行申请。

域名的构成
域名是指为了识别主机名称和组织机构名称的一种具有分层的名称,如hh.edu.cn。
这里写图片描述

  • 域名服务器
    域名服务器是指管理域名的主机和相应的软件,它可以管理所在分层的域的相关信息。其所管理的分层叫做ZONE。每个层都有一个域名服务器,如下:
    这里写图片描述
    根部所设置的DNS叫做根域名服务器。根域名服务器注册着根以下第一层域名服务器的IP地址。如果要在第一层中新增一个域名,就得在根域名服务器中进行追加和变更。类似地,在根域名服务器的下一层域名服务器中注册了再往下一层域名服务器的IP地址。根据每个域名服务器所管理的域名,如果下面在没有其他分层,就可以自由的指定主机名称或子网名称。如果想修改该分层的域名或重新设置域名服务器的IP地址,还必须在其上层的域名服务器中进行追加或修改。因此,域名和域名服务器需要按照分层进行设置。如果域名服务器宕机,那么针对该域的DNS查询就无法工作,一般会设置至少两个以上的域名服务器,提高容灾能力。此外,所有的域名服务器必须注册根域名服务器的IP地址,因为DNS根据IP地址进行检索时,需要从根域名服务器开始顺序进行。

  • 解析器
    进行DNS查询的主机和软件叫做DNS解析器。用户所使用的工作站或个人电脑属于解析器。一个解析器至少要注册一个以上域名服务器的IP地址。通常至少包含阻止内部域名服务器IP地址。

DNS查询
例如:对于kusa.co.jp域中的计算机要访问网站www.ietf.org,DNS查询过程如下:
这里写图片描述
解析器为了调查IP地址,向域名服务器进行查询处理。接收这个查询请求的域名服务器首先会在自己的数据库中进行查找。如果有该域名所对应的IP地址就返回。如果没有,则域名服务器在向上一层根域名服务器进行查询处理。解析器和域名服务器将最新了解到的信息暂时保存在缓存里,可以减少每次查询时的性能消耗。

ARP

只要确定了IP地址,就可以向这个目标地址发送IP数据报。然而,在底层数据链路层,进行实际通信时有必要了解每个IP地址所对应的MAC地址。ARP是一种解决地址问题的协议。以目标IP地址为线索,用来定位下一个应该接收数据分包的网络设备对应的MAC地址。如果目标主机不在同一个链路上,通过ARP查找下一跳路由器的MAC地址。不过ARP只适用于IPV4,不能使用与IPv6。
ARP的工作机制
简单来说,ARP是借助ARP请求与ARP响应两种类型的包确定MAC地址的。例如:
这里写图片描述
为了获得MAC地址,首先会广播发送一个ARP请求包,由于广播的包可以被同一个链路上所有的主机或路由器接收,因此ARP的请求包会被同一个链路上所有的主机和路由器进行解析。一旦目标地址与自己的IP地址一致,这个节点就会将自己的MAC地址塞入ARP响应包返回给它,此外ARP请求包还有一个作用就是将自己的MAC地址告诉给对方。根据ARP可以动态地进行地址解析,因此,在TCP/IP的网络构造和网络通信中无需事先知道MAC地址,只要知道IP地址就可以。通常将获得的MAC地址缓存一段时间,把IP对MAC的映射关系记忆到一个ARP缓存表中,在一定程度上防止了ARP包在网络上被大量广播的可能性。ARP格式如下:
这里写图片描述

MAC地址与IP地址
提出这样一个猜想:“只要知道了IP地址,即使不做ARP,只要在数据链路上做一个广播不就可以成功发送吗?”。显然,这个猜想不正确,IP地址和MAC地址缺一不可。例如:
这里写图片描述
此时,假定MAC地址就用广播地址,那么路由器D也将会收到该广播消息。于是路由器D又将消息转发给路由器C,导致数据包被重复发送两次。
最后,试想一下,不使用IP地址,而是通过MAC地址链接世界上所有网络中的主机节点。仅凭一个MAC地址,无法知道这台机器所处的位置。此外没有任何约束机制,网桥不得不维护一张巨大的表格来维护所学到的所有MAC地址,当信息量过大时,会导致网桥无法工作。

RARP
RARP是将ARP反过来,从MAC地址定位IP地址的一种协议。通常我们可以通过个人电脑设置IP地址,也可以通过DHCP自动分配获取IP地址。然而对于无法获取IP地址的情况,就可以使用RARP。为此,需要假设一台RARP服务器,从而在这个服务器上注册设备的MAC地址及其IP地址。设备接入到网络,启动设备后过程如下图。设备根据从RARP服务器所受到的应答消息设置自己的IP地址。
这里写图片描述

代理ARP
一般ARP包会被路由器隔离,采用代理ARP的路由器可以将ARP请求转发给临近的网段。由此,两个以上网段的节点之间可以像在同一个网段中进行通信。一般,用路由器连接多个网络时,会在每个网段上定义各自的子网,从而进行路由控制。然而,对于那些不支持设定子网掩码的老设备,不使用代理ARP,有时无法更好使用网路。

ICMP

ICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被废弃的具体原因,改善网络设置等。在IP通信中如果某个IP包因为某种原因未能到达目标地址,那么这个具体的原因由ICMP负责通知,例如:
这里写图片描述
ICMP的这种通知消息会使用IP进行发送。因此,从路由器2返回的ICMP包会按照往常的路由控制先经过路由器1在转发给主机A。在ICMP中,包以明文的形式像TCP/UDP一样通过IP进行传输。然而,ICMP所承担的功能并不是传输层的补充,应该把它当做网络层的一部分。

ICMP消息类型
这里写图片描述

  • ICMP目标不可达消息(类型3)
    IP路由器无法将IP数据包发送给目标地址时,会给发送端主机返回一个目标不可达的ICMP消息,并在这个消息中显示不可达的具体原因。

  • ICMP重定向消息(类型5)
    如果路由器发现发送端主机使用了次优的路径发送数据,那么它会返回一个ICMP重定向的消息给这个主机。在这个消息中包含了最合适的路由信息和源数据。
    这里写图片描述
    多数情况下由于这种重定向消息称为引发问题的原因,所以往往不设置。(加入中途某个路由器的路由控制表不正确)

  • ICMP超时消息(类型11)
    IP包中有一个字段叫做TTL(生存周期),它的值随着每经过一次路由器就会减1,直到减到0该IP数据包会被丢弃。此时IP路由器将会发送一个ICMP超时的消息给发送端主机,并通知该包已被丢弃。设置TTL是为了避免IP包无休止地在网络上被转发,此外还可以使用TTL控制包到达的范围。
    这里写图片描述

  • ICMP回送消息(类型0、8)
    用于进行通信的主机或路由器之间,判断所发送的数据包是否已经成功到达对端的一种消息。可以向对端主机发送回送请求的消息(request,类型8),也可以接收对端主机发回来的回送应答消息(replay,类型0)。常用的ping命令就是利用这个实现的。
    这里写图片描述

  • ICMP原点抑制消息(类型4)
    ICMP原点抑制消息,是为了缓和网络拥堵情况。当路由器向低速线路发送数据时,其发送队列的残存变为0而无法发送出去时,可以向IP包的源地址发送一个ICMP原点抑制消息。收到这个消息的主机了解在整个线路的某一处发生了拥堵情况。从而打开IP包的传输间隔。这样会引起不公平网络通信,一般不被使用。

  • ICMP路由探索消息(类型9、10)
    主要用于发现与自己相连网络中的路由器。当一台主机发出ICMP路由器请求(类型10)时,路由器则返回ICMP路由器公告消息(类型9)给主机。

  • ICMP地址掩码消息(类型17、18)
    主要用于主机或路由器想要了解子网掩码的情况。可以向那些目标主机或路由器发送ICMP地址掩码请求消息(类型17),然后通过接收ICMP地址掩码应答消息(类型18)获取子网掩码的信息。

ICMPv6
IPv4中ICMP仅作为一个辅助作用支持IPv4。在IPv6中,ICMP的作用被扩大,如果没有ICMPv6,IPv6无法正常通信。在IPv6中,从IP地址定位MAC地址的协议从ARP转为ICMP的令居探索消息。这种邻居探索消息融合了IPv4的ARP、ICMP重定向以及ICMP路由器选择消息功能与一体,甚至提供自动设置IP地址的功能。ICMPv6中将ICMP大致分为两类:一类是错误消息(0~127),另一类是信息消息类(128~255)。

  • 邻居探索
    邻居请求消息用于查询IPv6的地址与MAC地址的对应关系,并由邻居宣告消息得知MAC地址。邻居请求消息利用IPv6的多播地址实现传输。
    这里写图片描述
    IPv6中实现了即插即用的功能,在没有DHCP服务器的环境下也能实现IP地址的自动获取。如果是一个没有路由器的网络,就使用MAC地址作为链路本地单播地址。在一个有路由器的网络环境中,可以从路由器获得IPv6地址的前面部分,后面则由MAC地址进行设置,此时可以利用路由器请求消息和路由器宣告消息进行设置。
    这里写图片描述

DHCP

DHCP协议用于自动设置IP地址、同一管理IP地址分配。DHCP让即插即用变得可能,可以适用于IPv4和IPv6。
这里写图片描述

  • DHCP工作机制
    使用DHCP之前,首先要架设一台DHCP服务器。然后将DHCP所要分配的IP地址设置到服务器上。此外,还要将相应的子网掩码、路由控制信息以及DNS服务器等设置到服务器上。
    这里写图片描述
    使用DHCP时,如果DHCP服务器遇到故障,将导致无法自动分配IP地址。为了避免此类问题的发生,通常会架设两台或两台以上的DHCP服务器。不过启动多个DHCP服务器时,由于每个服务器内部都记录着IP地址分配情况的信息,因此可能会导致几处IP地址相互冲突。
    为了检查所要分配的IP地址以及已经分配了的IP地址是否可用,DHCP服务器或DHCP客户端必须有以下功能:1、DHCP服务器,在分配IP地址前发送ICMP回送请求包,确认没有返回应答。2、DHCP客户端,针对从DHCP那里获得的IP地址发送ARP请求包,确认没有返回应答。这两部处理虽然会耗一点时间,但是可以安全进行IP地址分配。

  • DHCP中继代理
    使用DHCP中继代理,对不同网段的IP地址分配也可以由一个DHCP服务器统一进行管理和运维。这种方法使得在每个网段假设一个DHCP服务器被取代,只需要在每个网段设置一个DHCP中继代理即可。过程如下:
    这里写图片描述

NAT

NAT是用于在本地网络中使用私有地址,在连接互联网时转而使用全局IP地址的技术。除了转换IP地址外,还有可以转换TCP、UDP端口号的NAPT技术,由此可以实现用一个全局IP地址与多个主机的通信。

NAT的工作机制
在NAT(NAPT)路由器内部,有一张自动生成的用来转换地址的表。过程如下:
这里写图片描述
当私有网络内的多台机器同时都要与外部进行通信时,仅仅转换IP地址,还是会担心全局IP地址不够用,于是可以采用包含端口号一起转换的方式(NAPT)。
这里写图片描述
在使用TCP或UDP的通信中,只有目标地址、源地址、目标端口、源端口以及协议类型五项内容都一致才被认为是同一个通信连接。上图中,这两个客户端的本地端口号都是1025,此时仅仅转换IP地址会使所有数字一样,这时需要转换端口号,就可以使得客户端A、B能同时与服务器之间进行通信。

NAT-PT
NAT-PT是将IPv6的首部转换为IPv4的首部的一种技术。使用这种技术,可以是那些只有IPv6地址的主机能够与IPv4地址的其他主机进行通信。
这里写图片描述

NAT的潜在问题及解决
NAT存在一些潜在的问题:1、无法从NAT的外部向内部服务器建立连接(虽然可以指定端口号允许向内部访问,但是数量要受限于全局IP地址个数);2、转换表生成与转换都会有一定开销;3、一旦NAT异常要重启,所有的TCP连接都要被重置;4、即使使用两台NAT做容灾备份,TCP连接还是会断开。
对于上面有两种方法解决:1、改用IPv6,地址枯竭问题解决了就没必要使用NAT。2、NAT穿越,即使在一个完全没有NAT的环境里,根据所制作的应用,用户可以完全忽略NAT的存在而进行通信。在NAT内侧主机上运行的应用为了生成NAT转换表,先发送一个虚拟的网络包给NAT的外侧,而NAT并不知道这个虚拟包究竟是什么,还是会照样读取包首部中的内容并自动生成一个转换表。这是,如果转换表构造合理,那么还能实现NAT外侧的主机与内侧主机建立连接进行通信。有了这个办法可以让那些处在不同NAT内侧的主机之间进行相互通信。此外,应用还可以与NAT路由器进行通信生成NAT表,并且通过一定的方法将NAT路由器上附属的全局IP地址传给应用。如此,NAT外侧与内侧可以进行通信,这种现象叫做“NAT穿越”。

IP隧道

例如:为了使下图中网络A与网络B进行通信,就要使用IP隧道功能。
这里写图片描述
一般情况下,紧接着IP首部的是TCP或UDP的首部。有一种方法可以在网络层的首部后面继续追加网络层首部,这种通信方法就叫“IP隧道”。
这里写图片描述
下面给出一个利用IP隧道转发多播消息的例子。由于现在很多路由器上没有多播包的路由控制信息,多播消息也就无法穿越路由器。在这类环境中,使用IP隧道,可以使路由器用单播的形式发包,也就能够向距离较远的链路转发多播消息。
这里写图片描述

猜你喜欢

转载自blog.csdn.net/xc13212777631/article/details/80929239