TaterLi's LazyBlog

自言自语,不喜绕路,科学上网,远离天国.

@TaterLi6天前

02/13
22:49
技术控

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

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数据.

至此,发送流程终于完结了.

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