5.1 aarp的地址解析过程 假设主机c想和任播地址为aa的另一个主机建立任播通信,任播地址解析过程如下:(1)主机c呼叫带有参数的任播地址的socket api模块(譬如:tcp中的connect( ) ),aarp库的api替代api的套接层面而被呼叫。(2)aarp库在被叫者的功能中将任播地址转换成单播地址。(3)转换后,aarp库通过单播地址呼叫原来的socket api。(4)当通信被建立以后,从主机c发出的所有信息包的目的地地址都给被赋以单播地址,并传输给主机s。 5.2 aarp的地址转换方法 由ipv6的协议规范得知当不能自身确定任播地址时,连接任播地址的主机通信应该至少从目的地主机接收到一个数据包。地址转换有以下两种方法: 5.2.1探测数据包法(由客户端发起) 主机在进行通信之前首先发送一个探测数据包给任播地址,它可以从返回数据包的源地址中得到目的地主机的单播地址。 5.2.2捎带确认法(由服务器端发起) 捎带确认法指的是经全双工(双向同时)数据链路,不用专门(确认)报文返回确认信息所用的技术。与一个方向的报文流有关的确认信息钳在反方向正常携带数据的报文流中,当数据包从通信对端返传回来时,任播主机将任播地址附加到数据包。通过检查附加在数据包上的信息,可以确认数据包是从与任播地址相联系的主机上发送出的。 探测包方法中需要提供给探测数据包额外的网络带宽,这将会浪费网络资源。与之相对的,捎带确认方法需要修改应用使得任播地址可以捎带到数据包上。由于实际应用中应当避免应用的任何修改,必须在aarp中包括单播地址来使用探测包法。 5.3 aarp的应用 为了解析任播地址到它相应的单播地址,可以使用icmpv6 echo request/reply包。由于任播地址不能设置到数据包头的源地址,任播成员主机在icmp包源地址区域上设置通信单播地址来代替任播地址。因此,接收发送到任播地址的icmpv6 echo request/reply包的主机会附带使用它的单播地址来发送这个数据包。如果aarp无法使用icmpv6机制,从呼叫者主机需要配置特殊的软件来相应探测数据包。 aarp库也会提供一张高速缓冲存储器表用来解析任播地址,当任播地址不能在表上隐藏时,aarp可以发送探测数据包去解析任播地址。解析后的单播地址和定时器一起存储在高速缓冲存储器表上,当超时后会被删除。对客户端而言,向任播地址的数据包被传递到同一个任播服务器,直到高速缓冲存储器失效,与之相反,aarp从高速缓冲存储器表返回解析后的单播地址,针对任播地址的条目在高速缓冲存储器表失效后,探测数据包才会被发送。使用icmp包的方法虽然简便,但是不能解决安全的问题。即使恶意用户捕获icmp echo request包并发送它,客户端也只是用数据包的源地址。 6 结论 目前,ipv6任播机制在实际通信中的应用依然存在许多问题。为了解决这些问题,在本文中介绍了一种新的ipv6地址解析协议(aarp)将任播地址转换为相应的通信单播地址,并在转换后可以直接用于实际的通信中,使得任播通信在不改变现有应用设置协议的基础上得以实现。 |