首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何学习 Linux 内核网络协议栈

协议栈的细节 下面将介绍一些内核网络协议栈中常常涉及到的概念。...sk_buff 内核显然需要一个数据结构来表示报文,这个结构就是 sk_buff (socket buffer 的简称),它等同于在 中描述的 BSD 内核中的 mbuf...Netfilter Netfilter 是报文在内核协议栈必然会通过的路径,我们从下面这张图就可以看到,Netfilter 在内核的 5 个地方设置了 HOOK 点,用户可以通过配置 iptables...dst_entry 内核需要确定收到的报文是应该本地上送 (local deliver) 还是转发 (forward), 对本机发送(local out) 的报文需要确定是从哪个网卡发送出去,这都是内核通过查询...fib 可以理解为一个数据库,数据来源是用户配置或者内核自动生成的路由。

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

Linux内核学习(一)之Linux内核源码目录

我们今天的文章分享不是拿最新的版本来作为学习的,往往在刚开始学习的时候,都会拿比较经典的linux版本来作为入门学习,入门了后,后面版本的学习就好办了。...这里我们拿linux-2.6.35这个版本来学习入门,那么我们该如何获取它的源码呢,这是大家所关心的,在这个官网里面,暂时没有找到以前的版本下载(有知道的朋友可以告诉一声,这里先谢啦),于是乎,在博客里面找到了一个比较全的...linux版本下载: 网站网址:http://ftp.sjtu.edu.cn/sites/ftp.kernel.org/pub/linux/kernel/ 然后就可以按照自己的需求来下载学习了,这里我在...这个文件就是linux内核特有的内核编译体系需要用到的文件 MAINTAINERS:这个文件主要是介绍了维护人员列表以及如何提交内核更改 Makefile:这个是linux内核的总makefile,整个内核工程用这个...tools:linux中用到的一些有用工具 usr:目录下是initramfs相关的,和linux内核的启动有关 virt:内核虚拟机相关的 小结:大家看了这么文件目录,不要吓到了(要选择性学习),跟我们关系很紧密的就是

10.7K51

Linux内核学习(一)

前言: 大家好,今天给大家分享一下我个人学习Linux内核的总结,由于新的内核版本太过于庞大,说实话,啃不动,然借鉴前人的建议,故开始从早期的Linux0.11版本开始学习。...,所以就变的复杂起来了: 2.6内核版本目录 上面内核版本的源码可以从下面下载: 在线浏览早期内核源码: http://lxr.linux.no/linux-old 0.11版本的内核源码下载: https...://github.com/KrisJiaqiXie/linux_kernel_study 好了,下面我开始大体先讲述linux内核的整体框架图: 一、操作系统的框架: 在我们平时或多或少都接触到不同的操作系统...0.11版本Linux内核的组成: 在0.11版本的Linux,它主要是由五个模块组成: 进程调度模块 进程间通信模块 内存管理模块 文件系统模块 网络接口模块 图片参考Linux内核0.11完全注释...文章资料相关参考: Linux内核0.11完全注释 https://www.bilibili.com/video/BV1tQ4y1d7mo?

1K10

Linux内核修炼之道》 之 高效学习Linux内核

接下来我就通过自己的一些感悟,抛砖引玉来介绍一下如何比较高效的去学习 linux 内核。这些话并不局限于某个部分的内容,很像一句句的口号,我们也可以将它们看作内核学习的大字报。...意思就是我们在学习内核前首先要会用 linux ,依照一个由上至下循序渐进的过程,在能够熟练的使用 Linux 操作系统之后再去研究内核中的实现。这也是 linus 本人的观点。...所以,现在强调第二句话:内核切忌求大求全,选择一点研究的足够深入就很不容易了。...现在我们了解了内核这个朋友的外表,这个时候我们不能像非诚勿扰中的那些拜金女一样只关心外在的信息,我们还要接着了解内核的内涵,也就是内核的体系结构以及内核如何工作的。...了解了内核的体系结构,我们再来看看内核如何工作的。 首先,内核通过系统调用来使得运行在它上面的应用程序可用。

9.9K30

如何编译 Linux 内核

曾经有一段时间,升级 Linux 内核让很多用户打心里有所畏惧。在那个时候,升级内核包含了很多步骤,也需要很多时间。现在,内核的安装可以轻易地通过像 apt 这样的包管理器来处理。...,而编译内核是你的任务 不管出于什么原因,懂得如何编译内核是非常有用的,而且可以被视作一个通行权。...解压源码 在新下载的内核所在的文件夹下,使用该命令来解压内核: tar xvzf linux-4.17-rc2.tar.gz 使用命令 cd linux-4.17-rc2 进入新生成的文件夹。...当命令执行完毕后,使用如下命令来更新 grub: sudo update-grub 现在你可以重启系统并且选择新安装的内核了。 恭喜! 你已经编译了一个 Linux 内核!...它是一项耗费时间的活动;但是,最终你的 Linux 发行版将拥有一个定制的内核,同时你也将拥有一项被许多 Linux 管理员所倾向忽视的重要技能。

6.8K30

如何定制Linux内核

上篇文章我们讲述了如何定制Linux外围文件系统,本文我们来讲讲如何定制Linux内核。...思路对照windows硬件设备管理器检视设备配置:CPU、硬盘控制器、网络控制器、USB控制器(HID、Mass storage);先将裁完的内核搭配原文件系统观察系统能否启动,能启动后再换成自制文件系统...Step1下载最新的稳定版Linux kernel src。...然后输入命令:make install生成编译完成的内核,拷贝到/boot目录下,并修改/boot/grub/grub.conf中小系统对应的内核,即可利用新编译的内核启动。真机效果1....系统支持通过ssh方式访问其他机器图片总结裁剪内核的过程中首先应该把完全能够确定要或不要的模块删掉或加进内核,再慢慢将不确定的模块少量甚至单独加进去,编译安装观察是否能够重启,否则一次性全部裁完发现kernel

2.1K80

Linux系统内核如何升级

有些小伙伴在使用Linux系统时可能会遇到网卡不能使用,亮度不能调节,触摸板不能识别,等等问题,这些都是内核版本过低而导致,只需要把内核升级一下就可以, 下面为大家分享一下Linux系统内核升级方法。...一般更换内核我们是将内核升级为更高版本。...下载内核 目前下载有很多地址,我主要使用以下两个: github上下载linux kernel ubuntu的仓库中下载linux kernel 内核需要下载那些文件?...目前ubuntu 18.04已经使用4.15版本内核linux mint 19也使用4.15版本内核。...总结 至此关于Linux内核升级的教程已经全部完成,大家如果在内核升级过程中遇到问题可以通过评论区将问题提交给我们。

8.5K30

从 0 开始 Linux 内核之 android 内核栈溢出 ROP 利用

把上一篇改了一下名字,换成了从0开始Linux内核,毕竟不是专业搞开发的,所以驱动开发没必要那么深,只要会用,能看懂代码基本就够用了。...本篇开始Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86和arm指令集的Linux系统提权了,arm指令集的基本都是安卓root和iOS越狱,而mips指令集的几乎没啥人在搞...android kernel pwn最初看的是Github上的一个项目[3],不过依赖的是旧内核,估计是android 3.4以下的内核,在3.10以上的有各种问题,所以我自己做了些修改,也开了一个...2.添加包含漏洞的驱动 目的是研究Android提权利用方法,所以是自己添加一个包含栈溢出的驱动,该步骤就是学习如何添加自己写的驱动 上面给了一个我的Github项目,把该项目中的vulnerabilities...把uid和gid的十六进制转换成十进制,发现就是当前进程的权限 使用ROP绕过PXN来进行android提权 既然我们已经知道了怎么修改权限,那么接下来就研究一下如何利用漏洞来提权,因为是研究利用方式,

1.4K30

从 0 开始 Linux 内核之 android 内核栈溢出 ROP 利用

,但是arm指令集有很大的不同,所以踩了很多坑 把上一篇改了一下名字,换成了从0开始Linux内核,毕竟不是专业搞开发的,所以驱动开发没必要那么深,只要会用,能看懂代码基本就够用了。...本篇开始Linux kernel pwn了,而内核能搞的也就是提权,而提权比较多人搞的就是x86和arm指令集的Linux系统提权了,arm指令集的基本都是安卓root和iOS越狱,而mips指令集的几乎没啥人在搞...android kernel pwn最初看的是Github上的一个项目3,不过依赖的是旧内核,估计是android 3.4以下的内核,在3.10以上的有各种问题,所以我自己做了些修改,也开了一个Github...2.添加包含漏洞的驱动 目的是研究Android提权利用方法,所以是自己添加一个包含栈溢出的驱动,该步骤就是学习如何添加自己写的驱动 上面给了一个我的Github项目,把该项目中的vulnerabilities...就不截图了 然后查看cred的信息: [ ] 把uid和gid的十六进制转换成十进制,发现就是当前进程的权限 使用ROP绕过PXN来进行android提权 既然我们已经知道了怎么修改权限,那么接下来就研究一下如何利用漏洞来提权

1.5K00

我的Linux内核学习之路

现在回首看看,接触Linux已经很长时间了。 在大三的时候开始学习Java, 但是一直Java的话, 感觉有点腻, 就尝试找点其他东西来学习。 所以当时就选择学习Linux。...它讲的全面而且深入, 包括计算机组成原理,各个命令和参数的使用, 如何配置等等, 非常详尽。...因为看不懂, 所以下定决心好好学习Linux内核。...因为总是做自己熟悉的东西, 是没有什么进步可言的, 必要的时候必须让自己忍着压力和痛苦, 去学习一些比较难的知识。 一遍不懂就学第二遍, 再学不懂就学第三遍, 总有一天会搞明白。...但是我还会继续学习, 继续读《Linux内核源代码情景分析》, 继续读《深入理解Linux内核》, 继续读《深入Linux内核架构》。

40530

Linux 内核通用链表学习小结

描述 在linux内核中封装了一个通用的双向链表库,这个通用的链表库有很好的扩展性和封装性,它给我们提供了一个固定的指针域结构体,我们在使用的时候,只需要在我们定义的数据域结构体中包含这个指针域结构体就可以了...传统的链表结构 struct node{ int key; int val; node* prev; node* next; } linux 内核通用链表库结构 提供给我们的指针域结构体...内核提供的这个通用链表库里面还有很多其他的接口,这里没有详细的一一举例,有兴趣的可以自己去看看,在源码包 include/linux/list.h 文件里面,不过通过阅读一些源代码确实对我们也有很大的提高...,可以看看高手是如何去设计并实现,还可以学到一些技巧以及对代码细节的掌握~~....以上就是本文的全部内容,希望对大家的学习有所帮助。

1.2K21

Linux内核学习经验总结

开篇 学习内核,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。 内核学习,一偏之见;疏漏难免,恳请指正。...为什么写这篇博客 刚开始内核的时候,不要执着于一个方面,不要专注于一个子系统就一头扎到实际的代码行中去,因为这样的话,牵涉的面会很广,会碰到很多困难,容易产生挫败感,一个函数体中(假设刚开始的时候正在学习某个方面的某个具体的功能函数...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书的容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...内核相当复杂,学习起来很不容易,但是当你学习到一定程度,你会发现,如果自己打算写内核代码,到最后要关注的仍然是API接口,只不过这些API绝大部分是跨平台的,满足可移植性。...更像一个“如何工作”的书,帮助读者理解代码实现。

89220

Linux 内核学习经验总结

来源:Linux爱好者 ID:LinuxHub 开篇 学习内核,每个人都有自己的学习方法,仁者见仁智者见智。以下是我在学习过程中总结出来的东西,对自身来说,我认为比较有效率,拿出来跟大家交流一下。...内核学习,一偏之见;疏漏难免,恳请指正。...为什么写这篇博客 刚开始内核的时候,不要执着于一个方面,不要专注于一个子系统就一头扎到实际的代码行中去,因为这样的话,牵涉的面会很广,会碰到很多困难,容易产生挫败感,一个函数体中(假设刚开始的时候正在学习某个方面的某个具体的功能函数...《深入理解linux虚拟内存》(2.4内核版本),LDD3,《深入理解linux网络技术内幕》,几乎每一个子系统都需要一本书的容量去讲解,所以说,刚开始学习不宜对某个模块太过深入,等对各个子系统都有所了解了...更像一个“如何工作”的书,帮助读者理解代码实现。

2K21

如何切入 Linux 内核源代码

让我们在Linux社区里发出号召:学习内核源码,从学习韩局长开始! 态度决定一切:从初始化函数开始   任小强们说房价高涨从现在开始,股评家们说牛市从5000点开始。...因为这里只是演示如何入手分析,展示的只是一种态度,所以具体的深入分析就免了吧。   对于学习来说,无论是在学校的课堂学习,还是这里说的内核学习,效果好或者坏,最主要取决于两个方面——方法论和心理。...只有在以内核源码为中心,坚持各种学习资源的长期建设不动摇,才能达到韩局长那样的高度,俯视Linux内核世界里的人生百态。   ...下面是一些内核新人所应该阅读的文档。   README   这个文件首先简单介绍了Linux内核的背景,然后描述了如何配置和编译内核,最后还告诉我们出现问题时应该怎么办。   ...《深入理解LINUX网络内幕》   一本讲解网络子系统实现的书,通过这本书,我们可以了解到Linux内核如何实现复杂的网络功能的。

5.8K62

Linux内核如何与硬件交互

本节介绍如何显示有关这两者的信息。 Linux 在引导过程中清点可用硬件。一些硬件信息存储在 /proc 目录中,该目录在每次系统启动时都会动态填充。此目录包含两个与处理器和内存相关的文件。...输出显示了两个 CPU 内核(0 和 1),以及功能和架构信息。此屏幕截图来自虚拟机,不显示处理器型号或规格。 meminfo 文件显示了总内存以及如何使用该内存。...这些工具提供了有关系统识别了多少内存以及如何使用它的基本信息。 free 命令显示系统上当前未使用的 RAM,因此可用于其他应用程序或服务。 free 命令显示内存总计和利用信息。...信息包括 Linux 内核版本、硬件架构、处理器类型和操作系统名称。 显示存储信息 硬盘驱动器 (HDD) 或固态驱动器 (SSD) 通常提供计算机存储。这些设备支持长期文件存储。...某些 Linux 发行版可能仍识别该命令,但您应该学习 ip 命令。 使用 ethtool 实用程序 基本 ethtool 命令显示指定网卡(enp0s5)的当前硬件设置。

8810
领券