LWIP中ICMP章节有关反码校验和计算存在疑惑,恳请指教
序言:如题,我最近在看《嵌入式网络那些事 STM32物联实战》
这本书,就是讲解lwip,一个实现轻量级tcp/ip协议栈的源码。
目前项目上其实用不上lwip,我看此书纯粹是为了学习一下网络相关知识,同时加强一下C语言。
问题:
如下图中方框内公式是如何实现的,我没看懂,恳请指教,感谢!
备注:原书P195页。
是不是想表达
(A + 0x0800) & 0xFFFF == B-1 Himem 发表于 2022-12-21 20:22
是不是想表达
(A + 0x0800) & 0xFFFF == B-1
(引用自2楼)
感谢指教
我不明白为什么B需要减去1
本帖最后由 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算,纠结这里意义不大 Himem 发表于 2022-12-22 18:33
while (sum >> 16) sum = (sum & 0xFFFF)+(sum >> 16);
溢出的进位也要加上去
(引用自4楼)
感谢阁下不吝赐教! 这边书pdf能分享一下么? bruce_helen 发表于 2022-12-23 15:02
这边书pdf能分享一下么?
(引用自6楼)
链接:https://pan.baidu.com/s/1hKeutkGS--_MmseCjKaItA
提取码:sr67 擦鞋匠 发表于 2022-12-29 09:10
链接:https://pan.baidu.com/s/1hKeutkGS--_MmseCjKaItA
提取码:sr67
(引用自7楼)
非常感谢
页:
[1]