搜索
bottom↓
回复: 7

LWIP中ICMP章节有关反码校验和计算存在疑惑,恳请指教

[复制链接]

出0入0汤圆

发表于 2022-12-21 19:18:17 | 显示全部楼层 |阅读模式
序言:
如题,我最近在看《嵌入式网络那些事 STM32物联实战》
这本书,就是讲解lwip,一个实现轻量级tcp/ip协议栈的源码。
目前项目上其实用不上lwip,我看此书纯粹是为了学习一下网络相关知识,同时加强一下C语言。

问题:
如下图中方框内公式是如何实现的,我没看懂,恳请指教,感谢!
备注:原书P195页。


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入984汤圆

发表于 2022-12-21 20:22:28 | 显示全部楼层
是不是想表达
(A + 0x0800) & 0xFFFF == B-1

出0入0汤圆

 楼主| 发表于 2022-12-22 17:10:24 | 显示全部楼层
Himem 发表于 2022-12-21 20:22
是不是想表达
(A + 0x0800) & 0xFFFF == B-1
(引用自2楼)

感谢指教
我不明白为什么B需要减去1

出0入984汤圆

发表于 2022-12-22 18:33:10 | 显示全部楼层
本帖最后由 Himem 于 2022-12-22 18:48 编辑
擦鞋匠 发表于 2022-12-22 17:10
感谢指教
我不明白为什么B需要减去1
(引用自3楼)


while (sum >> 16) sum = (sum & 0xFFFF)+(sum >> 16);

溢出的进位也要加上去

----
这里可能是想讲ICMP包回复时,快速算checksum的技巧?
不过stm32的mac都有hardware checksum还是offload呀,不用cpu算,纠结这里意义不大

出0入0汤圆

 楼主| 发表于 2022-12-22 19:37:11 | 显示全部楼层
Himem 发表于 2022-12-22 18:33
while (sum >> 16) sum = (sum & 0xFFFF)+(sum >> 16);

溢出的进位也要加上去
(引用自4楼)

感谢阁下不吝赐教!

出0入0汤圆

发表于 2022-12-23 15:02:55 | 显示全部楼层
这边书pdf能分享一下么?

出0入0汤圆

 楼主| 发表于 2022-12-29 09:10:48 | 显示全部楼层
bruce_helen 发表于 2022-12-23 15:02
这边书pdf能分享一下么?
(引用自6楼)

链接:https://pan.baidu.com/s/1hKeutkGS--_MmseCjKaItA
提取码:sr67

出0入0汤圆

发表于 2022-12-30 16:48:18 | 显示全部楼层
擦鞋匠 发表于 2022-12-29 09:10
链接:https://pan.baidu.com/s/1hKeutkGS--_MmseCjKaItA
提取码:sr67
(引用自7楼)

非常感谢
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-4 08:16

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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