三。网络子系统深度分析

  用户程序通过网络发送这个网络数据包

  通过

      SCI

      协议无关接口

      协议栈 《   UDP的实现  会选择路由

          《    IP的实现   会建立这个邻居子系统,建立邻居信息

      设备无关接口

      驱动

  函数调用关系(对应上面)

      socket_file_ops

      do_sock_write

      _sock_sendmsg

      (SCI 接口)

      

      udp_sendmsg(路由ip_route_output_flow)

      udp_push_pending_frames

      (选择路由)

      

      ip_push_penging_frames

      ip_local_out(实现防火墙)

      dst_output

      ip_finish_output

      ip_finish_output2(dev->neighbour->output)

      // 邻居子系统

      arp_generic_ops->neigh_resolve_output

      (建立邻居子系统)

      

      dev_queue_xmit

      dev_hard_start_xmit

      (协议无关接口)

    

      dev->netdev_ops->ndo_start_xmit

      (驱动)

      

  2.网卡收到数据包如何交给用户来处理

      收到函数Receive()

      会产生一个中断

      1. 接受

        (1). 从硬件中读取数据到SKB中

        (2).调用Netif_rx()函数

      2.

最新文章

  1. vux 中popup 组件 Mask 遮罩在最上层问题的解决
  2. OC第八节——目录操作和文件管理
  3. WPF PRISM开发入门一( 初始化PRISM WPF程序)
  4. php引用&符号详解——————给变量起小名
  5. numpy——linspace创建等差数列
  6. BZOJ 4337: BJOI2015 树的同构 树hash
  7. 菜鸟学Linux命令:chmod命令和数字文件权限
  8. html5+ plus和phoneGap、cordova的比较
  9. POJ 2528 (线段树 离散化) Mayor's posters
  10. LocalDB 的创建与迁移
  11. JavaScript typeof, null, 和 undefined
  12. 以正确的方式开源 Python 项目 - 技术翻译 - 开源中国社区
  13. Anroid ListView分组和悬浮Header实现
  14. CentOS 7安装Oracle 11gR2以及设置自启动
  15. C++ DWORD 转byte char 数组、指针
  16. c 时间转移函数
  17. PHP(控制语句,随机数,循环语法)
  18. 2018年值得关注的10大JavaScript动画库
  19. 【源码学习之spark core 1.6.1 各种部署模式所使用的的TaskSceduler及SchedulerBackend】
  20. bzoj1854 [Scoi2010]游戏 ([SCOI2010]连续攻击游戏)

热门文章

  1. Ceph Jewel 10.2.3 环境部署
  2. 使用JDK开发Servlet程序
  3. sc7731 Android 5.1 Camera 学习之二 framework 到 HAL接口整理
  4. Windows常用性能计数器总结
  5. myeclipse、eclipse中项目复制后(可能无法访问)注意事项 .
  6. Java组待开发的任务
  7. LintCode 子树
  8. 跟大家分享下今天所学到的PHP,虽然很基础,但是感觉也很重要
  9. angularJs项目实战!02:前端的页面分解与组装
  10. 比较全面的MySQL优化参考