
Linux网络编程
文章平均质量分 74
sfrysh
嵌入式开发,本博客大部分资源来自网络,为学习交流之用,如有侵犯你您的版权,实属无心,请给本人留言,本人会及时删除。
展开
-
Linux网络协议栈(三)——网络设备(1)
<br />网络设备(network device)是内核对网络适配器(硬件)的抽象与封装,并为各个协议实例提供统一的接口,它是硬件与内核的接口,它有两个特征:<br />(1) 作为基于硬件的网络适配器与基于软件的协议之间的接口;<br />(2) 内核协议栈异步输入输出点。<br />记住:网络设备软件对硬件的抽象<br />网络设备与协议和网络适配器的关系如下:<br /><br />1、 net_device接口(net_device Interface)<br /> 网络转载 2010-07-08 15:46:00 · 1406 阅读 · 0 评论 -
Linux下getsockopt/setsockopt 函数说明
功能描述: 获取或者设置与某个套接字关联的选 项。选项可能存在于多层协议中,它们总会出现在最上面的套接字层。当操作套接字选项时,选项位于的层和选项的名称必须给出。为了操作套接字层的选项,应该 将层的值指定为SOL_SOCKET。为了操作其它层的选项,控制选项的合适协议号必须给出。例如,为了表示一个选项由TCP协议解析,层应该设定为协议 号TCP。用法:#include #incl转载 2010-05-24 09:46:00 · 847 阅读 · 0 评论 -
Linux网络协议栈之网络设备管理
<br />成都的天气好像越来越好了,前几天还穿着穿着外套直打哆嗦,到今天已经“拨开阴云见太阳”,暖洋洋的,心情也暖洋洋的。暖和的正好想睡觉。打个呵欠,把网络设备管理这部份总结下吧。 <br /> Linux素以优秀的网络管理能力而著称,linux为何具有这么高的效率?我们从网络设备的管理说起。<br /> Linux为何要对网络设备单独管理呢?这是因为。协议栈很多地方都会涉及到网络设备。小至IP地址的设置。大至IP路由的更新。都离不开高效的网络设备管理。将网络设备单独管理可以提高效率转载 2010-07-14 20:59:00 · 1107 阅读 · 0 评论 -
Ifconfig 如何获得流量统计信息
<br /> <br />本文旨在讲解 Ifconfig 流量信息的获得。将通过 Ifconfig 代码阅读来跟踪流量统计的来 源,这将贯通网络模块,proc文件系统,到硬件设备驱动来探寻这些信息的来源和流向。Ifconfig<br />Ifconfig是 net-tools的一个组件。 net-tools 为 GNU/Linux 提供控制网络子系统的很多 重要工具(arp, ifconfig, netstat...),他几乎成为所有发行版必备的软件。<br />来看他的输出情况。包含了基本的网卡信息,转载 2010-07-14 09:25:00 · 15157 阅读 · 1 评论 -
内核中的TCP的追踪分析-9-TCP(IPV4)的socket的地址绑定--续2
<br />接着昨天的继续分析,我们接着从上一节最后部分继续开始今天的内容 :<br />我是无名小卒,转载的朋友请注明出处,请不要抄袭做为它用,谢谢!<br /><br /> 在内核中CONFIG_NET_NS配置选项是为了让用户自定义自己的网络空间结构,即上面的net结构,可以看出2.6.26内核的灵活性,但是我们一般在内核中不会配置该项,所以这里应该是取得init_net,这个结构是在前一节分析的那样在do_one_initcall()机制中调用了从pure_initcall(net_ns_转载 2010-07-16 17:34:00 · 2981 阅读 · 0 评论 -
网络设备支持函数
<br />7.网络设备支持<br /> <br />驱动程序的支持<br />函数名<br />功能<br />函数形成<br />参数<br />描述<br />init_etherdev<br />注册以太网设备<br />truct net_device * init_etherdev (struct net_device * dev, int sizeof_priv)<br />dev为要填充的以太网设备结构,或者要分配一个新的结构时为NULL,sizeof_priv是为这个以太网设备要分配的额外转载 2010-07-14 21:14:00 · 1248 阅读 · 0 评论 -
内核网络设备的注册与初始化
首先来看如何分配内存给一个网络设备。 <br /><br />内核通过alloc_netdev来分配内存给一个指定的网络设备: <br /><br />Java代码 #define alloc_netdev(sizeof_priv, name, setup) / alloc_netdev_mq(sizeof_priv, name, setup, 1) struct net_device *alloc_netdev_mq(int sizeof_priv, const char *name,转载 2010-07-15 11:37:00 · 4659 阅读 · 0 评论 -
ifconfig 的简单实现
<br />一般,用户在shell中使用ifconfig命令对网络接口进行参数配置,及接口的打开,关闭等操作。ifconfig实现网络接口配置的原理在于代表网络接口的结构体struct net_device的成员ip_ptr。前文已经讲过,ip_ptr实际指向的是一个结构体struct in_device,in_device有一个成员struct in_ifaddr *ifa_list,它指向一个链表,链表的每一项代表一个IP地址。对这个链表操作即可实现对网络接口的配置。<br /> 网络接口的操作命转载 2010-07-09 17:45:00 · 4135 阅读 · 1 评论 -
Linux网络协议栈之网络设备管理
<br />Linux为何要对网络设备单独管理呢?这是因为。协议栈很多地方都会涉及到网络设备。小至IP地址的设置。大至IP路由的更新。都离不开高效的网络设备管理。将网络设备单独管理可以提高效率! 每个网络设备,在linux中都会对应一个数据结构,net_device。 就从这个结构说起Linux 2。6。21中,对net_device定义如下:struct net_device<br />{<br /> //设备的名称,例如常见的“eth0”等<br /> char name[IFNAM转载 2010-07-09 16:22:00 · 1190 阅读 · 0 评论 -
net_device 分析
<br />本文档的Copyleft归popy所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,<br />严禁用于任何商业用途。<br />gtalk: mypopy at gmail.com <br />来源:barrypopy.cublog.cn<br />1.不算短的一个引子<br />很早之前,就说要分析Linux网络部分的代码,可惜话是放出去了,却迟迟不能兑现,没什么信<br />用,今天没什么事情,看看Netlink的用法和实现,看看Linux下的QoS的实现,又看到了net转载 2010-07-09 16:11:00 · 1734 阅读 · 0 评论 -
net_device分析
<br />本文档的Copyleft归popy所有,使用GPL发布,可以自由拷贝,转载,转载时请保持文档的完整性,<br />严禁用于任何商业用途。<br />gtalk: mypopy at gmail.com <br />来源:barrypopy.cublog.cn<br />1.不算短的一个引子<br />很早之前,就说要分析Linux网络部分的代码,可惜话是放出去了,却迟迟不能兑现,没什么信<br />用,今天没什么事情,看看Netlink的用法和实现,看看Linux下的QoS的实现,又看到了net转载 2010-07-09 10:28:00 · 3470 阅读 · 0 评论 -
net_device结构体
<br /> net_device结构保存与网络设备相关的所有信息。每一个网络设备都对应一个这样的结构,包括真实设备(例如以太网卡)和虚拟设备(比如bonding或VLAN)。<br />Bonding,也被称作EtherChannel(Cisco的术语)和trunking(Sun的术语),允许把一定数量的接口组合起来当作一个新的设备。这个特性在系统需要把多个点对点设备组合起来以获取更高带宽时有用。新设备的速度可以成倍增加,一般来说, 新设备的吞吐量是单个设备吞吐量的总和。<br />VLAN代表虚拟转载 2010-07-09 10:00:00 · 8960 阅读 · 0 评论 -
struct net_device 详解3
<br />/*<br /> * The DEVICE structure.<br /> * Actually, this whole structure is a big mistake. It mixes I/O<br /> * data with strictly "high-level" data, and it has to know about<br /> * almost every data structure used in the INET module.<br /> *<br />转载 2010-07-09 09:55:00 · 2832 阅读 · 0 评论 -
struct net_device 详解2
<br />相关文件:<br />linux/include/linux/netdevice.h<br />linux/drivers/net/Space.c<br />linux/include/net/iw_handler.h<br /><br />char name[IFNAMSIZ];<br />在space.c文件中初始化。<br /><br />unsigned long mem_end;<br />unsigned long mem_start;<br />设备相关的共享内存区<br /><b转载 2010-07-09 09:54:00 · 1922 阅读 · 0 评论 -
struct net_device 详解1
<br /> 结构体net_device代表了一个网络设备接口,它是我们理解网络设备驱动程序的关键。这里,我们选择其中的一些重要成员,一一作详细分析,并结合以太网设备,看看Linux内核是如何为以太网设备提供结构体中某些成员的缺省值的。<br /> 在Linux内核源代码中是这样为这个结构体作注释的:实际上,这个结构体是一个很大的错误,它把I/O数据和更高层的数据混合在一起,而且它几乎必须知道INET模块中的每个数据结构。<br /> 毫无疑问,这是一个巨型结构体。但我们为编写网络设备驱动转载 2010-07-09 09:43:00 · 4238 阅读 · 0 评论 -
Linux网络协议栈(三)——网络设备(2)
<br />2.1、网络设备的注册与注销<br />注册网络设备发生在下列情形: <br />(1)加载网卡驱动程序 <br /> 网卡驱动程序如果被编译进内核,则它在启动时被初始化,在运行时被作为模块加载。无论初始化是否发生,所以由驱动程序控制的网卡都被注册。 <br />(2)插入可热拔插网络设备 <br /> 当用户插入一块热拔插网卡,内核通知其对应的驱动程序以注册设备。(为了简单化,我们假定设备驱动程序已经被加载)。<br /><br />两个主要的情形会导致设备注销:<br />(1)卸载网卡转载 2010-07-08 15:52:00 · 1139 阅读 · 0 评论 -
linux socket 详解
头文件:sys/socket.h相关结构体:struct sockaddr{ unsigned short sa_family; //地址族 char sa_data[14]; //14字节协议地址};struct sockaddr_in{ short int sin_family; //地址族 unsigned short int sin_port; //转载 2010-05-24 09:53:00 · 940 阅读 · 0 评论