- 博客(67)
- 资源 (15)
- 收藏
- 关注
转载 Libnids---攻略
一.摘要 Libnids是一个用于网络入侵检测开发的专业编程接口,它使用Libpcap进行数据包的捕获。同时,Libnids提供了TCP/IP数据流重组功能,因此省去了应用层自己考虑数据分片、重传等情况的麻烦。它是模仿了Linux 2.0.x的IP协议栈进行数据处理,因此非常稳定可靠。当然,libnids还有一项非常实用的功能,那就是:TCP端口扫描检测和异常数据包的检测功能。二
2015-03-30 09:42:27 1169
转载 linux /etc目录说明
按照原始的UNIX的说法(linux文件结构参考UNIX的教学实现MINIX) 这下面放的都是一堆零零碎碎的东西, 就叫etc, 这其实是个历史遗留.这个目录一般用来存放程序所需的整个文件系统的配置文件./etc目录 包含很多文件.许多网络配置文件也在/etc 中. /etc/rc or/etc/rc.d or/etc/rc*.d 启动、或改变运行级时运行的sc
2015-03-28 17:37:30 565
转载 多模式字符串匹配算法---ac算法
AC算法是Alfred V.Aho(《编译原理》(龙书)的作者),和Margaret J.Corasick于1974年提出(与KMP算法同年)的一个经典的多模式匹配算法,可以保证对于给定的长度为n的文本,和模式集合P{p1,p2,...pm},在O(n)时间复杂度内,找到文本中的所有目标模式,而与模式集合的规模m无关。正如KMP算法在单模式匹配方面的突出贡献一样,AC算法对于多模式匹配算法后续的发
2015-03-27 09:54:46 1339
转载 c语言----值传递、值引用
这里我们可以得到以下几点: 1. 进程的堆栈存储区是主调函数和被调函数进行通信的主要区域。 2. C语言中参数是从右向左进栈的。 3. 被调函数使用的堆栈区域结构为: 局部变量(如temp) 返回地址 函数参数 低地址 高地址 4. 由主调函数在调用后清理堆栈。 5. 函数的返回
2015-03-26 09:44:36 691
转载 c语言--回绕、整数提升
C语言是一种弱类型的语言,类型之间可以进行隐式的转换;而C++是强类型的语言,需要进行强制类型转换Paragraphs61、默认参数提升:如果一个函数的形参类型未知,那么调用函数时要对相应的实参做“整数提升(integer promotions)”,除此以外,float类型的参数会被提升为double。2、如果形参和实参个数不相等的时候,行为未定义;3、 如果函数定义的时候指定
2015-03-26 09:21:44 3765
转载 语言函数可变长参数
可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。1.2 如何实现C语言可变参数通过三个宏(va_start、va_end、va_arg)和一个类型(
2015-03-26 08:36:16 753
转载 sql语句整理
1.(三) 使用WHERE子句设置查询条件 WHERE子句可包括各种条件运算符: 比较运算符(大小比较):>、>=、=、、!>、!范围运算符(表达式值是否在指定的范围):BETWEEN…AND… NOT BETWEEN…AND… 列表运算符(判断表达式是否为列表中的指定项):IN (项1,项2……) NOT IN (项
2015-03-25 16:50:34 444
转载 sql语句---union、视图
union:联合的意思,即把两次或多次查询结果合并起来。 要求:两次查询的列数必须一致可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。即:将多张表的结果合并,而不是依次列出例:SELECT iId FROM v_userup2 SELECT net_log_id FROM t_netlog SELECT iI
2015-03-23 17:10:44 2686
转载 MYSQL explain详解
explain显示了mysql如何使用索引来处理select语句以及连接表。可以帮助选择更好的索引和写出更优化的查询语句。先解析一条sql语句,看出现什么内容EXPLAINSELECTs.uid,s.username,s.name,f.email,f.mobile,f.phone,f.postalcode,f.addressFROM uchome_space ASs,uchome_
2015-03-21 14:14:01 362
转载 IPV6
IPv6地址格式IPv6的地址长度是128位(bit)。将这128位的地址按每16位划分为一个段,将每个段转换成十六进制数字,并用冒号隔开。例如:2000:0000:0000:0000:0001:2345:6789:abcd这个地址很长,可以用两种方法对这个地址进行压缩,前导零压缩法:将每一段的前导零省略,但是每一段都至少应该有一个数字例如:2000:0:0:0:1:2
2015-03-20 14:59:17 2201
转载 原始套接字SOCK_RAW
实际上,我们常用的网络编程都是在应用层的报文的收发操作,也就是大多数程序员接触到的流式套接字(SOCK_STREAM)和数据包式套接字(SOCK_DGRAM)。而这些数据包都是由系统提供的协议栈实现,用户只需要填充应用层报文即可,由系统完成底层报文头的填充并发送。然而在某些情况下需要执行更底层的操作,比如修改报文头、避开系统协议栈等。实现ICMP、IGMP等协议,这个时候就需要使用其他的方式来实现
2015-03-18 20:07:00 598
转载 传输层协议重组、
TCP是一种面向连接的、可靠的、字节流服务UDP:用户数据报文协议1.面向链接:TCP面向链接,面向连接意味着两个使用TCP的应用(通常是一个客户和一个服务器)在彼此交换数据之前必须通过三次握手先建立一个TCP连接。在一个TCP中仅有两方彼此通信,多播和广播不能用于TCP。UDP是不可靠的传输,传输前不需要建立链接,可以应用多播和广播实现一对多的通信。 2.可靠性:TCP提
2015-03-18 16:38:37 910
转载 网络字节序、大端模式、小端模式
一、大端、小端"大端"和"小端"表示多字节值的哪一端存储在该值的起始地址处;小端存储在起始地址处,即是小端字节序;大端存储在起始地址处,即是大端字节序;或者说:1.小端法(Little-Endian)就是低位字节排放在内存的低地址端(即该值的起始地址),高位字节排放在内存的高地址端;2.大端法(Big-Endian)就是高位字节排放在内存的低地址端(即该值的起始地址),低位字节排放
2015-03-18 09:31:00 588
转载 枚举类型enum
定义: 注意1:如果要定义两个具有同样特性枚举类型的变量,可以有如下的两种定义方式:enum Box{pencil,pen}; //声明枚举类型Box;enum Box box1,box2; //定义枚举变量box1,box2;再有一种定义方式就是在声明枚举类型的同时进行定义:enum {pencil,pen} box1, box2;对于枚举变量中的枚举元
2015-03-17 09:37:12 944
转载 TCP标志中的URG和PSH位
URG(紧急位): 急指针是一个正的偏移量,和序号字段中的值相加表示紧急数据最后一个字节的序号。T C P的紧急方式是发送端向另一端发送紧急数据的一种方式。紧急指针指向包内数据段的某个字节(数据从第一字节到指针所指字节就是紧急数据,不进入接收缓冲就直接交给上层进程,余下的数据要进入接收缓冲的)PSH(急迫位): 在一个交互程序中,当客户发送一个命令给服务器时,它设置P U S H标志并停下来等
2015-03-16 19:53:49 728
转载 inet_addr、inet_aton 、inet_network
结构体struct in_addr结构struct in_addr 在文件中定义,结构in_addr 有一个unsigned long int 类型的成员变量s_addr。通常所说的IP地址的二进制形式就保存在成员变量s_addr中。结构struct in_addr的原型如下:structin_addr{ unsigned long int s_addr;/*IP
2015-03-16 19:42:00 2322 1
转载 IP分片浅析
分片原因: 在TCP/IP分层中,数据链路层用MTU(Maximum Transmission Unit,最大传输单元)来限制所能传输的数据包大小,MTU是指一次传送的数据最大长度,不包括数据链路层数据帧的帧头,如以太网的MTU为1500字节,实际上数据帧的最大长度为1512字节,其中以太网数据帧的帧头为12字节。 当发送的IP数据报的大小超过了MTU时,IP层就
2015-03-16 14:44:24 1055
转载 c命名风格
1、linux kernel中双下划线开头的函数常常, 当你查看内核 API 时, 你会遇到以双下划线(__)开始的函数名. 这样标志的函数名通常是一个低层的接口组件,应当小心使用. 本质上讲, 双下划线告诉程序员:" 如果你调用这个函数, 确信你知道你在做什么." ——《linux设备驱动程序》C++;系统头文件里将宏名、变量名、内部函数名用 _ 开头就是为了避免与用户用的名字冲突。
2015-03-16 14:02:56 927
转载 semctl函数
信号量集当利用信号量机制解决了单个资源的互斥访问后,我们讨论如何控制同时需要多个资源的互斥访问。信号量集是指同时需要多个资源时的信号量操作。一般来说,我们也可以把各进程之间发送的消息作为信号量看待。与进程互斥时不同的是,这里的信号量只与制约进程及被制约进程有关而不是与整组并发进程有关。因此,我们称该信号量为私用信号量(Private Semaphore)。一个进
2015-03-14 14:41:49 15069 1
转载 信号量函数semget中的key_t
int sem_get(key_t key, int num_sems, int sem_flags)key_t是一个long或者int型(看你是64位还是32位),为了便于移植才写成key_t的。和c中的size_t一样(你可以在usr/include/sys/types.h看到size_t的定义)为了增加程序的可移植性,才没有在程序中硬性声明为long型或是int型,而是用
2015-03-14 13:11:57 3963
转载 信号量函数(semget、semop、semctl)
二.System V信号量和Posix信号量区别信号量有两种实现:传统的System V信号量和新的POSIX信号量。它们所提供的函数很容易被区分:对于所有System V信号量函数,在它们的名字里面没有下划线。例如,应该是semget()而不是sem_get()。然而,所有的的POSIX信号量函数都有一个下划线。下面列出了它们提供的所有函数清单:Systm VPOSI
2015-03-14 13:00:48 3877
转载 pcap_t结构体
typedef struct pcap pcap_t;pcap结构在libpcap源码的pcap-int.h定义,之所以没有定义仍能编译通过是因为并没有真正使用pcap类型,而是使用了其指针类型(你可以看到所有用到pcap_t的地方都是指针,而如果你使用了非指针的pcat_t定义则会发现编译不过),编译器无需知道pcap的确切定义。用这种方式可以隐藏结构的内部定义。 详细定义
2015-03-12 16:49:46 7146
转载 GDB调试多线程
1.__kernel_vsyscall这个是linux系统调用的辅助机制,__kernel_vsyscall是linux执行系统调用后的返回地址。sysenter调用进入内核时,CPU不会保存用户堆栈,返回地址和其它的寄存器,那么sysexit怎么返回到正确的用户空间呢?sysexit总是返回到用户进程某个固定的地址!vdso就是作为sysenter/sysexit
2015-03-12 14:22:24 616
转载 C语言typeof
typeof关键字是C语言中的一个新扩展,这个特性在linux内核中应用非常广泛。一,说明 typeof的参数可以是两种形式:表达式或类型。 1,表达式的的例子: typeof(x[0](1)) 这里假设x是一个函数指针数组,这样就可以得到这个函数返回值的类型了。 如果将typeof用于表达式,则该表达式不会执行
2015-03-12 11:37:15 1047
转载 C中extern关键字
extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数名而不是C++的,
2015-03-12 11:33:11 393
转载 c语言存储类
C为变量提供了5种不同的存储类,还有基于指针的第6种存储类。不同的存储类提供了变量的作用域、链接和存储时期的不同组合。作用域:描述了程序中可以访问的一个标识符的一个或多个区域。一个C变量的作用域可以是代码块作用域(code scope)、函数原型作用域(function prototype scope),或者文件作用域(file scope)。存储类是C语言与C++语言的标
2015-03-12 10:48:12 690
转载 C语言register关键字
register:关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。设置原因: 由于cpu和内存存取速度不一致,导致对于常用的变量存储在寄存器比存储在内存要提高程序的运行速度。使用register修饰符的注意点 但是使用register修饰符有几点限制。 首先,register变量必须是能被CP
2015-03-12 10:42:53 1522
转载 编译原理三大经典书籍(龙书 虎书 鲸书)
逻辑地址空间是指一个源程序在编译或者连接装配后指令和数据所用的所有相对地址的空间。它是作业进入内存,其程序、数据在内存中定位的参数。------偏移地址LWP: 在计算机操作系统中,轻量级进程(LWP)是一种实现多任务的方法。与普通进程相比,LWP与其他进程共享所有(或大部分)它的逻辑地址空间和系统资源;与线程相比,LWP有它自己的进程标识符,优先级,状态,
2015-03-12 09:39:34 8832
转载 IPC
进程间通信IPC,也就是Inter-Process Communication的缩写。首先我们明白一个进程其实就是一个狭义上的程序。进程间通信有如下的目的:1、数据传输,一个进程需要将它的数据发送给另一个进程,发送的数据量在一个字节到几M之间;2、共享数据,多个进程想要操作共享数据,一个进程对数据的修改,其他进程应该立刻看到;3、通知事件,一个进程需要向另一个或一组进程
2015-03-11 08:46:49 751
转载 python 类变量
在python的类中,类的属性有两种作用域:类变量,实例变量。Python中是不支持静态变量的,但是我们可以通过函数的默认值来实现静态变量的功能类变量紧接在类名后面定义,相当于java和c++的static变量实例变量在__init__里定义,相当于java和c++的普通变量类似于java中的static变量与一般变量的区别。类变量属于整个class所共享,而实例变量则
2015-03-10 15:20:50 657
转载 Python 面向对象
类(Class): 用来描述具有相同的属性和方法的对象的集合。它定义了该集合中每个对象所共有的属性和方法。对象是类的实例。类变量:类变量在整个实例化的对象中是公用的。类变量定义在类中且在函数体之外。类变量通常不作为实例变量使用。数据成员:类变量或者实例变量用于处理类及其实例对象的相关的数据。方法重载:如果从父类继承的方法不能满足子类的需求,可以对其进行改写,这个过程叫方法的覆盖(override)
2015-03-10 15:04:18 511
转载 tcp流与tcp会话
TCP三次握手成功完成,即可建立TCP会话。 同一个会话的的报文具有相同的四元组: 源IP 目的IP | 源TCP端口 目的TCP端口 称为一个socket。 同一个会话如果“|”前后的值对调也属于一个会话,只是来自不同方向例如你Telnet到某台主机,这就是一次Telnet会话;你浏览某个网站,这就是一次HTTP会话。即:一次应用层的业务过程:从tcp三次连接
2015-03-10 10:55:42 5227 1
转载 FAT32、NTFS、EXT
文件分配表FAT(File Allocation Table)用来记录文件所在位置的表格。FAT32:32位文件系统,FAT32分区的最大容量只有2TB,8KB簇下也不过32TB,单个文件体积更是不能超过4GB,文件名长度也不可以超过255个字符。另外,FAT32不支持日志、版权管理等高级技术,安全性也很差。NTFS:全称New Technology File Sy
2015-03-10 09:30:49 2047
转载 主分区、逻辑分区、拓展分区
主分区:也叫引导分区,最多可能创建4个(由MBR决定),当创建四个主分区时候,就无法再创建扩展分区了,当然也就没有逻辑分区了。主分区是独立的,对应磁盘上的第一个分区,“一般”就是C盘。在Windows系统把所有的主分区和逻辑分区都叫做“盘”或者“驱动器”,并且把所有的可存储介质都显示为操作系统的“盘”。因此,从“盘”的概念上无法区分主分区和逻辑分区。并且盘符可以在操作系统中修改,这就是要加上“一般
2015-03-10 09:04:55 1082
转载 硬盘的接口类型
硬盘接口分为IDE、SATA、SCSI、光纤通道和SAS五种,IDE接口硬盘多用于家用产品中,也部分应用于服务器,SCSI接口的硬盘则主要应用于服务器市场,光纤通道只在高端服务器上,价格昂贵。SATA是种新生的硬盘接口类型,在家用市场中有着广泛的前景。IDE IDE的英文全称为“Integrated Drive Electron
2015-03-10 09:01:55 1136
转载 SSD原理
一、固态硬盘的构成固态硬盘(SSD)主要有主控芯片(黄圈),缓存(蓝圈),闪存颗粒(红圈)三部分组成。主控芯片在SSD中的地位就相当于电脑中的CPU,其作用一是合理调配数据在各个闪存芯片上的负荷,作用二是承担了整个数据中转,连接闪存芯片和外部SATA接口。目前主流的有Intel主控,SandForce主控,Marvell主控。缓存用于存放临时数据之用,是内存和SSD的中转站。
2015-03-09 19:49:41 3618
转载 硬盘的存储原理和内部架构
经过封装后的硬盘,对我们一般呈现出如下的样子: 背面: 打开后盖: 硬盘主要由盘体、控制电路板和接口部件组成。盘体就是一个密封,封装了多个盘片的腔体;控制电路包含硬盘BIOS,主控芯片和硬盘缓存等单元;接口部件包含电源、数据接口主从跳线等。 硬盘的盘片一般采用合金材料,多数为铝合金(IBM曾经开发过玻璃材质的盘片,好像现在有些厂家也生产玻璃材
2015-03-09 18:35:22 1210
转载 mount
mount命令[-参数] [设备名称] [挂载点] 说明: [挂载点]必须是一个已经存在的目录,这个目录可以不为空,但挂载后这个目录下以前的内容将不可用,umount以后会恢复正常。 [设备名称] 可以是一个分区,一个usb设备,光驱,软盘,网络共享等。 常见参数说明:Mount 挂载文件系统使用帮助参数说明常见参数:
2015-03-09 18:04:24 553
转载 计算机串并口
数据冗余 在信息论中,信息冗余是传输消息所用数据位的数目与消息中所包含的实际信息的数据位的数目的差值。数据压缩是一种用来消除不需要的冗余的方法,校验和是在经过有限信道容量的噪声信道中通信,为了进行错误校正而增加冗余的方法。数据的应用中为了某种目的采取数据冗余方式。1、重复存储或传输数据以防止数据的丢失。2、对数据进行冗余性的编码来防止
2015-03-09 16:54:43 1214
转载 文件权限
1. *nix命令,以长格式的形式查看当前目录下所有可见文件的详细属性。命令如下:12$ls -ldrwxr-xr-x 3 user group 102 Mar11 22:56 Filename 7个段分别是:文件属性:drwxr-xr-x其
2015-03-09 14:17:01 542
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人