wjlkoorey258

2016年7月24日

深入理解C语言的函数调用过程

摘要: 本文主要从进程栈空间的层面复习一下C语言中函数调用的具体过程,以加深对一些基础知识的理解。 先看一个最简单的程序: 点击(此处)折叠或打开 /*test.c*/ #include stdio.h> ... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(848) 评论(0) 推荐(0)

多媒体技术基础之---重新认识声音

摘要: 声音一个最基本的常识就是“它是一种能量”,初中物理课上我们也学过声音的三要素分别是音色、音调和响度。 音色:简单理解,就是一种声音的固有特征。比如,电子琴和小提琴发出的声音是有明显区别的,笛子和古筝也有各自的声音特征。有些声音模仿秀的选手可以通过训练,达到模仿不同人或者不同乐器的效果。... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(451) 评论(0) 推荐(0)

多媒体技术基础之---Come on!来点儿音乐吧

摘要: 其实要说在Linux系统下播放音乐,确实是一件让人非常抓狂的事情,抛开各种音频格式的商业授权不说,即使提供给你相应的解码库,能玩儿得转的人那又是少之又少。可能有些盆友说ubuntu这方面确实做得不错,一旦默认安装好,几乎不用装任何其他东西,常见的是音频文件都可以正常播放了。因为我天生就有股... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(168) 评论(0) 推荐(0)

CentOS6.4完全安装FFmpeg手记

摘要: 鼓捣媒体的人对FFmpeg应该不会陌生,它不仅功能强大,结构优美,灵活、易扩展,也是很其他多媒体播放器的基础,例如VLC,Mplayer等等,还有好多商业播放器都用了ffmpeg,但这些商业软件却没有遵守GPL公约,所以它们都被钉在了ffmpeg官网的“耻辱柱”上。关于ffmpeg还有一点... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(738) 评论(0) 推荐(0)

谈谈Linux下动态库查找路径的问题

摘要: 学习到了一个阶段之后,就需要不断的总结、沉淀、清零,然后才能继续“上路”。回想起自己当年刚接触Linux时,不管是用源码包编译程序,还是程序运行时出现的和动态库的各种恩恩怨怨,心里那真叫一个难受。那时候脑袋里曾经也犯过嘀咕,为啥Linux不弄成windows那样呢,装个软件那个麻烦不说,连... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(10904) 评论(1) 推荐(0)

"2013":爱你不容易

摘要: 2013对我来说确实像年初时曾给自己定义的那样,真的是非常不平常的一年。依稀记得去年年终时,BOSS和我深聊了1多钟头,谈到职业规划、人生还有家庭的林林种种。春节在家时也仔细考虑过2013自己该如何规划,现在站在2013的尾巴上回顾这一年的时候,虽然没有严格按照预定的计划进行开展,但在BO... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(105) 评论(0) 推荐(0)

多媒体技术基础之---图像

摘要: 2012年11月13日,83岁的柯达公司退休工程师布赖斯·拜尔(Bryce Bayer)离开了这个世界,永远离开了我们,离开了爱戴他的人们,而他在数字图像领域的杰出成就不应该就这样被淹没在历史的洪流里,所以,谨以2014年第一篇博文献给伟大的布赖斯·拜尔先生。 图像的历史 ... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(387) 评论(0) 推荐(0)

多媒体技术基础之---色彩空间

摘要: 上一篇博文里,我们已经了解到图像是如何数字化的,但是关于数字图像的存储和显示问题还没提到,但在了解数字图像的存储和显示之前,我们先得弄明白数字图像里一个让很多人迷糊的概念:色彩空间。有的技术文献里也将其表述为颜色模型、颜色空间等,说的都是同一个东西。 关于色彩空间,我们... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(804) 评论(0) 推荐(0)

从新版本系统调用学习宏定义的用法

摘要: 这段时间又碰到系统调用这个家伙,结果在我当前用的3.0.x内核里全变样了。为了将这个问题弄明白,还得自己动手才行,这里非常感谢CSDN的"海风林影"兄弟提供的博文和相关参考文献,还是那句话“成果和荣耀归于前辈”。 很多人也都发现,在2.6.28及其之后的内核源码里,系统调用的写法发... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(288) 评论(0) 推荐(0)

经典排序算法归纳笔记(1)

摘要: 除了刚迈出校门找工作那会儿对基本排序算法还算“了然于心”,随着工作和时间的推移,当回头再来看这些基础的不能再基础的东西时,绝大多数人无法写出经典排序算法的核心代码,甚至连算法原理都忘了。我承认,自己就是这样的人,所以今天有空将常见的几种排序算法复习一下,写个笔记。一方面给自己一个“重新做人... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(167) 评论(0) 推荐(0)

经典排序算法归纳笔记(2)

摘要: 上一篇我们回顾了选择和冒泡排序、以及改进的冒泡排序两种算法,今天我们来看一下插入排序和希尔排序。 插入排序 插入排序的本质是将待排序序列分成有序和无序两部分,通常情况下我们都认为序列的第一元素是有序的,所以插入排序一般是从序列的第二个元素(下标是1的位置)开始。插入排序的的思想是... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(136) 评论(0) 推荐(0)

经典排序算法归纳笔记(4)

摘要: 前面三篇博文我们分别回顾了冒泡排序、选择排序、插入排序、希尔排序、归并排序、堆排序和快速排序。关于排序算法有几种分类标准,稳定与非稳定、内部与外部。 所谓稳定的排序算法,意思是如果待排序序列有相同元素,经过排序算法处理后他们的相对顺序和排序前在序列里的相对顺序一样,这样我们就称该排... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(226) 评论(0) 推荐(0)

关于openssl几个API的一点小收获

摘要: 今天心血来潮突然想搞搞openssl了,趁着端午小假,刚好有空可以鼓捣孤岛自己喜欢的东西,出去东奔西跑的实在太造孽了,还是宅起来给自己充充电吧。下载openssl最新代码1.0.1g,修复了“心血漏洞”那个版本。编译安装那些小儿科的东西就不再浪费笔墨了,如果出现头文件或者库文件之类的错误,... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(1140) 评论(0) 推荐(0)

Linux 内核通知链随笔【中】

摘要: 关于内核通知链不像Netlink那样,既可以用于内核与用户空间的通信,还能用于内核不同子系统之间的通信,通知链只能用于内核不同子系统之间的通信。那么内核通知链到底是怎么工作的?我们如何才能用好通知链?内核源代码里随处可见的通知链身影,我们到底该如何理解呢?本片博文过后,您的这些疑问和顾虑将... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(373) 评论(0) 推荐(0)

Linux内核【链表】整理笔记(1)

摘要: 我们都知道Linux内核里的双向链表和学校里教给我们的那种数据结构还是些不一样。Linux采用了一种更通用的设计,将链表以及其相关操作函数从数据本身进行剥离,这样我们在使用链表的时候就不用自己去实现诸如节点的插入、删除、遍历等操作了。当然,Linux也是从2.1.x内核开始才对链表进行了这样的... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(1109) 评论(0) 推荐(0)

Linux内核【链表】整理笔记(2)

摘要: 关于链表我们更多时候是对其进行遍历的需求,上一篇博文里我们主要认识了一下和链表操作比较常用的几个内核API接口,其入参全都是清一色的struct list_head{}类型。至于链表的遍历,内核也有一组基本的接口(其实都是宏定义的)供开发者调用。 首先是list_for... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(187) 评论(0) 推荐(0)

刨一刨内核container_of()的设计精髓

摘要: 新年第一帖,总得拿出点干货才行,虽然这篇水分还是有点大,大家可以晒干了温水冲服。这段时间一直在整理内核学习的基础知识点,期间又碰到了container_of()这个宏,当然还包括一个叫做offsetof()的家伙。在这两个宏定义里都出现将“零”地址强转成目标结构体类型,然后再访问其成员属性... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(175) 评论(0) 推荐(0)

漫谈Linux内核哈希表(1)

摘要: 关于哈希表,在内核里设计两个很重要的数据结构: 哈希链表节点: 点击(此处)折叠或打开 /*Kernel Version : 3.4.x [include/linux/types.h]*/ st... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(624) 评论(0) 推荐(0)

漫谈Linux内核哈希表(2)

摘要: 对照前面介绍过的内核通知链、链表,本章我们将要介绍的哈希表的初始化和定义也是如出一辙的: 点击(此处)折叠或打开 定义并初始化一个名为name的哈希链表表头 #define HLIST_HEAD(name)... 阅读全文

posted @ 2016-07-24 11:00 wjlkoorey258 阅读(775) 评论(0) 推荐(0)

一个快速将十六进制串转十进制数的方法

摘要: 今天看到一段将十六进制数的字符转十进制的代码,写得太精妙了。我就又占了前辈们的光,在其基础上扩充了一下,写了个将十六进制字符串转十进制数的接口,和大家分享分享。 点击(此处)折叠或打开 /************************... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(559) 评论(0) 推荐(0)

寻访x86处理器“实模式”和“保护模式”的前世今生

摘要: 还是把博文“CPU的内部架构和工作原理”里的这个表搬出来,祭奠那些不应该在岁月的洪荒中被淹埋的荣耀: 8086的诞生,标志着Intel 正式进入了x86时代,这是个多么具有纪念意义的日子:1978-6-8。同时,8086的诞生也是处理器内存寻址技术的第一次飞跃。 ... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(1016) 评论(0) 推荐(0)

CPU的内部架构和工作原理

摘要: 一直以来,总以为CPU内部真是如当年学习《计算机组成原理》时书上所介绍的那样,是各种逻辑门器件的组合。当看到纳米技术时就想,真的可以把那些器件做的那么小么?直到看了Intel CPU制作流程及AMD芯片的制作流程的介绍不禁感慨,原来科技是如此的发达。 本文我们以Intel为例对CPU的... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(511) 评论(0) 推荐(0)

戏说文件系统之ext3【上】

摘要: 今天我们简单聊一哈ext3文件系统。ext3作为ext2的增强版,和ext2使用的superblock、inode、group descriptor等数据结构几乎一模一样,所以ext3前向兼容ext2。在不用备份ext2文件系统数据的情况下,可以用: tune2fs –j /dev/h... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(287) 评论(0) 推荐(0)

戏说文件系统之ext2【续】

摘要: 通过前面两篇博文,我们对ext2fs应该有了一个宏观上的认识。但是这些所谓的superblock、block、group、group descriptor和ionde等等,它们到底有什么用呢?今天我们简单热个身,来研究一下在一个磁盘分区上如何根据文件的inode号来访问文件的内容? ... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(133) 评论(0) 推荐(0)

戏说文件系统之ext2【下】

摘要: 今天我们来认识一下superblock,inode,block,group,group descriptor,block bitmap,inode table这些家伙。为什么在上一篇博文开篇没详细介绍这些概念呢,因为任何关于文件系统的文章还是书籍一开始都是先说概念、说理论,让人一直有... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(167) 评论(0) 推荐(0)

戏说文件系统之ext2【上】

摘要: 前面说过,虚拟文件系统VFS是对各种文件系统的一个抽象层,抽取其共性,以便对外提供统一管理接口,便于内核对不同种类的文件系统进行管理。那么首先我们得看一下对于一个具体的文件系统,我们该关注重点在哪里。 对于存储设备(以硬盘为例)上的数据,可分为两部分: 用户数据:存储用... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(230) 评论(0) 推荐(0)

小议Linux系统下的文件系统

摘要: Linux的老江湖们对这个概念当然不会陌生,然而刚接触Linux的新手们就会被文件系统这个概念弄得晕头转向,恰好我当年正好属于后者。从windows下转到Linux的童鞋听到最多的应该是fat32和ntfs(在windows 2000之后所出现的一种新型的日志文件系统),那个年代经常听到说... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(139) 评论(0) 推荐(0)

实战X86寄存器

摘要: 作为一个程序员,当白天和黑夜没有了界限,按照相对论的观点,这时候他就变成了一个“程序猿”。 ... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(390) 评论(0) 推荐(0)

下班后...

摘要: 首先向大家致歉,快1个月没有更新博客了。当然这一篇文章纯粹是吹水的,和技术没啥关系。原因是最近工作上的事儿接踵而至,由于公司战略决策的调整,然后各种规划、各种需求、各种开发、各种测试、各种早会,真想学会“多重影分身术”,一个赚钱,一个学习,一个写博客,一个陪女朋友,那该多好,呵呵。 ... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(118) 评论(0) 推荐(0)

时针、分针和秒针是群快乐的好伙伴

摘要: 最近发现自己好久没有研究过算法了,达尔文坚持进化论,而拉马克则提出“用尽废退”理论。在学术领域我还是比较赞同拉马克的观点。程序设计道理也是一样的,只有多看优秀的代码的,学习优雅的设计框架和思想,经过充分的思考并将其移花接木般应用在自己的程序里才是学习的本质。以前我们的高中老师管这个技能叫做... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(297) 评论(0) 推荐(0)

CentOS6.3快速安装VLC小记

摘要: 鉴于VLC这个播放器的牛X+V5,在windows下用起来确实很安逸,吃过晚饭突然想在CentOS上也安装一个来耍耍。网上搜罗半天,包括VLC官网都没找到对CentOS的指导教程,最接近的就是Fedora系统了。大家都知道Fedora和CentOS都是一个妈生的,那么它们应该有相同之... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(567) 评论(0) 推荐(0)

Fedora 17下交叉编译vlc-2.0.6-win32小记

摘要: 关于编译windows下的vlc网上的教程除了翻译N年前wiki官网的那些蚂蚁文之外,可以说基本没啥参考意义和价值。因为那些都是非常老的版本,0.8.x或者1.x.x,而我这个人有喜欢新鲜事儿,所以就冲着vlc-2.0.6来了。官网最新的是2.0.7,才发布没多久,在新鲜和稳定之间还是选了... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(324) 评论(0) 推荐(0)

一堂课玩转rpm包的制作

摘要: 常见的Linux发行版主要可以分为两类,类ReadHat系列和类Debian系列,这里我们是以其软件包的格式来划分的,这两类系统分别提供了自己的软件包管理系统和相应的工具。类RedHat系统中软件包的后缀是rpm;类Debian系统中软件包的后缀是deb。另一方面,类RedHat系统提供了同名... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(3338) 评论(1) 推荐(0)

Segmentation fault到底是何方妖孽

摘要: 前两天和阿彬扯淡的时候(注意不是扯蛋),他说自己一个礼拜解决了三个Core dump,华丽丽之极,让我对其敬仰、膜拜之情如滔滔之江水,绵绵不绝。今天我也来谈一下Linux环境下开发时经常遇到的“Segmetation fault”的一点点个人看法,也算是抛砖引玉了。 (备注:我的gl... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(15280) 评论(0) 推荐(0)

Segmetation fault你来的真不是时候

摘要: 问题是这样的,今天一个简单的C程序,用gcc编译成汇编语言后,本来想在里面改点东西,结果运行时就报了“Segmetation fault”。它丫来的还真不是时候,刚好最近正好烦它呢,谁知自己倒送上门来了。OK,择日不如撞日,今儿就拿你开刀了。 源代码如下: 点击(... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(344) 评论(0) 推荐(0)

硬盘的存储原理和内部架构

摘要: 本来想写个文件系统的专题,结果发现对硬盘的内部架构和存储原理还是比较模糊,因为不了解“一点”硬盘的存储原理对文件系统的认识老是感觉镜花水月,不踏实。经过搜集整理资料就由了本文的问世。借用Bean_lee兄一句话:成果和荣耀归于前辈。首先,让我们看一下硬盘的发展史:1956年9月13日,IB... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(459) 评论(0) 推荐(0)

用户空间和内核空间通讯之【Netlink 下】

摘要: 关于Netlink多播机制的用法 在上一篇博文中我们所遇到的情况都是用户空间作为消息进程的发起者,Netlink还支持内核作为消息的发送方的情况。这一般用于内核主动向用户空间报告一些内核状态,例如我们在用户空间看到的USB的热插拔事件的通告就是这样的应用。 先说一... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(1092) 评论(0) 推荐(0)

用户空间和内核空间通讯之【Netlink 中】

摘要: 今天我们来动手演练一下Netlink的用法,看看它到底是如何实现用户-内核空间的数据通信的。我们依旧是在2.6.21的内核环境下进行开发。 在文件里包含了Netlink协议簇已经定义好的一些预定义协议: 点击(此处)折叠或打开#define NETLINK_ROUTE ... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(902) 评论(0) 推荐(0)

用户空间和内核空间通讯之【Netlink 上】

摘要: 引言 Alan Cox在内核1.3版本的开发阶段最先引入了Netlink,刚开始时Netlink是以字符驱动接口的方式提供内核与用户空间的双向数据通信;随后,在2.1内核开发过程中,Alexey Kuznetsov将Netlink改写成一个更加灵活、且易于扩展的基于消息通信接口,并... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(202) 评论(0) 推荐(0)

【翻译】动手动脑玩转Web游戏之五:Collada模型、多层创建

摘要: 使用Collada Collada 是基于XML文件格式建模的开放标准(译者注:最早由SONY公司提出,是一种基于XML的文件格式,它能提供快速的3D图片交换,它将允许设计者自由地在各个平台中交换数据。已经被认可成为数字娱乐工业的标准),很多3D建模软件都支持将其模型文件... 阅读全文

posted @ 2016-07-24 10:59 wjlkoorey258 阅读(549) 评论(0) 推荐(0)

【翻译】动手动脑玩转Web游戏之三:人物动起来、敌人出现、自定义视角

摘要: 让角色动起来 当键盘上特定的按键被按下时,为了让我们创建的角色同步地动起来,需要让Gamma来为我们改变对象水平、垂直方向的位置状态。在本章节,我们将实现如下功能: · 键盘上向左的方向键控制角色往左移动 · 键盘上向右的方向键控制角色往右移动 ... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(252) 评论(0) 推荐(0)

【翻译】动手动脑玩转Web游戏之二:准备、添加平台并新建一个角色

摘要: 开发你的第一个游戏 本章我们将一步一步学习如何用Gamma来开发游戏。 · 准备 · 添加平台 · 添加角色 · 移动角色 · 添加敌人 · 自定义游戏视角 · ... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(190) 评论(0) 推荐(0)

用户空间和内核空间通讯之【proc文件系统】

摘要: 今天我们介绍另一种用户内核空间通信的方法:proc文件系统。 proc文件系统作为linux提供的一种虚拟文件系统并不占用实际外围存储空间,它仅存在于内存中,系统断电即消失。proc文件系统最开始的设计主要是为满足内核向用户态进程报告其状态而设计,并没有为输入做规定和说明。随着发展,现在的pr... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(902) 评论(0) 推荐(0)

Android开发调试中遇到的Waiting for HOME解决方案

摘要: 今晚由于种种未知的原因,陪伴了我两年的系统终于被我给格了。在整理硬盘资料过程中发现之前搭建的Android开发环境也没了。唉,C盘划的少的孩子伤不起啊,硬盘小的孩子更伤不起啊。索性就心血来潮把Android的开发环境给搭起来,运行了一个久违的HelloAndroid程序。我嘞个去,启... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(136) 评论(0) 推荐(0)

用户空间和内核空间通讯之【系统调用】

摘要: 现在,越来越多的应用程序需要编写内核和用户级代码的程序来一起协作完成具体的任务,而用户与空间和内核空间的通讯也就是一个不可回避的话题了。针对于需要和内核空间通信的具体应用而言,其开发模式和套路相对来说比较固定,主要概括起来有两大步骤: 第一步,编写内核服务程序利用内核空间提供的权限和服务来接收、... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(1894) 评论(0) 推荐(0)

如何看待操作系统的用户空间和内核空间?

摘要: 作为中央核心处理单元的CPU,除了生产工艺的不断革新进步外,在处理数据和响应速度方面也需要有权衡。稍有微机原理基础的人都知道Intel X86体系的CPU提供了四种特权模式ring0~ring3,其中ring0特权最高,ring3的特权最低,之所以要做这样的区分一个主要目的是保护资源,通俗... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(1225) 评论(0) 推荐(0)

揭开网络编程常见API的面纱【下】

摘要: Linux网络编程数据收发的API流程分析 只要把数据在协议栈中的流动线路和脉络弄清楚了,关于协议栈的实现部分,理解起来就轻松多了。在网络编程章节的数据接收过程中,我们主要介绍过read()、recv()、recvfrom()还有一个recvmsg()没介绍到,今天我们就来看一下这几个... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(112) 评论(0) 推荐(0)

揭开网络编程常见API的面纱【上】

摘要: Linux网络编程API函数初步剖析 今天我们来分析一下前几篇博文中提到的网络编程中几个核心的API,探究一下当我们调用每个API时,内核中具体做了哪些准备和初始化工作。 1、socket(family,type,protocol) 当我们在开发网络应用... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(127) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【续】

摘要: 如何从链路层直接发送数据帧 本来以为这部分都弄完了,结果有朋友反映说看了半天还是没看到如何从链路层直接发送数据。因为上一篇里面提到的是从链路层“收发”数据,结果只“收”完,忘了“发”,实在抱歉,所以就有这篇续出来了。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(292) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【下】

摘要: 可以接收链路层MAC帧的原始套接字 前面我们介绍过了通过原始套接字socket(AF_INET, SOCK_RAW, protocol)我们可以直接实现自行构造整个IP报文,然后对其收发。提醒一点,在用这种方式构造原始IP报文时,第三个参数protocol不能用IPPROTO_IP... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(1528) 评论(0) 推荐(0)

Linux网络编程:原始套接字的魔力【上】

摘要: 基于原始套接字编程 在开发面向连接的TCP和面向无连接的UDP程序时,我们所关心的核心问题在于数据收发层面,数据的传输特性由TCP或UDP来保证: 也就是说,对于TCP或UDP的程序开发,焦点在Data字段,我们没法直接对TCP或UDP头部字段进行赤裸裸的修改,当然还有... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(547) 评论(0) 推荐(0)

Linux网络编程:基于UDP的程序开发回顾篇

摘要: 基于无连接的UDP程序设计 同样,在开发基于UDP的应用程序时,其主要流程如下: 对于面向无连接的UDP应用程序在开发过程中服务端和客户端的操作流程基本差不多。对比面向连接的TCP程序,服务端少了listen和accept函数。前面我们也说过listen函数最主要的作用... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(170) 评论(0) 推荐(0)

Linux网络编程:基于TCP的程序开发回顾篇

摘要: 面向连接的TCP程序设计 基于TCP的程序开发分为服务器端和客户端两部分,常见的核心步骤和流程: 其实按照上面这个流程调用系统API确实可以完全实现应用层程序的开发,一点问题没有。可随着时间的推移,你会觉得这样子的开发毫无激情。为什么TCP的开发就要按照这样的流程来呢?... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(568) 评论(0) 推荐(0)

Linux环境下网络编程杂谈

摘要: 今天我们说说“Pre-网络编程”。内容比较杂,但都是在做网络应用程序开发过程中经常要遇到的问题。 一、大端、小端和网络字节序 小端字节序:little-endian,将低字节存放在内存的起始地址; 大端字节序:big-endian,将高字节存放在内存的其实地址。 例如,数字in... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(175) 评论(0) 推荐(0)

SNMP从入门到开发:进阶篇

摘要: 管理信息库:MIB 我们要扩展mib首先必须清楚mib是如何定义的,用的什么语言,有哪些约定,遵循哪些规则等等。这些基本东西掌握过后,我们就可以很轻松的来写自己的mib文件了。 所谓管理信息库,或者MIB,就是所有代理进程包含的、并且能够被管理进程进行查询和设置的信息的集合,或者叫管理对象的集... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(531) 评论(0) 推荐(0)

(十六)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(下)

摘要: 从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道iptables不能操作到么?如果我们需要让iptables操作我们在Net... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(352) 评论(0) 推荐(0)

(十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】

摘要: iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本。iptables-1.4.0在这方面做了很好的设计,主要是由libiptc库来实现。libiptc是iptables control library的简称,... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(1339) 评论(0) 推荐(0)

(十一)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【上】

摘要: 预备知识:part1: 初见getopt_long() 在分析iptables源码时,作为命令解析的核心函数getopt_long()不得不提。随便百度或google搜索关于该函数的介绍有很多例子和解释,这里我只举一例,目的是让大家了解传递给iptables命令的每个参数是如何被正确识别并... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(951) 评论(0) 推荐(0)

(十)洞悉linux下的Netfilter&iptables:网络地址转换原理之SNAT

摘要: 源地址转换:SNAT SNAT主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了。它的主要作用是将那些由私网发来的数据包skb的源地址改成防火墙的公网地址A,这是因为目的主机在响应源地址为私网地址的数据包时,私网地址不能在网络... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(401) 评论(0) 推荐(0)

(十五)洞悉linux下的Netfilter&iptables:开发自己的hook函数【实战】(上)

摘要: 向Netfilter中注册自己的hook函数 数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(637) 评论(0) 推荐(0)

(十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】

摘要: 自己开发一个match模块 今天我们来写一个很简单的match来和大家分享如何为iptables开发扩展功能模块。这个模块是根据IP报文中有效载荷字段的长度来对其进行匹配,支持固定包大小,也支持一个区间范围的的数据包,在用户空间的用法是: iptables -A... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(457) 评论(0) 推荐(0)

(十三)洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】

摘要: 为netfilter/iptables增添新功能模块:ipp2p 一个防火墙功能模块包含两部分:内核空间的ko模块和用户空间的so模块。如下: 而且文件的命令都非常有讲究。例如我们有个模块名叫AAA,那么内核中该模块的文件名一般为ipt_AAA.c和ipt_AAA.h;对应的用户空间模... 阅读全文

posted @ 2016-07-24 10:58 wjlkoorey258 阅读(525) 评论(0) 推荐(0)

(九)洞悉linux下的Netfilter&iptables:网络地址转换原理之DNAT

摘要: 网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作。诸如filter、nat、mangle抑或raw这些在用户空间所认为的“表”的概念,在内核中有的是以模块的形式存在,如filter;有的是以子系统方式存在的,如nat,但... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(464) 评论(0) 推荐(0)

(八)洞悉linux下的Netfilter&iptables:状态防火墙

摘要: 基于连接跟踪机制的状态防火墙的设计与实现 连接跟踪本身并没有实现什么具体功能,它为状态防火墙和NAT提供了基础框架。前面几章节我们也看到:从连接跟踪的职责来看,它只是完成了数据包从“个性”到“共性”抽象的约定,即它的核心工作是如何针对不同协议报文而定义一个通用的“连接”的概念出来,具体的实现由不... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(262) 评论(0) 推荐(0)

(七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】

摘要: 连接跟踪系统的初始化流程分析 有了前面的知识,我们再分析连接跟踪系统的初始化ip_conntrack_standalone_init()函数就太容易不过了。还是先上ip_conntrack_standalone_init()函数的流程图:该函数的核心上图已经标出来了“初始化连接跟踪系统”... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(296) 评论(0) 推荐(0)

(六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】

摘要: Netfilter连接跟踪的详细流程 上一篇我们了解了连接跟踪的基本框架和大概流程,本篇我们着重分析一下,数据包在连接跟踪系统里的旅程,以达到对连接跟踪运行原理深入理解的目的。 连接跟踪机制在Netfilter框架里所注册的hook函数一共就五个:ip_conntrack_de... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(287) 评论(0) 推荐(0)

(五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】

摘要: 如何理解Netfilter中的连接跟踪机制? 本篇我打算以一个问句开头,因为在知识探索的道路上只有多问然后充分调动起思考的机器才能让自己走得更远。连接跟踪定义很简单:用来记录和跟踪连接的状态。 问:为什么又需要连接跟踪功能呢? 答:因为它是状态防火墙和NAT的实现基础。 OK,算是... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(383) 评论(0) 推荐(0)

(四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter

摘要: 今天我们讨论一下防火墙的数据包过滤模块iptable_filter的设计原理及其实现方式。 内核中将filter模块被组织成了一个独立的模块,每个这样独立的模块中都有个类似的init()初始化函数。编写完该函数后,用module_init()宏调用初始化函数;同样当模块被卸载时调用mod... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(669) 评论(0) 推荐(0)

(三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target

摘要: 作为ipchains的后继者,iptables具有更加优越的特性,良好的可扩展功能、更高的安全性以及更加紧凑、工整、规范的代码风格。 在2.6的内核中默认维护了三张表(其实是四张,还有一个名为raw的表很少被用到,这里不对其进行分析介绍了):filter过滤表,nat地址转换表和mang... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(354) 评论(0) 推荐(0)

(二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑

摘要: Netfilter框架为内核模块参与IP层数据包处理提供了很大的方便,内核的防火墙模块(ip_tables)正是通过把自己所编写的一些钩子函数注册到Netfilter所监控的五个关键点(NF_IP_PRE_ROUTING,NF_IP_LOCAL_IN,NF_IP_FORWARD,NF_IP... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(306) 评论(0) 推荐(0)

(一)洞悉linux下的Netfilter&iptables:什么是Netfilter?

摘要: 本人研究linux的防火墙系统也有一段时间了,由于近来涉及到的工作比较纷杂,久而久之怕生熟了。趁有时间,好好把这方面的东西总结一番。一来是给自己做个沉淀,二来也欢迎这方面比较牛的前辈给小弟予以指点,共同学习,共同进步。 能在CU上混的人绝非等闲之辈。因此,小弟这里说明一下:本系列博... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(197) 评论(0) 推荐(0)

C++多态性机制初探

摘要: 作为面向对象编程的四大特征(抽象、封装、继承和多态)之一的多态性,是考察开发人员对面向对象的基础掌握程度的有力知识点。面试中也经常被问到像这样的问题:请简述一下什么是多态?C++多态的实现机制是什么?等等之类。今天我们就来小谈一下C++的多态机制。 首先,我们先开宗明义:在C++中,... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(123) 评论(0) 推荐(0)

[原创]通过SSH登录Linux服务器很慢,且服务器提示Access Denied时的解决方案

摘要: 最近Linux服务器不知道为什么,每次通过putty登录时,当输入用户名过后,要卡很久才会提示我输入密码;有时候在密码提示输入符出来之前屏幕会打印一个“Access Denied”的提示信息。很是郁闷,今天终于在网上找到了解决方案,和大家分享一下:解决方案如下:1、在/etc/ssh/sshd_c... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(522) 评论(0) 推荐(0)

全球首款工业物联网芯片渝“芯”一号在渝发布

摘要: 全球首款支持三大工业无线国际标准的物联网专用芯片——渝“芯”一号20日在重庆发布。该芯片由重庆邮电大学与台湾达盛电子股份有限公司联合研发,可广泛应用于智能工业、智能电网、智能交通等领域。 据了解,工业物联网通过支持设备间的交换与互联,提供低成本、高可靠、高灵活的新一代制造信息系统和环境,能够降低... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(315) 评论(0) 推荐(0)

[原创]CentOS6.0系统下安装配置openCV成功

摘要: 开源界的图形图像处理项目openCV无疑是优秀的东西,无论对于专业的开发人员或是业余爱好者都非常具有魔力。网上很多教程都是VS2008下配置的,而我自打和VC6.0绝交后就再没怎么碰过Windows的相关开发平台了。本文是在CentOS6.0下OpenCV的安装配置手册,前段时间非了老半天劲儿,熬... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(308) 评论(0) 推荐(0)

Writing Loadable Kernel Modules using netfilter hooks (in-depth HOWTO) – Part 1

摘要: http://fcns.eu/2010/02/netfilter-hooks/keyword:write new netfilter moduleNote: This article was inspired by the lack of updated documentation on how ... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(798) 评论(0) 推荐(0)

Linux 网络协议栈纲要

摘要: Linux网络核心架构 Linux的网络架构从上往下可以分为三层,分别是 : 用户空间的应用层。 内核空间的网络协议栈层。 物理硬件层。 其中最重要最核心的当然是内核空间的协议栈层了。Linux网... 阅读全文

posted @ 2016-07-24 10:57 wjlkoorey258 阅读(213) 评论(0) 推荐(0)

A example of NF_IP_PRE_ROUTING module PART_1(转载)

摘要: 1、 要做什么在netfilter Hook点注册一个自己的Hook函数,截取每一个数据包读取文件,获取IP列表Ip匹配是否进行重定向的工作,是否丢弃等2、netfilter结构以及HOOK点的选择 Fig.1 Hook Point of netfilter[选择]NF_IP_PRE_ROUTIN... 阅读全文

posted @ 2016-07-24 10:56 wjlkoorey258 阅读(378) 评论(0) 推荐(0)

Linux Netfilter实现机制和扩展技术

摘要: http://www.ibm.com/developerworks/cn/linux/l-ntflt/2.4.x的内核相对于2.2.x在IP协议栈部分有比较大的改动, Netfilter-iptables更是其一大特色,由于它功能强大,并且与内核完美结合,因此迅速成为Linux平台下进行网络应用扩... 阅读全文

posted @ 2016-07-24 10:56 wjlkoorey258 阅读(224) 评论(0) 推荐(0)

linux内核ipv4网络部分分层结构及涉入源文件

摘要: http://hi.baidu.com/amy_yeni/blog/item/c54003004d9a080b738da5b3.htmllinux内核ipv4网络部分分层结构:BSD socket层: 这一部分处理BSD socket相关操作,每个socket在内核中以struct socket结... 阅读全文

posted @ 2016-07-24 10:56 wjlkoorey258 阅读(204) 评论(0) 推荐(0)

linux 内核网络,数据接收流程图

摘要: 4.3 数据接收流程图各层主要函数以及位置功能说明: 1)sock_read:初始化msghdr{}的结构类型变量msg,并且将需要接收的数据存放的地址传给msg.msg_iov->iov_base. net/socket.c 2)sock_recvmsg... 阅读全文

posted @ 2016-07-24 10:56 wjlkoorey258 阅读(645) 评论(0) 推荐(0)

C语言测试题的讲解分析

摘要: int x=35; char str[10]; //问:strlen(str)和sizeof(str)的值分别是多少? // strlen(str) 值不确定,strlen根据'\0'确定字符串是否结束。 // sizeof(str)=10 sizeof一个数组为数组长度 strcpy(str,"... 阅读全文

posted @ 2016-07-24 10:56 wjlkoorey258 阅读(189) 评论(0) 推荐(0)

导航