根据IP头格式 写sniff

/ns/wz/comp/data/20010825043040.htm

我想开始熟悉网络安全最好的方法是通过自己编写一些程序,
来学习有关网络的知识,并且对hacker常用的手法有一定的
了解。(不知大家同意吗?) :-)

所以我整理了一些网络基础知识,放在这里。为什么我们不
写一个自己的sniff呢?让我们从开始一起努力,写些自己的
小工具。

先是常用的IP头格式。

IP头格式
===========

版本号 (4位)
IP头长度 (4位)
服务类型 (8位)
数据包长度 (16位)
标识段 (16位)
标志段 (16位)
生存时间 (8位)
传输协议 (8位)
头校验和 (16位)
发送地址 (16位)
目标地址 (16位)
选项
填充



简单说明
============

1. IP头长度计算所用单位为32位字, 常用来计算数据开始偏移量
2. 数据包长度用字节表示, 包括头的长度, 因此最大长度为65535
字节
3. 生存时间表示数据被丢失前保存在网络上的时间, 以秒计.
4. 头校验和的算法为取所有16位字的16位和的补码.
5. 选项长度是可变的, 填充区域随选项长度变化, 用于确保长度
为整字节的倍数.



C 描述
============

struct iphdr {
BYTE versionihl;
BYTE tos;
WORD tot_len;
WORD id;
WORD frag_off;
BYTE ttl;
BYTE protocol;
WORD check;
DWORD saddr;
DWORD daddr;
/* Put options here. */
};