2024年4月24日发(作者:)
编程实现简单的TCP协议分析器
编程实现简单的TCP协议分析器
一、问题描述
编程实现简单的TCP协议分析器,TCP协议分析器是一种用于监督和跟踪网络活动的诊
断工具,它从局域网中抓取IP数据包,并对它进行分析得到相应的头部信息,过滤TCP包进
行分析,得到TCP包的相应信息。
二、基本要求
1.利用原始套接字实现简单的TCP协议分析器。
2.系统功能包括:
2.1 原始套接字与网卡绑定,并接收流经网卡的所有数据包;
2.2 对数据包进行分析以获得源IP地址和目的IP地址;
2.3 对TCP Segment进行分析以获得其首部详细信息;
2.4 显示分析结果。
3 建议使用VC++。
三、设计思想
TCP协议的数据传送程序是由二个子程序组成的。也可以看成是服务器端程序和客户端
程序,其中:服务器端程序的功能是侦听端口号,接收远 程主要的TCP连接申请,并接收远
程主机传送来的文字数据。另外一个子程序,也就是所谓的客户端程序,主要实现向网络的
远程主机提出TCP连接申请。
程序利用原始套接字抓取局域网中的IP包。
TCP协议分析器实现了sniffer的一部分功能。而sniffer的工作原理是:1. 把网卡置
于混杂模式;2. 捕获数据包;3. 分析数据包。
Raw Socket: 原始套接字可以用它来发送和接收 IP 层以上的原始数据包, 如 ICMP, TCP,
UDP等。
四、系统结构
(1)Pcap_addr描述网络接口地址;
(2)pcap_pkthdr用来描述每个捕获到的数据包的基本信息;
(3)int_pcaplookupnet获取网络地址和网络掩码;
(4)int_pcaploop循环捕获网络数据包,直到遇到错误或满足退出条件;
(5)pcap_t* pcap_open_dead构造一个libpcap句柄。
五、程序流程(或模块划分)
编程实现简单的TCP协议分析器
六、源程序
#include "pcap.h"
struct ether_header
{
u_int8_t ether_dhost[6];
/* 目的以太网地址 */
u_int8_t ether_shost[6];
/* 源以太网地址 */
u_int16_t ether_type;
/* 以太网类型 */
};
struct arp_header
发布评论