摘要:使用Winpcap开发包,实现了一个网络数据包分析器。可以捕获UDP或TCP数据包,并对数据包头进行分析。
关键词:Winpcap;数据包;UDP;TCP;分析器
众所周知,要实现网络数据通信,必须依赖于某套协议,如大名鼎鼎的TCP/IP协议。TCP/IP协议是一整套协议族,其中IP协议位于网络层,网络层之上是传输层协议UDP和TCP协议。数据包是进行网络数据通信的基本单位,每块数据都包含在数据包中。数据包中,除了数据本身外,还有数据包头,不同的层都有不同的包头。本文就针对TCP和UDP这两种传输层协议的数据包的结构进行分析,并且实现了可以捕获这两种包,并解析包头信息的功能。
一、 UDP和TCP包结构简介
UDP和TCP是TCP/IP协议族中最重要的两个传输层子协议。其中,UDP是非面向连接的,用于实现块速的,但不可靠的数据通信。TCP是面向连接的,有一套保证数据传输的机制,可以实现数据的可靠传输。
数据包的以太头结构如下表所示:
名称 |
长度 |
说明 |
目的MAC |
6字节 |
此数据包发送的目的MAC地址 |
源MAC |
6字节 |
此数据包来自于哪个MAC地址 |
类型 |
2字节 |
表示数据包属于哪类。0800H-IP包 8864H-PPPOE包 |
表1 以太头结构表
如类型为8864H,表示这是一个PPPOE数据包,即虚拟拨号的数据包,结构如下所示:
名称 |
长度 |
说明 |
版本号 |
4位 |
设为1 |
类型 |
4位 |
设为1 |
代码 |
8位 |
设为0 |
会话号 |
16位 |
标识该会话包,虚拟拨号建立后该值就固定了 |
长度 |
16位 |
PPPOE包字节数(不包括以太头和PPPOE头) |
标志 |
16位 |
表示PPPOE所携带数据类型 0021H-IP包 |
|