LwIP 代码分析(etharp_output大总结和padding) – 第六集

/ 0评 / 0

etharp_output真是个大玩意,为了这个我竟然整整画了3集,整体流程就是.

memcpy->添加数据
udp_sendto_if_src_chksum->添加UDP头
ip4_output_if_src->添加IP头
ethernet_output->添加以太网头

但是其实完整的调用如下.

而在正常发包里面竟然有填充字符,而我又没有真正的给发这些00啊.

因为以太网最小帧是60Byte,换算有效数据最少18Byte数据才能不padding.而且其实太短的话,也不利于数据传输.测试果真如此.

数据数组改成这样了.

那么这个padding是谁完成的.记得七层模型里面的,这个是MAC层完成的,也就是我们发出去时候,STM32自动补的.以便满足MAC标准,我们没法改掉.不够60Byte总长就会补0.因为这个补0并不改变UDP头,所以不属于UDP数据.
至此,发送流程终于完结了.

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注