精华内容
下载资源
问答
  • 移植性优良的匿名飞控上位机协议源码,支持V6版本上位机,稍加改动可支持其他任意版本。注释清楚,程序清晰易懂,包含使用例程。
  • 3GPP V6协议说明

    2009-03-30 16:18:49
    3GPPV6标准包括:3GPPV6Multirate等协议说明。
  • 上层协议在计算checksum时早就不需要IP层字段作为伪头参与了,但是不管TCP,UDP还是ICMP都是古老的协议,它们设计时就如此,没有办法,即便是IPv6还是要支持! 如果在协议转换的集中化节点去重新计算上层协议的...

    在IPv6时代,是不是可以用本地链路质量信息编码源地址的主机标识符从而指导服务器端拥塞控制策略呢,是不是也可以把自己是谁编码进去呢?比如自己是Android,自己是一台PC,或者说自己是一双智能皮鞋?以此来指导数据发送端的定制化动作呢?


    IPv6的地址空间足够大,且留下了可达64位的主机标识符可供任意发挥,如此长度的主机标识符可以藏匿很多信息啊!

    可以先看一下我很久之前在2012年写的一篇文章:
    IPv6的NAT原理以及MAP66: https://blog.csdn.net/dog250/article/details/7799398
    很有意思。


    这种 利用IPv6地址空间远大于IPv4地址空间的特性,在IPv4报文转换为IPv6报文实现IPv4和IPv6之间互访的时候,通过解一个一元一次方程来保证协议checksum无需重新计算 的技术,其实还有很多玩法。

    关键不在于什么解一元一次方程,而是在于IPv6的地址空间比IPv4地址空间足够大,在IPv4地址嵌入到IPv6地址中后,剩余的空间仍然可以存储校验码矫正值。

    之前说过,IPv4和IPv6之间存在联通的必要,因为要平滑过渡就必然需要某种兼容,那么这种联通就可以分为两类:

    • 横向联通: IPv4海洋中,IPv6孤岛之间的互访,此时需要IPv4隧道,参见6to4以及ISATAP等。
    • 纵向联通: IPv4直接访问IPv6资源或者反过来。此时就需要协议转换,协议转换必然涉及到checksum的重新计算问题。

    以上纵向联通方面,有一个超猛支撑技术,那就是DNS64,但是这种DNS技术更加侧重于管理平面和配置技巧,不是我的菜,所以我也不想多聊,分享一篇文章:
    支持IPv6 DNS64/NAT64 网络<- 网络概述: https://www.jianshu.com/p/37b8c006cd2d

    为了防止链接失效,盗图一张,解释DNS64:
    在这里插入图片描述

    逻辑是比较简单的,但细节却足够繁琐,超级烦人。

    本文不想谈DNS64,本文谈谈当IPv4报文转换为IPv6报文以及IPv6报文转换为IPv4报文时,上层协议checksum的计算问题。


    上层协议在计算checksum时早就不需要IP层字段作为伪头参与了,但是不管TCP,UDP还是ICMP都是古老的协议,它们设计时就如此,没有办法,即便是IPv6还是要支持!

    如果在协议转换的集中化节点去重新计算上层协议的checksum,那么资源的消耗将会是集中式的,为此,我们希望这些相关的计算尽量在边缘进行。此外,由于IPv6没有NAT或者至少说不提倡NAT,且地址足够长,没有哪台设备有足够的内存可以承受海量的连接状态跟踪的维护,所以需要某种stateless机制去维护conntrack!

    就像TCP的Syncookie一样,我们 可以把conntrack信息存放在IPv6报文本身,因为它的地址空间足够大!

    先看IPv4报文转换为IPv6报文时,如何保持上层checksum的不变性。

    按照RFC6052的规范:
    IPv6 Addressing of IPv4/IPv6 Translators: https://tools.ietf.org/html/rfc6052

    IPv4地址会嵌入到IPv6地址空间的低位,具体就是下面这个规则了(参见2.2节):
    在这里插入图片描述

    注意后面的suffix,这些后缀空间是可以供我们自由发挥的。

    除却96位的prefix实在是没有空间,其它的情况,至少可以在suffix低位取2个字节来存放checksum矫正值,计算这个checksum矫正值的问题可以描述为:
    求解一个16bit的数字,请问它是多少时,当IPv4头按照RFC6052规范换成IPv6头时,TCP的checksum可以保持不变?

    这不就是一个一元一次方程嘛…


    给出一段代码:

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    
    //以下2个函数就是计算校验码的,具体的原理请参见RFC1071/RFC1624/RFC1141
    static inline u_int16_t add16(
        u_int16_t a,
        u_int16_t b)
    {
        a += b;
        return a + (a < b);
    }
    
    static inline u_int16_t csum16(const u_int16_t *buf, int len)
    {
        u_int16_t csum = 0;
        while(len--) csum = add16(csum, *buf++);
        return csum;
    }
    
    unsigned char sip[4] = {192, 168, 1, 1};
    unsigned char dip[4] = {172, 16, 2, 2};
    
    // 转换后的源IPv6地址,即将源IPv4地址嵌入到IPv6地址后64位的高32位,sip6已经完成嵌入
    unsigned char sip6[16] = {0x20, 0x01, 0x00, 0x01, 0x02, 0x03, 0x04, 0x05,
    						 192, 168, 1, 1, 0x00, 0x00, 0x00, 0x00};
    // 1. 转换后的目标IPv6地址,即将目标IPv4地址嵌入到IPv6地址后64位的高32位,sip6已经完成嵌入
    // 2. 目标IPv4地址2.2.2.2,是由DNS64机制通告给IPv4-only的客户端的,到达NAT64网关后,将其转换为下面的IPv6地址
    unsigned char dip6[16] = {0x20, 0x01, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00,
    						 172, 16, 2, 2, 0x00, 0x00, 0x00, 0x00};
    
    // 简版IPv4头
    struct ipv4hdr {
    	unsigned char sip[4];
    	unsigned char dip[4];
    };
    
    // 简版IPv6头
    struct ipv6hdr {
    	unsigned char sip6[16];
    	unsigned char dip6[16];
    };
    
    // 报文格式:|0~31 IPv4/6头部|32~45 payload|46~47 校验码|
    
    int main(int argc, char **argv)
    {
    
        u_int16_t csum, *c2;
    	// 完整的数据报文:0~31bit可以装下简版IPv6头,24~31bit可以装下简版IPv4头.保持payload不变,方便操作
    	unsigned char  packet[48] = {0};
    	// 暂存IPv6头
    	unsigned char  hdr6buf[32] = {0};
    	struct ipv4hdr *hdr4;
    	struct ipv6hdr *hdr6;
    
    	hdr4 = (struct ipv4hdr *)&packet[24];
    	memcpy(hdr4->sip, sip, 4);
    	memcpy(hdr4->dip, dip, 4);
    	// 10个字节的payload
    	memcpy((unsigned char *)hdr4 + sizeof(struct ipv4hdr), "1234567890abcd", 14);
    	// 最后2个字节保存校验码
    	memset((unsigned char *)hdr4 + sizeof(struct ipv4hdr) + 14, 0, 2);
    
    	// 一共校验23个16位组,总共46个字节
    	csum = csum16((u_int16_t *)(&packet[0]), 23);
    	c2 = (u_int16_t *)(&packet[46]);
    	*c2 = csum;
        printf("IPv4报文数据检验码(可模拟包含伪头的TCP校验码):%.2X\n", csum);
    
    	{
    		int i = 0;
    		printf("begin IPv4 packet:\n");
    		for (i = 24; i < 48; i++) {
    			printf ("%.2X ", packet[i]);
    		}
    		printf("\nend IPv4 packet\n");
    	}
    
    	hdr6 = (struct ipv6hdr *)&hdr6buf[0];
    	memcpy(hdr6->sip6, sip6, 16);
    	memcpy(hdr6->dip6, dip6, 16);
        u_int16_t csum_hdr6 = csum16((u_int16_t *)hdr6, 16);
    
        //定位固定修改后的动态修改的初始地址,我将IPv6头的源地址hostID的最低2个字节用于检验码矫正!
        u_int16_t* pcsum = (u_int16_t*)(&hdr6buf[14]);
    
        //计算校验码矫正值!即已知h,p,c,求x:h + p + x = c
        *pcsum = ~add16(
            add16(
                ~(*pcsum),
                ~csum16((u_int16_t*)(&packet[0]), 16)
            ),
            csum_hdr6
        );
    
        printf("校验码矫正值为:%X\n", *pcsum);
        memcpy(&packet[0], &hdr6buf[0], 32); //完成修改
    
        printf("当前IPv6报文的校验码(模拟在IPv4头转换为IPv6头之后,TCP协议的校验码不需要改变):%.2X\n", csum16((u_int16_t*)(&packet[0]), 23));
    
    	{
    		int i;
    		printf("begin IPv6 packet:\n");
    		for (i = 0; i < 48; i++) {
    			printf ("%.2X ", packet[i]);
    		}
    		printf("\nend IPv6 packet\n");
    	}
    
    	return 0;
    }
    

    编译执行之:

    [root@localhost DESTHDR]# ./a.out
    IPv4报文数据检验码(可模拟包含伪头的TCP校验码):883E
    begin IPv4 packet:
    C0 A8 01 01 AC 10 02 02 31 32 33 34 35 36 37 38 39 30 61 62 63 64 3E 88
    end IPv4 packet
    校验码矫正值为:EEB0
    当前IPv6报文的校验码(模拟在IPv4头转换为IPv6头之后,TCP协议的校验码不需要改变):883E
    begin IPv6 packet:
    20 01 00 01 02 03 04 05 C0 A8 01 01 00 00 B0 EE 20 01 05 04 03 02 01 00 AC 10 02 02 00 00 00 00 31 32 33 34 35 36 37 38 39 30 61 62 63 64 3E 88
    end IPv6 packet
    

    是不是很好玩?解一元一次方程也能解出实际用途来。

    这可不是我自己说的,这可是RFC上说的,我只是照着试试做一下而已:
    https://tools.ietf.org/html/rfc6052#section-4.1


    现在反过来,IPv6报文如果转换为IPv4报文呢?


    我们知道IPv4报文本身就有一个针对于IPv4协议头的校验码字段,如果数据始发于IPv6栈,那么当它需要转换为IPv4报文时,看样子这个IPv4的校验码计算是躲不过。

    确实躲不过,但问题是在哪里进行这个计算。是在边缘节点还是在协议转换的节点来做呢?

    我认为可以在边缘节点来做这个计算,然后把值藏匿于IPv6地址的 可以自由发挥的主机标识符里 就是了。

    假设从IPv6栈发起一个去往IPv4地址10.18.19.2的数据报文,按照RFC6052的规范,这个IPv4地址肯定被编码进了IPv6栈的源地址的主机标识符里,那么是不是可以在数据始发的时候,就直接按照IPv4地址来计算TCP/UDP/ICMP的校验码呢,然后继续计算IPv4头的校验码,将IPv4头的校验码藏匿于源IPv6地址的suffix即可。

    下面是一个例子:

    1. IPv6始发:2001: 1234: 1234: 1234:192.168.12.2::0/64到2001:4321:4321:4321:172.16.12.2::/64。
    2. 始发站直接按照192.168.12.2和172.16.12.2作为源和目标计算4层协议checksum保存在报文checksum字段。
    3. 始发站自行组装源和目标分别为192.168.12.2和172.16.12.2的IPv4报头,计算IPv4的checksum,保存于源IPv6地址2001: 1234: 1234: 1234:192.168.12.2::0/6的最后2个字节。
    4. 协议转换网关收到报文,按照嵌入的IPv4地址组装IPv4头,取出IPv6源地址的低2字节作为checksum装入IPv4头的checksum字段。
    5. IPv4报文发出到IPv4网络。

    这便解放了协议转换网关的算力资源。


    遗留的问题是,IPv6始发站如何识别一个报文是不是发往IPv4网络的,如何触发它去按照内嵌IPv4地址去生成伪头以及去计算一个IPv4头的校验码,这除了RFC6052之外,就看应用层的配置了,一个sockopt规则灌下去,非常容易做到!


    既然IPv4和IPv6要互联互通,肯定是需要协议转换设备了,我本来就是一个设备迷而不是很care什么软件,所以,本文也是看了下面的新闻才有感而发的:
    国内首个IPv6翻译设备认证出炉 北京英迪瑞讯IVI通过IPv6 认证: http://www.qianjia.com/zhike/201904/031822517170.html

    我可能思想过于老套了,但我依然觉得设备才是重要的,软件灌入设备卖出去才有效。最关键的,我不喜欢互联网软件的原因是,互联网软件的代码一般都很low,毕竟服务器都在这些互联网公司自己的机房,出了问题远程登录即可排错,而设备是卖出去到客户那里的,排错成本高昂,所以必须精雕细琢不断测试。


    清明时节,没有雨纷纷,所以皮鞋就不会湿,所以也就更加不会胖。

    展开全文
  • OMA CP协议 V6

    2012-12-13 15:54:25
    OMA Client Provisoning 协议 V6
  • HTTP.Analyzer.Full.Edition.v6 注册版 协议分析利器
  • 3.2 OMA DM 协议与OMA CP 协议 3.4 开发能同时支持OMA DM 和OMA CP 的软件产品 3.5 手机供应商对OMA DM的支持 8.10 OMA DM 的主要业务与客户需求 8.11 OMA DM 客户端软件及其部署难题 8.12 OMA DM 的服务器性能...
  • tcpip 协议v6 与v4 区别

    2012-08-28 22:50:00
    这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。 五,IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。 ...

    IPv6用128位冒号分十六进制表示,而V4用32位点分十进制表示,IPv6数据帧的格式较之v4更简单,且能表示的IP要远远多于IPV4。 回答者: chuxiuyunjie | 二级 | 2010-4-10 13:27

    一,IPv6具有更大的地址空间。IPv4中规定IP地址长度为32,即有2^32-1(符号^表示升幂,下同)个地址;而IPv6中IP地址的长度为128,即有2^128-1个地址。
    二,IPv6使用更小的路由表。IPv6的地址分配一开始就遵循聚类(Aggregation)的原则,这使得路由器能在路由表中用一条记录(Entry)表示一片子网,大大减小了路由器中路由表的长度,提高了路由器转发数据包的速度。
    三,IPv6增加了增强的组播(Multicast)支持以及对流的支持(Flow Control),这使得网络上的多媒体应用有了长足发展的机会,为服务质量(QoS,Quality of Service)控制提供了良好的网络平台。
    四,IPv6加入了对自动配置(Auto Configuration)的支持。这是对DHCP协议的改进和扩展,使得网络(尤其是局域网)的管理更加方便和快捷。
    五,IPv6具有更高的安全性。在使用IPv6网络中用户可以对网络层的数据进行加密并对IP报文进行校验,极大的增强了网络的安全性。

    转载于:https://www.cnblogs.com/xust/articles/2660991.html

    展开全文
  • TL-WR740N V5V6V7_130704 支持802.1x协议 固件
  • /*  菜鸟,若有疏漏、不足或者错误,...软件 极域电子教室V6 2007 不用说的(下载地址),拦包工具我用的是 科来网络分析系统 2010 技术交流版 (可以免费申请到序列号的,序列号1年过期)。建议安装一个虚拟机,以

    /*

            菜鸟,若有疏漏、不足或者错误,肯定指教。直接回复或联系邮箱(sunnysab@yeah.net)。

            文章供学习和交流使用,转载可不注明原地址。

    */

           首先,配置环境。软件 极域电子教室V6 2007  不用说的(下载地址),拦包工具我用的是 科来网络分析系统 2010 技术交流版 (可以免费申请到序列号的,序列号1年过期)。建议安装一个虚拟机,以便进行试验。个人用的是 Virtual Box 。另外,在安装时把虚拟网卡也弄上,关于这个实验都在该虚拟网卡上进行,可以排除干扰。还要注意把极域电子教室的ip都设置在虚拟网卡的ip上。并且定下哪个ip装教师端,哪个ip是学生端,不要今天在虚拟机里用教师端,明天在虚拟机内运行学生端。另外还要注意的是,有时候可以只开教师端不开学生端。

           拦包,发现:极域电子教室教师端向 224.40.40.40:4804(组播地址)  发送一些数据包,内容如下:

    十六进制:4E 43 4E 41 00 00 0E 00 C0 A8 02 01 01 00 00 00 54 65 61 63 68 65 72 00

    明       文:N  C  N  A  .  .    .    括        .  .  .  T  e  a  c  h  e  r  .

           数据包每次内容不同,而且极域电子教室还向另外一个地址(这个地址每次都不同,但是 225.2.x.x )发送一些包,经过研究,学生端不对 224.40.40.40 发送消息,且这个地址每次都是固定的,所以这个地址可能是极域电子教室说明自己身份的地址。而 225.2.x.x 是上课时的控制地址)。对这个数据包进行分析:

          把域电子教室关闭再开,几次数据包都不同,225.2.x.x 也不同。在教师端登录时,试着切换几次参数(教师名、班级)。得出了极域电子教室教师端向 224.40.40.40:4804 发送的数据包的含义(不应该用结构表示,毕竟结构的大小是固定的,而数据包大小不固定(依教师名而定),理解即可~):

         struct  packet_1

         {

             char  Flag[4];     //"NCNA"

             char  The_Second_Multicast_IP[4];       //225.2.x.x的地址

             char  Teacher_IP[4];       //教师端ip

             WORD  Class;          //班级

             WORD  NULLs[3];    //3个空字节

             char  TeacherName[ ];         //教师端登录时的教师名

             char  TheEnd;        //'\0',也可当做TeacherName后面系统附加的'\0'

         }

          有一点必须说明,就是 The_Second_Multicast_IP[4];  ,这四个字节折磨了我一段时间,后来是多次拦包得出:

          实际第二个组播的ip:  225.2.76.1                       在数据包中十六进制的表示:4B 00 0E 00

          实际第二个组播的ip:  225.2.55.1                       在数据包中十六进制的表示:36 00 0E 00

          观察这两组包,重复的: 225.2.x.x 0E 00  不看。得出:

          76.1      ->      4b  00

          55.1      ->      36  00

          我是无意发现的,76 - 1 = 4b(16进制) = 75,55 - 1 = 36(16进制) = 54 。

          可以这样理解这4个字节(分别表示为 W X Y Z):

              真实的第二个组播的地址 = (Y+1)^2 . Z+2 . W+1 . X+1

          解析的过程不是很详细,但是毕竟包含着一些经验,不过毕竟有些是无法表达出来的,只能靠着自己摸索、实践。三天五天分析不出来这个协议是很正常的。不要灰心!

    展开全文
  • 可到CSDN 下载中心下载本文档。 ... 新增内容如下: ...3.2 OMA DM 协议与OMA CP 协议  3.4 开发能同时支持OMA DM 和OMA CP 的软件产品  3.5 手机供应商对OMA DM的支持  8.10 OMA DM

    可到CSDN 下载中心下载本文档。
    新增内容如下:
    1.2 移动设备管理的发展前景 
    3.2 OMA DM 协议与OMA CP 协议 
    3.4 开发能同时支持OMA DM OMA CP 的软件产品 
    3.5 手机供应商对OMA DM的支持 
    8.10 OMA DM 的主要业务与客户需求 
    8.11 OMA DM 客户端软件及其部署难题 
    8.12 OMA DM 的服务器性能问题 
    附录B.移动设备管理与TD-SCDMA网络 
    附录C.开餐馆与做软件—大型网站性能
    展开全文
  • carol的配置文件:ikev2/ip-two-pools-v4v6/hosts/carol/etc/ipsec.conf,内容如下,主要注意是这里的leftsourceip字段值%config4和%config6,表示carol主机请求虚拟IPv4和IPv6地址。将在IKE_AUTH消息中包含相应...
  • DHCP v6

    万次阅读 2015-05-18 16:40:00
    DHCP v6 4.1 介绍 定义 IPv6 动态主机配置协议DHCPv6(Dynamic Host Configuration Protocol for IPv6)是针对IPv6 编址方案设计,为主机分配IPv6 地址/前缀和其他网络配置参数的一种有状态协议。 ...
  • moon的配置文件:ikev2/ip-two-pools-v4v6-db/hosts/moon/etc/ipsec.conf,内容如下,在rightsourceip字段指定了两个地址池%v4_pool和%v6_pool。 conn rw left=PH_IP_MOON leftcert=moonCert.pem leftid=@moon....
  • 序言架构IP网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。...ICMP正是提供这类功能的一种协议。ICMPICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被...
  • IP V6

    2012-06-21 00:34:01
    IP V6  IPv6是"Internet Protocol Version 6"的缩写,也被称作下一代互联网协议,它是由IETF小组(Internet工程任务组Internet Engineering Task Force)设计的用来替代现行的IPv4(现行的IP)协议的一种新的IP协议...
  • v6路由

    2012-05-20 00:51:18
    聚合 地址多 自动配置(dhcpv6,autoconfig) 即插即用 端到端连接 ...扩展包头(协议号) 流标签 v6包头 version丨tos丨 flow label 总长度 丨下一跳头部丨ttl 源地址 目的地址 ...
  • 序言架构IP网络时需要特别注意两点:确认网络是否正常工作,以及遇到异常时进行问题诊断。...ICMP正是提供这类功能的一种协议。ICMPICMP的主要功能包括,确认IP包是否成功送达目标地址,通知在发送过程当中IP包被...
  • ArtDialog V6的简单使用

    千次阅读 2014-09-02 11:32:23
    artDialog v6 —— 经典的网页对话框组件,内外皆用心雕琢。 兼容性 测试通过:IE6~IE11、Chrome、Firefox、Safari、Opera 授权协议 免费,且开源,基于LGPL协议。 支持开源 贡献代码 || 捐赠一杯咖啡 ||...
  • unix system v6

    2014-02-20 22:56:08
    UNIX操作系统(UNIX),是一个强大的多用户、多任务操作系统,支持多种处理器架构,按照操作系统的分类,属于分时操作系统。 代码仅供学习,学习请遵守UNIX协议
  • 网络协议

    2015-04-08 10:52:44
    IGMP: 多播的internet组管理协议 BGP: 边界网关协议 ARP: 地址及解析协议 RARP:反向地址解析协议 ESP: 安全加载封装 AH: 认证协议头 ...NARP:NBMA地址解析协议 ...RIPng:IP v6下的RIP HSRP:热备份路由
  • KEPServerEX_V6的BACnet IP驱动连接文档,KEPServerEX实现数据库表格实时刷新案例,KEPServerEX-使用Datalogger和数据库通信操作文档V6,里面都是bacnet协议连接kepserver文档
  • HttpAnalyzerFullTrial_V6

    2011-09-12 01:44:53
    它可以实时捕捉HTTP/HTTPS 协议数据,可以显示许多信息(包括:文件头、内容、Cookie、查询字符窜、提交的数据、重定向的URL地址),可以提供缓冲区信息、清理对话内容、HTTP状态信息和其他过滤选项。同时还是一个...
  • KEPServerEX-V6中文说明书包含所有驱动配置以及窗口菜单应用讲解bacnet、opc、odbc、modbus、自定义协议
  • 深入学习ArduinoJson库 V6版本

    万次阅读 2019-06-20 09:06:41
    1.前言     前面,博主已经讲解了Arduino...JSON协议 JsonBuffer JsonObject JsonArray     接下来,我们直接进入V6版本的学习,尽量和V5版本类比。 2.ArduinoJson V6版本     假设读者下载...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 267
精华内容 106
关键字:

v6协议