计算机网络课程设计-IP数据包解析实验报告
TCPIP实验之IP数据包分析--
TCP/IP协议与编程实验姓名:班级:学号:实验题目用Wireshark抓包分析ip数据包一、实验目的1、了解并会初步使用Wireshark,能在所用电脑上进行抓包2、了解IP数据包格式,能应用该软件分析数据包格式3、查看一个抓到的包的内容,并分析对应的IP数据包格式二、实验内容Wireshark 是网络包分析工具。
网络包分析工具的主要作用是尝试捕获网络包,并尝试显示包的尽可能详细的情况。
实验步骤:1、打开wireshark,选择接口选项列表。
或单击“Capture”,配置“option”选项。
2、设置完成后,点击“start”开始抓包:3、显示结果:3、选择某一行抓包结果,双击查看此数据包具体结构。
4、捕捉IP数据报。
① 写出IP数据报的格式。
IP数据报首部的固定部分中的各字段含义如下:(1)版本占4位,指IP协议的版本。
通信双方使用的IP协议版本必须一致。
目前广泛使用的IP协议版本号为4(即IPv4)。
(2)首部长度占4位,可表示的最大十进制数值是15。
请注意,这个字段所表示数的单位是32位字长(1个32位字长是4字节),因此,当IP的首部长度为1111时(即十进制的15),首部长度就达到60字节。
当IP分组的首部长度不是4字节的整数倍时,必须利用最后的填充字段加以填充。
因此数据部分永远在4字节的整数倍开始,这样在实现IP协议时较为方便。
首部长度限制为60 字节的缺点是有时可能不够用。
但这样做是希望用户尽量减少开销。
最常用的首部3)区分服务占8位,用来获得更好的服务。
这个字段在旧标准中叫做服务类型,但实际上一直没有被使用过。
1998年IETF把这个字段改名为区分服务DS(Differentiated Services)。
只有在使用区分服务时,这个字段才起作用。
(4)总长度总长度指首部和数据之和的长度,单位为字节。
总长度字段为16位,因此数据报的最大长度为216-1=65535字节。
长度就是20字节(即首部长度为0101),这时不使用任何选项。
任务三计算机网络实验IP数据报捕获与分析
任务三计算机网络实验IP数据报捕获与分析一、实验目的本实验的目的是通过使用网络抓包工具捕获IP数据报,了解IP协议的工作过程,分析数据报的结构和内容。
二、实验设备和工具1.计算机2.网络抓包工具:Wireshark三、实验原理IP(Internet Protocol)是网络层的核心协议,在互联网中承担着数据包的传输任务。
IP协议负责将数据包从源主机传输到目标主机,保证数据在不同主机之间的正确传输。
IP数据报是IP协议传输的基本单位,由IP头和数据部分组成。
IP头部包含以下重要字段:1.版本(4位):表示IP协议的版本号,IPv4为4,IPv6为62.首部长度(4位):表示IP头部的长度,以32位的字节为单位。
3.区分服务(8位):用于标识优先级和服务质量等信息。
4.总长度(16位):指明整个IP数据报的长度。
5.标识(16位):用于标识同一个数据报的分片。
6.标志位(3位):标记是否进行数据报的分片。
7.片偏移(13位):表示数据报组装时的偏移量。
8.生存时间(8位):表示数据报在网络中的存活时间。
9.协议(8位):指明IP数据报中携带的数据部分所使用的协议,如TCP、UDP等。
10.头部校验和(16位):用于对IP头部的校验。
11.源IP地址(32位):指明数据报的发送者的IP地址。
12.目的IP地址(32位):指明数据报的目标IP地址。
四、实验步骤1.安装Wireshark软件。
2.打开Wireshark软件,选择需要进行抓包的网络接口。
3.点击“开始”按钮,开始抓包。
4.进行相关网络操作,产生数据包。
5.停止抓包。
6.选中其中一个数据包,进行分析。
五、数据包分析Wireshark软件可以对捕获到的数据包进行详细的分析,提供了丰富的信息和统计数据。
以下是对数据包的一些常规分析内容:1.源IP地址和目的IP地址:根据协议规定,每个IP数据报必须携带源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数据包的捕获与分析
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 数据包,解析数据包的内容,将结果显示在标准输出上,并同时写入日志文件。
程序的具体要求如下:•以命令行形式运行: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数据包解析实验报告
计算机网络工程课程设计报告题目:解析IP数据包学生姓名:李明学号: 201017010218专业班级:计科10102班同组姓名: 张禄、陈子英、李迅指导教师:李若兰设计时间: 2013年下学期第16周目录目录 (2)1、课程设计目的 (3)2、课程设计要求 (3)3、相关知识 (3)4、课程设计分析 (7)4.1 网卡设置 (7)4.2 使用套接字 (7)4.2.2 接收数据包 (8)4.3 定义IP头部的数据结构 (8)4.4 IP包的解析 (10)4.5 协议的定义 (10)4.6捕获处理 (10)5、运行结果 (11)6、总结 (11)7、课程设计参考资料 (12)8、源程序代码 (12)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数据包解析实验报告摘要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课程设计实验报告一、教学目标本章节的教学目标包括以下三个方面: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数据包解析(共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数据包
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实验报告篇一:iP实验报告华中师范大学计算机科学系实验报告书实验题目:解析iP数据包课程名称:计算机网络主讲教师:刘玉华辅导教师:课程编号:班级:0401实验时间:20XX-5-1012345篇二:实验四、iP协议分析实验报告实验四、iP协议分析实验报告序号:姓名:学号:成绩指导老师1.实验目的:分析iP协议报文格式.2.实验环境:局域网环境,或者是联网的单机。
3.实验步骤:(1)启动ethereal软件,开始报文捕获。
(2)捕获iP的数据包(3)停止捕获报文。
4.实验分析,回答下列问题(1)请说明你是如何获得iP的捕获文件,并附上捕获的截图。
答:清空浏览器缓存,打开ethereal软件,开始报文捕获。
启动某个基于TcP的应用程序,打开浏览器输入。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter一栏填入ip,则只显示ip协议信息(2)通过捕获的数据包分析iP的报文结构,将iP协议树中各名字字段,字段长度,(3)请举例说明iP协议中iP分组分片和组装的过程。
答:iP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。
这一过程称为分片(fragmentation)。
iP分片(Fragmentation)发生在要传输的iP报文大小超过最大传输单位mTU(maximumTransmissionUnit)的情况。
比如说,在以太网(Ethernet)环境中可传输最大iP报文大小(mTU)为1500字节。
如果要传输的报文大小超过1500字节,则需要分片之后进行传输。
由此可以看出,iP分片在网络环境中是经常发生的事件。
5.实验总结,总结你在实验过程中遇到的问题和解决的方法。
答:(1)、实验过程中由于对ip协议的不熟悉,不明白各个字段的具体含义与作用,通过看书和查看相关的资料能够很好的完成实验。
(2)对ip协议的分组分片和组装的过程的知识掌握还不是彻底,还是不能熟练、正确的对其进行分析。
计算机网络课程设计实验报告(北京科技大学--arp、ftp、ip包)
计算机网络课程设计实验报告任课教师:班级:学号:姓名:目录实验一ARP封装并发送 (3)课程设计目的: (3)课程设计要求: (3)课程设计分析: (3)程序设计分析: (4)实验结果 (5)源程序 (6)实验二解析IP数据包 (9)课程设计目的: (9)课程设计要求: (9)课程设计分析: (9)程序设计分析 (9)实验结果 (13)源代码 (13)实验三FTP客户机 (17)课程设计目的: (17)课程设计要求: (17)课程设计分析: (17)程序设计原理: (18)实验结果 (23)源代码 (24)实验心得体会 (37)实验一ARP封装并发送课程设计目的:•ARP协议用于完成IP地址与MAC地址之间的转换。
通过封装与发送ARP 数据包,加深对ARP协议的理解,掌握ARP帧结构和工作原理及其对协议栈的贡献。
课程设计要求:•编写程序,根据ARP帧的结构,封装ARP帧。
•要求程序为命令行程序,以命令行的形式运行:SENDARP S-IP S-MAC D-IP D-MAC其中:SENDARP:可执行程序名S-IP:源IP地址S-MAC:源MAC地址D-IP:目的IP地址D-MAC:目的MAC地址课程设计分析:•使用winpcap访问网卡,手动封装•定义ARP的数据结构•填充数据包•发送数据包程序设计分析:ARP 协议及工作原理ARP 协议是“Address Resolution Protocol ”(地址解析协议)的缩写。
在局域网中,网络中实际传输的是“帧”,帧里面是有目标主机的MAC 地址的。
在以太网中,一个主机要和另一个主机进行直接通信,必须要知道目标主机的MAC地址。
但这个目标MAC 地址是如何获得的呢?它就是通过地址解析协议获得的。
所谓“地址解析”就是主机在发送帧前将目标IP 地址转换成目标MAC 地址的过程。
ARP 协议的基本功能就是通过目标设备的IP 地址,查询目标设备的MAC 地址,以保证通信的顺利进行。
ip实验报告
ip实验报告篇一:iP实验报告华中师范大学计算机科学系实验报告书实验题目:解析iP数据包课程名称:计算机网络主讲教师:刘玉华辅导教师:课程编号:班级:0401实验时间:20XX-5-1012345篇二:实验四、iP协议分析实验报告实验四、iP协议分析实验报告序号:姓名:学号:成绩指导老师1.实验目的:分析iP协议报文格式.2.实验环境:局域网环境,或者是联网的单机。
3.实验步骤:(1)启动ethereal软件,开始报文捕获。
(2)捕获iP的数据包(3)停止捕获报文。
4.实验分析,回答下列问题(1)请说明你是如何获得iP的捕获文件,并附上捕获的截图。
答:清空浏览器缓存,打开ethereal软件,开始报文捕获。
启动某个基于TcP的应用程序,打开浏览器输入。
(3)等出现浏览的网页后停止数据包的捕获。
(4)出现协议分析界面,将filter一栏填入ip,则只显示ip协议信息(2)通过捕获的数据包分析iP的报文结构,将iP协议树中各名字字段,字段长度,(3)请举例说明iP协议中iP分组分片和组装的过程。
答:iP协议在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统中进行重组。
这一过程称为分片(fragmentation)。
iP分片(Fragmentation)发生在要传输的iP报文大小超过最大传输单位mTU(maximumTransmissionUnit)的情况。
比如说,在以太网(Ethernet)环境中可传输最大iP报文大小(mTU)为1500字节。
如果要传输的报文大小超过1500字节,则需要分片之后进行传输。
由此可以看出,iP分片在网络环境中是经常发生的事件。
5.实验总结,总结你在实验过程中遇到的问题和解决的方法。
答:(1)、实验过程中由于对ip协议的不熟悉,不明白各个字段的具体含义与作用,通过看书和查看相关的资料能够很好的完成实验。
(2)对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姓名:专业:学院:指导老师:时实验三网际协议IP实验目的:1、掌握IP数据报的报文格式2、掌握IP检验和计算方法3、掌握子网掩码和路由转发4、理解特殊IP地址的含义5、理解IP分片过程实验环境配置采用网络结构二实验原理一、IP报文格式IP数据报是由IP首部加数据组成的,IP首部的最大长度不超过60字节。
IP数据报文格式如下图所示:二、IP分片链路层具有最大传输单元(MTU)这个特性,它限制了数据帧的最大长度。
不同的网络类型有一股上限值。
以太网通常是1500字节。
如果IP层有数据包要传输,而数据包的长度超过了MTU,那么IP层就要对数据包进行分片操作,使每一片长度都小于MTU。
IP 首部中“16位标识”、“3位标志”和“13位片偏移”包含了分片和重组所需的信息。
另外,当数据被分片后,每个片的“16位总长度”的值要改为该片的长度值。
三、IP路由表大部分网络层设备(包括PC机、三层交换机、路由器等)都存储着一张记录路由信息的表格,称为路由表。
一张路由表由许多表项组成。
网络层设备收到数据报后,根据其目的IP地址查找路由表确定数据报传输的最佳路径(下一跳)。
然后利用网络层的协议重新封装数据报,利用下层提供的服务把数据报转发出去。
路由表的项目一般含有五个基本字段:目的地址、网络掩码、下一跳地址、接口、度量。
路由表匹配顺序如下:直接交付:路由表项的“目的地址”字段是交付主机的本网络地址。
特定主机交付:路由表项的“目的地址”字段是某台特定主机的IP地址。
特定网络交付:路由表项的“目的地址”字段是另一个网络的地址。
默认交付:路由表项的“目的地址”字段是一个默认路由器(默认网关)。
四、路由选择过程路由选择模块从IP处理模块接收到IP分组后,使用该分组的目的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数据包一、课题内容和要求本课程设计的目的是设计一个解析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分析
3.1 IP分析实验报告1.实验目的:①熟悉IP的报文格式以及关键字段的含义②掌握IP地址的分配方法。
③理解路由器转发IP数据报的流程1.实验步骤:步骤一:初始化所有设备的ARP表信息为了方便观察,本实验预设了一个场景0,其中包含从PC0到PC1以及PC0到PC2的预定义数据包。
在实时模式和模拟模式中来回切换三次。
以便仿真系统填写相关设备的ARP表,使后续路由器的解释更加清晰。
单击场景面板中的Delete键删除所有场景,便于后续的实验,步骤二:观察IP数据报的转发单击Simulation模拟选项卡进入模拟模式。
单击Add Simple PDU按钮,然后分别单击PC0和PC2则pc0将向pc2发送一个包含ICMP报文的IP数据报。
単击Auto capture/play(自动捕获/播放)或者Capture/Forward按钮以运行模拟,并捕获事件和数据包。
此时, 可观察到IP 数据报的转发过程。
在Event List中找到AtDevice(在设备)显示为Router0 的第一个事件, 单击其彩色正方形,如图3-6所示, 単击lnbound PDU Details选项卡以査看IP 数据报的内容。
我们可以观察到IP分组中l1办议类型字段值为1 (PR0: Oxl), 这表明IP分组中封装了ICMP 报文。
再对比Inbound PDU Details和〇utbound PDU,我们可以发现在〇utbound PDU中IP 分组的TTL 字段值被减1了(由255变成254)。
由于PacketTracer 没有计算校验和, 因此我们也无法观察到校验和的变化。
另外,我们也可以观察到,源地址字段在IP的转发过程中始终没有发生变化, 但是源MAC地址和目标MAC地址发生了相应的变化。
步骤3 : 初始化并观赛各路由器的路由表删除所有场景,使用Inspect (检查)工具(右端的放大镜)分别打开RouterO、Routerl和Router2的路由表,并排列好路由表窗口,以便同时比较三个路由表。
计网实验报告(抓取本地网卡的IP数据包)
计网大型实验报告课程计算机网络原理大型实验姓名汪敏倩班级计科1201 学号201226100117一、实验目的1.1任务一:了解常用网络命令Ping、Tracert/traceroute、Arp、Route的工作原理及使用。
1.2任务二:了解交换机的工作原理,掌握常用交换机的配置和应用以及静态路由的配置。
1.3任务三:抓取本地网卡的IP数据包,并且分析IP数据包的各个部分字段。
二、实验软件2.1任务一:cmd.exe命令解释程序2.2任务二:Packet.Tracer模拟器2.3任务三:Wincap网络抓包器,jnetpcap开源包,eclipes编程器,java语言三、实验步骤或实验原理3.1任务一:3.1.1◆实验原理:1、Ping是Windows下的一个命令在Unix和Linux下也有这个命令。
ping也属于一个通信协议,是TCP/IP协议的一部分。
利用“ping”命令可以检查网络是否连通,可以很好地帮助我们分析和判定网络故障。
它所利用的原理是这样的:利用网络上机器IP地址的唯一性,给目标IP地址发送一个数据包,再要求对方返回一个同样大小的数据包来确定两台网络机器是否连接相通,时延是多少。
使用格式:Ping空格IP地址。
该命令还可以加许多参数使用,具体是键入Ping按回车即可看到详细说明。
2、Tracert/traceroute 的用处和PING是差不多的。
但是也有本质的区别。
用ping的时候是不会显示经过的路径的。
但是用tracerert的时候就可以显示经过的路由,并且显示它经过那个路由,花了多少时间,并且每个路由都会测试3次。
它可以让你知道,你的计算机离目的计算机在网络上的距离有多远,经过多久才能到达。
使用格式:Tracert/traceroute空格IP地址。
3、ARP即地址解析协议,是根据IP地址获取物理地址的一个TCP/IP协议。
主机发送信息时将包含目标IP地址的ARP请求广播到网络上的所有主机,并接收返回消息,以此确定目标的物理地址;收到返回消息后该IP地址和物理地址存入本机ARP缓存中并保留一定时间,下次请求时直接查询ARP缓存一节约资源。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
<解析IP数据报实验报告-…(目录目录 (2)1、课程设计目的 (2)2、课程设计要求 (2)<3、相关知识 (2)4、课程设计分析 (6)网卡设置 (6)使用套接字 (7)接收数据包 (7)定义IP头部的数据结构 (8)IP包的解析 (9)协议的定义 (9);捕获处理 (9)5、运行结果 (10)6、总结 (11)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包的报头。
校验和按如下方法计算:1)将头校验和的字段置为0。
2)将报头部分的所有数据以16位为单位进行累加,累加方式是求异或。
3)将累加的结果取反码,就是头校验和。
当收到一个IP包时,要检查报头是否出错,就把报头中的所有数据以16位为单位进行累加,若累加的结果为0,则报文没有出错。
地址字段包括源地址和目的地址。
源地址和目的地址的长度都是32位,分别表示发送数据包的源主机和目的主机的IP地址。
选项字段的长度范围为0~40B,主要用于控制和测试。
在使用选项字段的过程中,有可能出现报头部分的长度不是32位的整数倍的情况。
如果出现这种情况,就需要通过填充位来凑齐。
4、课程设计分析}网卡设置为了获取网络中的IP数据包,必须对网卡进行编程,在这里使用套接字(socket)进行编程。
但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。
对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。
我们要想获取网络设备的所有数据包,就是需要将网卡设置为混杂模式。
使用套接字套接字分为三种,即流套接字(Stream socket)、数据报套接字(Datagram Socket)和原始套接字(Raw Socket)。
要进行IP层数据包的接收和发送,应使用原始套接字。
创建原始套接字的代码如下:Socket sock;sock = socket(AF_INET,SOCK_RAW,IPPROTO_IP);本设计不用考虑超时情况。
创建套接后,IP头就会包含在接收数据包中。
然后,我可以设置IP头操作选项,调用setsockopt函数。
其中flag设置为true,并设定IP-HDRINCL选项,表明用户可以亲自对IP头进行处理。
最后使用bind()函数将socket绑定到本地网卡上。
绑定网卡后,需用WSAIoctl()函数把网卡设置为混杂模式,使网卡能够接收所有的网络数据。
如果接收的数据包中的协议类型和定义的原始套接字匹配,那么接收的数据就拷贝到套接字中,因此,网卡就可以接收所有经过的IP 包。
,接收数据包在程序中可使用recv()函数接收经过的IP包。
该函数有四个参数,第一个参数接收操作所用的套接字描述符;第二个参数接收缓冲区的地址;第三个参数接收缓冲区的大小,也就是所要接收的字节数;第四个参数是一个附加标志,如果对所发送的数据没特殊要求,直接设为0。
因为IP数据包的最大长度是65535B,因此缓冲区的大小不能小于65535B。
设置缓冲区后,可利用循环来反复监听接收IP包,用recv()函数实现接收功能。
定义IP头部的数据结构程序需要定义一个数据结构表示IP头部。
其代码如下:/* 定义IP头部数据结构 */typedef struct _IP_HEADER{union{BYTE Version; 载 Winsock;]2.创建一个接收原始IP包的socket连接;3.绑定到一个接口;4.进行WSAIoctl设置,接收所有的IP数据包。
代码如下:if (WSAIoctl(s, dwIoControlCode, &optval, sizeof(optval),NULL, 0, &dwBytesRet, NULL, NULL) == SOCKET_ERROR)5.接着设定一个线程进行捕获:(1)创建一个接收IP包的链表头;(2)设置一个标识,为真,则不断进行IP包的捕获;(3)建立一个新的结点,将捕获的数据包加入到该结点;(4)如果链表的长度达到指定的长度,创建一个线程对该链表的IP包进行解析;再设置一个在IP数据包链表不足给定的长度,而又中止IP捕获时,对链表的处理;(5)为下一个IP包链表创建一个链表头。
6.建立一个进行IP包解析并显示的线程,进行解析IP数据包,然后显示IP数据包。
5、运行结果截获IP数据包程序运行结果如下:6、总结这次计算机网络课程设计是解析IP数据包,通过这次上机充分应用了所学的计算机网络和C语言的知识,并上网搜索一部分相当资料,粗略设计出该程序。
通过本次课程设计,充分运用了所学的计算机网络知识,设计出了如何解析IP数据包,从而更加深刻的了解到了IP数据包的结构及IP协议的相关问题,从而对IP层的工作原理有更好的理解和认识。
在课程设计的过程也碰到的不少问题。
该程序也存在着不少的缺陷,比如并不是所有的数据包都能捕获,如:IP数据包以外的数据包都抓不到;只支持ICMP、IGMP、TCP、UDP这些协议。
|7、课程设计参考资料1.《计算机网络(第5版)》主编:谢希仁出版社:电子工业出版社出版时间:2009年11月2.《数据通信与网络(第四版)》吴时霖周正康吴永辉译8、源程序代码#include ""#include ""#include ""#include ""、#pragma comment(lib, "")#define IO_RCVALL _WSAIOW(IOC_VENDOR,1)#define BUFFER_SIZE 65535/* 定义IP头部数据结构 */typedef struct _IP_HEADER{《union{BYTE Version; .\r\n");fprintf(file,"==================================\r\n");fprintf(file,"描述:%s\r\n",;fprintf(file,"状态:%s\r\n",;fprintf(file,"==================================\r\n");SOCKET sock;#/* 创建原始套接字 */if((sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP))==INVALID_SOCKET){printf("Can not create socket!\n");return -1;}BOOL flag=true;/* 设置IP头操作选项 */|if(setsockopt(sock,IPPROTO_IP,IP_HDRINCL,(CHAR*)&flag,sizeof(flag))==SOCKET _ERROR){printf("setsockopt failed!\n");return -1;}char hostName[128];/* 获取本地主机名 */if(gethostname(hostName,100)==SOCKET_ERROR){(printf("gethostname failed!\n");return -1;}hostent *pHostIP;/* 根据主机名获取主机信息 */if((pHostIP=gethostbyname(hostName))==NULL){printf("gethostbyname failed!\n");》return -1;}printf("Hostname: %s\r\n",pHostIP->h_name);printf("IPAddress: %s\r\n",inet_ntoa(*((struct in_addr *)pHostIP->h_addr)));/* 封装IP地址信息 */sockaddr_in addr_in;=*(in_addr*)pHostIP->h_addr_list[0];`=AF_INET;=htons(6000); //监听的端口号/* 把Socket绑定到本地网卡 */if(bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in))==SOCKET_ERROR){ printf("bind failed");return -1;}DWORD dwBufferLen[10];DWORD dwBufferInLen=1;DWORD dwBytesReturned=0;/* 设置网卡为混杂模式 */if(WSAIoctl(sock,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen),&dwBytesReturned,NULL,NULL)==SOCKET_ERROR) {printf("icotlsocket failed\n");return -1;}char buffer[BUFFER_SIZE];printf("=============开始解析=============\r\n");while(true){/* 从套接字接收IP数据报 */int size=recv(sock,buffer,BUFFER_SIZE,0);if(size>0){ipparse(stdout,buffer);ipparse(file,buffer);}}/* 解除Socket绑定 */if(WSACleanup()==SOCKET_ERROR){printf("WSACleanup failed!\n");return -1;}/* 关闭文件 */fclose(file);return 0;}。