码迷,mamicode.com
首页 >  
搜索关键字:深入理解linux网络技术内幕    ( 22个结果
深入理解Linux网络技术内幕——IPv4 概念
我们可以大致看出数据在IPv4协议中的流向, 接收报文 设备驱动处理完硬件介绍到的数据后,IPv4协议的ip_rcv函数(net_receive_skb调用)得到了属于IPv4的报文,接着调用ip_rcv_finish对报文进行分析。判断是该转发还是交付本地上层协议。 如果是本地报文,则传给ip_local_deliver处理,如果是转发,那就交付ip_forward进行转发处理。 发送报文 对于接收到的属于转发的报文(来自ip_forward_finish)以及L4层传下来的报文,需要进行分析后传给...
分类:系统相关   时间:2015-05-13 16:48:26    阅读次数:166
深入理解Linux网络技术内幕——帧的接收与传输
帧的接收 NAPI与netif_rx(非NAPI) Linux内核获取网络帧到达通知的方式有两中:中断和轮询。(中断值设备向内核发出中断,轮询指linux内核主动轮询设备) 在早起的linux内核中,网络帧主要以中断的方式通知linux内核帧的到达。这是非NAPI方式。 现在的操作系统中,linux内核使用NAPI方式, 获取帧到达的消息。NAPI混合使用了中断和轮询。 netif_rx...
分类:系统相关   时间:2015-04-02 15:16:42    阅读次数:268
深入理解Linux网络技术内幕——协议处理函数
网络帧在进入网络层时,需要区分不同的网络协议进行处理,这就需要涉及协议处理函数。 首先我们从驱动接收到一个数据帧,分析数据帧在协议栈中自下而上的传输流程。 设备驱动程序在接收到一个数据帧时,会将其保存在一个sk_buff缓冲区数据结构,并对其进行初始化。 struct sk_buff { ...... __be16 protocol:16; ...... } 在这个缓...
分类:系统相关   时间:2015-04-02 15:12:02    阅读次数:317
深入理解Linux网络技术内幕——中断与网络驱动程序
接收到帧时通知驱动程序     在网络环境中,设备(网卡)接收到一个数据帧时,需要通知驱动程序进行处理。有一下几种通知机制: 轮询:     内核不断检查设备是否有话要说。(比较耗资源,但在一些情况下却是最佳方法) 中断:     特定事件发生时,设备驱动程序代表内核指示设备产生硬件中断,内核中断其它活动满足设备的需要。多数网络驱动程序使用中断。 中断期...
分类:系统相关   时间:2015-03-19 14:51:14    阅读次数:200
深入理解Linux网络技术内幕——虚拟设备初始化小结
概述 虚拟设备是建立在一个或者多个真实设备上的抽象。虚拟设备和真实设备的对应关系时多对多的,但是并不是所有的组合都能被定义,或者被内核所支持。 初始化: 与真实设备一样,虚拟设备初始化时,被分配了net_device结构(注:别名设备是不需要分配net_device的)。通常,虚拟设备的net_device所包含的函数指针都是指向包裹函数,这些包裹函数都包含了相关的真实设备所使用的函数指针。...
分类:系统相关   时间:2015-02-11 10:53:22    阅读次数:188
深入理解Linux网络技术内幕——设备的注册与初始化(二)
设备注册于设备除名     设备注册与设备除名一般有 register_netdev和unregister_netdev完成。这两个是包裹函数,负责上锁,真正起作用的是其调用的register_netdevice和unregister_netdevice。参见:net/core/dev.c。     下图描述了设备注册过程中的一些状态变化     状态的改变会用到...
分类:系统相关   时间:2015-02-08 11:36:59    阅读次数:578
深入理解Linux网络技术内幕——设备的注册于初始化(一)
副标题:设备注册相关的基本结构的原理框架 设备注册与删除时间     设备在下列两种情况下进行注册: 1)加载NIC驱动时 2)插入热插拔设备时     这里NIC与热插拔设备有些不同。a.对于非热插拔NIC来说,NIC的注册是伴随着其驱动的发生的,而NIC可以内建到内核,也可以作为模块载入,如果内建入内核,则NIC设备和初始化均发生在引导时,如果NIC作为模块加载,则NIC的注册和...
分类:系统相关   时间:2015-02-06 13:20:15    阅读次数:298
深入理解Linux网络技术内幕——内核基础架构和组件初始化
引导期间的内核选项     Linux允许用户把内核配置选项传给引导记录,再有引导记录传给内核,以便对内核进行调整。     start_kernel中调用两次parse_args,用于引导期间配置用户输入数据。     parse_param是一个函数,用于解析输入的内核配置选项的参数字符串。字符串的格式为:name_variable=value。寻址特定关键字,并调用对应的函数。...
分类:系统相关   时间:2015-02-05 16:23:26    阅读次数:273
深入理解Linux网络技术内幕——PCI层和网络接口卡
概述     内核的PCI子系统(即PCI层)提供了不同设备一些通用的功能,以便简化各种设备驱动程序。     PCI层重要结构体如下: pci_device_id     设备标识,根据PCI标志定义的ID,而不是Linux本地的。 pci_dev     类似于网络设备的net_device。每个PCI会被分配一个net_dev实例。 pci_driv...
分类:系统相关   时间:2015-02-05 15:04:25    阅读次数:298
深入理解Linux网络技术内幕——网络设备初始化
概述    内核的初始化过程过程中,与网络相关的工作如下所示:     内核引导时执行start_kernel,start_kernel结束之前会调用rest_init,rest_init初始化内核线程init(在Linux3-12中为kernel_init)。 asmlinkage void __init start_kernel(void) { ... parse...
分类:系统相关   时间:2015-02-03 15:05:14    阅读次数:264
22条   上一页 1 2 3 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!