ip数据包的捕获与解析
计算机网络与通信课程设计报告实验项目名称 IP数据包的捕获与解析实验学生班级电力通信122实验学生学号 ********* 实验学生姓名颜辉同组学生姓名无实验时间12.15~12.19实验地点信息楼C322实验成绩评定指导教师签字2014 年 12 月 20 日目录一.课程设计应达到的目的--------------------------------1二.课程设计题目及要求----------------------------------1三.课程设计思想----------------------------------------1四.课程设计流程图--------------------------------------3 五.部分程序设计的分析---------------------------------3 六.IP数据包解析代码-----------------------------------6 七.运行结果-------------------------------------------11 八.总结-----------------------------------------------11 九.参考文献-------------------------------------------12一.课程设计应达到的目的(1)使学生掌握网络通信协议的基本工作原理;(2)培养学生基本掌握网络编程的基本思路和方法;(3)能提高学生对所学计算机网络理论知识的理解能力;(4)能提高和挖掘学生对所学知识的实际应用能力和创新能力;(5)提高学生的科技论文写作能力。
二.课程设计题目及要求IP数据包捕获与解析的设计。
设计任务:(1)掌握IP数据包的工作原理与报头设计的相关字段(2)理解IP包的版本、头长度、服务类型、数据包总长度、数据包标识、分段标志、分段偏移量、生存时间、上层协议类型、头校验合、源IP地址和目的IP地址等内容。
设计内容:根据IP数据包的标准格式,编写程序捕获IP数据包并进行解析,并将解析后各IP包的头部与数据字段写入输出文件。
数据字段的值从捕获的文件中获取。
为了获取网络中的IP数据包,可以采用Winsock的数据库查询函数gethostname()和gethostbyname()解决,捕获IP数据包并解析IP地址等内容。
三.课程设计思想IP数据报的格式说明:IP数据包格式包含了标头固定部分,标头可变部分和数据区三部分。
IP数据报标头部分固定为20个字节,其中包含了12个参数域,各参数域隐含着网间协议的传输机制。
IP具体的标头格式如图1所示。
各参数域的具体含义如下:1)版本号:长度4位,表示所使用的IP协议的版本。
IPv4版本号字段值为4;IPV6版本号字段号的值为6.2)标头长:长度4位,定义了一个以4B为一个单位的IP包的报头长度3)服务类型:共8位,高3位组成优先级子域,随后4位组成服务类型子域。
4)数据报总长度:总长度为2B(即6位)。
定义了以字节为单位的数据报的总长度。
5)重装标识:长度16位,用于识别IP数据报的编号,让目的主机判断新来的数据属于哪个分组。
6)分片标识:共3位,最高位为0;DF禁止分片标识。
DF=0,可以分片;DF=1,不能分片。
MF:分片标识。
MF=0,表示接的是最后一个分片;MF=1,不是最后一个分片。
7)片偏移值:共13位,说明分片在整个数据报中的相对位置。
8)生存周期:8位,用来设置数据数据报在整个网络传输过程中的寿命。
常以一个数据报可以经过的最多的路由器跳步数来控制。
9)协议类型:共8位,表示该IP数据报的高层协议类型。
10)标头校验和:共16位,用于存放检查报头错误的校验码。
11)源、宿主机地址:共32位,分别表示发送和接受数据报的源主机和宿主机的IP地址。
12)选项数据域:0-40B,用于控制和测试。
IP数据包的格式为:4位版本4位首部长度8位服务类型(TOS)16位总长度(字节为单位) 16位标识3位标志13位片偏移8位生存时间(TTL)8位协议16位首部检验和32位源IP地址32位目的IP地址IP数据包的C++定义:typedef struct _IP{union{BYTE Version; // 版本BYTE HdrLen;//IHT};BYTE ServiceType; // 服务类型WORD TotalLen; // 总长WORD ID; // 标识union{WORD Flags; // 标志WORD FragOff; // 分段偏移};BYTE TimeToLive; // 生命期BYTE Protocol; // 协议WORD HdrChksum; // 头校验和DWORD SrcAddr; // 源地址DWORD DstAddr; // 目的地址BYTE Options; // 选项} IP;套接字的使用:本程序使用套接字socket编程,将网卡设为能够接受流经网卡的所有类型的数据包。
首先,初始化套接字,然后监听数据包,解析数据包。
SOCKET sock=socket(AF_INET,SOCK_RAW,IPPROTO_IP)用来创建套接字,其参数为通信发生的区字段和套接字的类型。
WSAIoctl(sock , IO_RCVALL ,&dwBufferInLen , sizeof(dwBufferInLen)函数用来把网卡设置为混杂模式。
recv(sock,buffer,65535,0)函数用来接收经过的IP包,其参数分别是套接字描述符,缓冲区的地址,缓冲区的大小。
四.课程设计流程图五.部分程序设计的分析1、使用原始套接字要进行IP 层数据包的接收和发送,应使用原始套接字。
创建原始套接字的代码如下:SOCKET sock;sock=WSASoccket(AF_INET,SOCK_RAW,IPPROTO_IP,NULL,0,WSA_FLAG_OVERLAPPED);在WSASoccket 函数中,第一个参数指定通信发生的区字段,AF_INET 是针对Internet 的,允许在远程主机之间通信。
第二个参数是套接字的类型,在AF_INET 地址族下,有SOCK_STREAM 、SOCK_DGRAM 、SOCK_RAW 三种套接字类型。
在这里,设置为SOCK_RAW ,表示声明的是一个原始套接字类型。
第三个参数依赖于第二个参数,用于指定套接字所有的特定协议,这里使用IP 协议。
第四个参数为WSAPROTOCOL_INFO 位,该位可以置空。
第五个参数保留,永远置0。
第六个参数是标志位,WSA_FLAG_OVERLAPPED 表明可以使用发送接收超时设置。
创建原始套接字后,IP 头就会包含在接收的数据中。
然后,可以设置IP 头操作选项,调用setsockopt 函数。
其中flag 设置为true ,并设定IP_HDRINCL 选项,表明用户可以亲No自对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_INET;addr_in.sin_port = htons(6000);/*绑定socket*/bind(sock,(PSOCKADDR)&addr_in,sizeof(addr_in));填写sockaddr_in的内容时,其地址值应填写为本机IP地址,本机IP地址可以通过gethostbyname()函数获取;端口号可以随便填写,但不能与系统冲突;协议族应填为AF_INET。
使用htons()函数可以将无符号短整型的主机数据转换为网络字节顺序的数据。
最后使用bind(0函数将socket绑定到本机网卡上。
绑定网卡后,需要用WSAIoctl()函数把网卡设置为混杂模式,使网卡能够接收所有网络数据,其关键代码如下:#define SIO_RCVALL_WSAIOW(IOC_VENDOR,1)DWORD dwBufferLen[10];DWORD dwBufferInLen = 1;DWORD dwBytesReturned = 0;WSAIoct1(SnifferSocket,IO_RCVALL,&dwBufferInLen,sizeof(dwBufferInLen),&dwBufferLen,sizeof(dwBufferLen) ,&dwBytesReturned,NULL,NULL);如果接收的数据包中的协议类型和定义的原始套接字匹配,那么接收到的数据就拷贝到套接字中。
因此,网卡就可以接收所有经过的IP包。
2、接收数据包在程序中可使用recv()函数接收经过的IP包。
该函数有四个参数,第一个参数接收操作所用的套接字描述符;第二个参数接收缓冲区的地址;第三个参数接收缓冲区的大小,也就是所要接收的字节数;第四个参数是一个附加标志,如果对所发送的数据没特殊要求,直接设为0。
因为IP数据包的最大长度是65535B,因此,缓冲区的大小不能小于65535B。
设置缓冲区后,可利用循环来反复监听接收IP包,用RECV()函数实现接收功能的代码如下:#define BUFFER_SIZE 65535char buffer[BUFFER_SIZE]; //设置缓冲区while(true){recv(sock,buffer,BUFFER_SIZE,0); //接收数据包/*然后是解析接收的IP包*/}3、定义IP头部的数据结构程序需要定义一个数据结构表示IP头部。
这个数据结构应该和IP数据包的格式吻合,其代码如下:typedef struct _IP_HEADER //定义IP头{union{BYTE Version; //版本(前4位)BYTE HdrLen; //报头标长(后4位),IP头的长度};BYTE ServiceType; //服务类型WORD TotalLen; //总长度WORD ID; //标识union{WORD Flags; //标志(前3位)WORD FragOff; //分段偏移(后13位)};BYTE TimeToLive; //生命期BYTE Protocol; //协议WORD HdrChksum; //头校验和DWORD SrcAddr; //源地址DWORD DstAddr; //目的地址BYTE Options; //选项} IP_HEADER;这里只考虑IP头部结构,不考虑数据部分。
IP及IPSEC协议数据包的捕获与分析
IP及IPSEC协议数据包的捕获与分析为了掌握掌握IP和IPSEC协议的工作原理及数据传输格式,熟悉网络层的协议。
我进行了以下实验:首先用两台PC互ping并查看其IP报文,之后在两台PC上设置IPSEC互ping并查看其报文。
最终分析两者的报文了解协议及工作原理。
一、用两台PC组建对等网:将PC1与PC2连接并分别配置10.176.5.119和10.176.5.120的地址。
如图1-1所示。
图1-1二、两PC互ping:IP数据报结构如图1-2所示。
图1-2我所抓获的报文如图1-3,图1-4所示:图1-3 请求包图1-4 回应包分析抓获的IP报文:(1)版本:IPV4(2)首部长度:20字节(3)服务:当前无不同服务代码,传输忽略CE位,当前网络不拥塞(4)报文总长度:60字节(5)标识该字段标记当前分片为第1367分片(6)三段标志分别指明该报文无保留、可以分段,当前报文为最后一段(7)片偏移:指当前分片在原数据报(分片前的数据报)中相对于用户数据字段的偏移量,即在原数据报中的相对位置。
(8)生存时间:表明当前报文还能生存64(9)上层协议:1代表ICMP(10)首部校验和:用于检验IP报文头部在传播的过程中是否出错(11)报文发送方IP:10.176.5.120(12)报文接收方IP:10.176.5.119(13)之后为所携带的ICMP协议的信息:类型0指本报文为回复应答,数据部分则指出该报文携带了32字节的数据信息,通过抓获可看到内容为:abcdefghijklmnopqrstuvwabcdefghi三、IPSec协议配置:1、新建一个本地安全策略。
如图1-5。
图1-52、添加IP安全规则。
如图1-6.图1-6 3、添加IP筛选器。
如图1-7,图1-8,图1-9图1-7图1-8 图1-9 4、设置筛选器操作,如图1-10,图1-11所示图1-10图1-115、设置身份验证方法,预共享密钥:123456789,如图1-12所示图1-12 6、将设置好的本地安全策略分配,如图1-13所示图1-13 四、两PC配置IPSEC互ping,并抓获报文分析:所抓取报文如下图1-14所示图1-14下图1-15为协议协商部分报文:图1-15分析:(1)发起方的SPI为:1cfe1a3b68487806(2)响应方的SPI为:未知(3)本报文作用为协商IKE策略(4)交换模式为主模式(5)有效载荷类型:策略协商(6)载荷长度:56(7)解释域为IPSEC协议(8)第二段有效载荷类型为建议部分(9)第二段有效载荷类型为传输,内容是IKE策略下图1-16为KEY交换部分报文:图1-16分析:作用为通过协商DH产生第一阶段的密码。
IP 数据报捕获与分析实验报告
实验报告专业班级成绩评定______ 学号姓名教师签名______ 实验题目IP 数据报捕获与分析实验时间一、实验目的:1.掌握IP数据报格式。
2.理解IP协议的工作原理及工作过程。
3.掌握使用wireshark捕获IP等数据报并分析。
二、实验环境:以太网。
三、实验内容:1.熟悉WinPcap的体系构架和提供的函数。
2.学习IP数据报校验和计算方法。
3.掌握使用wireshark捕获IP等数据报。
4.对捕获的IP数据报进行分析。
四、实验步骤:1.在PING之前先运行wireshark熟悉页面并进行一些设置a.单击Capture Filter过滤器:可以设置捕捉一些特殊规则的数据报。
b.在选中Capture packets in promiscuous mode:可以设置为混合全处理模式。
c.可以点击Start开始捕捉。
过一段时间后,点击Stop停止,观察捕捉到的数据报,并进行分析。
2.使用wireshark捕获和分析IP数据包。
a.打开wireshar并开始捕获数据包。
b.然后在系统的“开始”—“运行”—输入“CMD”命令,进入DOS命令窗口,并输入“ping”命令测试网络的情况.c.如“ping 192.168.0.1”。
Ping 命令的使用d.再回到wireshar点击停止后查看捕获到的数据,双击打开“ping”后的数据包,分析数据包的内容。
分片的数据包(以下图片全部通过wireshark捕获数据包,然后用QQ中的截图功能截取)IP协议节点IP协议节点上面节点说明如下:树节点名称说明Version IP版本,IPv4Header Length 20个字节的IP头,没有其他选项Total Length 该IP包携带的64字节Flags 不分片标志被设置没有被设置,该IP在通过各种类型的网络时可以分片传输;如果该网络的最大数据包小于该IP包的长度,该数据包将被分片传输;Time to live TTL值为64,最多数据传输64个节点就被抛弃。
ip数据包的捕获与解析代码
ip数据包的捕获与解析代码//packcapturedlg.h:headerfile#defineipv4_wersion4#defineipv6_wersion6#defineic mp_packet1#defineigmp_packet2#definetcp_packet6#defineegp_packet8#defineudp_pa cket17#defineospf_packet89classcpackcapturedlg:publiccdialog{public://{{afx_data(cfindhostdlg)enum{ido=ido_packcapture_dialog};intm_count;cstringm_packet;//}}afx_dataprotected://{{afx_msg(cfindhostdlg)afx_msgvoidoncapture();//}}afx_msgprivate:typedefstructip_head//ip头部结构{union{unsignedcharversion;//版本(字节前四位)unsignedcharheadlen;//头部长度(字节后四位)};unsignedcharservicetype;//服务类型unsignedshorttotallen;//总长度unsignedshortidentifier;//标识符union{unsignedshortflags;//标志位(字前三位)unsignedshortfragoffset;//片偏移(字后13位)};unsignedchartimetolive;//存活周期unsignedcharprotocol;//协议unsignedshortheadchecksum;//头部校验和unsignedintsourceaddr;//源ip地址unsignedintdestinaddr;//目的ip地址}ip_head;typedefstructicmp_head//icmp头部结构{unsignedchartype;//类型unsignedcharcode;//代码unsignedshortheadchecksum;//头部校验和unsignedshortidentifior;//标识符unsignedshortsequence;//序号}icmp_head;};//packcapturedlg.cpp:implementationfile#include\#include\#include\#include\#include\#defineio_rcvall_wsaiow(ioc_vendor,1)voidcpackcapturedlg::oncapture(){wsadataw sadata;//创建与socket库存取if(wsastartup(makeword(2,2),&wsadata)!=0){messagebox(\初始化失利!\return;}socketsocket;//创建原始socketsocket=socket(af_inet,sock_raw,ipproto_ip);if(socket==invalid_socket){me ssagebox(\创建socket失败!\wsacleanup();return;}intrecvtime=5000;//设置socket 操作选项if(setsockopt(socket,sol_socket,so_rcvtimeo,(char*)&recvtime,sizeof(recvtime)) ==socket_error){messagebox(\设置socket选项失败!\closesocket(socket);wsacleanup();return;}charhostname[128];//获得本地主机名称if(gethostname(hostname,128)==socket_error){messagebox(\获得主机名失败!\closesocket(socket);wsacleanup();return;}hostent*phostent;//获得本地主机ip地址phostent=gethostbyname(hostnmae);if(phostent==null){messagebox(\获得主机地址失败!\closesocket(socket);wsacleanup();return;}sockaddr_inhostaddr;//定义socket地址结构memset(&hostaddr,0,sizeof(hostaddr));hostaddr.sin_family=af_inet;hostaddr.sin_ addr.s_addr=(*(in_addr*)phostent->h_addr).s_addr;intnbind;//绑定socket与网卡nbind=bind(socket,(psockaddr)&hostaddr,sizeof(hostaddr));if(nbind==socket_erro r){messagebox(\绑定socket失败!\closesocket(socket);wsacleanup();return;}dworddwvalue=1;//设置socket拒绝接受模式if(ioctlsocket(socket,io_rcvall,&dwvalue)==socket_error){messagebox(\设置socket接收器失利!\closesocket(socket);wsacleanup();return;}updatedata(true);m_packet=\版本总长度标志位片偏转协议源地址目的地址\\r\\n\for(inti=0;i>4)==ipv4_version)str.format(\if((iphead.version>>4)==ipv6_ version)str.format(\m_packet+=str;str.format(\m_packet+=str;str.format(\m=%u\m_packet+=str;str.format(\m_packet+=str;switch(iphead.protocol){caseicmp_packet:str.format(\break;caseigmp_packet:str.format(\break;casetcp_pa cket:str.format(\break;caseegp_packet:str.format(\break;caseudp_packet:str.for mat(\break;caseospf_packet:str.format(\break;};m_packet+=str;str.format(\m_pac ket+=str;str.format(\m_packet+=str;m_packet+=\}}updatedata(false);closesocket(socket);wsacleanup();//中止与socket库存取}。
IP数据包解析
计算机网络课程设计报告解析IP数据包2012年6月目录目录 (1)1、课程设计目的 (3)2、课程设计要求 (3)3、相关知识 (3)4、课程设计分析 (7)4.1 网卡设置 (7)4.2 使用套接字 (7)4.3 接收数据包 (8)4.4 定义IP头部的数据结构 (8)4.5 IP包的解析 (10)4.6 协议的定义 (10)4.7捕获处理 (10)5、运行结果 (10)6、总结 (12)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数据报捕获与分析
任务三计算机网络实验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报文的捕获与分析
2.4.4 实验报告
完成
– 实验指导书中规定的
实验数据及结果分析 思考题 实验结论
– 总结及心得体会 – 对本实验过程及方法、手段的改进建议
组格式
实验操作预习
– Sniffer捕获操作 – IP协议捕获操作
完成预习题
完成实验报告
– 实验项目名称 – 实验学时 – 实验原理 – 实验目的 – 实验内容 – 实验器材 – 实验步骤
实验步骤
1.根据实验拓扑设置主机TCP/IP配置 参数。运行sniffer软件,设置捕获条 件:
– Address
实验拓扑 操作事项 数据记A1 A2
2人一组
子网B B1 B2
检查Sniffer的工作情况
按照步骤1设置Sniffer捕获条件 – 提示:ICMP报文封装在IP分组中发送
然后启动Sniffer捕获 – Ping组内任意一台主机的IP地址 – Ping通后停止捕获
提交
– 纸质实验报告
实验五:IP报文捕获与分析
实验学时:2学时
内容
实验目的 实验预习 实验软件 实验要求
5.1 实验目的
掌握Sniffer软件的报文捕获操作 掌握IP报文格式
5.2 实验预习
预习实验指导书
– 目的、原理 – 内容、步骤 – 数据分析 – 实验结论 – Sniffer软件 – 以太帧、ARP和IP分
Type = IP,Mode = Include Station 1 = 本机IP地址,Station 2 =
any
– Advanced
数据包的捕获与分析
数据包的捕获与分析随着数字化时代的到来,数据成为了生活中不可或缺的一部分。
无论是在个人生活还是商业领域,数据都扮演着重要的角色。
数据包的捕获与分析是一项关键的技术,它可以帮助我们更好地理解和利用数据。
一、数据包的捕获数据包是网络通信过程中的基本单位,它包含了传输的内容,比如电子邮件、网页浏览记录、聊天消息等。
数据包的捕获是指通过网络嗅探或使用专门的工具,将数据包拦截下来并保存下来以便后续的分析。
1.1 网络嗅探网络嗅探是一种通过截取网络上的数据包进行分析的技术。
嗅探器可以通过网络接口获取网络数据包,并将其保存到本地磁盘上。
这种方法可以帮助我们获取网络上的实时数据,并进行进一步的分析和处理。
1.2 抓包工具除了网络嗅探外,还有一些专门的抓包工具可以用来捕获数据包。
这些工具提供了更多的功能和选项,可以帮助用户更方便地进行数据包的捕获和分析。
常见的抓包工具有Wireshark、tcpdump等。
二、数据包的分析数据包的分析是指对捕获到的数据包进行解析和研究,从中获取有用的信息和洞察。
数据包分析可以帮助我们了解网络通信的细节,发现网络中的问题,或者进行网络安全分析。
2.1 解析协议数据包中包含了丰富的信息,例如源IP地址、目标IP地址、端口号、协议类型等。
通过对这些信息的解析,我们可以了解两台主机之间的通信流程和协议类型。
比如,通过分析数据包的源IP地址和目标IP地址,我们可以确定两台主机之间的通信关系。
2.2 分析应用层协议应用层协议是数据包中最高层的协议,它决定了数据包中的内容和格式。
通过分析应用层协议,我们可以了解具体的通信内容。
比如,通过分析HTTP协议,我们可以获取到网页浏览记录、网页标题、请求和响应的头部信息等。
2.3 发现网络问题数据包的分析也可以帮助我们发现网络中的问题。
通过分析网络通信流量和数据包的延迟、丢包情况,我们可以确定网络是否存在瓶颈或故障。
这对于网络管理员来说是非常重要的,可以帮助他们快速定位和解决网络问题。
实验二IP报文的捕获与分析
实验⼆IP报⽂的捕获与分析实验⼆ IP报⽂的捕获与分析——实验报告⼀、实验⽬的(1)掌握IP协议报⽂格式。
(2)对捕捉到的包进⾏IP分析。
⼆、实验内容⽤Wireshark过滤出IP数据包,查看并分析具体的IP包的内容。
三、实验原理1、wireshark简介Wireshark(前称Ethereal)是⼀个⽹络封包分析软件。
⽹络封包分析软件的功能是撷取⽹络封包,并尽可能显⽰出最为详细的⽹络封包资料。
在GNUGPL通⽤许可证的保障范围底下,使⽤者可以以免费的代价取得软件与其程式码,并拥有针对其源代码修改及客制化的权利。
Ethereal是⽬前全世界最⼴泛的⽹络封包分析软件之⼀。
Wireshark可以帮助⽹络管理员检测⽹络问题,帮助⽹络安全⼯程师检查资讯安全相关问题,开发者使⽤Wireshark来为新的通讯协议除错,普通使⽤者使⽤Wireshark来学习⽹络协定的相关知识当然,有的⼈⽤它来寻找⼀些敏感信息Wireshark不是⼊侵侦测软件(Intrusion DetectionSoftware,IDS)。
对于⽹络上的异常流量⾏为,Wireshark不会产⽣警⽰或是任何提⽰。
然⽽,仔细分析Wireshark撷取的封包能够帮助使⽤者对于⽹络⾏为有更清楚的了解。
Wireshark不会对⽹络封包产⽣内容的修改,它只会反映出⽬前流通的封包信息,它也不会送出封包⾄⽹络上2、IP数据报格式IP数据报TCP/IP协议定义了⼀个在因特⽹上传输的包,称为IP数据报(IP Datagram)。
这是⼀个与硬件⽆关的虚拟包,由⾸部和数据两部分组成。
⾸部的前⼀部分是固定长度,共20字节,是所有IP数据报必须具有的。
在⾸部的固定部分的后⾯是⼀些可选字段,其长度是可变的。
⾸部中的源地址和⽬的地址都是IP协议地址。
IP数据包格式如图1所⽰。
图1 IP报⽂格式上⽹查找资料,整理如下更详细更易懂的IP报⽂格式与字段含义:IP协议偏移量0~34~78~1516~1819~31偏移量0~34~78~1516~1819~31 0版本⾸部长度服务类型总长度32标识符标识分段偏移64存活时间协议⾸部校验和96源IP地址128⽬的IP地址160选项160或192+数据IP报⽂字段含义版本指 IP 协议所使⽤的版本。
网络数据传输管理技术的数据包捕获与分析(五)
网络数据传输管理技术的数据包捕获与分析随着网络技术的不断发展和普及,网络数据传输管理技术也变得日益重要。
在网络数据传输管理技术中,数据包的捕获与分析是至关重要的一环。
本文将探讨网络数据传输管理技术中数据包捕获与分析的相关内容。
一、数据包捕获数据包捕获是指通过某种方式,将经过网络传输的数据包进行截取和记录。
在网络数据传输管理技术中,数据包捕获可以通过网络抓包软件来实现。
网络抓包软件可以监控网络上的数据流量,实时捕获经过网络的数据包,并对其进行记录和分析。
网络抓包软件通常包括了一些高级的过滤功能,可以根据协议类型、源地址、目的地址、端口号等条件来进行数据包的过滤和捕获。
通过数据包捕获,管理员可以获取到网络上的实时数据流量信息,发现网络异常、故障和安全问题,进行网络性能分析和优化,以及进行网络安全审计和监控等工作。
二、数据包分析数据包分析是指对捕获到的数据包进行解析和分析,从中获取有价值的信息。
数据包分析可以帮助管理员了解网络上的通信情况、发现网络问题、排查安全隐患、进行性能优化等工作。
数据包分析通常包括了对数据包的解码、重组、协议分析、数据流重建、异常检测等内容。
网络数据包通常采用的是分层协议结构,如TCP/IP协议栈。
因此,在数据包分析过程中,需要对数据包进行相应协议的解析和分层重组,才能获取到更多有用的信息。
网络数据包分析工具通常提供了丰富的分析功能,如协议解析、数据流重建、流量统计、异常检测等。
通过这些功能,管理员可以对网络数据包进行深入分析,发现网络性能问题、排查网络安全问题、进行网络优化等工作。
三、数据包捕获与分析的重要性数据包捕获与分析在网络数据传输管理技术中具有重要的地位和作用。
首先,数据包捕获与分析可以帮助管理员了解网络上的通信情况,监控网络性能,发现网络异常和故障。
其次,数据包捕获与分析可以帮助管理员排查网络安全问题,进行网络安全审计和监控。
再次,数据包捕获与分析可以帮助管理员进行网络性能优化,提高网络的传输效率和稳定性。
解析IP数据包
解析IP数据包IP数据包是在互联网传输中扮演重要角色的一种数据格式。
它包含了源IP地址和目标IP地址,以及其他与网络通信相关的信息。
解析IP数据包是对这些信息进行分析和解读的过程,以便理解数据包的来源、目的和内容。
在解析IP数据包时,我们可以从以下几个方面进行详细的分析:1. 版本号:IP数据包的版本号指示了所使用的IP协议的版本。
常见的版本有IPv4和IPv6。
IPv4是目前广泛使用的版本,而IPv6是为了解决IPv4地址不足的问题而推出的新版本。
2. 头部长度:IP数据包的头部长度指示了IP头部的长度,以字节为单位。
头部长度可以通过该字段的值乘以4来计算得到实际长度。
3. 服务类型:IP数据包的服务类型字段用于指示对数据包的处理优先级和要求。
这个字段可以用于区分不同类型的流量,如语音、视频或者普通数据。
4. 总长度:IP数据包的总长度字段指示了整个IP数据包的长度,包括头部和数据部份。
这个字段的值以字节为单位。
5. 标识、标志和片偏移:IP数据包的标识字段用于惟一标识一个IP数据包。
标志字段用于指示是否还有后续的分片数据包,以及是否允许分片。
片偏移字段用于指示当前数据包在原始数据中的位置。
6. 生存时间:生存时间字段指示了IP数据包在网络中的最大生存时间。
每经过一个路由器,生存时间字段的值就会减少1。
当生存时间字段的值为0时,数据包将被丢弃。
7. 协议:协议字段指示了IP数据包中封装的上层协议类型。
常见的协议有TCP、UDP和ICMP等。
8. 校验和:校验和字段用于检测IP数据包在传输过程中是否发生了错误。
发送端会计算校验和,并将其添加到IP头部中。
接收端在接收到数据包后会重新计算校验和,并将其与接收到的校验和进行比较,以检测数据包是否有损坏。
9. 源IP地址和目标IP地址:源IP地址字段指示了数据包的发送者的IP地址,而目标IP地址字段指示了数据包的接收者的IP地址。
通过解析IP数据包,我们可以获得有关网络通信的重要信息,如数据包的源地址、目标地址、协议类型等。
