Linux网络驱动--snull

news/2024/11/19 18:42:39/

snull是《Linux Device Drivers》中的一个网络驱动的例子。这里引用这个例子学习Linux网络驱动。

因为snull的源码,网上已经更新到适合最新内核,而我自己用的还是2.6.22.6比较旧的内核。而网上好像找不到旧版的snull。因此结合《Linux Device Drivers》把最新的snull例子移植到2.6.22.6内核中。移植也相对简单,这里也提供移植好的代码。

估计不少网友看到《Linux Device Drivers》的网络驱动部分,一脸懵逼,包括我自己,不理解作者设计这个例子的真正目的,尽管有配图,仍然懵懂,甚至不知道为什么会用到6个IP地址。如图:

 

其实作者的本意是想通过虚拟网卡来模拟实际的网卡和外部的网络设备的通信来讨论网络驱动。通过其中任何一个网络接口(sn0或sn1)发送数据,都在另一个网络接口(sn0或sn1)接收到。

因为sn0和sn1都不在同一个网段,所以sn0和sn1之间直接互ping是不行的,这中间必须必须做点转换。

例子:

理论上local0和remote0只能互ping,因为他们都在同一个网段:192.168.0.0,但事实上,local0在发出数据之后,local0的第3个字节最低有效位改取反,就变成了remote1,remote1的数据才能到达local1,因为他们在同一段


http://www.ppmy.cn/news/803673.html

相关文章

在数据驱动下机械故障诊断的一些方法

机械故障是风力发电设备、航空发动机、高档数控机床等大型机械装备安全可靠运行的“潜在杀手”。故障诊断是保障机械装备安全运行的“杀手锏”。由于诊断的装备量大面广、每台装备测点多、数据采样频率高、装备服役历时长,所以 获取了海量的诊断数据,推动…

OPENWRT MT7628 驱动移植WIFI折腾记

本人所写的博客都为开发之中遇到问题记录的随笔,主要是给自己积累些问题。免日后无印象,如有不当之处敬请指正(欢迎进扣群 24849632 探讨问题),如需转载,请复制全部内容包括此行; 我手上的MT7628开发板编译后,没有无线接口,检查menuconfig后,发现MT7628需要选中kmod…

【Linux 菜鸡中心】linux 驱动模块卸载, rmmod 报错 “Segmentation fault (core dumped)”

【Linux 菜鸡中心】驱动模块卸载,rmmod 报错 “Segmentation fault (core dumped)” 【引子】开此专栏主要记录,Linux开发过程中遇到的各种菜鸡问题,常执鞭大笑以策之。 【菜鸡简述】:写一个linux驱动模块时,insmod正常…

linux alsa驱动讲解

转载自:https://codertw.com/%E7%A8%8B%E5%BC%8F%E8%AA%9E%E8%A8%80/477412/ 程式前沿 幫助程式設計師解決問題,增加專業技能,提升個人能力與未來世界競爭力。 程式語言前端開發IOS開發Android 開發雲端運算人工智慧伺服器搜尋資料庫軟體開發…

PostgreSQL 10.23 安装图文教程

目录 一、PostgreSQL介绍 二、下载安装包 三、安装教程 今天给大家分享Win10操作系统安装PostgreSQL 10.23图文教程,希望对大家学习PostgreSQL 能有所帮助! 一、PostgreSQL介绍 PostgreSQL(简称Postgres)是一款功能强大的开源…

uuid-golang中的使用---借鉴使用官网的办法--推荐

写在最前面的话,golang因为是国外开发的,官网,github都是网速卡或者不能使用的,这个时候可以使用国内的,搜索软件包或者下载 https://gitee.com/ 如果可以使用的话,建议从下面两个网站使用, …

苹果计算机怎么隐藏应用,苹果电脑怎么隐藏界面图标

苹果Mac如何隐藏桌面的设备图标?如果你是一个极简主义者,你一定不希望 OS X 的桌面太过于凌乱,你可以通过文件夹将文件、照片整理起来,你也可以让 Dock 隐藏,但是当你插入外接驱动、USB 驱动以及其它硬件设备的时候,桌…

mac笔记本电脑外接显示器没有声音

用mac 笔记本电脑办公,因为屏幕太小而需要外接到大屏幕的显示器中,但是可能会出现没有声音的问题,那么通过以下设置就可以解决了。 1、打开系统偏好设置 2、选择声音 3、选择输出>>>内置扬声器 这时候播放音乐,笔记本就…