开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

查看: 1823|回复: 9
收起左侧

[求助] 易语言IP首部效验和计算

[复制链接]
头像被屏蔽
结帖率:91% (10/11)
发表于 2015-4-23 15:25:44 | 显示全部楼层 |阅读模式   上海市上海市
IP头:
45 00    00 31
89 F5    00 00
6E 06    00 00(校验字段)
[DE B7   45 5D       ->    222.183.69.93
C0 A8   00 DC     ->    192.168.0.220
计算:
4500 + 0031 +89F5 + 0000 + 6e06+ 0000 + DEB7 + 455D + C0A8 + 00DC =3 22C4
0003 + 22C4 = 22C7
~22C7 = DD38      ->即为应填充的校验和
当接受到IP数据包时,要检查IP头是否正确,则对IP头进行检验,方法同上:
计算:
4500 + 0031 +89F5 + 0000 + 6E06+ DD38 + DEB7 + 455D + C0A8 + 00DC =3 FFFC
0003 + FFFC = FFFF
得到的结果是全一,正确

面是我在网上找到的资料,不知道在易语言里怎么写出来


45 00    00 31   不知道这行数据是IP报头里的哪里的数据
89 F5    00 00   还有这里的
6E 06    00 00(校验字段)
DE B7   45 5D       ->    222.183.69.93
C0 A8   00 DC     ->    192.168.0.220
哪位大哥写个例程

头像被屏蔽
结帖率:91% (10/11)
 楼主| 发表于 2015-4-23 15:34:38 | 显示全部楼层   上海市上海市
连个打酱油的都没,我也是醉了
回复 支持 反对

使用道具 举报

结帖率:100% (7/7)
发表于 2015-4-23 15:47:37 | 显示全部楼层   重庆市重庆市
  
变量名类 型静态数组备 注
接收数据字节集 
接收数据 = 程序集_原始套接字.接收 ()
程序集_原始套接字.取IP报头 (接收数据, 程序集_IP报头)
调试输出 (程序集_IP报头.标识, 程序集_IP报头.协议, 程序集_IP报头.总长度, 程序集_IP报头.标志位, 程序集_IP报头.服务类型, 程序集_IP报头.源IP地址, 程序集_IP报头.目的IP地址, 程序集_IP报头.选项和填充, 程序集_IP报头.IP首部校验和, 程序集_IP报头.首部长度及版本号)


i支持库列表   支持库注释   
ERawSock网络通讯支持库二
spec特殊功能支持库
回复 支持 反对

使用道具 举报

结帖率:0% (0/1)
发表于 2015-4-23 16:05:10 | 显示全部楼层   河北省廊坊市
.版本 2

' 45 00 00 31       ->    69,0,0,4
' 89 F5 00 00       ->    137,245,0,0
' 6E 06 00 00       ->    110,6,0,0
' DE B7 45 5D       ->    222,183,69,93
' C0 A8 00 DC       ->    192,168,0,220

校验和前共有80bit,按16bit分,就是5个单元,对每个单元求和
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:91% (10/11)
 楼主| 发表于 2015-4-23 16:21:51 | 显示全部楼层   上海市上海市
周正 发表于 2015-4-23 16:05
.版本 2

' 45 00 00 31       ->    69,0,0,4

麻烦写个例子可以吗
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:91% (10/11)
 楼主| 发表于 2015-4-23 16:23:10 | 显示全部楼层   上海市上海市
宇智波·晓易 发表于 2015-4-23 15:47
[e=1].版本 2
.支持库 ERawSock
.支持库 spec

我要的是计算效验和

点评

充, 程序集_IP报头.IP首部校验和, 程   重庆市重庆市  发表于 2015-4-23 16:27
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:91% (10/11)
 楼主| 发表于 2015-4-23 16:35:24 | 显示全部楼层   上海市上海市
大神来临 发表于 2015-4-23 16:23
我要的是计算效验和

表示没看懂,你楼下的那位我倒是看懂了一点
回复 支持 反对

使用道具 举报

头像被屏蔽
结帖率:91% (10/11)
 楼主| 发表于 2015-4-23 16:37:55 | 显示全部楼层   上海市上海市
周正 发表于 2015-4-23 16:05
.版本 2

' 45 00 00 31       ->    69,0,0,4

或者告诉我计算效验和要取IP报头哪5个数据
我知道要取 首部长度及版本号 和2个IP 还有2个不知道是哪两个地方的数据
回复 支持 反对

使用道具 举报

结帖率:55% (11/20)

签到天数: 1 天

发表于 2023-1-27 08:34:00 | 显示全部楼层   重庆市重庆市
.版本 2

.子程序 效验和, 短整数型, , 1
.参数 效验数据首指针, 整数型
.参数 长度, 整数型
.局部变量 cksum, 长整数型
.局部变量 tmp, 整数型

.判断循环首 (长度 > 1)
    API_RtlMoveMemory_i1 (tmp, 效验数据首指针, 2)
    cksum = cksum + tmp
    效验数据首指针 = 效验数据首指针 + 2
    长度 = 长度 - 2
.判断循环尾 ()
.如果真 (长度 ≠ 0)
    tmp = 0
    API_RtlMoveMemory_i1 (tmp, 效验数据首指针, 1)
    cksum = cksum + tmp
.如果真结束
cksum = 右移 (cksum, 16) + 位与 (cksum, 65535)
返回 (位取反 (cksum))
回复 支持 反对

使用道具 举报

  高级模式
B Color Image Link Quote Code Smilies |上传

本版积分规则 致发广告者

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

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

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