LWIP 接收数据从网卡到应用层完整流程(未完成)

这里解释下从网卡PHY到IP层的数据接收流程:


这里是以函数调用方式来体现:
netif_add——>ethernetif_init——>low_level_init——>ethernetif_input——>low_level_input和tcpip_input——>
ethernet_input——>
ip4_input(etharp_input、pppoe_disc_input)——>udp_input、tcp_input、icmp_input、igmp_input等


1.在netif_add(&gnetif, &ipaddr, &netmask, &gw, NULL, &ethernetif_init, &tcpip_input);这个函数中,主要用到的是
ethernetif_init(对网口底层初始化)、tcpip_input(向上层递交数据)这两个函数。


2.在ethernetif_init函数中,调用low_level_init函数,low_level_init函数中创建ethernetif_input线程进行中断信号量方式的接收数
据,DMA接收到完整帧后释放信号量,ethernetif_input线程用low_level_input提取完整数据包,再通过tcpip_input中调用的
ethernet_input将数据传递给上层如:IP、ARP、PPOE等,具体递交给哪层由数据包类型决定,到这里底层PHY到IP层部分完成;


3.数据包递交到IP层后(只讨论含数据帧流程,ARP等不讨论),switch不同帧类型来将数据传递给不同传输层协议,如TCP、UDP等,这样数据就从IP层传输到了传输层,再递交给上层应用。至此,由IP层到应用层完成。


上面不同颜色含义:
浅绿色:底层PHY接收到IP层之间数据传递;
蓝色: IP层到应用层数据传递。
 

  • 2
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值