APP下载

网络可靠远程单工通信指令传输系统

2015-03-19

网络安全技术与应用 2015年11期
关键词:字库二进制校验

1 单工通信

信息在网络通道的传输方式有单工方式、半双工方式和全双工方式。单工方式,是指信息只能从通道的一端向另一端传输的方式。在单工通道中,信息只能从规定的发送端传输到规定的接受端,而不能从接收端发送信息到发送端。

2 可靠TCP传输

2.1 服务端完成功能

(1)Winsock套接字库加载,在此加载 Winsock套接字库的版本号为2.2;

(2)确认Winsock套接字是否支持2.2版本;

(3)创建TCP套接字:sockConn;

(4)将创建的套接字绑定到本地IP地址和端口号上;

(5)将套接字设置为监听模式,等待客户端的请求;

(6)接收客户端的连接请求,并验证连接是否成功;

(7)关闭服务器端套接字;

(8)终止服务器端套接字库。

2.2 客户端完成功能

(1)Winsock套接字库加载,在此加载 Winsock套接字库的版本号同样为2.2;

(2)确认Winsock套接字是否支持2.2版本;

(3)创建TCP套接字:sockConn;

(4)向服务器端发送连接请求,并验证连接是否成功;

(5)关闭服务器端套接字;

(6)终止服务器端套接字库。

3 网络信息传输的安全问题

网络信息主要是以高低电压或电波负载由“1”和“0”组成的二进制字符串传输的。信息的传输过程容易受到客观或主观因素影响,造成传输信息的变化,如二进制字符串中“1”、“0”顺序变化和置反、长度的增减、丢失、重传等,从而无法保障数据完整性、正确性。

现在的网络大部分使用TCP/IP网络协议,这样的网络是开放式的,传输的内容容易被截获,根据报文的格式分析截获数据包的内容可获得一些有用的信息,也可以修改数据包内容重发数据以欺骗接收端。对此,常采用校验、纠错和数据加密技术保障数据包所代表的意义仅被接收者所识别,其中检验技术主要是检查接收的数据包是否出错,纠错技术完成数据包出错的纠正,还原源数据,数据加密技术防止数据包截获者了解数据包的含义。校验、纠错和数据加密技术可采用的方法有很多,特别是量子数据加密技术的出现。

检验是纠错的前提,检验技术是数据发送方根据双方的协定对数据进行处理生成校验结果并存储在数据包中,而数据接收方同样根据双方的协定对数据进行处理生成校验结果,把接收方生成的校验结果和发送方生成的校验结果进行对比,根据比较结果判断数据是否出错,如果出错判断出数据出错的位置。

4 海明码原理

海明码是一种可以对一串只包含0和1的序列进行纠错一位的编码。该编码是在0和1序列的2^i(i=0,1,2,3…)位置处增加校验位,使码距均匀拉大。

增加的校验位数 r由 0和 1序列的信息位数 k确定,要求2^r>=k+r+1,海明码是由信息位和校验位构成的编码,长度为k+r,如k=7,则r=4。校验位的值是由相关信息位的值异或所确定的,相关信息位又是由位置号确定的。把位置号数值转换成二进制的0和1序列,其中数值位为1的位置号就是所关联的校验码的位置号。对于所有校验位的值初始化为 0,从第一个校验位开始依次顺序判断其所有相关联的位置号的数值(0或1)中1的个数gs,如果gs为偶数则赋值为0,gs为奇数则赋值为1,这样就生成海明码。

纠错时,是把校验位的二进制转换成十进制数值 err。如果 err等于0,则说明接受的0和1序列没有出错,否则接受的0和1序列中有一位出错,而err数值就是出错的位置号,对该位置号的信息位取反,就得到正确的海明码,再把海明码中在2^i(i=0、1、2、3…)位置号的数据删去后,剩下的就是海明码生成前的0和1序列。

海明码的生成:如一个海明码的7个信息位为d0,d1,d2,d3,d4,d5,d6,则4个校验位为r0,r1,r2,r3;生成的海明码顺序为h1 h2 h3 h4 h5 h6 h7 h8 h9 h10 h11。r0=h1=h1 h3 h5 h7 h9 h11的异或,r1=h2=h2 h3 h6 h7 h10 h11的异或,r2=h4=h4 h5 h6 h7 的异或,r3=h8=h8 h9 h10 h11的异或。

分析r3的相关位置号:由于二进制e=1000等于8,所以与r3关联的位置号从第8位开始,把9转换成二进制为1001,右起数第四位为1,所以与r3相关,再把10转换成二进制为1010,右起数第四位为1,所以也与r3相关,顺序计算就能得出相关的位置号。

海明码的校验(对上面生成的海明码进行校验):e0=h1 h3 h5 h7 h9 h11的异或,e1=h2 h3 h6 h7 h10 h11的异或,e2=h4 h5 h6 h7的异或,e3=h8 h9 h10 h11的异或。

转换二进制计算十进制err=e3*2^3+e2*2^2+e1*2^1+e0*2^0。如果err等于0,则没出错;原来的0和1序列是:d0,d1,d2,d3,d4,d5,d6。如果err等于5,则说明在海明码的第5位置号的数据出错;如果该数据位的值是0,则改为1;如果该数据位的值是1,则改为0。

例:7个信息位为1011011,4个校验位为r0,r1,r2,r3。其r0=0 1 0 1 0 1的异或;r1=0 1 1 1 1 1的异或;r2=0 0 1 1的异或;r3=0 0 1 1的异或。所以r0 r1 r2 r3等于1100,生成的海明码为11100110011。

海明码校验:把上面生成的海明码的5为变为1,得错误的海明码为1110 1 110011。e0=1 1 1 1 0 1的异或,e1=1 1 1 1 1 1的异或,e2=0 1 1 1的异或,e3=0 0 1 1的异或,e0 e1 e2 e3的值是1010,err= 0*2^3+1*2^2+0*2^1+1*2^0=5,把第5位置号的数据“1”取反得“0”,再把校验码删除的正确的信息序列为1011011。对于上述的“异或”运算,在程序编程中运用数值的十进制相加计算其总和为cout,再用cout对2取余,如果余数为1则赋值为1,否则赋值为0来代替实现。

5 服务端

5.1 服务端的功能和流程

功能:(1)用户的登录;(2)与客户端的可靠连接;(3)接受输入的指令;(4)完成海明码的生成和发送;(5)发送错一位的海明码。

流程:(1)进入主界面并单击登录转到登录窗口,输入用户名和密码;(2)将用户名和密码记录在控件的相关成员变量;(3)连接access数据库,判断用户是否存在,如果用户存在则进入下一个流程,用户不存在则返回流程1;(4)返回主界面输入指令,如 a1,再单击发送指令;(5)存储指令到控件的成员变量m_Zhi1ing中;(6)在编辑框显示发送的指令。

5.2 举例检查海明校验

选择了3个不同类型字符:一个是数字字符‘1’;一个是特殊字符‘@’;一个是字符‘z’。该函数分3次发送了3个错误的海明码“1@z”,供客户端接收校验。其中‘1’的错误在第四位,把本应为‘0’的数据改为‘1’;‘@’的错误发生在第 11 位,把本应为‘1’的数据改为‘0’;‘z’的错误发生在第 6位,把本应为‘0’的数据改为‘1’;如下:

char CuoWuHm1[12]={'0','0','1','1','0','0','0','0','1','1','0'};//字符数组的内容是 1 低4位出错,应为0

char CuoWuHm2[12]={'1','1','0','0','0','0','0','1','0','0','0'};//字符数组的内容是 @ 低11位出错,应为1

char CuoWuHm3[12]={'0','1','0','0','1','1','1','1','1','1','1'};//字符数组的内容是 z 第6位出错,应为0

6 客户端功能和流程

6.1 功能

(1)与服务端进行TCP可靠连接;(2)接收服务端发来的海明码,并进行海明校验;(3)校验后显示正确的指令。

6.2 流程

(1)输入服务器IP地址;(2)单击:“连接”按钮;(3)在列表框中显示海明校验后的指令。

猜你喜欢

字库二进制校验
用二进制解一道高中数学联赛数论题
No.2 喜茶联合汉仪字库推出微型书和书签
有趣的进度
二进制在竞赛题中的应用
论计算机字库单字的著作权保护
——以方正诉宝洁案为例
炉温均匀性校验在铸锻企业的应用
结合抓包实例分析校验和的计算
分析校验和的错误原因
二进制宽带毫米波合成器设计与分析
老家的惜字库