解析IP数据包课程设计报告

合集下载

数据通信与网络课程设计实践报告--解析IP数据包

数据通信与网络课程设计实践报告--解析IP数据包

数据通信与网络课程设计实践报告--解析IP数据包HUBEI NORMAL UNIVERSITY 专业课程论文Course’s Thesis课程名称数据通信与网络作业题目数据通信与网络课程设计报告学生姓名贺兵学号2008115020307指导教师彭旭富所在院系计算机科学与技术学院专业名称通信工程完成时间2012-01-10数据通信与网络课程设计报告摘要:互联网络层是TCP/IP协议参考模型中的关键部分.IP协议把传输层送来的消息组装成IP数据包,并把IP数据包传送给数据链层.IP协议在TCP/IP协议族中处于核心地位,IP协议制定了统一的IP 数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道。

本程序使用套接字socket编程,将网受流经网卡的所有类型的数据包。

首先,初始化套接字,然后监听数据包,解析数据包。

关键字:TCP/IP协议,数据包,套接字,解析一设计内容及任务利用C/C++/VC/VB/JAVA语言,根据所学知识,设计程序,功能为捕获网络中的IP数据包,接续数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

具体:1.以命令行形式运行,ipparse logfile,其中ipparse是程序命,而logfile则代表记录记过的日志文件。

2.在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3.当程序接收到键盘输入Ctrl+C时推出。

二设计思想IP数据报的格式说明IP协议都具有什么功能。

其首部,版本目前广泛使用的版本号为4;首部长度站4bit;服务类型占8bit,其中服务类型TOS子域占4位,优先级子域占3位,另一位为保留位;总长度字段为2B,IP数据包的最大长度是65535B;标识占16bit,它是一个计数器,用来产生数据报的标识;标志占3bit,其中最低为为MF,MF=1时为后面“还有分片”,MF=0表示这是数据报片中的最后一个,DF=0时,表示允许分片;片偏移以8个字节为偏移单位;生存时间字段记为TTL,单位为秒;协议段占8bit,用于指出次数据是使用何种协议,典型的协议号有6:TCP,17:UDP,1:ICMP。

计算机网络课程设计报告-IP数据包的捕获与分析

计算机网络课程设计报告-IP数据包的捕获与分析

CENTRAL SOUTH UNIVERSITY计算机网络课程设计报告题目IP数据包的捕获与分析学生姓名廖成班级学号0902130408指导教师穆帅设计时间2015年11月目录第一章绪论 (3)1.1 课题研究背景 (3)1.2 课题研究的意义 (3)第二章课程设计的目的与要求 (3)2.1 课程设计的目的 (3)2.2 课程设计的要求 (4)第三章课程设计的内容 (4)3.1 课程设计的内容 (5)3.2 内容的要求 (5)第四章程序设计与分析 (5)4.1 IP数据包 (5)4.1.1 数据包的格式说明 (5)4.1.2 头部数据结构的定义 (7)4.2 部分程序实现 (7)4.2.1 套接字的使用 (7)4.2.2 数据库的使用 (8)4.2.3 各部分详细实现 (9)4.4 程序流程图 (12)4.4.1 主程序流程图 (12)4.4.2 捕获并分析数据包头部模块流程图 (13)4.4.3 头部信息存数据库模块 (13)第五章实验结果 (14)5.1 程序截图 (14)第六章总结 (16)6.1 实验心得 (16)第七章附录 (17)参考文献 (17)第一章绪论1.1 课题研究背景随着计算机技术的发展,网络的应用迅速普及,网络已日益成为生活中不可或缺的工具。

同时,网络的安全性与可靠性日益受到人们的重视,安全性指的是网络上的信息不被泄露、更改和破坏,可靠性指的是网络系统能够连续、可靠地运行,网络服务不被中断。

网络数据包捕获、监听与分析技术是网络安全维护的一个基础技术同时也是网络入侵的核心手段。

所以研究有关数据包捕获和分析技术对保证网络的健康、安全运行是很有意义的。

1.2课题研究的意义计算机之间进行通信时,交互的所有信息都封装在数据包中。

因此,通过采集网络数据并对其进行相应的分析,可以清楚地了解到进行通信的计算机的通信目的。

通过分析采集到的数据包可以确定网络是否受到入侵;其次也可以通过采集到的数据包来分析应用程序可能出现的问题及原因;此外,通过网络数据的采集和统计可以清楚地了解整个网络在各个时段内的网络负载情况,从而判断网络使用得是否合理。

计算机网络课程设计IP数据包解析文档

计算机网络课程设计IP数据包解析文档

解析IP数据包课程设计目的:•设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。

课程设计要求:课程设计的目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。

本设计的目标是捕获网络中的IP 数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:•以命令行形式运行:ipparse logfile,其中ipparse是程序名,而logfile则代表记录结果的日志文件。

•在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

•当程序接收到键盘输入Ctrl+C时退出。

设计相关知识:IP数据报的格式说明IP协议都具有什么功能。

其首部,版本目前广泛使用的版本号为4;首部长度站4bit;服务类型占8bit,其中服务类型TOS子域占4位,优先级子域占3位,另一位为保留位;总长度字段为2B,IP数据包的最大长度是65535B;标识占16bit,它是一个计数器,用来产生数据报的标识;标志占3bit,其中最低为为MF,MF=1时为后面“还有分片”,MF=0表示这是数据报片中的最后一个,DF=0时,表示允许分片;片偏移以8个字节为偏移单位;生存时间字段记为TTL,单位为秒;协议段占8bit,用于指出次数据是使用何种协议,典型的协议号有6:TCP,17:UDP,1:ICMP。

本程序使用套接字socket编程,将网卡设为能够接受流经网卡的所有类型的数据包。

首先,初始化套接字,然后监听数据包,解析数据包。

SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)用来创建套接字,其参数为通信发生的区字段和套接字的类型。

ip数据包解析实验报告摘要doc

ip数据包解析实验报告摘要doc

ip数据包解析实验报告摘要篇一:解析IP数据包实验报告成都工业学院(课程设计实验报告)院系: 计算机工程系课程名称: 计算机网络设计名称: 解析IP数据包专业名称: 网络工程班级: 1305022姓名: 牟黎明学号: 11指导老师:刘枝盛老师成绩:设计时间:XX年12月22日—XX年12月26日成都工业学院课程设计任务书指导教师(签名):目录一、课程设计的目的和意义...............................................3 二、课程设计的内容和要求..............................................3 三、解析IP数据包设计的相关技术 (4)? 3.1 IP数据包的格式与分析? 3.2 程序分析设计......................................................4 .. (6) (6) (6) (7) (7)……………………….…………..…………….7 ?3.2.1 网卡设置? 3.2.2 程序设计? 3.2.3 程序设计? 3.2.4 程序设计? 3.2.5 程序设计四、课程设计过程 (8)? 4.1 程序流程图? 4.2源程序代码 (8) (16)……………….……………..............……………….9 ?4.3 程序运行结果? 4.3.1.登陆界面,提示输入命令符 (16)? 4.3.2.命令符输入错误后提示界面 (16)? 4.3.3.截获的IP数据包界面 (17)? 4.3.4.继续抓包图 (17)五、课程设计小结 (18)参考文献 (18)一、课程设计的目的和意义目的:本章课程设计的目的就是设计一个解析IP数据包的程序(我的编辑环境为visual2102),并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对网络层的工作原理有更好的理解和认识。

ip课程设计实验报告

ip课程设计实验报告

ip课程设计实验报告一、教学目标本章节的教学目标包括以下三个方面:1.知识目标:通过本章节的学习,学生需要掌握IP地址的基本概念、分类和作用,了解子网划分和IP地址分配的原理和方法。

2.技能目标:学生能够运用所学的知识,进行IP地址的配置和管理,掌握子网划分和IP地址分配的实践操作。

3.情感态度价值观目标:通过本章节的学习,学生能够培养对网络技术的兴趣和好奇心,增强信息时代下的责任感,认识到网络技术在现代社会中的重要性和应用价值。

在制定教学目标时,充分考虑了课程性质、学生特点和教学要求,将目标分解为具体的学习成果,以便后续的教学设计和评估。

二、教学内容本章节的教学内容主要包括以下几个方面:1.IP地址的基本概念:IP地址的定义、IP地址的格式和分类。

2.子网划分:子网划分的原理和方法,子网掩码的概念和计算。

3.IP地址分配:IP地址分配的原则和方法,私有IP地址和公有IP地址的区分。

4.IP地址的配置和管理:Windows系统下IP地址的配置方法,Linux系统下IP地址的配置方法。

5.实践操作:学生动手进行子网划分和IP地址分配的实践操作。

教学内容的选择和确保了科学性和系统性,详细的教学大纲明确了教学内容的安排和进度,教材的章节和内容列举清晰。

三、教学方法为了激发学生的学习兴趣和主动性,本章节将采用以下几种教学方法:1.讲授法:通过讲解IP地址的基本概念、子网划分和IP地址分配的原理和方法,使学生掌握理论知识。

2.讨论法:学生进行小组讨论,分享子网划分和IP地址分配的实践经验,促进学生之间的交流和合作。

3.案例分析法:分析实际案例,让学生了解子网划分和IP地址分配在实际应用中的重要性。

4.实验法:安排实践操作环节,让学生亲自动手进行子网划分和IP地址分配,巩固所学知识。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,将选择和准备以下教学资源:1.教材:选用权威、实用的IP地址教材,为学生提供理论知识的学习依据。

ip数据课程设计

ip数据课程设计

ip数据课程设计一、教学目标本节课的教学目标是让学生了解IP地址的基本概念、作用和分类,掌握IP地址的表示方法和计算方式,了解IP地址的分配和管理机制,培养学生运用IP地址解决实际问题的能力。

1.了解IP地址的基本概念和作用。

2.掌握IP地址的分类及其特点。

3.掌握IP地址的表示方法及其计算方式。

4.了解IP地址的分配和管理机制。

5.能够运用IP地址解决实际问题。

6.能够使用网络工具查询IP地址相关信息。

情感态度价值观目标:1.培养学生对网络技术的兴趣和好奇心。

2.培养学生遵守网络规则的意识。

二、教学内容本节课的教学内容主要包括以下几个部分:1.IP地址的基本概念和作用。

2.IP地址的分类及其特点。

3.IP地址的表示方法及其计算方式。

4.IP地址的分配和管理机制。

5.IP地址在实际应用中的案例分析。

三、教学方法为了达到本节课的教学目标,我们将采用以下几种教学方法:1.讲授法:通过讲解IP地址的基本概念、分类、表示方法和计算方式等知识,使学生掌握IP地址的相关知识。

2.案例分析法:通过分析实际应用中的IP地址案例,使学生了解IP地址在实际中的应用。

3.讨论法:学生进行小组讨论,培养学生运用IP地址解决实际问题的能力。

4.实验法:安排学生进行网络实验,让学生亲自动手操作,加深对IP地址的理解。

四、教学资源为了支持本节课的教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选用权威、实用的网络技术教材,为学生提供系统的理论知识。

2.参考书:提供相关的网络技术参考书籍,丰富学生的知识视野。

3.多媒体资料:制作精美的PPT课件,生动展示IP地址的相关知识。

4.实验设备:准备网络实验设备,让学生亲身体验IP地址的应用。

五、教学评估为了全面、客观地评估学生的学习成果,我们将采取以下评估方式:1.平时表现:通过观察学生在课堂上的参与度、提问回答等情况,评估学生的学习态度和理解程度。

2.作业:布置与IP地址相关的作业,评估学生对知识点的掌握情况。

计算机网络课程设计IP数据包解析(共5篇)

计算机网络课程设计IP数据包解析(共5篇)

计算机网络课程设计IP数据包解析(共5篇)第一篇:计算机网络课程设计 IP数据包解析课设名称:IP数据包解析班级:学号:姓名:指导老师:日期: 2012.6.15计算机网络课程设计报告目录1.课程设计目的 (1)2.课程设计要求 (1)3.程序设计分析 (1)3.1 网卡设置 (1)3.2 使用套接字 (2)3.2.2 接收数据包 (2)3.3 定义IP头部的数据结构 (3)3.4 IP包的解析 (3)3.5 协议的定义 (4)3.6捕获处理 (4)4.运行结果 (5)5.总结 (5)6.源程序代码 (6)Ip数据包解析1.课程设计目的本课程设计的目的就是设计一个捕获并解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP 层的工作原理有更好的理解和认识。

2.课程设计要求本设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:1)以命令行形式运行:ipparse logfile,其中ipparse是程序名, 而logfile则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3)当程序接收到键盘输入Ctrl+C时退出3.程序设计分析3.1 网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字(socket)进行编程。

但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。

对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地Ip数据包解析址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。

我们要想获取网络设备的所有数据包,就是需要将网卡设置为混杂模式。

解析IP数据包课程设计报告

解析IP数据包课程设计报告

成绩评定表课程设计任务书目录1 课程设计目的 (1)2 课程设计要求 (2)3 相关知识 (3)4 课程设计分析 (6)5 程序代码 (11)6 运行结果与分析 (18)7 参考文献 (18)1 课程设计目的IP数据包是网络成传输的基本数据单元,熟悉IP数据包结构对于理解网络工作原理具有重要意义。

本课程设计的主要目的是通过接受与解析IP数据包,了解IP数据包的基本结构与IP协议的基本功能。

2 课程设计要求根据后面介绍的IP数据包结构,编写程序接收并解析IP数据包。

1)以命令行形式运行;ParsePacket log_file其中,ParsePacket为程序名,log_file为日志文件名。

2)输出内容:IP数据包的各字段值,包括版本、头部长度、服务类型、总长度、标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等。

3)当程序接收到键盘输入Ctrl+C时退出。

3相关知识互联网络层是TCP/IP协议参考模型中的关键部分.IP协议把传输层送来的消息组装成IP数据包,并把IP数据包传送给数据链层.IP协议在TCP/IP协议族中处于核心地位,IP 协议制定了统一的IP数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道.编制本程序前,首先要对IP包的格式有一定了解,图1给出了IP 协议的数据包格式.IP数据包的第一个字段是版本字段,其度是4位,表示所使用的IP协议的版本.目前的版本是IPV4,版本字段的值是4,下一代版本是IPV6,版本字段值是6.本程序主要针对版本是IPV4的数据包的解析.报头标长字段为4位,它定义了以4B为一个单位的IP包的报文长度.报头中除了选项字段和填充域字段外,其他各字段是定长的.因此,IP数据包的头长度在20—40B之间,是可变的.0 4 8 16 19 24 31(位)图3.1 IP数据包的格式服务类型字段共8位,用于指示路由器如何处理该数据包.该字段长度由4位服务类型(TOS)子域和3位优先级子域组成,1位为保留位,该字段结构如图2所示.图3.1 服务类型字段结构优先级共有8种,优先级越高表明数据包越重要.表1中列出了各种优先级所代表的意义.表3.2 优先子域的说明在4位服务类型子域中b4,b3,b2,b1分别表示D(延迟),T(吞吐量),R(可靠性)与C(成本).表3.3列出了服务器类型自域的构成.总长度字段为2B,它定义了以字节为单位的数据包的总长度.IP数据包的最大长度为65535B.标识字段的长度为16位,用于识别IP数据包的编号.每批数据都要有一个标识值,用于让目的主机判断新来的数据属于哪个分组.报头中的标志字段如图7-3所示.标志字段共3位,最高位是0.禁止分片标志DF(do not fragment)字段的值若为1,表示不能对数据包分片;若DF值为0,则表明可以分片.分片标志MF( more fragment)的值为1,表示接收到的不是最后一个分片;若MF值为0,表示接收到的是最后一个分片.片偏移字段共13位,说明分片在整个数据包中的相对位置.片偏移值是以8B为单位来记数的,因此选择的分片长度应该是8B的整数倍.生存时间(TTL)字段为8位,用来设置数据包在互联网络的传输过程的寿命,通常是用一个数据包可以经过的最多的路由器跳步数来限定的.协议字段为8位,表示使用此IP数据包的高层协议类型,常用的协议号如表7-3所示.表7.3 典型的协议号头校验和字段为16位,用于存放检查报头错误的校验码。

数据通信与网络课程设计实践报告- 解析IP数据包

数据通信与网络课程设计实践报告- 解析IP数据包

HUBEI NORMAL UNIVERSITY专业课程论文Course’s Thesis课程名称数据通信与网络作业题目数据通信与网络课程设计报告学生姓名贺兵学号2008115020307指导教师彭旭富所在院系计算机科学与技术学院专业名称通信工程完成时间2012-01-10数据通信与网络课程设计报告摘要:互联网络层是TCP/IP协议参考模型中的关键部分.IP协议把传输层送来的消息组装成IP数据包,并把IP数据包传送给数据链层.IP协议在TCP/IP协议族中处于核心地位,IP协议制定了统一的IP数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道。

本程序使用套接字socket编程,将网受流经网卡的所有类型的数据包。

首先,初始化套接字,然后监听数据包,解析数据包。

关键字:TCP/IP协议,数据包,套接字,解析一设计内容及任务利用C/C++/VC/VB/JAVA语言,根据所学知识,设计程序,功能为捕获网络中的IP数据包,接续数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

具体:1.以命令行形式运行,ipparse logfile,其中ipparse是程序命,而logfile则代表记录记过的日志文件。

2.在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3.当程序接收到键盘输入Ctrl+C时推出。

二设计思想IP数据报的格式说明IP协议都具有什么功能。

其首部,版本目前广泛使用的版本号为4;首部长度站4bit;服务类型占8bit,其中服务类型TOS子域占4位,优先级子域占3位,另一位为保留位;总长度字段为2B,IP数据包的最大长度是65535B;标识占16bit,它是一个计数器,用来产生数据报的标识;标志占3bit,其中最低为为MF,MF=1时为后面“还有分片”,MF=0表示这是数据报片中的最后一个,DF=0时,表示允许分片;片偏移以8个字节为偏移单位;生存时间字段记为TTL,单位为秒;协议段占8bit,用于指出次数据是使用何种协议,典型的协议号有6:TCP,17:UDP,1:ICMP。

高三计算机课件 网络课程设计-IP数据包解析实验报告

高三计算机课件 网络课程设计-IP数据包解析实验报告

目录目录 (1)1、课程设计目的 (2)2、课程设计要求 (2)3、相关知识 (2)4、课程设计分析 (6)4.1 网卡设置 (6)4.2 使用套接字 (6)4.2.2 接收数据包 (7)4.3 定义IP头部的数据结构 (7)4.4 IP包的解析 (9)4.5 协议的定义 (9)4.6捕获处理 (9)5、运行结果 (10)6、总结 (10)7、课程设计参考资料 (11)8、源程序代码 (11)1、课程设计目的本课程设计的目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。

2、课程设计要求本设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:1)以命令行形式运行:ipparse logfile,其中ipparse是程序名, 而logfile 则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3)当程序接收到键盘输入Ctrl+C时退出。

3、相关知识互联网络层是TCP/IP协议参考模型中的关键部分.IP协议把传输层送来的消息组装成IP数据包,并把IP数据包传送给数据链层.IP协议在TCP/IP协议族中处于核心地位,IP协议制定了统一的IP数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道.编制本程序前,首先要对IP包的格式有一定了解,图1给出了IP协议的数据包格式.IP数据包的第一个字段是版本字段,其度是4位,表示所使用的IP协议的版本.目前的版本是IPV4,版本字段的值是4,下一代版本是IPV6,版本字段值是6.本程序主要针对版本是IPV4的数据包的解析.报头标长字段为4位,它定义了以4B为一个单位的IP包的报文长度.报头中除了选项字段和填充域字段外,其他各字段是定长的.因此,IP数据包的头长度在20—40B之间,是可变的.0 4 8 16 19 24 31图1 IP数据包的格式服务类型字段共8位,用于指示路由器如何处理该数据包.该字段长度由4位服务类型(TOS)子域和3位优先级子域组成,1位为保留位,该字段结构如图2所示.B7 b6 b5 b4 b3 b2 b1 b0图2 服务类型字段结构优先级共有8种,优先级越高表明数据包越重要.表1中列出了各种优先级所代表的意义.表一优先子域的说明在4位服务类型子域中b4,b3,b2,b1分别表示D(延迟),T(吞吐量),R(可靠性)与C(成本).表2列出了服务器类型自域的构成.总长度字段为2B,它定义了以字节为单位的数据包的总长度.IP数据包的最大长度为65535B.标识字段的长度为16位,用于识别IP数据包的编号.每批数据都要有一个标识值,用于让目的主机判断新来的数据属于哪个分组.报头中的标志字段如图7-3所示.标志字段共3位,最高位是0.禁止分片标志DF(do not fragment)字段的值若为1,表示不能对数据包分片;若DF值为0,则表明可以分片.分片标志MF( more fragment)的值为1,表示接收到的不是最后一个分片;若MF值为0,表示接收到的是最后一个分片.片偏移字段共13位,说明分片在整个数据包中的相对位置.片偏移值是以8B 为单位来记数的,因此选择的分片长度应该是8B的整数倍.生存时间(TTL)字段为8位,用来设置数据包在互联网络的传输过程的寿命,通常是用一个数据包可以经过的最多的路由器跳步数来限定的.协议字段为8位,表示使用此IP数据包的高层协议类型,常用的协议号如表3所示.表3 典型的协议号头校验和字段为16位,用于存放检查报头错误的校验码。

计算机网络 ip数据包解析

计算机网络 ip数据包解析

目录1.需求分析---------------------------------------------------------------------12.总体设计---------------------------------------------------------------------13.详细设计---------------------------------------------------------------------24.源程序------------------------------------------------------------------------65.运行结果----------------------------------------------------------------------126.实验总结-----------------------------------------------------------------------147.参考资料-----------------------------------------------------------------------14一.需求分析本设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:1)以命令行形式运行:hhb logfile,其中hhb是程序名, 而logfile则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3)当程序接收到键盘输入Ctrl+C时退出二.总体设计为了获取网络中的IP数据包,必须对网卡进行编程,我们使用套接字进行编程。

ip数据报解析源地址目的地址

ip数据报解析源地址目的地址

ip数据报解析源地址目的地址青岛农业大学理学与信息科学学院计算机网络综合实习报告题目IP数据报解析源地址/目的地址专业计算机科学与技术学号姓名指导教师日期2014年11月8日一、设计任务和目的设计一个解析IP数据包的程序,并根据这个程序,从IP数据报头中解析出源地址和目的地址等相关问题,从而对IP层的工作原理有更好的理解和认识。

通过实际操作,加深对计算机网络的理解,了解计算机网络应用的灵活性,加深对IP数据报格式的了解,点分十进制理解,巩固所学习的C语言。

二、设计要求编写计算机程序,从网络捕获数据包,从IP数据报头中解析出源地址和目的地址,将它们以点分十进制形式输出。

三、设计内容3.1原理概述:3.1.1 点分十进制表示法:对主机或路由器来说,ip地址都是32位的二进制代码,为了提高可读性,我们常常把32位的ip地址中的每8位用其等效的十进制数字表示,并且在这些数字之间加上一个点,这就叫做点分十进制表示法(dotted decimal notation)。

例如:一个ip地址:100000000 00001011 00000011 00011111 用点分十进制表示为:128.11.3.31读起来要方便得多。

3.1.2 IP数据报格式:IP协议所处理的数据单元称为IP数据报。

其格式如下:图3-1 数据报格式图[1]IP数据报由首部和数据两部分组成,首部又分为定长部分和变长部分。

◆版本(VER):4位,表示数据报的IP协议版本,当前的IP协议版本号为4,即IPv4;下一代网络协议IPv6,版本号为6.◆首部长度(HLEN):4位,表示以字长(4字节)为单位的数据报首部长度。

◆服务类型(SERVICE TYPE): 8位,规定本数据报的处理方式。

前三位是优先级,0-7,0表示最低,7最高(最重要),但目前的IPv4没有使用优先级。

后4位是TOS,表示本数据报在传输过程中所希望得到的服务,D--最小延迟(minimize delay);T--最大吞吐率(maximize throughout);R--最高可靠性(maximize reliability);C--最低成本(minimize cost)。

计算机网络课程设计解析ip数据包

计算机网络课程设计解析ip数据包

计算机网络课程设计解析ip数据包一、教学目标本节课的教学目标是让学生了解和掌握IP数据包的组成和工作原理,培养学生分析问题和解决问题的能力。

具体分为以下三个部分:1.知识目标:使学生能够描述IP数据包的结构,理解IP地址的概念及其分类,掌握IP数据包的传输过程。

2.技能目标:培养学生运用网络协议分析工具分析IP数据包的能力,能够通过实际案例分析网络故障。

3.情感态度价值观目标:培养学生对计算机网络技术的兴趣,增强其对网络安全的意识,使其认识到计算机网络技术在现代社会中的重要作用。

二、教学内容本节课的教学内容主要包括以下几个部分:1.IP数据包的结构:介绍IP数据包的基本组成,包括头部和数据部分,以及各字段的含义。

2.IP地址:讲解IP地址的概念、分类及其表示方法,让学生了解不同类型的IP地址的使用场景。

3.IP数据包的传输:讲解IP数据包在网络中的传输过程,包括路由选择、分片与重组等。

4.案例分析:分析实际网络故障案例,让学生学会运用IP数据包分析工具进行问题排查。

三、教学方法为了提高学生的学习兴趣和主动性,本节课将采用多种教学方法:1.讲授法:讲解IP数据包的结构、IP地址的分类等基本概念。

2.案例分析法:分析实际网络故障案例,让学生学会运用IP数据包分析工具进行问题排查。

3.实验法:安排课堂实验,让学生亲自动手配置IP地址,分析IP数据包,增强实践操作能力。

4.讨论法:学生分组讨论,分享学习心得,培养团队合作精神。

四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将准备以下教学资源:1.教材:选用权威、实用的计算机网络教材,为学生提供系统的理论知识。

2.参考书:提供相关网络技术参考书籍,方便学生课后拓展学习。

3.多媒体资料:制作精美的PPT课件,直观展示IP数据包的结构和传输过程。

4.实验设备:准备网络实验设备,让学生能够亲自动手实践,提高实际操作能力。

五、教学评估为了全面、客观地评估学生的学习成果,本节课的教学评估将采用多种方式:1.平时表现:关注学生在课堂上的参与程度、提问回答等情况,给予及时的反馈和鼓励。

计算机网络课程设计IP数据包的捕获与分析

计算机网络课程设计IP数据包的捕获与分析

CENTRAL SOUTH UNIVERSITY计算机网络课程设计报告目录第一章课程设计的目的与要求 (1)1.1 课程设计的目的 (1)1.2 课程设计的要求 (1)第二章课程设计的内容 (3)2.1 课程设计的内容 (3)2.2 内容的要求 (3)第三章程序分析与设计 (4)3.1 IP数据包 (4)3.1.1 IP数据包的格式说明 (4)3.1.2 IP数据包的格式 (4)3.1.3 IP数据包的C++定义 (5)3.1.4 IP数据包的解析 (6)3.2 套接字 (7)3.1.4 套接字的使用 (7)3.1.4 使用原始套接字 (7)3.3 接受数据包 (7)第四章实验结果 (10)4.1 程序截图 (10)第五章总结 (11)5.1 实验心得 (11)第六章附录 (12)6.1 源代码 (12)第一章课程设计的目的与要求1.1 课程设计的目的计算机网络课程设计的目的,是为了让学生更深入地掌握计算机网络的核心内容,实现理论与实践相结合。

让学生用具体的实践成果,体现对理论知识的掌握程度。

有利于学生提高计算机网络的实践能力,加深对计算机网络理论知识的理解。

1.2 课程设计的要求(1)编写程序,实现系统的基本功能,鼓励自行增加新功能;(2)要有用户界面:要求至少采用文本菜单界面;鼓励采用图形菜单界面;(3)写课程设计报告,内容包括:●封面(参见附录I)●需求分析:以无歧义的陈述说明程序设计的任务,强调的是程序要做什么?给出功能模块图和流程图。

同时明确规定:输入的形式和输出值的范围;输出的形式;程序所能够达到的功能;测试数据,包括正确的输入与其输出结果和含有错误的输入与其输出结果。

●概要设计:包括程序设计组成框图,程序中使用的存储结构设计说明(如果指定存储结构请写出该存储结构的定义)。

●详细设计:包括模块功能说明(如函数功能、入口与出口参数说明,函数调用关系描述等),每个模块的算法设计说明(可以是描述算法的流程图)。

ip数据包解析实验报告

ip数据包解析实验报告

ip数据包解析实验报告IP数据包解析实验报告引言:IP数据包解析是计算机网络领域中非常重要的一项技术,它能够帮助我们理解和分析网络通信过程中的数据传输。

在本次实验中,我们将深入学习和探索IP 数据包解析的原理和应用。

通过对实验样本的解析和分析,我们将能够更好地理解IP数据包的结构和功能,为网络通信的优化和安全提供有力的支持。

一、实验目的本次实验的主要目的是通过对IP数据包的解析,深入了解IP协议的工作原理和数据包的格式。

通过实际操作和观察,我们将能够掌握IP数据包的结构和各个字段的含义,进一步加深对计算机网络通信的理解。

二、实验环境和工具本次实验使用的环境为Windows操作系统,工具为Wireshark网络抓包工具。

Wireshark是一款功能强大的网络协议分析工具,它能够对网络数据包进行捕获和分析,提供详细的协议信息和数据解析。

三、实验步骤1. 打开Wireshark工具,选择合适的网络接口进行数据包捕获。

2. 启动网络通信应用程序,例如浏览器或者远程连接工具。

3. 在Wireshark中停止数据包捕获,然后选择一条IP数据包进行解析。

4. 通过分析IP数据包的各个字段,了解其结构和含义。

例如,源IP地址、目标IP地址、协议类型、数据包长度等。

5. 分析IP数据包的源和目标地址,探索网络通信的路径和过程。

通过查找路由表和网络拓扑,了解数据包的传输路径。

6. 根据实验结果,总结IP数据包解析的过程和方法。

思考IP数据包解析在网络通信中的应用和意义。

四、实验结果与分析通过对多个IP数据包的解析和分析,我们得到了以下实验结果和分析结论:1. IP数据包的源IP地址和目标IP地址是网络通信的重要标识,它们决定了数据包的发送和接收方向。

2. IP数据包的协议字段指示了数据包所使用的传输协议,例如TCP、UDP或ICMP等。

不同的协议有不同的功能和特点。

3. IP数据包的数据字段可以携带应用层的数据信息,例如网页内容或者文件传输数据。

IP数据包解析.doc

IP数据包解析.doc

解析IP数据包一、课题内容和要求本课程设计的目的是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构以及IP协议的相关问题。

课题要求捕获网络中的IP数据包,解析数据包的。

从而对IP层的工作原理有更好的理解和认识。

(1)以命令行形式运行:ipparse logfile ,其中ipparse是程序名,而logfile 则代表记录结果的日志文件。

(2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、总长度、标识、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

(3)程序设计的原理请用流程图描述;程序要求模块结构清晰规范,程序关键代码的注释详细;程序操作友好、界面美观。

(4)程序对于错误输入的处理,设计和编程中遇到问题的归纳总结。

二、需求和思路分析要求捕获网络中的IP数据包,并解析,要求先进行IP数据包的捕获,先捕获再分析,这就要求用到套接字。

套接字编程要求先创建原始套接字,创建原始套接字后,IP头就会包含在接收的数据中,然后对IP头进行操作,接着获取主机名和获取IP地址,并SOCKADDR_IN的结构内容进行填充,再绑定socket到本地网卡上,这就完成了IP数据包得捕获。

捕获后,接收数据包,并进行分析,最后得到结果。

要求以命令行形式运行:ipparse logfile ,其中ipparse是程序名,而logfile则代表记录结果的日志文件,要求先用ofstream outfile打开文件再用outfile将运行结果记录到日志文件中。

三、概要设计四、详细设计为了获取网络中的IP数据包,必须对网卡进行编程,在这里我们使用套接字(socket)进行编程。

但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式出发的数据包。

对于其他形式的数据包,如已到达网络接口但却不是发送到此地址的数据包,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。

解析IP数据包

解析IP数据包

网络协议分析课程设计设计题目:解析IP数据包姓名:院(系):计算机与通信工程学院专业班级:网络工程学号:指导教师:成绩:时间:2011年6月13日至2011年6月17日郑州轻工业学院课程设计任务书题目解析IP数据包专业、班级网络工程08-1 学号姓名主要内容:程序在Windows窗口环境下捕获IP数据报,并解析出各个字段信息,显示在窗口中。

基本要求:选定本机IP后,程序捕获经过对应网卡的IP数据报,根据IP数据报的结构,拆分获得各字段的值,显示在窗口上。

同时程序可以将捕获的所有数据信息导出到日志文件。

参考资料:《网络协议分析》寇晓蕤罗军勇蔡延荣机械工业出版社完成期限:2011.6.13-2010.6.17指导教师签名:课程负责人签名:2010年 6月 11 日目录第一章引言 (4)1.1.关于题目 (4)1.1.1.题目要求 (4)1.1.2.选题背景 (4)1.2.关于编译软件 (4)1.3.关于稳定性 (5)第二章程序设计 (5)2.主要功能设计 (5)2.1.程序流程 (5)第三章程序实现 (6)3.类设计声明 (6)3.1.RawSocket类 (7)3.2.EventArgs类 (7)3.3.Header结构 (8)3.4.主要功能的实现 (8)3.4.1.程序界面 (8)3.4.2.获得主机IP (9)3.4.3.显示列表 (10)3.4.4.详细信息 (11)3.4.5.导出日志 (12)第四章程序测试 (14)4.程序测试 (14)总结与体会 (15)附录: (15)第一章引言1.1. 关于题目1.1.1.题目要求(1)捕获网络中的IP数据包,解析数据包的内容,显示结果,并将结果写入日志文件。

(2)显示的内容包括:捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

(3)设置停止标志,当程序接收到停止命令时即停止。

IP数据包解析

IP数据包解析

计算机网络课程设计报告题目:解析IP数据包学生姓名:学号:专业班级:计算机科学与技术同组姓名:指导教师:设计时间:2015年上学期第17周一、课程设计的目的和意义目的:1、通过解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP 协议的相关问题。

2、通过接收和解析IP数据包,了解IP数据包的基本结构与IP协议的基本功能。

3、捕获网络中的数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

意义:1、为了在本次课程设计过程中,熟悉开发设计的基本流程,从分析任务到确立整体框架再到确定算法,然后再一步步实现各函数的功能。

从中熟悉新的库函数,并提高编程技巧。

2、我们已经学完了网络层的理论知识,可是对它的理解很粗浅。

之前只知道关于网络层的一些概念性的东西。

可是做完设计后,我才从整体上理解了网络层的框架,明白了网络层的每一个组成部分都是有它特定的功能和意义的,从而对网络层协议有了更深入的理解。

3、程序设计能直接有效地训练我们的创新思维,培养分析问题、解决问题的能力。

二、课程设计的内容和要求根据后面介绍的数据包结构,编写程序的具体要求如下:1)以命令行形式运行:ipparse logfile,其中ipparse是程序名, 而logfile 则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3)当程序接收到键盘输入Ctrl+C时退出三、解析IP数据包设计的相关技术3.1 IP数据包的格式与分析3.2 程序设计分析3.2.1 网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里我们使用套接字(socket)进行编程。

但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。

对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。

(完整word版)解析ip数据包

(完整word版)解析ip数据包

目录一、课程设计的目的 (1)二、课程设计要求 (1)三、需求分析 (1)1.先对网卡进行编程,以便连接IP层的数据包。

(1)2.预先创建一个logfile文件来保存所解析的IP数据包。

(1)3.使用recv函数实现接收数据包的功能。

(1)四、设计分析 (1)4.1 网卡设置 (1)4.2 使用套接字 (2)五、程序测试 (3)六、小结 (5)七、附录 (5)一、课程设计的目的本章课程设计的目的就是设计一个解析IP数据包的程序,并根据这个程序,说明IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。

二、课程设计要求本设计的目标是捕获网络中的IP数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。

程序的具体要求如下:1)以命令行形式运行:ipparse logfile,其中ipparse是程序名, 而logfile 则代表记录结果的日志文件。

2)在标准输出和日志文件中写入捕获的IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

3)当程序接收到键盘输入Ctrl+C时退出。

三、需求分析1.先对网卡进行编程(使用套接字进行编程),以便连接IP层的数据包。

2.预先创建一个logfile文件来保存所解析的IP数据包。

3.使用recv函数实现接收数据包的功能。

4.编写ipparse函数解析捕获的数据包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等内容。

四、设计分析4.1 网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字(socket)进行编程。

但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。

对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,应用程序无法收取与自己无关的数据包。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

成绩评定表课程设计任务书目录1 课程设计目的 (1)2 课程设计要求 (2)3 相关知识 (3)4 课程设计分析 (6)5 程序代码 (11)6 运行结果与分析 (18)7 参考文献 (18)1 课程设计目的IP数据包是网络成传输的基本数据单元,熟悉IP数据包结构对于理解网络工作原理具有重要意义。

本课程设计的主要目的是通过接受与解析IP数据包,了解IP数据包的基本结构与IP协议的基本功能。

2 课程设计要求根据后面介绍的IP数据包结构,编写程序接收并解析IP数据包。

1)以命令行形式运行;ParsePacket log_file其中,ParsePacket为程序名,log_file为日志文件名。

2)输出内容:IP数据包的各字段值,包括版本、头部长度、服务类型、总长度、标识、分段标志、分段偏移值、生存时间、上层协议类型、头校验和、源IP地址和目的IP地址等。

3)当程序接收到键盘输入Ctrl+C时退出。

3相关知识互联网络层是TCP/IP协议参考模型中的关键部分.IP协议把传输层送来的消息组装成IP数据包,并把IP数据包传送给数据链层.IP协议在TCP/IP协议族中处于核心地位,IP 协议制定了统一的IP数据包格式,以消除个通信子网中的差异,从而为信息发送方和接收方提供了透明的传输通道.编制本程序前,首先要对IP包的格式有一定了解,图1给出了IP 协议的数据包格式.IP数据包的第一个字段是版本字段,其度是4位,表示所使用的IP协议的版本.目前的版本是IPV4,版本字段的值是4,下一代版本是IPV6,版本字段值是6.本程序主要针对版本是IPV4的数据包的解析.报头标长字段为4位,它定义了以4B为一个单位的IP包的报文长度.报头中除了选项字段和填充域字段外,其他各字段是定长的.因此,IP数据包的头长度在20—40B之间,是可变的.***********(位)图3.1 IP数据包的格式服务类型字段共8位,用于指示路由器如何处理该数据包.该字段长度由4位服务类型(TOS)子域和3位优先级子域组成,1位为保留位,该字段结构如图2所示.图3.1 服务类型字段结构优先级共有8种,优先级越高表明数据包越重要.表1中列出了各种优先级所代表的意义.表3.2 优先子域的说明在4位服务类型子域中b4,b3,b2,b1分别表示D(延迟),T(吞吐量),R(可靠性)与C(成本).表3.3列出了服务器类型自域的构成.总长度字段为2B,它定义了以字节为单位的数据包的总长度.IP数据包的最大长度为65535B.标识字段的长度为16位,用于识别IP数据包的编号.每批数据都要有一个标识值,用于让目的主机判断新来的数据属于哪个分组.报头中的标志字段如图7-3所示.标志字段共3位,最高位是0.禁止分片标志DF(do not fragment)字段的值若为1,表示不能对数据包分片;若DF值为0,则表明可以分片.分片标志MF( more fragment)的值为1,表示接收到的不是最后一个分片;若MF值为0,表示接收到的是最后一个分片.片偏移字段共13位,说明分片在整个数据包中的相对位置.片偏移值是以8B为单位来记数的,因此选择的分片长度应该是8B的整数倍.生存时间(TTL)字段为8位,用来设置数据包在互联网络的传输过程的寿命,通常是用一个数据包可以经过的最多的路由器跳步数来限定的.协议字段为8位,表示使用此IP数据包的高层协议类型,常用的协议号如表7-3所示.表7.3 典型的协议号头校验和字段为16位,用于存放检查报头错误的校验码。

检验的范围是整个IP包的报头。

校验和按如下方法计算:1)将头校验和的字段置为0。

2)将报头部分的所有数据以16位为单位进行累加,累加方式是求异或。

3)将累加的结果取反码,就是头校验和。

当收到一个IP包时,要检查报头是否出错,就把报头中的所有数据以16位为单位进行累加,若累加的结果为0,则报文没有出错。

地址字段包括源地址和目的地址。

源地址和目的地址的长度都是32位,分别表示发送数据包的源主机和目的主机的IP地址。

选项字段的长度范围为0~40B,主要用于控制和测试。

在使用选项字段的过程中,有可能出现报头部分的长度不是32位的整数倍的情况。

如果出现这种情况,就需要通过填充位来凑齐。

4课程设计分析为了获取网络中的IP数据包,必须对网卡进行编程,在这里我们使用套接字(socket)进行编程。

但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式出发的数据包。

对于其他形式的数据包,如已到达网络接口但却不是发送到此地址的数据包,网络接口在验证投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。

我们要想获取流经网络设备的所有数据包,就需要将网卡设置为混杂模式。

本程序主要由三部分构成:初始化原始套接字,反复监听捕获数据包和解析数据包。

下面就结合核心代码对程序的具体实现进行讲解,同时使程序流程更加清晰,去掉了错误检查等保护性代码。

4.1使用原始套接字套接字分为三种,即流套接字(Stream Socket)、数据报套接字(Datagram Socket)和原始套接字(Raw Socket)。

要进行IP数据包的接受与发送,应使用原始套接字。

创建原始套接字的代码如下:SOCKET sockSock=WSASoccet(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERRLAPP ED);在WSASoccet函数中,第一个参数指定通信发生的区字段,AF_INET是针对Internet 的,允许在远程主机之间通信。

第二个参数是套接字的类型,AF_INET地址族下,有SOCK_STREAM、SOCK_DGRAM、SOCK_RAW三种套接字类型。

在这里,我们设置为SOCK_RAW,表示我们声明的是一个原始套接字类型。

第三个参数依赖于第二个参数,用于指定套接字所用的特定协议,这里使用IP协议。

第四个参数为WSAPROTOCOL_INFO 位,该位可以置空,永远置0。

第六个参数是标志位,WSA_FLAG_OVERRLAPPED表明可以使用发送接收超时设置,本课程设计也可以把这个标志位设置为NULL,因为本设计不用考虑超时情况。

创建原始套接字后,IP头就会包含在接收的数据中。

然后,我们可以设置IP头操作选项,调用sotscockpot函数。

其中flag设置为TRUE,并设定IP_HDRINCL选项,表明用户可以亲自对IP头进行处理。

BOOL flag=true;setsockopt (sock,IPPROTO_IP,IP_HDRINCL,(char*)&flag,sizeof(flag));之后,使用如下代码完成对socket的初始化工作/*获取主机名*/char hostname[128];gethostname(hostname, 100);/*获取IP地址*/hostent *pHostIP;pHostIP=gethostbyname(hostname);/* 填充SOCKADDR_IN的结构内容*/sockaddr_in addr_in;addr_in.sin_addr= *(in_addr*)pHostIP->h_addr_list[0];addr_in.sin_family=AF_TNET;addr-in.sin_port=htons(6000);/* 绑定socket */bind(sock, (POSCKADDR)&addr_in,sizeof(addr_in));填写sockaddr_in的内容时,其地址值应填写为本机IP地址可以通过gethostbyname()函数获取;端口号可以随便填写,但不能与系统冲突;协议族应填写为AF_INET。

注意,sockaddr_in 结构的值必须是以网络字节顺序表示的值,而不能直接使用本机字节顺序的值,使用htoms()函数可以将无符号短整型的主机数据转换为网络字节的顺序的数据。

最后使用bind()函数将socket绑定到本地网卡上。

绑定网卡后,需要WSAIoctl()函数把网卡设置为混杂模式,使网卡能够接收所有网络数据,其关键代码如下:#define SIO_RCV ALL_WSAIOW(IOC_VENDOR,1)DWORD dwBufferLen[10];DWORD dwBufferInLen=1;DWORD dwBytesReturned=0;WSAIoctl(SnifferSocket,IO-RCV ALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,Sizeof(dwBufferLen),&dwByteReturned,NULL,NULL);如果接收的数据包中的协议类型和定义的原始套接字匹配,那么接收到的数据就拷贝到套接字中。

因此,网卡就可以接收所有经过的IP包。

4.2接收数据包在程序中可使用RECV()函数接收经过的IP包。

该函数有四个参数,第一个参数接收操作所用的套接字描述符;第二个参数接收到缓冲区的地址;第二个参数接收缓冲区的地址;第三个参数接收缓冲区的大小,也就是所要接收的字节数;第四个参数是一个附加标志,如果对所发送的数据没特殊要求,直接设为0。

因为IP数据包的最大长度是65536B,因此缓冲区的大小不能小于65535B。

设置缓冲区后,可利用循环来反复监听接收IP包,用recv()函数接收功能的代码如下:#dedine BUFFER_SIZE 65535Char buffer[BUFFER_SIZE]; //设置缓冲区While(true){recv(sock,buffer,BUFFER_SIZE,0); //j接收数据包4.3定义IP头部的数据结构程序需要定义一个数据结构表示IP头部。

这个数据结构应该和图7-1吻合,其代码如下:typedef struct _IP_HEADER //定义IP头{union{BYTE Version; //版本前4位BYTE HdrLen; //报头标长(后四位),IP头长度};BYTE ServiceType;//服务类型WORD TotalLen; //总长度WORD ID; //标识union{WORD Flags; //标志Word FragOff; //分段偏移};BYTE TimeToLive; //生命期BYTE Protiocol; //协议WORD HdrChksum; //头校验和DWORD SrcAddr; //源地址DWORD DstAddr: //目的地址BYTE Options; //选项}IP_HEADER;这是我们只考虑IP头部结构,不考虑数据部分。

相关文档
最新文档