擦鞋匠 发表于 2022-12-21 19:18:17

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

序言:
如题,我最近在看《嵌入式网络那些事 STM32物联实战》
这本书,就是讲解lwip,一个实现轻量级tcp/ip协议栈的源码。
目前项目上其实用不上lwip,我看此书纯粹是为了学习一下网络相关知识,同时加强一下C语言。

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


Himem 发表于 2022-12-21 20:22:28

是不是想表达
(A + 0x0800) & 0xFFFF == B-1

擦鞋匠 发表于 2022-12-22 17:10:24

Himem 发表于 2022-12-21 20:22
是不是想表达
(A + 0x0800) & 0xFFFF == B-1
(引用自2楼)

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

Himem 发表于 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算,纠结这里意义不大

擦鞋匠 发表于 2022-12-22 19:37:11

Himem 发表于 2022-12-22 18:33
while (sum >> 16) sum = (sum & 0xFFFF)+(sum >> 16);

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

感谢阁下不吝赐教!

bruce_helen 发表于 2022-12-23 15:02:55

这边书pdf能分享一下么?

擦鞋匠 发表于 2022-12-29 09:10:48

bruce_helen 发表于 2022-12-23 15:02
这边书pdf能分享一下么?
(引用自6楼)

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

bruce_helen 发表于 2022-12-30 16:48:18

擦鞋匠 发表于 2022-12-29 09:10
链接:https://pan.baidu.com/s/1hKeutkGS--_MmseCjKaItA
提取码:sr67
(引用自7楼)

非常感谢
页: [1]
查看完整版本: LWIP中ICMP章节有关反码校验和计算存在疑惑,恳请指教