Chinaunix首页 | 论坛 | 博客
  • 博客访问: 402552
  • 博文数量: 87
  • 博客积分: 1171
  • 博客等级: 少尉
  • 技术积分: 1068
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-19 14:34
文章分类

全部博文(87)

文章存档

2014年(10)

2013年(24)

2012年(53)

我的朋友

分类: 系统运维

2012-10-12 19:48:45

在TCP/IP协议集内,与IP直接活间接互操作的协议包括各种应用层协议,连路程协议以及TCP和UDP。本章将讨论如果对这些协议修改或者是否需要修改以适应IPv6.

 协议的层次

 要理解IPv6对其他层协议的影响,重要的是要理解这些协议如果使用IP。由于如此众多的系统需要依靠大量的TCP/IP网络技术和应用协议,重要的是对IP的升级不一定要对IP的上层或者下层协议经行广泛的升级。因此。除IPv4外,大多数的现有TCP/IP应用,软件、硬件只需要经行少量修改,就可以和IPv6一起工作。

  

 应用层:

 万维网(WWW)和e-mail是当今使用最广泛的应用。WWW和e-mail客户必须指向Internet上的服务才能工作。传统上这些客户能够接受节点的主机名或其Ip地址。在使用域名时,可调用域名系统(DNS)来获得与主机名对应的IP地址,然后在传输层和网际层使用。

    对于简单的应用,很容易使其与IPv6一起工作:可以重写软件,使其能接受和正确处理IPv4和IPv6地址;或者要求只能按照主机名来访问。前一种方法保留了应用直接对节点寻址的能力,但相对而言比较复杂;而后一种方法只是去掉了大多数用户不使用,甚至不需要的功能。

      但是,考虑到对IPv6提供的安全性、服务质量或其他特性的穾,有些应用希望使用IPv6,这样就需要更广泛的更新。

    

    传输层:

    大多数情况下,IP地址与应用层协议无关,但是与传输层协议却又很大关系。UDP和TCP的伪头都使用了源IP地址和目的IP地址,而且TCP电路是有源节点和目的节点的IP地址和端口号来定义的。如果要与IPv6互操作,并能正确计算伪头。对于TCP,其实现还必须能够管理给予IPv6地址的电路。

     

    在第一个IPV6 RFC发布之后,出现了一些顾虑,既需要TCPng来补充IPng。目前TCP在处理移动节点时有一个点问题:确定TCP电路需要源节点和目的节点的IP地址。如果在TCP交互器件,一方或双方的IP地址有所改变,则电路的标识就会出现问题。移动节点从一个网络地址向另一个网络地址转换时就会出现这种情况,例如,火车或汽车上的节点使用无线网络接入,或链接到网络的节点在夜间为获得更好的费率而改变ISP的情形。

    

     这种问题的产生是由于TCP至少在目前还没有机制能够允许在连接中改变IP地址。如果一个节点收到TCP段中的源IP地址与此TCP电路在建立时协商的地址不同,该节点将认为这个TCP段是属于另一个电路的。这意味着移动IP目前还不能支持激活的TCP电路从一个网络地址向另一个网络地址转换。

      

    TCPng的问题比间的运行TCP连接支持网络地址转换要复杂许多。问题在于支持这样的地址将导致安全性漏洞:攻击者很容易的冒充从一个网络向另一个网络转换的节点,如同授权的节点从一个网络向另一个网络转换一样。解决这样的问题将要求对TCP进行重大的升级,既需要引入机制使节点在其IP地址改变时能够向其他节点证明自己。

   

     目前,如果移动IP在TCp连接的中间切换网络,它必须在切换之后重新协商连接。某种意义下,对于支持移动和主机的无缝互操作,TCPng是很必要的。

     

    

      链路层:

      与上面层相比,诸如以太网和ATM之类的链路层协议由于IPV6的升级而受到的影响很小。这是由于这些协议只是将上层数据报封装到链路层帧中。但这并不说明IPv6对链路层协议毫无影响。例如,ATM使用类似点到点电路来跨越网络传送数据。对于需要就爱那个Ipv6包交付多个节点的服务,ATM需要格外注意。

    可能受IPv6影响的链路层问题还包括路径MTU发现及地址解析协议(ARP)这些协议需要修改以支持128的Ipv6地址。

 

 

 

      IPv6域名系统扩展

      Internet应用能够很容易使用,DNS是一个重要因素:它使名字很方便的映射到IP地址。DNS使用分级的名字空间,每一级豆油一些服务器帮助将名字映射为地址。主机名可能是诸如“host.organization.com”的形式,表示主机host在域organization中。如果organization.com内的节点要查找host,j就查询本地DNS服务器,该服务器保持着organization.com中的主机的名字和地址信息,它将简单的查找host,并以host对应的32位IP地址来回答节点的请求。

    

      如果organization.com之外的节点需要host.organization.com的IP地址,它将查询本地DNS服务器,这个本地服务器必须查询保持.com网络域信息的上一级服务器,然后该上级服务器将请求导向organization.com域的DNS服务器,由这个服务器最终响应,将所请求的IP地址发送给查询这的本地DNS服务器,再由本地DNS服务器将信息传递给发送请求的节点。

     

      到目前为止一切顺利。但是DNS最初被设计为用于处理32位Ipv4地址,RFC1886(支持Ipv6的DNS扩展)描述了为使DNS支持IPv6而进行的必要修改。此RFC篇幅很短,它扼要陈述了为使DNS适用于Ipv6而进行的3处修改。

  

 ×建立新的资源记录类型(称为AAAA记录类型),以将名字映射为128位地址的Ipv6地址。IPv4资源记录使用A类记录类型。

 ×建立新域,即.IP6.int,用于增补IPv6主机地址以支持基于地址查找,即请求节点想了解Ipv6地址对于的域名。IPv4地址也有类似设施,即.in-addr.arpa。

    *必须修改现有的DNS查询,使之不仅能定位活处理IPV4地址,同样能够处理IPv4和IPv6地址共存的情况。

     

     地址解析协议和邻居发现:

      IPv6不在执行地址解析协议(ARP)或反向地址解析协议(RARP)。

      在IPv6中没有继续使用ARP有如下原因:首先,ARp依赖于IPv6和使用组包的ICMPv6报文,这意味着没有必要为使用ARP的每个不同类型网络都重新构造ARP,任一支持IPv6和组播的节点应该也支持邻居发现。对组播的支持很重要,在链路层更是如此。和广播一样,组播在诸如以太网之类的支持多路同时访问同一媒体的网络上很容易实现。但是,对于所谓的非广播多址(NBMA)网络,例如ATM和帧中继,组播则很难处理.................

     

    

    RFC1970(IPV6的邻居发现)中描述了邻居发现机制,它提供了几种不同的用途,包括下面的支持:

     *路由发现,即帮助主机来识别本地路由器

     *前缀发现。节点使用刺激值来确定指明链路本地地址的地址前缀以及必须发送给路由转发的地址前缀。

    *参数发现。此机制帮助节点确定诸如本地链路MTU之类的信息。

    *地址自动配置。用于IPV6节点自动配置。

    *地址解析。替代了ARP和RARP,帮助节点从目的IP地址中确定本地节点9即邻居)的链路成地址。

    *下一跳确定。可用于确定包的下一个目的地,即,可确定包的目的地知否在本链路上。如果在本链路,下一跳即是目的地,否则,包需要选路,下一跳即是路由器,邻居发现可用于确定应使用的路由器。

     *邻居不可到监测。邻居发现可帮助确定邻居(目的节点或路由器)是否可达。

    *重复地址监测。另据发现可用于帮助节点确定它想使用的地址在本地链路是否已被占用

      *重定向。有时节点选择的转发路由器对于待转发的包而言不是最佳选择,这种情况下,该转发路由可以对节点经行重定位,以将包发送给最佳的路由器。

     *路由通告,要求路由器周期性的通告其可用性,以及用于配置的链路和Internet的参数。

    

     *路由器请求。主机可以请求本地路由器立即发送器路由器通告。

    *邻居通告。节点在收到邻居请求报文的请求或其链路层地址改变时,发出邻居通告报文。

    *邻居请求。节点发送邻居请求报文来请求邻居的链路层地址,以验证它先前所获得并保持在高速缓存中的邻居链路层地址的可达性,或者验证他自己的地址在本链路上是唯一的。

    

    *重定向。路由器发送重定向报文以通知主机,对于特定目的地自己不是最佳路由器。

    

 

        路由器通过组播来发送其路由器通告报文,这样统一链路上的节点可以构造自己的可用默认路由器列表:

      邻居发现也可以用于实现其他目标,包括;

     *链路层地址变化,对同一网络,节点可以有多个接口,如果节点得知自己的链路层地址改变,就可以通过发送几个组播包来将其地址改变通知其他节点。

     *入境负载均衡,应注意,接收大量业务流的节点可能有多个网络接口,使用邻居发现,所有这些接口都可以用一个Ip地址来代表。通过让路由器在发送其路由器通告包时省略源链路层地址,可以实现路由器负载均衡。此时查找路由器的节点每次想发送包隔日该路由器时,都必须执行邻居发现,而该路由器就可以选择接受包的链路层接口来相应此节点。

 

    *任意点播地址。任意点播地址表示单播地址的集合,发送给该任意点播地址的包将交付给这些地址中的任一个。通常任一点播地址用于表示提供同一服务的节点集,即,将包发送给一个任意点播地址的节点并不在意由节点集中的哪一个来响应。因为任意点播地址的多个成员都可能响应对其链路层地址的请求,邻居发现机制要求节点应预计到可能收到多个响应,并能够正确处理。

     *代理通告,如果一个节点不能正确的响应邻居请求,邻居发现机制允许用拎一个节点来代表该节点。

阅读(723) | 评论(0) | 转发(0) |
0

上一篇:contiki协议栈 概况

下一篇:IPv6 扩展头

给主人留下些什么吧!~~