当前位置: 首页 > news >正文

企业网站官网模板电影网站做静态是不是好一些

企业网站官网模板,电影网站做静态是不是好一些,上海优化排名蓝天seo,电商平台开发项目当一些网络包到来触发了中断#xff0c;内核处理完这些网络包之后#xff0c;我们可以先进入主动轮询 poll 网卡的方式#xff0c;主动去接收到来的网络包。如果一直有#xff0c;就一直处理#xff0c;等处理告一段落#xff0c;就返回干其他的事情。当再有下一批网络包…当一些网络包到来触发了中断内核处理完这些网络包之后我们可以先进入主动轮询 poll 网卡的方式主动去接收到来的网络包。如果一直有就一直处理等处理告一段落就返回干其他的事情。当再有下一批网络包到来的时候再中断再轮询 poll。这样就会大大减少中断的数量提升网络处理的效率这种处理方式我们称为 NAPI。 在网卡驱动程序初始化的时候我们会调用 ixgb_init_module注册一个驱动 ixgb_driver并且调用它的 probe 函数 ixgb_probe。 在 ixgb_probe 中我们会创建一个 struct net_device 表示这个网络设备并且 netif_napi_add 函数为这个网络设备注册一个轮询 poll 函数 ixgb_clean将来一旦出现网络包的时候就是要通过它来轮询了。 当一个网卡被激活的时候我们会调用函数 ixgb_open-ixgb_up在这里面注册一个硬件的中断处理函数。 如果一个网络包到来触发了硬件中断就会调用 ixgb_intr这里面会调用 __napi_schedule。 __napi_schedule 是处于中断处理的关键部分在他被调用的时候中断是暂时关闭的但是处理网络包是个复杂的过程需要到延迟处理部分所以 ____napi_schedule 将当前设备放到 struct softnet_data 结构的 poll_list 里面说明在延迟处理部分可以接着处理这个 poll_list 里面的网络设备。 然后 ____napi_schedule 触发一个软中断 NET_RX_SOFTIRQ通过软中断触发中断处理的延迟处理部分也是常用的手段。 在 net_rx_action 中会得到 struct softnet_data 结构这个结构在发送的时候我们也遇到过。当时它的 output_queue 用于网络包的发送这里的 poll_list 用于网络包的接收。 在 net_rx_action 中接下来是一个循环在 poll_list 里面取出网络包到达的设备然后调用 napi_poll 来轮询这些设备napi_poll 会调用最初设备初始化的时候注册的 poll 函数对于 ixgb_driver对应的函数是 ixgb_clean。 在网络设备的驱动层有一个用于接收网络包的 rx_ring。它是一个环从网卡硬件接收的包会放在这个环里面。这个环里面的 buffer_info[]是一个数组存放的是网络包的内容。i 和 j 是这个数组的下标在 ixgb_clean_rx_irq 里面的 while 循环中依次处理环里面的数据。在这里面我们看到了 i 和 j 加一之后如果超过了数组的大小就跳回下标 0就说明这是一个环。 ixgb_check_copybreak 函数将 buffer_info 里面的内容拷贝到 struct sk_buff *skb从而可以作为一个网络包进行后续的处理然后调用 netif_receive_skb。 从 netif_receive_skb 函数开始我们就进入了内核的网络协议栈。 接下来的调用链为netif_receive_skb-netif_receive_skb_internal-__netif_receive_skb-__netif_receive_skb_core。 在 __netif_receive_skb_core 中我们先是处理了二层的一些逻辑。例如对于 VLAN 的处理接下来要想办法交给第三层。 在网络包 struct sk_buff 里面二层的头里面有一个 protocol表示里面一层也即三层是什么协议。deliver_ptype_list_skb 在一个协议列表中逐个匹配。如果能够匹配到就返回。 网络协议栈的 IP 层从 ip_rcv 函数开始我们的处理逻辑就从二层到了三层IP 层。 在 ip_rcv 中得到 IP 头然后又遇到了我们见过多次的 NF_HOOK这次因为是接收网络包第一个 hook 点是 NF_INET_PRE_ROUTING也就是 iptables 的 PREROUTING 链。如果里面有规则则执行规则然后调用 ip_rcv_finish。 ip_rcv_finish 得到网络包对应的路由表然后调用 dst_input在 dst_input 中调用的是 struct rtable 的成员的 dst 的 input 函数。在 rt_dst_alloc 中我们可以看到input 函数指向的是 ip_local_deliver。 在 ip_local_deliver 函数中如果 IP 层进行了分段则进行重新的组合。接下来就是我们熟悉的 NF_HOOK。hook 点在 NF_INET_LOCAL_IN对应 iptables 里面的 INPUT 链。在经过 iptables 规则处理完毕后我们调用 ip_local_deliver_finish。 在 IP 头中有一个字段 protocol 用于指定里面一层的协议在这里应该是 TCP 协议。于是从 inet_protos 数组中找出 TCP 协议对应的处理函数。这个数组的定义如下里面的内容是 struct net_protocol。 在系统初始化的时候网络协议栈的初始化调用的是 inet_init它会调用 inet_add_protocol将 TCP 协议对应的处理函数 tcp_protocol、UDP 协议对应的处理函数 udp_protocol放到 inet_protos 数组中。 在上面的网络包的接收过程中会取出 TCP 协议对应的处理函数 tcp_protocol然后调用 handler 函数也即 tcp_v4_rcv 函数。 接收网络包的上半部分分以下几个层次。 硬件网卡接收到网络包之后通过 DMA 技术将网络包放入 Ring Buffer。硬件网卡通过中断通知 CPU 新的网络包的到来。网卡驱动程序会注册中断处理函数 ixgb_intr。中断处理函数处理完需要暂时屏蔽中断的核心流程之后通过软中断 NET_RX_SOFTIRQ 触发接下来的处理过程。NET_RX_SOFTIRQ 软中断处理函数 net_rx_actionnet_rx_action 会调用 napi_poll进而调用 ixgb_clean_rx_irq从 Ring Buffer 中读取数据到内核 struct sk_buff。调用 netif_receive_skb 进入内核网络协议栈进行一些关于 VLAN 的二层逻辑处理后调用 ip_rcv 进入三层 IP 层。在 IP 层会处理 iptables 规则然后调用 ip_local_deliver交给更上层 TCP 层。在 TCP 层调用 tcp_v4_rcv。 此文章为11月Day25学习笔记内容来源于极客时间《趣谈Linux操作系统》推荐该课程。
http://www.hkea.cn/news/14258404/

相关文章:

  • 椒江建设网站新吴区推荐做网站电话
  • 合肥最好的网站建设公司哪家好做一个网站 多少钱
  • 非交互式网站可以做商城吗如何做网站需求表格清单
  • wordpress下载安装是英文茂名网站建设优化
  • 公司注销后 网站备案吗济南市莱芜区都市网
  • 临沂网站设计公司网页美工设计基础
  • 推广注册app拿佣金平台网站推广优化淄博公司
  • 网站开发是做什么长沙公司建设网站
  • 网站建设的步骤过程如何用dw制作网页文字链接
  • 网站右键禁止中国苏州网
  • 有建设网站的软件吗wordpress文章标题总有网站名
  • 东莞建设网官方网站长沙做网站开发哪里好
  • 做网站需要招什么渠道网络是什么意思
  • 电商网站建设外包费用网站备案和域名备案一样吗
  • 凡科网站建设如何植入代码加盟培训网站建设
  • 网站建设的功能都需要有哪些方面中国建设银行下载
  • 素材网站排行榜前十名网站的建设过程
  • 网站很卡如何优化wordpress博客文章导出
  • 网站ico图标放在哪里网站制作与app开发哪个要难一点
  • 东莞网站建设都找菲凡网络建站平台那个好
  • 做微网站上海人才市场
  • 做网站宜宾中英文外贸网站模板 生成静态html
  • wordpress使用iisseo分析报告
  • 沧州网站建设多少钱番禺区手机版网站建设
  • 天河做网站设计百度指数查询移动版
  • 简单展示网站模板为餐饮企业做网站推广
  • 从事网站开发学什么专业制作网页需要什么技术
  • 企业如何做网站建站男子替人做网站网站
  • 做网站必要性网站排名查询软件
  • php网站上传做网站活动