开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 3948|回复: 12
收起左侧

[易语言软件开源] IP验证和计算

[复制链接]
结帖率:43% (3/7)
发表于 2012-5-6 14:09:36 | 显示全部楼层 |阅读模式   湖南省衡阳市
分享源码
界面截图:
是否带模块: -
备注说明: -
本帖最后由 yuanqun 于 2012-5-6 14:22 编辑


计算验证和.rar

1.17 KB, 下载次数: 26, 下载积分: 精币 -2 枚


结帖率:100% (5/5)

签到天数: 4 天

发表于 2012-5-6 14:15:14 | 显示全部楼层   山西省临汾市
说句实话不是很理解
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)
 楼主| 发表于 2012-5-6 14:26:07 | 显示全部楼层   湖南省衡阳市
IP/ICMP/IGMP/TCP/UDP等协议的校验和算法都是相同的,算法如下:
在发送数据时,为了计算数IP据报的校验和。应该按如下步骤:
(1)把IP数据报的首部都置为0,包括校验和字段。
(2)把首部看成以16位为单位的数字组成,依次进行二进制反码求和。
(3)把得到的结果存入校验和字段中。
在接收数据时,计算数据报的校验和相对简单,按如下步骤:

(1)当接收IP包时,需要对报头进行确认,检查IP头是否有误,算法同上2、3步,然后判断取反的结果是否为0,是则正确,否则有错。

1、发送方
  i)将校验和字段置为0,然后将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

  ii)对各个单元采用反码加法运算(即高位溢出位会加到低位,通常的补码运算是直接丢掉溢出的高位),将得到的和的反码填入校验和字段;

  iii)发送数据包。

2、接收方
  i)将IP包头按16比特分成多个单元,如包头长度不是16比特的倍数,则用0比特填充到16比特的倍数;

  ii)对各个单元采用反码加法运算,检查得到的和是否符合是全1(有的实现可能对得到的和会取反码,然后判断最终值是不是全0);

iii)如果是全1则进行下步处理,否则意味着包已变化从而丢弃之。需要强调的是反码和是采用高位溢出加到低位的,如3比特的反码和运算:100b+101b=010b(因为100b+101b=1001b,高位溢出1,其应该加到低位,即001b+1b(高位溢出位)=010b)。
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)
 楼主| 发表于 2012-5-6 14:32:12 | 显示全部楼层   湖南省衡阳市
65535的十六进制为FFFF反码求和=0,只有IP头反码求和为0时数据包才是无错误的包。
回复 支持 反对

使用道具 举报

结帖率:33% (1/3)
发表于 2012-5-6 14:42:55 | 显示全部楼层   广东省深圳市
学习学习、、、、、、、、、、、
回复 支持 反对

使用道具 举报

结帖率:37% (7/19)
发表于 2012-5-7 10:20:08 | 显示全部楼层   北京市北京市
997719200 发表于 2012-5-6 14:42
学习学习、、、、、、、、、、、

注意回帖质量哦
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2012-5-7 12:47:55 | 显示全部楼层   重庆市重庆市
太复杂了。
回复 支持 反对

使用道具 举报

结帖率:94% (92/98)

签到天数: 6 天

发表于 2012-5-18 12:15:30 | 显示全部楼层   广东省东莞市
下载来看看希望有用
回复 支持 反对

使用道具 举报

结帖率:67% (14/21)

签到天数: 1 天

发表于 2012-5-18 23:29:57 | 显示全部楼层   山西省运城市
这东西看着确实有点晕 需要慢慢消化 谢谢楼主
回复 支持 反对

使用道具 举报

结帖率:43% (3/7)
 楼主| 发表于 2012-5-20 20:44:36 | 显示全部楼层   湖南省衡阳市
还是简单点
.版本 2

.子程序 计算验证和, 短整数型, , 计算验证和返回验证和数,校验返回0时为正确
.参数 指针, 整数型, , 头指针
.参数 循环数, 整数型, , 按二字节算,标准IP头20字节循环就为10

置入代码 ({ 139, 93, 8, 139, 77, 12, 199, 69, 252, 0, 0, 0, 0, 51, 192, 102, 139, 3, 131, 195, 2, 1, 69, 252, 226, 243, 51, 192, 139, 77, 252, 102, 139, 193, 193, 233, 16, 102, 3, 193, 102, 131, 232, 255, 102, 247, 208, 102, 131, 192, 1, 201, 194, 4, 0 })
返回 (0)
一个子程序就行了
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 诚聘英才| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 800073686,邮箱:800073686@b.qq.com
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表