
简介
该用户还未填写简介
擅长的技术栈
可提供的服务
暂无可提供的服务
1.NAT的原理NAT会修改数据包的ip层的源或者目的ip地址。在实际应用中,NAT 主要用于实现私有网络访问公共网络的功能。1.1 SNAT源目的地址转换,即对ip数据包的源ip地址进行转换操作,典型的应用即是网关,网关的lan侧会下挂至少两台设备,而这两台设备的ip地址都是lan侧地址,而lan侧设备又要访问公网,这就需要SNAT大展身手了,通过将lan侧发送的ip数据包的源ip地
上两篇文章完成了spi总线、设备、驱动、master的分析,下面我们分析下spi模块提供的通信方法,通过该通信方法,即可完成cpu与具体spi设备之间的通信(借助spi controller)。其实,spi_sync、spi_async的实现也不是太复杂,但是由于在新版内核中,针对spi_sync,spi核心提供了基于worker线程的处理方式,基于该方式则所有spi ...
Linux softirq一、 软中断产生的原因软中断:用于有效的实现内核的延期操作,也是底半部机制tasklet的基础二、 数据结构1)softirq_action该结构是软中断的核心数据结构,代表软中断处理函数。struct softirq_action{void (*action)(struct softirq_action *);};2)下面
在之前几篇文章中,我们介绍了文件系统的注册、超级块的创建、dentry、inode创建、文件描述符,以及这些结构体之间的关联,文件系统模块与进程模块之间的关联,本文介绍dev文件系统,该文件系统涉及设备文件的创建、访问以及对设备文件的访问操作等。本篇文章主要包括如下小节(代码基于linux3.10版本)1.设备文件系统的注册2.设备文件系统的挂载3.设备文件的创建...
对于网桥端口设备,底层接收到数据以后,经过网卡驱动的接收函数处理以后,最终会调用函数netif_receive_skb,而netif_receive_skb在对数据包头进行相关处理以及对ptype_all链上注册的相关协议进行调用deliver_skb处理后(包括PF_PACKET类型的rawsocket处理),会调用handle_bridge进入网桥处理,而其会调用br_handle_frame
本文主要是总结分析,在前面两节中,我们根据linux2.6.32中
通过上面一节的分析我们知道,我们通过iptables -A操作添加的规则,都会保存在一个xt_table->private->entries[]中,所以当数据到来后,协议栈执行NF_HOOK操作时,肯定需要遍历xt_table->private->entries中的规则,找到一个匹配的规则,然后对进来的数据包执行该规则的target操作。从xt_table的通用性,我们可以猜到,肯定会有一个通用的
前面分析了igmp snooping的实现,最近由于工作比较忙,还有就是个人比较懒的缘故一直没有分析igmpproxy的实现,今天开始分析igmpproxy的实现。 我们首先还是从数据结构开始分析之路。 1. ip_mc_liststruct ip_mc_list { structin_device *interface;//三层接口
上面一节分析了arp协议的初始化过程。本节主要是arp数据包的处理流程,在arp初始化时,通过调用dev_add_pack将arp协议的接收处理函数添加到了三层协议数据包处理函数相关的hash链表ptype_base中(关于三层协议数据包处理函数相关的hash链表,请参考文档)。当底层接收到属于本机的arp数据包时,就会调用arp_rcv进行后续处理。 下面我们就分析arp_rcv以及与
上一节分析了ip层hook回调函数的注册以及调用流程,本节我们就开始分析每一个模块的具体实现。 工欲善其事必先利其器,一个功能模块的代码实现与其数据结构的设计有很大的关系,所以我们本节主要是分析table、rule、match、target相关的数据结构,争取本节能把数据结构的定义以及数据结构之间的关系分析明了。 在分析table、rule、match、target之前,先把它们之间的联系







