网络编程课程设计-网路嗅探器.doc
《网络编程课程设计-网路嗅探器.doc》由会员分享,可在线阅读,更多相关《网络编程课程设计-网路嗅探器.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、目 录1 设计目的12 设计内容23 程序流程24 设计步骤35 设计总结101 设计目的网络通信课程设计是网络工程专业的大型作业课。是培养计算机领域从事网络技术及应用工作的高级工程技术人才的必修课程。本课的主要任务是使学生队所学的计算机网络知识从实践上有一个较清晰的了解。对当前计算机网络的主要种类和常用的网络协议有更进一步的深入认识。学会计算机网络设计和日常管理及维护的最基本方法。网络编程简单的理解就两台计算机相互通讯数据,通过使用套接字来达到进程通信目的编程就是网络编程。网络编程最主要工作就是在发送端把信息通过规定好的协议进行组包,在接收端按照规定好的协议把包进行解析,从而提取出相应的信息
2、,达到通信的目的。中间最主要的就是数据包的组装,数据包的过滤,数据包的捕获,数据包的分析,当然最后再做一些处理。本次实验运用C+的网络编程相关知识,通过学习了解了TCP和UDP协议的基本知识和SOCKET编程的基本概念,完成tracert程序,实现ping功能和路由追踪功能。2 设计内容一、学习实践要求 1对计算机网络的物理构成有清晰的了解; 2理解计算机网络体系结构的内涵; 3熟悉计算机网络的分类及常用的网络协议;4基于掌握计算机网络软件的开发方法;5具备管理计算机网络的基本知识及技能。二、模块功能(1)pin功能:发送ICMP数据包到计算机,如有返回,显示相应时间等。(2)路由探测功能:依
3、次ping途经的路由器或网关设备,依次显示途经路由器的响应时间。3 程序流程超时,打印星号解析命令行参数中的IP地址或主机名开始是预期数据报?解析数据报并显示输出有数据报到达?填充ICMP回显请求数据报并发送TTL+(初始为1)目的主机回应答或达到最大跳站值?初始化winsock2环境结束释放分钟资源打印结束信息NYYYNN图1 流程图4 设计步骤一、程序运行结果相关截图图2 运行结果图3 运行结果图4 运行结果图5 运行结果二、程序源代码#include #include #include using namespace std;#pragma comment(lib, Ws2_32.lib
4、)/IP报头typedef struct unsigned char hdr_len:4; /4位头部长度 unsigned char version:4; /4位版本号 unsigned char tos; /8位服务类型 unsigned short total_len; /16位总长度 unsigned short identifier; /16位标识符 unsigned short frag_and_flags; /3位标志加13位片偏移 unsigned char ttl; /8位生存时间 unsigned char protocol; /8位上层协议号 unsigned short
5、 checksum; /16位校验和 unsigned long sourceIP; /32位源IP地址 unsigned long destIP; /32位目的IP地址 IP_HEADER;/ICMP报头typedef struct BYTE type; /8位类型字段 BYTE code; /8位代码字段 USHORT cksum; /16位校验和 USHORT id; /16位标识符 USHORT seq; /16位序列号 ICMP_HEADER;/报文解码结构typedef struct USHORT usSeqNo; /序列号 DWORD dwRoundTripTime; /往返时间
6、 in_addr dwIPaddr; /返回报文的IP地址DECODE_RESULT;/计算网际校验和函数USHORT checksum(USHORT *pBuf,int iSize) unsigned long cksum=0; while(iSize1) cksum+=*pBuf+; iSize-=sizeof(USHORT); if(iSize) cksum+=*(UCHAR *)pBuf; cksum=(cksum16)+(cksum&0xffff); cksum+=(cksum16); return (USHORT)(cksum);/对数据包进行解码BOOL DecodeIcmpRe
7、sponse(char * pBuf,int iPacketSize,DECODE_RESULT &DecodeResult,BYTE ICMP_ECHO_REPLY,BYTE ICMP_TIMEOUT) /检查数据报大小的合法性 IP_HEADER* pIpHdr = (IP_HEADER*)pBuf; int iIpHdrLen = pIpHdr-hdr_len * 4; if (iPacketSize type=ICMP_ECHO_REPLY) /ICMP回显应答报文 usID=pIcmpHdr-id; /报文ID usSquNo=pIcmpHdr-seq; /报文序列号 else if
8、(pIcmpHdr-type=ICMP_TIMEOUT) /ICMP超时差错报文 char * pInnerIpHdr=pBuf+iIpHdrLen+sizeof(ICMP_HEADER); /载荷中的IP头 int iInnerIPHdrLen=(IP_HEADER *)pInnerIpHdr)-hdr_len*4; /载荷中的IP头长 ICMP_HEADER * pInnerIcmpHdr=(ICMP_HEADER *)(pInnerIpHdr+iInnerIPHdrLen);/载荷中的ICMP头 usID=pInnerIcmpHdr-id; /报文ID usSquNo=pInnerIcm
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 网络 编程 课程设计 网路 嗅探器
限制150内