当前位置:文档之家› 第5章 IP包流量分析程序

第5章 IP包流量分析程序


14
捕获IP数据包(续)
• 设置混杂模式
#define IO_RCVALL _WSAIOW(IOC_VENDOR, 1) DWORD dwBufferLen[10]; DWORD dwBufferInLen =1; DWORD dwBytesReturned = 0; WSAIoctl (sock, IO_RCVALL, &dwBufferInLen, sizeof(dwBufferInLen), &dwBufferLen, sizeof(dwBufferLen), &dwBytesReturned, NULL, NULL);
• IP协议是一种不可靠、无连接的数据报传送服 务协议,它提供的是一种“尽力而为”的服务
10
IP数据报格式
0 4位 版本 4位 报头长度 15 16 8位 服务类型(TOS) 3位 标志 8位协议 32位源IP地址 32位目的IP地址 选项(若有) 填充域 16位总长度(字节) 13位片偏移 16位首部校验和 20字节 31
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
4
编程训练目的
• 掌握IP数据报格式和报头各字段的含 义,加深对IP协议的理解 • 掌握使用Raw Socket和Winpcap捕 获IP数据包的软件设计与编程能力 • 熟悉分析与统计IP数据包信息的方法
5
提纲
• • • • •

接收IP数据包
使用函数recv()接收经过网卡的IP数据包 ,原型为:
int recv( SOCKET s, char FAR * buf, int len, int flags)
15
统计IP数据包的信息
• 采用链表结构来存储数据包信息 定义一个结点类CIPNode,存放IP包的源地 址、目的地址、协议类型和不同源、目的主 机之间不同类型的IP数据包的数量 再定义一个结点链表类CNodeList,存储所 捕获的所有数据包信息
16
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
17
扩展与提高
使用Winpcap捕获数据包 获取网络设备列表 列出所有网卡,让用户选择需要监视的网卡 以混杂模式打开网卡 编译并设置过滤器 捕获IP数据包
18
扩展与提高
使用map结构存储IP数据包信息
16位标识 8位 生存时间(TTL)
数据部分
11
套接字
• 流套接字(Stream Socket)

Stream Socket主要用于TCP协议 Datagram Socket主要用于UDP协议 要进行IP层数据包的接收和发送,则应该使用Raw Socket
• 数据报套接字(Datagram Socket)

• 原始套接字(Raw Socket)

12
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
13
捕获IP数据包
• 初始化winsock2网络环境
WSADATA wsData; WSAStartup(MAKEWORD(2, 2), &wsData);

创建Raw Socket
typedef map<CString, RECORD> MY_MAP; MY_MAP myHash;
19
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
6
编程训练要求
编写程序,监控本地网络,捕获一段时 间内以本机为源地址或目的地址的IP数 据包,统计IP数据包的信息 : • 程序使用命令行运行: IPMonitor.exe duration_time duration_time为监控时间,单位为秒 • 程序统计信息包括源地址、目的地址、 协议类型以及相应的IP数据包的数量
“十一五”国家重点图书 计算机科学与技术学科前沿丛书
计算机网络 高级软件编程技术
1
第5章 IP包流量分析程序
2
概述
IP协议是TCP/IP协议族中最为核心的协 议,它制定了统一的IP数据报格式,向传 输层屏蔽了通信子网的差异。掌握基于IP 协议的网络应用是网络技术研究与软件开 发的一个重要基础
3
提纲
SOCKET sock; sock = WSASocket (AF_INET, SOCK_RAW, IPPROTO_IP, NULL, 0, WSA_FLAG_OVERLAPPED);

绑定 Socket
Bind (socket, (sockaddr*)&addr_in, sizeof(addr_in));
7
程序运行的参考界面
8
提纲
• • • • •
编程训练目的 编程训练要求 相关知识介绍 程序设计分析 扩展与提高
9

IP协议
• TCP/IP分层结构
应用层 传输层 Telnet、FTP、 SMTP TCP DNS、TFTP、 SNMP UDP
互联网层
主机-网络层
IP
Ethernet、Token Ring、X.25、SLIP、 PPP

定义map中元素的数据类型
// // // // 源IP地址 目的IP地址 IP包的协议类型 数据包的数量
typedef struct record { CString SouceIP; CSstring DesIP; CString ProType; int number; }RECORD;

定义一个map类型的变量来存储IP数据包信息
相关主题