关于IPv6嵌入式网络的使用与技术支持

出处:h1968123 发布于:2007-12-28 13:38:05

  本文主要对引发IPv6嵌入式网络的使用与IPv6嵌入式网络地址、协议、特征、地址间的体系结构等概述作一介绍,并对用DSC80C400的软硬技术开发IPv6嵌入式网络作一分析。
为何要使用IPv6嵌入式网络
 
使用IPv6是发展的必然
 
  当今,随着Internet已经广泛地普及与发展,所带来的严重问题是IP地址即将用尽,这是为什么?
 
  因为IP节点的可寻址空间越来越紧张。虽然232 (大约40亿)个IPv4地址(这是当前IP为Version4(版本4)-IPv4)还没有完全分配(2001年的增长速度与以前的指数增长率相比略有下降,由于IPv4的地址分配方式,实际仅有大约1.6亿个地址可供使用),但是,预计在未来的几年内所有地址将被完全占用。下一代IP-IPv6——将地址空间扩展到了2128,远远超出了人们的想象,在我们居住星球(地球总面积约内509,917,870平方公里)的每平方米就可提供6.67 ×1023个地址。这将保证未来的所有设备都可获得自己的地址。那如何解决IP地址即将用尽的问题呢?
 
  为了从根本上解决IP地址即将用尽的问题,必须使用IPv6进行标准化,它是一个已经开始利用的Internet协议。目前,人们使用的IPv4的地址为4 octes(32位)。在IPv6中,这个地址已变为IPv4的4倍,即16 octes(128位)。
 
  修改IP协议的工作是一项非常麻烦的工作,这是因为必须改变与Internet相连的主机和路由器的全部IP地址。例如像现在的状态,因为Internet已经广泛地普及起来了,所以要替换所有的IP地址是非常困难的。
 
  基于上述理由,使用IPv6不仅能够解决IP地址枯竭的问题,而且,在应用上对IPv4感到不满的牢骚也能够一扫而光。另外,人们也正在进行IPv6和IPv4之间的互换和直接进行通信的工作。
IPv6嵌入式网络发展产生将带来哪些福音
  拥有了足够的地址就不再需要网络地址转换(NAT) 和临时性地址租赁或其它用于保存严格限量分配的IPv4地址的组装机。尽管台式机、服务器及其它传统的网络设备占有明显优势,但预计不同领域的网络设备将会有大幅度的增长——正如我们目前所了解的,大多数小型设备将会改变互联网的命运。新潮网络用户总是集中在诸如GPRS(通用分组无伐线业务)、UMTS(通用鸡移动通信糸统)蜂窝电话或PDA的无线或移动设备,另外还包括一些嵌入式设备,如:监视器、传感器和智能节点,它们几乎能够嵌入到任何系统,从汽车到水表。
 
  IPv6不仅扩展了地址空间,它检查IP使配置过程简单化、自动化(嵌入式应用的另一需求);它使IP更坚固、可扩展、可移动,增强了安全性和服务质量支持,简化、加速了路由。困扰IPv4的严峻问题是:初分配IPv4地址的方式几乎是随机的,无法阻止路由表主干线的增长。IPv6要好一些,重建IP并逐步替代IPv4——将获得许多优点。双IPv4/IPv6网络堆栈支持混合环境,允许向IPv6的逐步过渡。
 
  亚洲是采纳IPv6的区域之一,因为这个区域在初分配IPv4地址时变化不大。中国的互联网用户无论是相对数量、还是数量,都是预期增长快的国家。考虑到它的优势和几个国家的政府管理层采纳的计划,IPv6正在变得更加重要。它在很长一段时间停留在原型阶段,现在已成为大多数操作系统的一个标准部件,例如:Microsoft WindowsXP,Sun SlarisTM 8/9等。
 
  值此本文要進一步介绍IPv6嵌入式网络地址、协议、特征、地址问的体系结构等概述及运用驻留在DS80C400微控制器内部的硅软件包开发IPv6网络技术支持作一分析。如果具备基本的网络知识或对IPv4有一定的了解,那末对下述的IPv6网络内容就能有更好的理解。
 
IPv6嵌入式网络概述
 
IPv6中IP地址及表示方法
 
  在IPv6中,IP地址的长度为128位,用这个长度可以表示38位十进制数(2128=约3.40×1038)。这个数字已经是天文数字了,我们可以想像它能够连接无数台的计算机。
 
  IPv6的IP地址如果与IPv4一样,使用十进制数来书写的话,则需要16个数字并排书写。这样的书写方法是非常麻烦的。因此,IPv6利用了其他的表示方法。它采用的是把128
 
  位的IP地址每16位进行分隔,并且使用的是十六进制数,以冒号(:)来隔开的表示方法,在连续出现0的情况下,可以使用两个冒号(::)表示省略。但是,在IP地址的一个地方只允许一个0的省略表示方法,即允许两个冒号(::)连续出现。在IPv6中,虽然人们下了不少功夫,想办法尽可能简单地表示IP地址,但是,这也造成了IP地址的变长,为人们的记忆带来了困难。
 
用IPv6表示的IP地址省略的实例
 
·用二进制的表示方法
0001000010000000:0000000000000000:0000000000000000:
0000000000000000:    .
0000000000001000:0000100000000000:0010000000001100:
0100000101111010
 
·用十六进制的表示方法
1080:0:0:0:8:800:200C:417A    ·
一1080::8:800:200C:417A(省略时)
 
  值此需要说明的是, IPv6自动可配置功能的关键在于使用地址的方式,128位的IPv6地址划分为64位前缀(网位或子网)和64位主机位。前缀,也代表地址的范围,可以由网络供应商(通常,48个前缀位由ISP分配;16位用于区分各个站点)或路由器广播分配,也可以放置在链接或网站上。在以太网中,主机位通常由设备的MAC(媒介存取控制),地址(按照IEEE EUI-64格式)产生。这意味着IPv6节点一旦接通将配合一个有效的IP地址操作。为实现通信,节点需要申请或收听路由器包括前缀以及前缀与EUI-64组合的广播。与附加在IPv4的DHCP所不同的是:所有IPv6节点能够自行配置,即使在没有服务器的条件下。
 
  又再例,IPv6地址用十六进制数表示,16位为一组。例如:3ffe:aaaa:bbbb:CCCC:260:8ff:fe8d:6009,是一个范围的地址。
 
  同一机器具有“链接-本地”地址fe80::260:8ff:fe8d:6ee9,这里fe80::/64是链接-本地地址的前缀,/64表示前缀的长度、::是0的缩写。环回主机(1Pv4中表示为1270.0.1)是简单的::1。站点本地地址有一个fec0::/10前缀。由于IPv4中没有可直接等效的站点本地地址,现在很少使用这些地址。
 
  从用户的角度看,这些较长的地址通常隐藏在DNS(区域命名糸统)名的背后,如WWW.Maxim-ic.com。为了提供IPv6地址,需要一个具有IPv6功能的DNS服务器。可按照范例:IN AAAA 3ffe:aaaa:bbbb:cccc:260:8ff:fe8d:6ee9在DNS上建立一个IPv6地址登录替代用于IPv4的IN A记录,没有根本性的新概念。由于IPv6地址的前缀预计变化比较频繁,所以,强烈推荐使用DNS。网络的重新编号比IPv4简单的多,甚至能够自动实现。
 
  IPv6有单播地址和组播地址。此外,还定义了一种新型的厂随播地址目标类型。一个指向随播IP的包被传送给若干个主机中近或适合的主机。随播有助于通过路由改善负载平衡(在Ipv4上,DNS负载平衡,例循环法被普遍采用,而不考虑路由问题)。
 
协议
 
  尽管IPv6毫无更改地保留了UDP(用户数括据报协定)和TCP的高层协议,IP包的报头必须加以修改以符合更大的地址,需要对它进行清理、整齐地排列成64位,始终保持固定的长度以便路由;由于更高层协议已经带有包括IP报头部分的校验和,所以IP报头的校验和被取消。
 
  一个有趣的更改是利用相邻发现协议(NDP)替代ARP(地址分辨率协定),NDP是新型ICMPv6的一部分。不同于向整个区域广播地址分辨要求的做法,IPv6规划组播群体和IPv6地址的方式避免了这种广播,并可确保节点(几乎)只接收它们真正感兴趣的信息。
 
IPv6的特征
 
  IPv6具有如下的特征,其中一些功能在IPv4也提供了。但是,这并不是说,将IPv4的功能嵌入到操作系统中等,在实际安装时都安装了全部的功能。对于网络管理员来讲,不能利用的功能也存在,管理起来比较麻烦的、不能够实现的功能也存在。在IPv6中,由于它提供了几乎是全部必需的功能,所以,能够减轻网络管理员的负担和劳动。
 
  通过不断地努力,今后,人们可能会一点点地从IPv4向IPv6进行转移。
 
*IP地址的扩大和路由控制表的聚集
 
  将IP的结构改变为适用于Internet上的分层结构。并且,人们将适合于地址结构的IP地址有计划地进行发布,并尽可能地不让路由控制表变得太大。
 
*提高了性能
 
  使得报头的结构更加简单,能够减轻路由器的负担。在路由器中不进行分段处理(利用路由MTU检索,由发送端主机进行分段处理)。
 
  ·必须具有标志和播放功能
 
  能够自动地分配IP地址。
 
  ·采用了和加密功能
 
  防止伪造IP地址,提高了安全功能,同时还提供了防止盗听功能。
 
  IPv6中的IP地址的体系结构
 
  IPv6也有像IPv4一样的分类,它用IP地址的开始的几位来区别IP地址的种类。通常,在发送IP数据报的时候,如果开始的几位为001,则表示使用的是全局IP地址。在Internet中,这个地址是的。在公司的内部,该地址可以作为私有地址在局部地址中使用。
 
  在没有路由器的计算机网络中,当在Ethernet的同一段内进行通信的时候,可以使用链接局部的地址。当然,在公司内部和同一段内的主机中,也可以使用全局地址进行通信。
 
  在IPv6问的一个NIC中,同时可以拥有上述问的两个以上的IP地址,对于不同的应用,可以分别使用不同的IP地址。
IPv6中的分段处理
 
  在IPv6中,为了减轻路由器的负担,以实现高速的Internet,只在主机部分发送处进行分段处理,在路由器中不进行分段处理。因此,路由MTU(信息传送单元)检索在IPv6中是必须具有的功能。但是,在IPv6中,的MTU为1280 octet(8位长字节)。因此,即使实际不具备路由MTU检索功能,在发送IP包的时候,以1280 octet(8位长字节)为单位进行分段处理之后,再发送即可。
 
IPv6嵌入式网络的技术支持
 
DS80C400中的TCP/IP
 
  内置的DS80C400固化软件(ROM)包含了经过现场验证的、修订版的DallasTCP/IP堆栈。硅软件包还包括一个小的操作系统和所有开发小型C或汇编语言的TCP/IP网络客户端和服务器应用的使用功能,少只需128kB的外部存储器。如果期望应用开发更容易和更快速或者希望扩充的Java功能,例如对象的序列化,也可以将DS80C400配合TINIJava运行环境使用。
 
  驻留C或汇编语言支持通过BSD(贝克莱软件/标准分布)和工业标准的跨平台套接字接口实现,如:socket()、bind()、listen()、accept()、connect()、send()等’。
 
  TINI Java环境完全遵从JDK(开发软件包) 1.1.8,并支持全部java.net包;可以使用任何支持Java的编译器。TINI执行标准的Java程序和字节代码。
 
  除了支持网络应用外,DS80C400硅软件包还可实现网络引导功能,通过TFTP(普通文件件传送协定)加载应用,支持IPv4的DHCP(动态主配置协定-是在TCP/IP网络上使客户机获得IP地址等配置信息的协议),甚至自配置IPv6上更简单的TFTP(普通文件件传送协定)。图2分别描述了IPv4和IPv6上的DS80C400网络引导。网络引导装入器可通过DS80C400的引脚或通过引导装人器串口的用户命令唤醒。
 
 
DS80C400中的IPv6
 
  DS80C400硅软件包支持加入网络所需要(DS80C400固化软件中的IPv6部分是在InternetNode,Inc的密切协作下开发完成的)的IPv6功能,符合“Minimum Requirements of IPv6 for Low-Cost Network Appliances”草案。考虑到嵌入式器件的资源紧缩,没有寄希望于用嵌入式器件实现包括安全、移动IP和路由的所有IPv6功能。
 
  IPv6逐步被人们采纳需要经过几年的时间,因此,DS80C400网络堆栈集成了IPv4和IPv6双堆栈。由于DS80C400支持两种协议,它提供了在现存IPv4网络上传送IPv6的通道(6over4)。必要时它通过路由器传送数据包,本身并不需要执行协议间的转换。
 
  例1是DS80C4加运行在TINI 1.1 Java环境下的范例,表示一个能够处理IPv4和IPv6请求的、简单的多径网络服务器的片段。从示例中看不到IPv6的特定代码,因为它们根本就不存在。应用可以毫不费力地从IPv4端口转向IPv4&6端口;仅需检查输入的IP地址,可能只需调用针对该目的提供的TINl 1.1功能。TINl 1.1Java环境添加了Java2SeEl.4Inet6Address类支持IPv6。不需要其它用户可见的更改,其它所有更改均隐芷在现埸背后。
 
  例2是用C语言编写的、仅靠DS80C400硅软件包工作的一个网络客户的内核。另外,除目标地址外没有IPv6特定代码。在DS80C400网络堆栈实现过程中,所有网络地址长度为128位。在内部,IPv4地址靠右对齐,前96位置0。示例中分配了一个IPv6目标地址,TCP端口建立一个堆栈,然后与目标连接。
 
例1:TINI Java网络服务器
  //Listen to inbound TCP connections
  private class 1istenTCPThread extends Thread
  {
    private ServerSocket serverSock;
    public void run()
    {
    while  (running)  {
      try{
      //Create new thread for each client
     Thread client=new clientTCPThread(serverSock.accept());
      client.start();
     )
     catch  (Exception e)  {}
    )
    …
    private class clientTCPTHread extends THread
    {
private Socket Sock;
      private lnputStream  iS;private Outputstream os;
      BufferedReader br;
      Public clientTCPThread(Socket s)  throws IOException
      {
        Sock=S;
        is=s.getInputstream();os=S.getoutputStream();
        br=new BufferedReader(new lnputStreamReader(is));
      )
     public void run()
     {
      //Loop while Socket is open
      try  {
         while  (running)  {
          os.write(parseCommand(br.readLine().getBytes(),  0));
    }
    )
例2:C网络客户
  {
    Struct Sockaddr target;
    unsigned int S;
    /*Fillsockaddr with valid IPv6 target address and port*/
    target.Sin addr[0] =0x3f;
    target.Sin addr[1] =Oxfe;
target.Sin addr[15] =0xe9;
    target.Sin_ port=34000;
    /*open socket and Connect to target address*/
    s=socket(0,  SOCKET_TYPE_STREAM,  0);
    result  =  Connect(S,  &target,    SiZeof(Struct  sockaddr));
    ...  /*  Send/receive data here  */
    closesocket(S);
    )
 
总结
 
  作为IP协议的评估和调整,IPv6显得越来越重要,尤其是对于一个成功的网络型嵌入式器件更是至关重要。IPv6提供了几乎没有限制的IP地址数量、自动配置和通用的流线型IP协议。
 
  DS80C400使得编写支持IPv4和IPv6网络的应用更简单。IPv6为所有新的应用提供了引人注目的优势。


  
关键词:嵌入式

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

相关技术资料
广告
上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!