[置顶] Linux内核工程导论——linux学习和职业曲线(初学者,中级,高级都可参考)

Linux世界介绍 给自己定级 门外汉:不会安装操作系统、不会用虚拟机(安装和使用)、没有自己选择并安装的linux发行版,只是听人说linux很牛逼,但觉得linux打不了游戏开不了office,看电影听音乐都弱,自己貌似用不上。 入门级:熟悉常见的发行版,甚至装过并且能用一些特殊发行版(例如kali)做过一些简单的图形界面的使用。 基础级: 吹牛逼级: 学习方式 使用者 桌...
阅读(2280) 评论(8)

[置顶] Linux内核工程导论——数据结构:其他

KFIFO 缓冲区在文件系统中经常用到,通过缓冲区缓解cpu读写内存和读写磁盘的速度。例如一个进程A产生数据发给另外一个进程B,进程B需要对进程A传的数据进行处理并写入文件,如果B没有处理完,则A要延迟发送。为了保证进程A减少等待时间,可以在A和B之间采用一个缓冲区,A每次将数据存放在缓冲区中,B每次冲缓冲区中取。这是典型的生产者和消费者模型,缓冲区中数据满足FIFO特性,因此可以采用队列进行实...
阅读(825) 评论(0)

[置顶] Linux内核工程导论——数据结构:链表与哈希

1 链表与哈希表 链表可以把离散时间到达的数据结构串起来,使其可以被更容易的索引。Linux内核中全部使用双向链表。那为何链表要与哈希表放在一起介绍呢?因为哈希表室友链表群组成的,其每一个哈希桶都是一个链表。而linux内核中全部使用双向链表,这个链表在应用到哈希表时要针对性的优化。 1.1 双向链表 双向列表很容易做成一个环,将起始的prev设为最后一个数据,将最后一个数据的n...
阅读(1528) 评论(0)

[置顶] Linux内核工程导论——总线:Linux PCI

PCI PCI系列总线介绍          首先,PCI是一种总线,PCI-e是PCI的升级版,在linux的软件系统中是统一都是driver/pci下。既然是一种总线,物理上就包括总线部分和支持该总线的设备。没有设备PCI总线的存在无意义,没有PCI总线的支持,PCI设备无法发挥作用(就得使用其他总线)。          众多设备本身没有从属关系,如果放由他们任意接入系统,就会对可怜的...
阅读(1134) 评论(0)

[置顶] Linux内核工程导论——数据结构:树

内核数据结构 链表 待补充 链表 待补充 双向链表 待补充 无锁链表 待补充 树 树作为一种很常用的数据结构,主要包括二叉搜索数(BST)、多路搜索树(B-树)、B树根据叶子节点树分为二叉树和多叉树。根据左右节点是否高度上对称,分为平衡树和非平衡树,平衡树的一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡树。简单的说就是左右高度差不多。 树根据...
阅读(2221) 评论(0)

[置顶] Linux内核工程导论——前言

想要研究linux内核,使用linux内核,首先要知道linux内核能做到什么,提供了什么。我看过很多初学者一进入公司就开始使用linux内核开发内核模块,使用的无论是通信方式、内存接口还是设备接口仍都是内核早已淘汰掉的。原因是他们通常是直接在网络上搜索来如何完成工作的。但他们手中的却是最先进的内核代码。        很大一部分程序员是这种认为自己能够征服一切的人。稍微看一下再百度就能用。我不...
阅读(1386) 评论(0)

[置顶] 30种编程语言的比较选择问题

本文涉及到的编程语言:C、C++、Java、C#、Prolog、VB、Scala、Clojure、Haskell、Ada、Python、Ruby、Pascal(Delphi)、Fortran、Lisp、matlab、Perl、Erlang、Boo、Tcl、Bash、C shell、Objective-C、PHP、PL-SQL、Transact-SQL、ASP、JSP、Lua、smalltalk、R、golang,rust...
阅读(45517) 评论(66)

如何进行协议逆向

抓包看到一系列的数据包,如何从中恢复出设计时为每个域的定义?如果我们设计足够多,我们可以通过经验来预测。比如无论何种协议都需要有长度的域,这个域可能是代表有多少个字节,也可能是代表有多少字,总之一般会有这样一个域。一般情况下,大部分协议设计都是按域设计的,极少出现HTTP/2那种二进制压缩格式的,这是人脑的逻辑属性决定的。而域的显著特点是大部分域都有取值范围,并且每个域的结束标记一般是一样的。所以...
阅读(447) 评论(0)

正则引擎在数据包匹配中的工程分析

匹配 常见的通用匹配算法有字符串匹配和正则匹配。字符串匹配常见的算法有Boyer-Moore算法、orspool算法、unday算法、MP算法、R算法、AC自动机。Boyer-Moore、Horspool、Sunday算法都是基于后缀数组的匹配算法,区别在于移动的方式不一样。MP是前缀匹配算法,R算法是hash匹配,AC自动机可以同时匹配多个pattern。正则匹配有两种NFA和DFA,都是基于有...
阅读(705) 评论(0)

linux内核接口——Linux二进制兼容性问题

Linux上二进制有一个显著的特点就是可移植性不强。我们在不同的发行版之间,不同的内核版本之间,程序往往是不能通用的。硬件平台众所周知的,硬件平台不一样,指令集不一样,二进制就几乎没有可移植的能力。ABI在架构上,必须要区分x86和x64两种架构,一般的x64的机器都能运行x86的程序,但是如果你把程序编译为x86,你就得面对大量的x64服务器的性能瓶颈。这个架构上的区别在任何的平台上都一样的,并...
阅读(397) 评论(0)

linux内核工程导论-Linux用户和权限系统

Linux用户和权限系统简介我们使用linux系统,一定会使用一个用户,没有用户就不可能使用任何的系统功能,包括系统调用。因为系统调用本身也是要有用户的。我们刚登录一个系统,需要一个login程序,验证了用户名密码之后,就会返回给你一个shell。后面执行的内容都是在shell中执行的。包括可以在shell中设置ulimit做资源限制,我们也可以发现用户和密码都存储在/etc/passwd和/et...
阅读(507) 评论(1)

linux主机防御ids 常用开源工具

,,ExecShield,Openwall,selinux,apparmor 系统防御方面的开源软件主机防御工具验证系统Pam:几乎在所有的发行版上默认安装Opie内核安全Grsecurity:专注于内核的安全,给内核提供了很多安全补丁ExecShield:设置不可执行的标志位(现代的x64硬件携带的,就可以不用软件了,x86是不带的)Linux Intrusion Detection Syste...
阅读(698) 评论(0)

linux内核工程导论-系统调用

http://www.cppblog.com/hex108/archive/2010/11/22/134313.html 传统的系统调用是怎样的?    —— int 0x80的时代.... ;通过寄存器传参 mov $n ,eax ;将系统调用号放到eax中 int 0x80sysenter/sysexit的出场        在一个Kernel.org的邮件列...
阅读(237) 评论(0)

Linux内核工程导论——进程:ELF文件执行原理(3)

编译与执行elf文件由ld程序连接,由ld.so程序执行。分为静态和动态两个过程。同样的,在二进制文件中体现在segment是动态的文件布局,由ld.so使用。而section是静态的文件布局,由ld使用。一般编译代码的和执行代码的是不同的人,不同的机器。所以静态的编译就需要一种语言告诉动态的怎么执行,这个语言就是elf文件格式。Elf文件里面有segment,有section。我们知道执行的时候...
阅读(423) 评论(0)

函数调用

函数调用约定现代的几乎所有的编程语言都离不开函数和参数的概念。而这个概念是编程语言级别的,而不是硬件级别的。也就是说硬件上本来没有函数的概念。只是函数的用的太普遍,硬件开始为函数准备专用的指令。我们以x86的硬件举例。Cpu的功能是计算,读取数据,执行指令。这里面的问题就是指令如何执行。我们完全可以顺序的执行所有的指令,也可以达到计算机的计算目的。但是这样在使用者来看是不现实的,完全顺序的执行代码...
阅读(1568) 评论(0)

linux内核工程导论-网络:tcp拥塞控制——PRR

Prr是谷歌对于快速回复算法的改进。快恢复是在检测到拥塞发生的时候将发送窗口降低到一半(怎么才算拥塞由另外的算法决定),PRR简介PRR是最新的linux的默认推荐拥塞算法,之前的是cubic。但是有意思的是,在linux中使用了prr仍然可以以cubic作为默认拥塞算法。因为众所周知的,拥塞算法大致都是一样的,只是在一些参数和细节调整上有区别。Linux上的prr实现就是个对tcp_input....
阅读(3090) 评论(0)

linux内核工程导论-网络:tcp拥塞控制

这篇文章本来是在tcp那篇里面的,但是那篇太长了,不专一。就完善了一下提取出来了。TCP拥塞控制       拥塞控制讨论的是很多个同时存在的tcp连接应该怎么规划自己的数据包发送和接收速度,以在彼此之间共享带宽,同时与其他实体的机器公平的竞争带宽,而不是自己全占。        拥塞控制的核心是AIMD(additive-increase/multiplicative-decrease ),线...
阅读(6108) 评论(0)

哈希理论

计算哈希值方法哈希场景哈希算法有两个评价标准,一个是无法回源,一个是随机性(碰撞概率小),一个是计算速度。不同的应用环境对这几个目的的需求是不一样的。例如文件的md5计算和签名算法,无法回源与随机性都需要。但是哈希表的数据结构在使用的时候,主要看重随机性和计算速度。例如下载一个文件md5与一个病毒的md5一样,这时候下载器就认为你下载了正确的文件,就会带来严重的安全问题,这时其对哈希算法的要求在随...
阅读(4688) 评论(0)

linux路由表,策略路由,路由查找

路由表内核中路由表有2种:l 一个是缓存路由(fib),是自动学习生成自动管理的,用户没必要去干预,但是内核还是提供了方法让用户可以去清空它。但是用户不能设置它的项,但是可以根据这个缓存更新的原理从外部影响他。l 路由表:一共有256个,在内核中是一个数组,可以配置让内核使用其中的一个或者多个。默认的是使用0,254,255这三个。一般大家关系都是254号的main路由,route 命令看到的和操...
阅读(4560) 评论(0)

Linux内核工程导论——进程:ELF文件执行原理(2)

ELF强符号与弱符号(本小节是转别人的)我们经常在编程中碰到一种情况叫符号重复定义。多个目标文件中含有相同名字全局符号的定义,那么这些目标文件链接的时候将会出现符号重复定义的错误。比如我们在目标文件A和目标文件B都定义了一个全局整形变量global,并将它们都初始化,那么链接器将A和B进行链接时会报错:1 b.o:(.data+0x0): multiple definition of `globa...
阅读(10900) 评论(1)

Linux内核工程导论–网络:TCP:netlink与tcp_diag编程

概览http://m.oschina.net/blog/351007有一个示例程序,但是它用的v1的接口。http://kristrev.github.io/2013/07/26/passive-monitoring-of-sockets-on-linux/教了怎么用v2的接口。 inet_diag和tcp_diag是两个模块,但是统一使用inet_diag的接口,inet_diag又是使用net...
阅读(1648) 评论(0)

Linux内核工程导论——内核种类

内核概览linux内核并不是唯一的内核,也并不是唯一的一种内核。实际上linux内核属于Monolithic kernel的一个实现,这种内核还包括Unix系列(BSD、SunOS等),dos和windows 9x系列,还有OpenVMS,XTS-400,z/TPF等一些不常见的系统内核。         内核的种类包括:exokernels,nanokernels ,microkernels, ...
阅读(1451) 评论(1)

eBPF编程

简介         如果读取数据包时eBPF程序想要读取超过数据包边界的内容,eBPF程序将会被停止执行。硬件架构寄存器* R0       - return value from in-kernel function, and exit value for eBPF program* R1 - R5  - arguments from eBPF program to in-kernel fun...
阅读(1706) 评论(0)

C++——boost:asio的使用

背景知识         高效网络编程一般都要依赖于IO复用,IO复用是指同时发送并监听处理很多socket或者文件读写的事件。IO复用的高效方式目前常用的有两种:Reactor和Proactor。这两种方式在操作系统级都是异步和非阻塞的,也就是说用户提交了一个请求后都可以直接返回。但是Reactor在用户层级看来是同步的,就是在提交了一系列的操作给操作系统后,需要阻塞监听等待事件的发生,如果有事...
阅读(3309) 评论(0)

安捷伦设备编程

l 信号功率分为三种:CW波功率、脉冲波功率、包络波功率l 脉冲波功率要求脉冲是有周期,如果没有周期,则测的不准l SCPI命令查询结果有3种方式:MEASure、READ、FETCH。FETCH不用等待count完成就取平均数,READ和MEASure都要等。READ可以指定count值,MEASure不可以。l 功率计有三种触发模式:Free Run、Single Shot、Continuou...
阅读(1488) 评论(0)

知名网络安全公司

网络高性能ixia:领先的应用性能和安全弹性解决方案供应商。ddos测试,各种无线协议的测试,各种有线网络的测试,例如发报机(几十万人民币,x86上装的windows7,然后控制fpga板卡)。ThreatARMOR产品通过后端有个ip库,表明被挂马的ip,遇到这种ip属于高可疑恶意ip。在这个ip列表中的都被挂马,当马被除掉,该ip消除,从线上到线下检测设备的通知时间是5分钟。windriver...
阅读(1296) 评论(0)
116条 共6页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:346283次
    • 积分:4290
    • 等级:
    • 排名:第7037名
    • 原创:113篇
    • 转载:3篇
    • 译文:0篇
    • 评论:138条
    博客专栏
    文章分类
    最新评论