2013年8月4日

char能表示(-128~127)

摘要: char 的取值范围是 -128 ~127注:数0的补码表示是唯一的:+0的补码=+0的反码=+0的原码=00000000-0的补码=11111111+1=00000000(mod 2的8次方) 由于-128的原码用8位无法表示,所以必须扩展到16位去表示,然后对16位的... 阅读全文

posted @ 2013-08-04 21:19 胡永光 阅读(302) 评论(0) 推荐(0) 编辑

UNIX网络编程——ioctl 函数的用法详解

摘要: 1.介绍 Linux网络程序与内核交互的方法是通过ioctl来实现的,ioctl与网络协议栈进行交互,可得到网络接口的信息,网卡设备的映射属性和配置网络接口。并且还能够查看,修改,删除ARP高速缓存的信息,所以,我们有必要了解一下ioctl函数的具体实现。2.相关结构体与相关函数#in... 阅读全文

posted @ 2013-08-04 15:47 胡永光 阅读(400) 评论(0) 推荐(0) 编辑

UNIX网络编程——原始套接字(dos攻击)

摘要: 原始套接字(SOCK_RAW)。应用原始套接字,我们可以编写出由TCP和UDP套接字不能够实现的功能。 注意原始套接字只能够由有 root权限的人创建。 可以参考前面的博客>。/******************** DOS.c ... 阅读全文

posted @ 2013-08-04 14:51 胡永光 阅读(200) 评论(0) 推荐(0) 编辑

UNIX网络编程——尝试探索基于Linux C的网卡抓包过程

摘要: 抓包首先便要知道经过网卡的数据其实都是通过底层的链路层(MAC),在Linux系统中我们获取网卡的数据流量其实是直接从链路层收发数据帧。至于如何进行TCP/UDP连接本文就不再赘述(之前的一段关于web server的程序已经大概说明),直接从最关键的原始套接字( raw socke... 阅读全文

posted @ 2013-08-04 14:09 胡永光 阅读(463) 评论(0) 推荐(0) 编辑

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

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

posted @ 2013-08-04 13:47 胡永光 阅读(148) 评论(0) 推荐(0) 编辑

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

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

posted @ 2013-08-04 13:33 胡永光 阅读(171) 评论(0) 推荐(0) 编辑

UNIX网络编程——原始套接字的魔力【续】

摘要: 如何从链路层直接发送数据帧 上一篇里面提到的是从链路层“收发”数据,该篇是从链路层发送数据帧。 上一节我们主要研究了如何从链路层直接接收数据帧,可以通过bind函数来将原始套接字绑定到本地一个接口上,然后该套接字就只接收从该接口收上来的对应的数据包。今天我们用原始套接字来手... 阅读全文

posted @ 2013-08-04 03:33 胡永光 阅读(255) 评论(0) 推荐(0) 编辑

UNIX网络编程——原始套接字的魔力【下】

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

posted @ 2013-08-04 01:33 胡永光 阅读(247) 评论(0) 推荐(0) 编辑

导航