linux网络驱动架构,Linux网络体系架构和网卡驱动设计
Linux网络体系架构
1、Linux的协议栈层次
2、Linux的网络子系统架构
Linux的协议栈层次
Linux的优点之一在于它丰富而稳定的网络协议栈。其范围从协议无关层(例如通用socket层接口或设备层)到各种具体的网络协议实现。
对于网络的理论介绍一般采用OSI(Open System Interconnection)模型,但是Linux中网络栈的介绍一般分为四层Internet模型。
网络接口层—>网际层—>传输层—>应用层
网络接口层: 把数据链路层和物理层合并在一起,提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。
网际层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。重要的网络层协议包括:ARP(地址解析协议)、ICMP(Internet 控制消息协议)和IP(网际协议)
传输层的功能包括:格式化信息流、提供可靠传输。传输层包括TCP和UDP
应用层的主要任务是服务于应用,如利用FTP传输一个文件。常见的应用层协议有:HTTP、FTP、Telnet等。Linux服务器的配置文档主要针对应用层中的协议。
Linux的网络子系统架构
从上往下:System call interface—>Protocol agnostic interface—>Network protocols —>Device agnostic interface—>Device drivers
System call interface为用户空间的应用程序提供了一种访问内核网络子系统的方法—socket系统调用。
Protocol agnostic interface提供了一种通用方法来使用传输层协议。实现一组通用函数来访问各种不同的协议,通过socket实现。Linux中的socket使用struct sock来描述,这个结构包含了特定socket所需要的所有状态信息,还包括socket 所使用的特定协议和在socket上可以执行的一些操作。
Network protocols用于实现各种具体的网络协议,如:TCP、UDP等
Device agnostic interface提供了协议与设备驱动通信的通用接口。将协议与各种网络设备驱动连接在一起。这一层提供一组通用函数供底层网络设备驱动程序使用,让它们对高层协议栈进行操作。首先,设备驱动程序可能通过调用register_netdevice或unregister_netdevice在内核中进行注册或注销。调用者先填写net_device结构,然后传递这个结构进行注册。内核调用它的init函数(如果
linux网络驱动架构,Linux网络体系架构和网卡驱动设计相关推荐
- 在linux(ubuntu16.04)系统上安装RTL8822CE网卡驱动
在linux(ubuntu16.04)系统上安装RTL8822CE网卡驱动 1.下载8822CE驱动https://github.com/alanfox2000/realtek-linux/tree/ ...
- w311m linux驱动下载,腾达(Tenda)W311M V3.0网卡驱动(LINUX)
这是腾达(Tenda)W311M V3.0网卡驱动(LINUX)下载,支持Soft AP功能. 软件说明 支持Soft AP功能. 硬件介绍 W311M是一款采用11N无线技术,无线传输速率达150M ...
- 没有网络的计算机怎么装驱动程序,装机后电脑没有网络的情况下,驱动人生6教你首先将网卡驱动安装好...
驱动人生6在管理驱动.更新驱动等方面给童鞋们提供了很多方便,但如果童鞋们的电脑在没联网的情况下,却不能用驱动人生6来更新电脑驱动.驱动人生的工程师们不断努力,日夜开发,带网卡版驱动人生6终于发布官网抢 ...
- linux网卡驱动离线安装_linux系统如何安装网卡驱动
linux系统如何安装网卡驱动 很多初学者都觉得能够在自己的笔记本上安装linux系统是一件很酷的事情,结果两个小时安装好linux系统,却发现缺少各种驱动, 为了让各位少走一些弯路,小编在这里把li ...
- 【Linux】ubuntu16.04/18.04安装I219-V有线网卡驱动
intel219网卡的linux驱动,ubuntu16.04/18.04安装I219-V有线网卡驱动问题解决方法(示例代码) 安装ubuntu16.04/18.04 LTS后无网络连接的解决方法: 1 ...
- xp 计算机没装网络控制器,XP系统如何安装没有线网卡驱动?
XP系统如何安装没有线网卡驱动?? 新安装的电脑要安装没有线网卡驱动才能连上WiFi网络,这样电脑才能正常上网,也有这样的情况:电脑没有线网卡驱动需要升级或者更新.有一些朋友大概还不会安装没有线网卡驱 ...
- Linux查网卡驱动版本,centos查看系统版本,网卡驱动和版本信息。
1.uname -a (Linux查看版本当前操作系统内核信息)[root@iZ28q5krmouZ logs]# uname -a Linux iZ28q5krmouZ 2.6.32-573.22 ...
- 从零开始之驱动发开、linux驱动(四十五、DM9000网卡驱动)
这里我们肯定不是要从零开始编写网卡驱动的. 因为编写网卡驱动时,需要网络基础知识,特别是网络底层的知识,目前还没学. 将来我可能选择在,网络,图像视屏,或USB这个三个方向,选择一个深入钻研. 这里主 ...
- 从零开始之驱动发开、linux驱动(四十四、虚拟网卡驱动)
网卡驱动的书写格式很简单 1.申请一个网卡设备结构体 2.设置这个结构体,硬件相关初始化 3.注册这个网卡设备 参考的韦东山老师的视屏,代码如下 #include <linux/module.h ...
- 华为网卡linux驱动安装驱动安装,Ubuntu server 16.04安装网卡驱动方法
Ubuntu server 16.04安装网卡驱动方法 Ubuntu server 16.04安装,发现无网卡 $ ifconfig -a 检查 /etc/udev/rules.d/下为空 $ ls ...
最新文章
- Java中Math类常用函数总结
- 大学python实训总结-【实训总结】大学生python相关实训总结
- python定义字典列表_[Python基础]五、列表、元组和字典
- optee的RPC设计(模型)详解
- 【中级软考】函数参数传递传值与传引用的区别(global关键字,函数内定义全局变量)
- 操作系统实验报告8:进程间通信—消息机制
- C# ref与out关键字解析
- Ubuntu 9.04下让Swing和Swt编写的Java桌面程序运行
- python装饰器传递参数_Python装饰器高级版—Python类内定义装饰器并传递self参数...
- redis依赖_请勿过度依赖 Redis 的过期监听
- php用户注册重复_php如何禁止重复注册用户名
- python编写学生管理系统设计感想-python案例----学生管理系统(实现学员的增删改查功能)...
- 使用idea格式化xml中的SQL
- sql循环语句在update中的应用
- 判断是否为 retina屏幕
- 使用video speed controller给视频加速
- 游戏策划在游戏的开发过程中扮演什么角色?——游戏策划入门
- Dynamics crm2013 IFD部署后启用多组织
- 【LeetCode】买卖股票的最佳时机含手续费 [M](动态规划)
- 百度版ChatGPT:文心一言发布会盛大召开!
热门文章
- LeetCode简单题之判断能否形成等差数列
- LeetCode简单题之矩阵对角线元素的和
- LeetCode简单题之卡牌分组
- GPU上的快速光谱图分区
- View的Touch事件分发(一.初步了解)
- linux7怎样搭建zabbix,Centos7.0 搭建Zabbix环境
- linux locale文件,Linux 怎样修改locale语言设置
- RxJava firstElement 与 lastElement 以及 elementAt
- minsdk(API23)deviceSdk(API22)
- 【luogu3398】 仓鼠找sugar [LCA 倍增]