LwIP 代码分析(etharp_output再深入) – 第五集

/ 0评 / 0

之前说etharp_output远远不是终点,听起来很吓人啊,不过确实的,终点其实是low_level_output,不对,其实是ETH->DMATPDR = 0,但是我们只要看到low_level_output就行了,那里数据包已经全部构建完成了.

简化后就是这样:

除了第一次查询,其后缓存中都会有,我们就假设都有缓存把.这就说明无论如何都会到etharp_output_to_arp_index.并且假设他们在ARP表中都是靠谱的.那么直接到ethernet_output.

一下子攻破了两个函数,最后红框处添加以太网头.

以太网头很简单,就是SRC和DST,然后和类型.然后整个帧就OK了.到netif->linkoutput(netif, p),也就是lowlevel_input.

如图,以太网帧.

IP帧

UDP帧

一个包,就这么发出去了.后面的00,是补充,这个后话再说了.

 

发表评论

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.