`

linux网络代码结构

阅读更多

linux网络代码结构:四层
1、设备驱动,Linux/drivers/net/3c501.c
2、网络核心,linux/net/core/dev.c,struct net_device,
3、网络协议族,包括tcp/ip、ipx等协议,linux/net/ipv4
4、网络接口socket层,linux/net/socket.c

 

 

1->2: 第一层调用netif_rx()(net/core/dev.c 1214行) 通过*dev_base指向的设备链,把数据传递给第二层。
3->2: 网络接口核心层通过dev_queue_xmit()(net/core/dev.c,line975)这个函数向上层提供统一的发送接口,也就是说无论是IP,还是ARP协议,通过这个函数把要发送的数据传递给这一层,想发送数据的时候就调用这个函数就可以了。dev_queue_xmit()做的工作最后会落实到dev->hard_start_xmit(),而dev->hard_start_xmit()会调用实际的驱动程序来完成发送的任务。例如上面的例子中,调用dev->hard_start_xmit()实际就是调用了el_start_xmit()。
2->3: IP协议接收数据是通过ip_rcv()函数的,而ARP协议是通过arp_rcv()的,网络接口核心层只要通过这个数组就可以把数据交给上层函数了。
 通过dev_add_pack注册第三层接收消息的函数。
3->4: 在linux/net/ipv4/protocol.c,往数组inet_protos[MAX_INET_PROTOS] 里面添加协议是通过函数inet_add_protocol()实现的,删除协议是通过 inet_del_protocol()实现的。在linux/net/ipv4/protocol.c的上部,我们可以看到其它协议层的处理函数是tcp_v4_rcv(), igmp_rcv(), udp_rcv(), icmp_rcv()。
4->3: ???


IP层处理方式:
1、本地
2、转发
3、不可能

dev_add_pack()是注册ip层内容的,及网络核心层在什么条件下把消息发给网络协议层;
inet_add_protocol()是注册传输层的,包含tcp、icmp、igmp;
socket_register()是注册socket的。

 

 

 

参考《linux网络接口的源码结构》:http://blog.csdn.net/wangbangjie/archive/2006/01/26/588809.aspx

分享到:
评论

相关推荐

    Linux网络体系结构 Linux内核中网络协议的设计与实现

    《Linux网络体系结构:Linux内核中网络协议的设计与实现》这本书深入探讨了Linux操作系统内核中的网络架构和协议栈的实现。Linux网络体系结构是理解操作系统如何处理网络通信的关键,它涉及到网络协议的各个层次,...

    linux内核代码结构图

    Linux内核的代码结构复杂而有序,便于开发者理解和维护。以下是对"Linux内核代码结构图"的详细解析: 1. **目录结构**: Linux内核的源码组织成多个层次的目录,每个目录代表不同的功能领域。主要目录包括`arch`...

    嵌入式Linux网络体系结构设计与TCP/IP协议栈.part5

    本书涵盖了Linux嵌入式系统开发中网络体系结构实现的主要内容。[1] 全书共分12章,第1章概述Linux内核组件与内核技术特点,以及网络体系结构实现应用到的内核开发的基础知识。第2~5章在介绍了实现网络体系结构、...

    linux网络编程 代码 加电子书

    "Linux网络编程+宋敬彬+孙海滨+源代码"这可能是一本关于Linux网络编程的电子书,由宋敬彬和孙海滨编著。电子书通常包含详细的理论解释、示例代码和实践指导,对于学习者来说是宝贵的参考资料。配合源代码,读者可以...

    嵌入式Linux网络体系结构设计与TCP/IP协议栈.part3.rar

    本书涵盖了Linux嵌入式系统开发中网络体系结构实现的主要内容。[1] 全书共分12章,第1章概述Linux内核组件与内核技术特点,以及网络体系结构实现应用到的内核开发的基础知识。第2~5章在介绍了实现网络体系结构、...

    Linux 内核代码修改

    1. **理解内核结构**:首先,你需要了解Linux内核的基本架构,包括模块化设计、进程管理、内存管理、中断处理、文件系统和网络协议栈等。这将帮助你找到正确的代码位置进行修改。 2. **获取源代码**:从官方网站...

    最早的linux源代码

    3. **学习价值**:对于初学者,阅读Linux 0.11源代码可以帮助理解操作系统的基本结构和工作流程,如中断处理、进程管理、内存管理、文件系统等。这些基础知识是理解和开发任何操作系统的基石。 4. **关键组件**: ...

    linux源代码分析

    《Linux源代码分析》是IT领域中一本深入探讨操作系统内核的权威著作,它主要针对的是Unix源代码,因为Linux与Unix在很多设计思想和实现上有着深厚的渊源。Unix作为历史上最早的多用户、多任务操作系统之一,其源代码...

    linux源代码完全解析

    书中会详细分析Linux的VFS(虚拟文件系统)层次结构,以及具体的文件系统类型如EXT4的工作原理。 7. **网络协议栈**:Linux内核实现了完整的TCP/IP协议栈,包括网络接口层、IP层、传输层(TCP/UDP)和应用层协议。...

    linux网络设备驱动示例代码

    本文将深入探讨Linux网络设备驱动的基本结构、工作原理以及示例代码解析。 首先,Linux网络设备驱动的主要职责是处理硬件层面的数据收发,包括初始化硬件、配置硬件参数、设置中断处理、接收数据帧并将其提交到协议...

    Linux内核源代码的阅读及相关工具介绍

    ### Linux内核源代码的阅读及相关工具介绍 #### 引言 随着Linux系统的广泛应用与不断发展,深入了解其内部机制变得越来越重要。而理解Linux的核心部分——内核,最直接有效的方式便是阅读并分析其源代码。很多人对...

    linux 经典源代码

    源代码中包含了文件系统的工作原理,包括文件的创建、读取、写入、删除操作,以及目录结构的管理。 4. **进程管理**:在Linux中,进程是执行中的程序实例。源代码揭示了如何创建、管理和结束进程,以及如何处理进程...

    嵌入式Linux网络体系结构设计与TCP/IP协议栈.part4.rar

    本书涵盖了Linux嵌入式系统开发中网络体系结构实现的主要内容。[1] 全书共分12章,第1章概述Linux内核组件与内核技术特点,以及网络体系结构实现应用到的内核开发的基础知识。第2~5章在介绍了实现网络体系结构、...

    linux示例代码

    2. **Linux内核编程**:"linux示例代码"可能包含了各种Linux内核模块的示例,如设备驱动、文件系统、网络协议栈等。这些代码可以帮助我们理解内核工作流程,学习如何编写和加载内核模块,以及如何调试和优化内核代码...

    LINUX内核源代码情景分析_linux_

    《LINUX内核源代码情景分析》一书深入探讨了Linux操作系统的核心——内核的源代码,揭示了其内部机制和工作原理。Linux内核是开源软件的典范,它的设计和实现为研究操作系统提供了宝贵的资源。以下是根据标题、描述...

    linux源代码分析:Linux操作系统源代码详细

    ### Linux源代码分析 #### 知识点概览 本文主要围绕Linux操作系统的源代码进行深入剖析,旨在帮助读者理解Linux内核是如何实现其核心功能的。这些功能包括但不限于:多任务处理、内存管理、进程调度等。我们将通过...

    Linux 2.4.0源代码

    Linux 2.4.0源代码是Linux操作系统发展历史中的一个重要里程碑,它是Linux社区于2001年发布的内核版本。这个版本引入了许多新特性,增强了系统的稳定性和性能,为后来的2.6.x系列奠定了基础。在这个版本中,我们可以...

    linux源代码

    在深入探讨这个版本的源代码之前,我们先来了解一下Linux内核的基本结构和主要组成部分。 Linux内核主要包括以下几个关键模块: 1. **进程管理**:内核负责创建、销毁和调度进程。在Linux 2.4.18中,调度器是O(1)...

Global site tag (gtag.js) - Google Analytics