当前位置:文档之家› 网络数据包分析陈彦兵11408400108

网络数据包分析陈彦兵11408400108

网络数据包分析陈彦兵11408400108
网络数据包分析陈彦兵11408400108

湖南工业大学

课程设计

资料袋

计算机与通信学院学院(系、部)2013 ~ 2014 学年第 1 学期课程名称网络协议分析指导教师李建设职称副教授

学生姓名陈彦兵专业班级网络1101 学号11408400108

题目数据包的捕获与分析

成绩起止日期2013 年11 月12 日~2013 年11 月25 日

目录清单

2013 —2014学年第1 学期

学院(系、部)计算机与通信学院专业网络工程班级111-2 课程名称:网络协议分析学生姓名:陈彦兵

设计题目:数据包的捕获与分析指导教师:李建设

完成期限:自2013 年11 月12 日至2013 年11 月25 日共 2 周

指导教师(签字):年月日系(教研室)主任(签字):年月日

课程设计说明书

课程名称:网络协议分析

设计题目:数据包的捕获与分析

专业:网络工程班级: 1101 学生姓名: 陈彦兵学号: 11408400108 指导教师:

年月日

目录

1概述

1.1 课程设计的目的

设计一个GUI程序,实现IP、TCP、UDP数据包的捕获和解析,记录每个数据包的个数并进行详细的分析。通过编程了解各类数据报的结构,掌握网络编程的基本原理和方法。

1.2 用到的基本概念及原理

(1) UDP协议介绍

UDP协议的全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。UDP用来支持那些需要在计算机之间传输数据的网络应用。包括网络视频会议系统在内的众多的客户/服务器模式的网络应用都需要使用UDP协议。UDP协议从问世至今已经被使用了很多年,虽然其最初的光彩已经被一些类似协议所掩盖,但是即使是在今天,UDP仍然不失为一项非常实用和可行的网络传输层协议。

(2) TCP协议基本知识

TCP是一种面向连接(连接导向)的、可靠的、基于字节流的运输层通信协议。在OSI/RM模型中,它完成第四层传输层所指定的功能,UDP 是同一层内另一个重要的传输协议。首先,TCP建立连接之后,通信双方都同时可以进行数据的传输,其次,他是全双工的;在保证可靠性上,采用超时重传和稍待确认机制。在流量控制上,采用滑动窗口协议,协议中规定,对于窗口内未经确认的分组需要重传。在拥塞控制上,采用慢启动算法。

1.3 Winpcap简介

开发Winpcap的目的是为Win32应用程序提供一种直接访问底层网的

能力。通过Winpcap,网络应用程序可以实现如下功能:捕获原始数据包,包括发送到本主机以及在共享网络上的数据包。数据过滤,在将数据包发送给应用程序之前按照用户的规定对捕获的数据包进行过滤。发送原始数据包。向网络发送原始数据包。数据包统计。对网络通信进行统计。

(1)Winpcap的组成与结构:

WinPcap由一个数据包监听设备驱动程序(NPF)、一个底层的动态连接库(packet.dll)和一个高层的不依赖于操作系统的静态库(wpcap.dll)共三个部分构成,如图2.5所示。这里,NPF在操作系统的内核级,packet.dll、wpcap.dll 在用户级。

图2.5 WinPcap的组成和结构

(2)WinPcap基本原理:

数据包过滤器。

数据包过滤器决定是否接收进来的数据包并把数据包拷贝给监听程序。数据包过滤器是一个有布尔输出的函数。

循环缓冲区。

循环缓冲区以队列插入的方式来保存数据包,提高数据的存储效率。

WinPcap引用:

到https://www.doczj.com/doc/db16801439.html,/devel.htm下载WinPcap 4.0.2.zip,然后解压,解压缩就可以看见Include和lib;在"Project->Settings"标签栏中选择"C/C++",在"Preprocessor definitions"的输入框里添加"WPCAP";再选择

"Link",在"Object/library modules"的输入框里添加"wpcap.lib "。然后再设置VC++环境变量:选择Tools->options->Directories的include里面加入下载的winpcap开发包解压以后的include文件夹。选择Tools->options->Directories的lib里面加入下载的winpcap开发包解压以后的lib文件夹。在stdafx中加入#include

(3)NPF在Windows系统中的位置

图2.6 NPF在Windows系统中的位置

NPF是一个协议驱动。从性能方面来看,这不是最好的选择,但是它合理地独立于MAC层并且有权使用原始通信(raw traffic)。可以看出,NPF在NDIS之上,它与TCP/IP协议栈的实现在同一层次。因此,应用程序不通过Winsock也可以实现数据的发送和接受。

1.4系统架构

自底向上分别是嗅探器设置模块,数据包捕获模块,解析和显示模块;网络嗅探器的整体设计由三个模块组成。

(1)嗅探器设置模块主要调用Winpcap提供的API,分为获取网络设备信息,设

置并编译过滤器,打开网络设备三个步骤;

(2)数据包捕获模块创建了新的线程,利用了Winpcap的非回调函数

pcap_next_ex()函数从Winpcap底层驱动的数据缓冲区中读取数据包。并将数据包存储在系统临时文件中,以便之后的分析。用pcap_open_offline()

函数从离线文件中读取包。读取到的任意一个符合捕获条件数据包,将其内容解析,并显示本数据包;

(3)捕获完成后,进入解析和显示模块。

2课程设计实现过程

2.1前台窗体设计

(1)主窗体设计

A 、一个ListControl控件。用来显示扫描到的数据包的时间戳,原网卡地址,目的网卡地址,长度,协议类型,源端口,源IP地址,目的IP地址。

B 、一个树视图控件。判断数据包的类型,并把数据包的详细信息显示出来

C 、 7个Edit控件,第一个Edit用来数据包的分析,数据包的长度,协议类型等。第二个Edit用来设置过滤规则。用winpcap的 pcap_compile过滤设计去抓取udp包还是tcp包。剩下的5个Edit编辑框用来显示所捕获的数据包的个数。

各个控件的ID以及相关变量:

主要函数的实现:

//处理全部的网络数据

void CCapturePacketDlg::processPacket(const pcap_pkthdr *pkt_header, const u_char *pkt_data)

{

//用于存诸网络中的数据,并保存到CArray中,以备将来使用

struct pcap_pkthdr *pHeader = new pcap_pkthdr;

u_char *pData;

unsigned char *pPosition = (unsigned char *)pkt_data;

long nIndex = 0;//标识当前的数据包位置

long nCount = 0;//标识后来

char strData[20];//标识数据

pHeader->caplen=pkt_header->caplen;

pHeader->len=pkt_header->len;

pData=new unsigned char[pHeader->len];

memcpy((void *)pData,pkt_data,pHeader->len);

m_pktHeaders.Add(pHeader);

m_pktDatas.Add(pData);

nIndex=m_pktHeaders.GetSize()-1;

sprintf(strData,"%07d",nIndex+1);

nCount=m_listPacket.InsertItem(nIndex,strData,0);

m_lTotalCount++;//总数据包加1

CFramePacket *pFramePacket = new CFramePacket(pData,14);

CString strStamp;

struct tm *ltime;

ltime=localtime(&pkt_header->https://www.doczj.com/doc/db16801439.html,_sec);

strStamp.Format("%d-%d-%d %d:%d:%d",ltime->tm_year+1900,ltime->tm_mon +1,ltime->tm_mday,ltime->tm_hour,ltime->tm_min,ltime->tm_sec);

CString strLength;

strLength.Format("%ld",pHeader->len);

m_listPacket.SetItemText(nCount,1,strStamp);

m_listPacket.SetItemText(nCount,2,pFramePacket->GetMacSrcAddr( ));

m_listPacket.SetItemText(nCount,3,pFramePacket->GetMacDestAddr ());

m_listPacket.SetItemText(nCount,4,strLength);

if(pFramePacket->GetType() == 0x0800)

{

CIPPacket ipPacket(pData+14,pHeader->len-14);

m_listPacket.SetItemText(nCount,5,ipPacket.GetProtocol());

m_listPacket.SetItemText(nCount,7,ipPacket.GetSrcIP());

m_listPacket.SetItemText(nCount,8,ipPacket.GetDestIP());

if(ipPacket.GetProtocol() == "UDP")

{

CUDPPacket *pUDPPacket = new CUDPPacket(ipPacket.GetTData(),ipPacket.GetDataLength());

m_listPacket.SetItemText(nCount,6,pUDPPacket->GetSrcPort());

m_listPacket.SetItemText(nCount,9,pUDPPacket->GetDestPort());

delete pUDPPacket;

pUDPPacket = NULL;

m_lUdpCount++;//UDP包加1

}

else if(ipPacket.GetProtocol() == "TCP")

{

CTCPPacket *pTCPPacket = new CTCPPacket(ipPacket.GetTData(),ipPacket.GetDataLength());

m_listPacket.SetItemText(nCount,6,pTCPPacket->GetSrcPort());

m_listPacket.SetItemText(nCount,9,pTCPPacket->GetDestPort());

delete pTCPPacket;

pTCPPacket = NULL;

m_lTcpCount++;//TCP包加1

}

}

else if(pFramePacket->GetType() == 0x0806)

{

m_listPacket.SetItemText(nCount,5,"ARP");

CARPPacket *pARPPacket = new CARPPacket(pData+14,pHeader->len-14);

m_listPacket.SetItemText(nCount,7,pARPPacket->GetSPAddr());

m_listPacket.SetItemText(nCount,8,pARPPacket->GetDPAddr());

delete pARPPacket;

pARPPacket = NULL;

m_lArpCount++;//ARP包加1

}

else if(pFramePacket->GetType() == 0x8035)

{

m_listPacket.SetItemText(nCount,5,"RARP");

CARPPacket *pRARPPacket = new

CARPPacket(pData+14,pHeader->len-14);

m_listPacket.SetItemText(nCount,7,pRARPPacket->GetSPAddr());

m_listPacket.SetItemText(nCount,8,pRARPPacket->GetDPAddr());

delete pRARPPacket;

pRARPPacket = NULL;

m_lOtherCount++;

}

else

{

CString strProtocol;

strProtocol.Format("0X%x",pFramePacket->GetType());

m_listPacket.SetItemText(nCount,5,strProtocol);

m_lOtherCount++;

}

delete pFramePacket;

pFramePacket = NULL;

ShowPacketCount();//显示统计量信息

}

创建XML文件

bool CCapturePacketDlg::createXML(CString strFileName)

{

FILE *pFile ;

pFile = fopen(strFileName,"w+");

if(pFile == NULL)

{

AfxMessageBox("创建文件失败");

return false;

}

fputs("",pFile);

fputs("",pFile);

for(int nIndex = 0;nIndex < m_pktDatas.GetSize();nIndex++)

{

CString str;

str.Format("",nIndex);

fputs(str,pFile);

insertNode(pFile,m_pktHeaders.GetAt(nIndex),m_pktDatas.GetAt(nInd ex));

fputs("",pFile);

}

fputs("",pFile);

fclose(pFile);

return true;

}

(3)网卡选择窗体的设计:

放置一个TreeControl控件,用来显示所要选择的网卡信息。两个button控件。

各个控件ID及相关变量如下:

利用pcap_findalldevs函数找到所有的网络适配器,并用for(m_pDev = m_pAllDevs;m_pDev != NULL;m_pDev = m_pDev->next)把各个网络适配器信息一次显示在树控件中。

主要函数:

BOOL CAdapaterSelection::OnInitDialog()

{

CDialog::OnInitDialog();

// TODO: Add extra initialization here

//初始化树形选择

HTREEITEM root = m_treeAdapater.InsertItem(_T("网络适配器"));

if(pcap_findalldevs(&m_pAllDevs, m_strErrorBuf) == -1)

return FALSE;

for(m_pDev = m_pAllDevs;m_pDev != NULL;m_pDev = m_pDev->next)

{

char temp[400];

CString strText;

HTREEITEM hSubItem = m_treeAdapater.InsertItem(m_pDev->name,root);

if(m_pDev->description != NULL)

{

strText.Format("网卡描述信息 : %s",m_pDev->description);

m_treeAdapater.InsertItem(strText,hSubItem);

}

else

{

m_treeAdapater.InsertItem("网卡描述信息 : 空",hSubItem);

}

if(m_pDev->addresses != NULL && m_pDev->addresses->addr != NULL) {

iptos(((struct sockaddr_in *)m_pDev->addresses->addr)->sin_addr.s_addr,temp);

strText.Format("IP地址 : %s",temp);

m_treeAdapater.InsertItem(strText,hSubItem);

}

else

{

m_treeAdapater.InsertItem("IP地址 : 空",hSubItem);

}

if(m_pDev->addresses != NULL && m_pDev->addresses->broadaddr != NULL)

{

iptos(((struct sockaddr_in *)m_pDev->addresses->broadaddr)->sin_addr.s_addr,temp);

strText.Format("广播地址 : %s",temp);

m_treeAdapater.InsertItem(strText,hSubItem);

}

else

{

m_treeAdapater.InsertItem("广播地址 : 无",hSubItem);

}

if(m_pDev->addresses!=NULL && m_pDev->addresses->netmask!=NULL) {

iptos(((struct sockaddr_in *)m_pDev->addresses->netmask)->sin_addr.s_addr,temp);

strText.Format("子网掩码 : %s",temp);

m_treeAdapater.InsertItem(strText,hSubItem);

}

else

{

m_treeAdapater.InsertItem("子网掩码 : 空",hSubItem);

}

if(m_pDev->addresses!=NULL && m_pDev->addresses->dstaddr!=NULL) {

iptos(((struct sockaddr_in *)m_pDev->addresses->dstaddr)->sin_addr.s_addr,temp);

strText.Format("目地地址 : %s",temp);

m_treeAdapater.InsertItem(strText,hSubItem);

}

else

{

m_treeAdapater.InsertItem("目地地址 : 无",hSubItem);

}

}

m_pDev = NULL;

m_treeAdapater.Expand(root,TVE_EXPAND);

return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE }

(4)文件导出窗体设计:

放置两个Edit控件,用来放置文件名以及存放路径。

文件的导出函数:

void COutputDataDlg::OnOK()

{

// TODO: Add extra validation here

UpdateData();

if( m_strFileName.GetLength() <= 0 )

{

AfxMessageBox("文件名为空");

return ;

}

else if( m_strFileName.Find(".xml") <= 0 )

{

m_strFileName += ".xml";

}

if( m_strDirPath.GetLength() <= 0 )

{

AfxMessageBox("文件路径为空");

return ;

}

UpdateData(false);

CDialog::OnOK();

}

各个控件ID以及相关变量设置如下:

2.2菜单的设置

主菜单设置每个分菜单设置有

菜单ID及菜单的相应函数:

主要菜单函数:

导出文件:

void CCapturePacketDlg::OnMenuDataoutput()

{

// TODO: Add your command handler code here

COutputDataDlg dlg;

if( dlg.DoModal() == IDOK)

{

CString strFile = dlg.m_strDirPath+dlg.m_strFileName;

if(createXML(strFile))

{

AfxMessageBox("数据文件导出成功");

}

else

{

AfxMessageBox("数据文件导出失败");

}

}

}

系统开始菜单:

void CCapturePacketDlg::OnMenuStart()

{

// TODO: Add your command handler code here

if(m_pDevice == NULL)

{

MessageBox("请选择网卡");

return ;

}

m_bFlag = true;

CreateThread(NULL,NULL,CapturePacket,(LPVOID)this,true,NULL); // AfxBeginThread(AFX_THREADPROC(CapturePacket),(LPVOID)this); }

2.3主要类的设计

class CFramePacket //数据链路层类

{

private:

int m_nSrcAddr[6]; //源MAC地址

int m_nDestAddr[6]; //目的MAC地址

int m_nType; //网络层报文类型:IP,ARP,RARP

public:

CFramePacket();

virtual ~CFramePacket();

CFramePacket(const unsigned char *buf,int buflen);

void GetMacSrcAddr(char *str);

CString GetMacSrcAddr();

void GetMacDestAddr(char *str);

CString GetMacDestAddr();

int GetType();

};

class CIPPacket //IP数据包类

{

private:

int m_nVersion; //版本

int m_nHeaderLength; //头部长度

int m_nServiceType; //服务类型 type of service

int m_nPrecedence; //优先级

bool m_bDelay; //延迟

bool m_bThroughtPut; //吞吐量

bool m_bReliability; //可靠性

unsigned int m_uTotalLength; //总长total length

int m_nIdentification; //标识

bool m_bDF; //不要分段

bool m_bMF; //还有进一步的分段

int m_nFragOffSet; //分段偏移fragment offset

int m_nTTL; //生命期time to live

int m_nProtocol; //协议,如TCP,UDP

unsigned int m_nCheckSum; //头部校验和

long m_lSrcIP; //源IP地址

long m_lDestIP; //目的IP地址

int m_nOptLength; //选项长度

unsigned char *m_pOptions; //选项内容

int m_nDataLength; //数据长度

unsigned char *m_pData; //数据内容

public:

CIPPacket();

CIPPacket(const unsigned char* buf,int buflen);

virtual ~CIPPacket();

public:

CString GetProtocol();

CString GetDestIP();

CString GetSrcIP();

unsigned char* GetTData();

int GetDataLength();

CString GetVersion(); //版本

CString GetHeaderLength(); //头部长度

CString GetServiceType(); //服务类型 type of service CString GetPrecedence(); //优先级

CString GetDelay(); //延迟

CString GetThroughtPut(); //吞吐量

CString GetReliability(); //可靠性

CString GetTotalLength(); //总长total length

CString GetIdentification(); //标识

CString GetDF(); //不要分段

CString GetMF(); //还有进一步的分段

CString GetFragOffSet(); //分段偏移fragment offset

CString GetTTL(); //生命期time to live

CString GetCheckSum(); //头部校验和

CString GetOptLength(); //选项长度

CString GetOptions(); //选项内容

CString GetDLength(); //数据长度

private:

CString GetInt(int nNum);

CString GetBool(bool nBool);

};

class CTCPPacket //TCP层数据包类{

private:

int m_nSrcPort;//源端口

int m_nDestPort;//目的端口

unsigned int m_uSeqNum;//顺序号

unsigned int m_uAckNum;//确认号

int m_nHeadLen;//头部长

bool m_bURG;//为1表示使用紧急指针

bool m_bACK;//为1表示确认号合法

bool m_bPSH;//表示带有PUSH标志的数据

bool m_bRST;//用于主机崩溃或其他原因后的复位

bool m_bSYN;//用于建立连接

bool m_bFIN;//用于释放连接

int m_nWindowSize;//窗口大小

int m_nCheckSum;//校验和

int m_nUrgPos;//紧急指针,从当前顺序号到紧急数据位置偏移量int m_nOptLen;//选项长度

unsigned char *m_pOptions;

int m_nDataLen;

unsigned char *m_pData;

public:

CTCPPacket();

virtual ~CTCPPacket();

CTCPPacket(unsigned char *buf,int buflen);

public:

CString GetSrcPort();

CString GetDestPort();

CString GetSeqNum();//顺序号

CString GetAckNum();//确认号

CString GetHeadLen();//头部长

CString GetURG();//为1表示使用紧急指针

CString GetACK();//为1表示确认号合法

CString GetPSH();//表示带有PUSH标志的数据

CString GetRST();//用于主机崩溃或其他原因后的复位

CString GetSYN();//用于建立连接

CString GetFIN();//用于释放连接

CString GetWindowSize();//窗口大小

CString GetCheckSum();//校验和

CString GetUrgPos();//紧急指针,从当前顺序号到紧急数据位置偏移量

CString GetOptLen();//选项长度

CString GetOptions();//选项值

CString GetDataLen();//数据长度

CString GetData();//数据值

private:

CString GetStr(unsigned int nNum,unsigned char * pData = NULL,bool nFlag = true);

CString GetBool(bool nFlag);

};

class CUDPPacket //UDP层数据包类

{

private:

unsigned int m_uSrcPort;//源端口

unsigned int m_uDestPort;//目的端口

int m_nTotalLen;//总长

int m_nCheckSum;//校验和

unsigned int m_uDataLen;

char *m_pData;

public:

CUDPPacket();

virtual ~CUDPPacket();

CUDPPacket(unsigned char *buf,int buflen);

public:

CString GetSrcPort();

CString GetDestPort();

CString GetTotalLen();//总长

CString GetCheckSum();//校验和

CString GetDataLen();

CString GetData();

private:

CString GetInt(int nNumm,char *pData = NULL,bool nFlag =true);};

2.4主要变量函数的设计

private:

pcap_if_t *m_pDevice;//所选中的网卡地址

bool m_bFlag;//查看是否开始

CArray m_pktHeaders;

CArray m_pktDatas;

long m_lArpCount; //arp的总数

long m_lOtherCount; //其他数据包的数量

long m_lTcpCount; // tcp的总数

long m_lTotalCount; //数据包的总数

long m_lUdpCount; //udp的总数private:

bool LoadFilterString( );

bool createXML(CString strFileName); //创建xml文件void insertNode(FILE *pFile,const struc

4实验结果

运行程序先选择网卡,结果如图:

然后选择操作的启动,得到结果如图:

计算机网络课程设计---基于Wireshark的网络数据包内容解析

基于Wireshark的网络数据包内容解析 摘要本课程设计是利用抓包软件Wireshark,对网络服务器与客户端进行网络数据收发过程中产生的包进行抓取,然后对所抓取的包进行分析,并结合的协议进行分析,达到了解各种数据包结构的目的。设计过程中对各种包进行抓取分析,各种包之间比较,了解每种包的传输过程与结构,通过本次课程设计,能很好的运用Wireshark对数据包分析和Wireshark各种运用,达到课程设计的目的。 关键词IP协议;TCP协议;UDP协议;ARP协议;Wireshark;计算机网络; 1 引言 本课程设计主要是设计一个基于Wireshark的网络数据包内容解析,抓取数据包,然后对所抓取的包进行分析,并结合的协议进行分析,达到了解各种数据包结构的目的 1.1 课程设计目的 Wireshark是一个网络封包分析软件。可以对网络中各种网络数据包进行抓取,并尽可能显示出最为详细的网络封包资料,计算机网络课程设计是在学习了计算机网络相关理论后,进行综合训练课程,其目的是: 1.了解并会初步使用Wireshark,能在所用电脑上进行抓包; 2.了解IP数据包格式,能应用该软件分析数据包格式。 1.2 课程设计要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。

(4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。 1.3 课程设计背景 一、Wireshark(前称Ethereal)是一个网络封包分析软件。网络封包分析软件的功能是撷取网络封包,并尽可能显示出最为详细的网络封包资料。 网络封包分析软件的功能可想像成 "电工技师使用电表来量测电流、电压、电阻" 的工作 - 只是将场景移植到网络上,并将电线替换成网络线。在过去,网络封包分析软件是非常昂贵,或是专门属于营利用的软件。Wireshark的出现改变了这一切。在GNUGPL通用许可证的保障范围底下,使用者可以以免费的代价取得软件与其源代码,并拥有针对其源代码修改及客制化的权利。Wireshark是目前全世界最广泛的网络封包分析软件之一。 二、网络嗅探需要用到网络嗅探器,其最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。网络嗅探是网络监控系统的实现基础。 网络嗅探需要用到网络嗅探器,其最早是为网络管理人员配备的工具,有了嗅探器网络管理员可以随时掌握网络的实际情况,查找网络漏洞和检测网络性能,当网络性能急剧下降的时候,可以通过嗅探器分析网络流量,找出网络阻塞的来源。嗅探器也是很多程序人员在编写网络程序时抓包测试的工具,因为我们知道网络程序都是以数据包的形式在网络中进行传输的,因此难免有协议头定义不对的。 网络嗅探的基础是数据捕获,网络嗅探系统是并接在网络中来实现对于数据的捕获的,这种方式和入侵检测系统相同,因此被称为网络嗅探。网络嗅探是网络监控系统的实现基础,首先就来详细地介绍一下网络嗅探技术,接下来就其在网络监控系统的运用进行阐述。 2 网络协议基础知识 2.1 IP协议 (1) IP协议介绍

网络通信协议分析与应用试题集6828(1).

解答: 1. OSI标准中,采用的是三级抽象:体系结构,服务定义,协议说明。 2. TCP/IP协议族中,使用了三个不同层次的地址,主机网络层或网络接口层使用了:物理地址(MAC地址)。 3. TCP/IP协议族中,使用了三个不同层次的地址,传输层使用了:端口地址。 4. TCP/IP协议族中,使用了三个不同层次的地址,网络层使用了:逻辑地址(IP地址)。 5. 根据所提供的服务方式的不同,端口又可分为TCP协议端口和UDP协议端口两种。 6. 从端口的性质来分,通常可以分为以下三类,注册端口(Registered Ports)松散地绑 定于一些服务。 7. 从端口的性质来分,通常可以分为三类,FTP和HTTP服务需要使用:公认端口(Well Kno wn Ports)类型。 8. 从端口的性质来分,通常可以分为三类,动态或私有端口(Dynamic and/or Private Po rts)容易被黑客和木马程序利用。 9. 接口是同一结点内相邻层之间交换信息的连接点。 10. CCITT与ISO的工作领域是不同的:CCITT 主要是考虑通信标准的制定。 11. CCITT与ISO的工作领域是不同的:ISO主要是考虑信息处理与网络体系结构。 12. OSI参考模型和TCP/IP参考模型只是描述了一些概念,用来协调进程间通信标准的制定。 13. 通信服务可以分为两大类:面向连接服务(connect-oriented service)和无连接服 务(connectless service)。 14. 网络数据传输的可靠性一般通过确认和重传机制保证。 15. 通信协议包括:面向连接与确认服务;面向连接与不确认服务;无连接与确认服务;无连接与不确认服务四种类型。 16. IP协议是无连接的、提供“尽力而为”服务的网络层协议。 17. 17. INTERNET使用了不同类型的地址概念,应用层使用了域名(DNS)、电子邮件址、URL等地址。 18. 网络协议是由程序和进程来完成的。 19. B类IP地址中的一个私有网络地址,如果需要50个子网,网络掩码应该为(点十进制表示):255.255.252.0 。

高速网络环境下数据包捕获技术的分析

龙源期刊网 https://www.doczj.com/doc/db16801439.html, 高速网络环境下数据包捕获技术的分析 作者:王亚 来源:《数字技术与应用》2011年第12期 摘要:互联网的迅猛发展,网络带宽飞速增长,在高速网络环境下,传统的网络数据包捕获已经成为制约整个系统的性能提升的瓶颈,为了满足高速网络的数据包捕获的需求,对传统的网络数据包捕获存在的问题进行分析,在此基础上提出了改进措施,为后期研究高速网络下高性能的数据包捕获技术奠定基础。 关键词:高速网数据包捕获 Libpcap 中图分类号:TP393 文献标识码:A 文章编号:1007-9416(2011)12-0194-02 The Analysis of Packet Capture Technology in High Speed Network wangya (Fuyang Teachers College of computer and Information engineering Fuyang 236041) Abstract:The rapid development of the Internet and the rapid growth of network bandwidth,in high-speed network environment,the traditional network data packet capture has become the constraints of the system performance bottleneck. In order to satisfy the high speed network packet capture demand,to analysis the existing problems of the traditional network packet capture,and put forward on this foundation improvement measures.,It lays the foundation for later research of high-speed network and high performance packet capture technology. Keywords:high speed network;packet capture;Libpcap 1、引言 目前,对网络信息监控与检测的软件都是基于数据包捕获技术,如:入侵检测程序Snort、嗅探器Tcpdump等。数据包捕获技术是一种对网络上的数据包进行监听并截取的技术,可以将数据包原封不动的拷贝到捕包端的系统中。数据包捕获是入侵检测系统、网络协议

网络数据包的捕获与协议分析知识分享

网络数据包的捕获与 协议分析

实验报告 ( 2016 / 2017 学年第一学期) 题目:网络数据包的捕获与协议分析 专业计算机科学与技术 学生姓名张涛 班级学号 14210133 指导教师江中略 指导单位计算机系统与网络教学中心 日期 2016.10.31

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。

(4)执行命令:ping https://www.doczj.com/doc/db16801439.html,,观察执行后的结果并记录。 此时,Wireshark所观察到的现象是:(截图表示)

2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分 析和统计。(截图加分析)

3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分 析和统计。 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP报文。(截图加分析) 0000 6c 71 d9 3f 70 0b 78 eb 14 11 da b2 08 00 45 00 lq.?p.x. ......E. 0010 00 44 e4 9d 00 00 31 01 f7 11 6a 03 81 f3 c0 a8 .D....1. ..j..... 0020 01 6b 03 0a ab 1a 00 00 00 00 45 00 00 28 68 29 .k...... ..E..(h) 0030 40 00 73 06 f1 9c c0 a8 01 6b 6a 03 81 f3 e9 df @.s..... .kj..... 0040 01 bb e1 58 0a 8d 93 e6 e0 94 50 11 01 01 b4 cc ...X.... ..P..... 0050 00 00 ..

网络数据包的捕获与分析毕业设计

网络数据包的捕获与分析 【摘要】网络数据包的捕获对于网络安全有着巨大的作用,为我们更好的分析网络中的数据流提供了帮助。本论文是基于Windows下开发一个网络监听工具,侧重点在于实现网络数据包的捕获,然后分析并显示捕获到的数据包信息这部分功能的实现,如分析:IP首部协议类型、源IP、目的IP和端口号等。采用的是Winpcap(Windows Packet Capture)来实现的抓包功能。通过VC++6.0中MFC编程实现通过一个完整界面来控制调用Winpcap中的函数来实现对网卡信息的捕获和循环捕获数据包,然后通过预先对于IP、TCP、UDP等数据包的定义和TCP/IP等协议来解析其中包含的内容并返回显示捕获到数据包的信息,当然也可以保存捕获到的数据包到指定地点以便进一步分析。 【关键词】Winpcap;数据包;捕获;分析

The Capture and Analysis of Network Data Packets Wang Hang (Grade 11,Class 1, Major Network Engineering, Scho ol of Mathematics and Computer Science Dept, Shaanxi University of Technology, Hanzhong 723003, Shaanxi) Tutor: Jia Wei Abstract: The capture of network data packets plays an important part in network security, which is helpful for our better analysis of network data flow.This paper is about a network monitoring tool based on Windows system, which emphasizes particularly on realizing the capture and analysis of network data packets and then displays them. Take analysis as an example, it will check the type of the IP protocol, the source address of IP, the destination address of IP and the port https://www.doczj.com/doc/db16801439.html,e the Winpcap(Windows Packet Capture)to capture of data packets. In MFC programming of VC++6.0, the capture of network data packets can be realized via the invoking and control of the functions through a full control panel, and then the analysis of IP ,TCP,UDP and TCP/IP will be done before they are displayed. Certainly the information captured can be saved to the appointed destination in order to go through an advanced analysis. Key words:Winpcap;Data Packets;Capture;Analysis

网络协议分析——抓包分析

计算机网络技术及应用实验报告开课实验室:南徐学院网络实验室

第一部分是菜单和工具栏,Ethereal提供的所有功能都可以在这一部分中找到。第二部分是被捕获包的列表,其中包含被捕获包的一般信息,如被捕获的时间、源和目的IP地址、所属的协议类型,以及包的类型等信息。 第三部分显示第二部分已选中的包的每个域的具体信息,从以太网帧的首部到该包中负载内容,都显示得清清楚楚。 第四部分显示已选中包的16进制和ASCII表示,帮助用户了解一个包的本来样子。 3、具体分析各个数据包 TCP分析:

源端口 目的端口序号 确认号 首部长度窗口大小值

运输层: 源端口:占2个字节。00 50(0000 0000 1001 0000) 目的端口:占2个字节。C0 d6(1100 0000 1101) 序号:占四个字节。b0 fe 5f 31(1011 0000 0101 1110 0011 0001) 确认号:占四个字节。cd 3e 71 46(1100 1101 0011 1110 0110 0001 0100 0110) 首部长度:共20个字节:50(0101 0001) 窗口大小值:00 10(0000 0000 0001 00000) 网络层: 不同的服务字段:20 (0010 0000)

总的长度:00 28(0000 0000 0010 10000) 识别:81 28(1000 0001 0010 10000) 片段抵消:40 00(0100 0000 0000 0000) 生存时间:34 (0011 0100) 协议: 06(0000 0110)

计算机网络使用网络协议分析器捕捉和分析协议数据包样本

计算机网络使用网络协议分析器捕捉和分析协议数据包样 本 计算机网络使用网络协议分析器捕捉和分析协议数据包广州大学学生实验报告开课学院及实验室:计算机科学与工程实验室11月月28日学院计算机科学与教育软件学院年级//专业//班姓名学号实验课程名称计算机网络实验成绩实验项目名称使用网络协议分析器捕捉和分析协议数据包指导老师熊伟 一、实验目的 (1)熟悉ethereal的使用 (2)验证各种协议数据包格式 (3)学会捕捉并分析各种数据包。 本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 二、实验环境1.MacBook Pro2.Mac OS3..Wireshark 三、实验内容,验证数据帧、IP数据报、TCP数据段的报文格式。 ,,分析结果各参数的意义。 器,分析跟踪的路由器IP是哪个接口的。 对协议包进行分析说明,依据不同阶段的协议出分析,画出FTP 工作过程的示意图a..地址解析ARP协议执行过程b.FTP控制连接建立过程c.FTP用户登录身份验证过程本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。

文档如有不当之处,请联系本人或网站删除。 d.FTP数据连接建立过程 e.FTP数据传输过程 f.FTP连接释放过程(包括数据连接和控制连接),回答以下问题:a..当访问某个主页时,从应用层到网络层,用到了哪些协议?b.对于用户请求的百度主页(),客户端将接收到几个应答报文??具体是哪几个??假设从是本地主机到该页面的往返时间是RTT,那么从请求该主页开始到浏览器上出现完整页面,一共经过多长时间??c.两个存放在同一个服务器中的截然不同的b Web页(例如,,和d.假定一个超链接从一个万维网文档链接到另一个万维网文档,由于万维网文档上出现了差错而使超链接指向一个无效的计算机名,这时浏览器将向用户报告什么?e.当点击一个万维网文档时,若该文档除了次有文本外,,那么需要建立几次TCP连接和个有几个UDP过程?本文档所提供的信息仅供参考之用,不能作为科学依据,请勿模仿。 文档如有不当之处,请联系本人或网站删除。 析,分析ARP攻击机制。 (选做),事实上,TCP开始发送数据时,使用了慢启动。 利察用网络监视器观察TCP的传输和确认。 在每一确认到达之后,慢启动过程中发生了什么?(选做),,TCP 必须准备重发初始段(用于打开一个连接的一个段)。 TCP应等多久才重发这一段?TCP应重发多少次才能宣布它不能打开一个连接?为找到结果尝试向一个不存在的地址打开一个连接,并使用网络监视器观察TCP的通信量。

计算机网络qq抓包分析

QQ数据包分析 一、实验内容: 分析QQ数据包协议:Ethernet、IP、TCP、UDP、DNS、HTTP 等,按层详细分析数据包工作机制和各协议数据组成及功能作用。 二、实验环境: Window 7环境下、QQ2014 三、实验工具: QQ2014、Ethereal抓包工具、Wiresshark抓包工具 四、实验内容 1、QQ登录数据包分析 ①利用Wireshark抓包工具的过滤规则OICQ对于qq登录的第一条登录信息进行截取分析 ②首先我们通过对第一条信息的截图我们可以看到信息

1、帧的信息: 该数据帧的帧号为:37 帧的大小:648 bits 数据接口:interface 0 到达时间:Mar 9, 2015 14:57:07.546829000 中国标准时间帧所用到的协议:eth ethertype ip udp oicq 2、数据链路层帧(eth): 以太网帧首部大小:14个字节 目的地址:Dst: AsustekC_60:5e:44 (14:da:e9:60:5e:44), 源地址:Src:DigitalC_02:f6:fe (00:03:0f:02:f6:fe) 类型字段:0800 字段类型:IP

3、网络层协议IP Ip数据报首部长度:20字节 版本号:4,目前使用为IPV4 首部长度:20字节 区分服务:00 总长度:67字节 标识:0x5c5c (23644) 标志:0x00 片偏移:0个单位 生存时间:64,表明的是这个数据报之前没有经过路由结点协议:UDP(17) 头部检验和:0x1b3c [validation disabled] 源IP地址:192.168.83.9 (192.168.83.9) 目的地址:183.60.56.36 (183.60.56.36) 4、用户数据协议UDP

sniffer数据包捕获

实训报告 一、sniffer的功能认知; 1. 实时网络流量监控分析 Sniffer Portable LAN能够对局域网网络流量进行实时监控和统计分析,对每个链路上的网络流量根据用户习惯,可以提供以表格或图形(条形图、饼状图和矩阵图等)方式显示的统计分析结果,内容包括: ·网络总体流量实时监控统计:如当前和平均网络利用率、总的和当前的帧数、字节数、总网络节点数和激活的网络节点数、当前和总的平均帧长等。 ·协议使用和分布统计:如协议类型、协议数量、协议的网络利用率、协议的字节数以及每种协议中各种不同类型的帧的数量等。Sniffer包含通用的TCP和UDP网络应用协议如HTTP, Telnet, SNMP, FTP等。同时,Sniffer 也具有特有的灵活性允许增加自定义的应用。一旦应用协议加入Sniffer,针对应用的所有的监控、报警和报告便自动生效;

·包尺寸分布统计:如某一帧长的帧所占百分比,某一帧长的帧数等。 ·错误信息统计:如错误的CRC校验数、发生的碰撞数、错误帧数等; ·主机流量实时监控统计:如进出每个网络节点的总字节数和数据包数、前x个最忙的网络 节点等;

话节点对等;

·Sniffer还提供历史统计分析功能,可以使用户看到网络中一段时间内的流量运行状况,帮助用户更好的进行流量分析和监控。

2.应用响应时间监控和分析 Sniffer 在监控网络流量和性能的同时,更加关注在网络应用的运行状况和性能管理,应用响应时间(ART)功能是Sniffer中重要的组成部分,不仅提供了对应用响应时间的实时监控,也提供对于应用响应时间的长期监控和分析能力。 首先ART监控功能提供了整体的应用性能响应时间,让用户以多种方式把握当前网络通讯中的各类应用响应时间的对比情况,如客户机/服务器响应时间、服务器响应时间,最 快响应时间、最慢响应时间、平均响应时间和90%的请求的响应时间等。

网络数据包协议分析

网络数据包协议分析 一、实验目的 1.学习网络协议分析工具Ethereal的使用方法; 2.截获数据并对它们观察,分析其中2中协议(arp&tcp)数据包包头各数据位的含义, 了解协议的运行机制。 二、实验步骤 1.安装并打开Ethereal软件; 2.利用”运行cmd”打开命令提示符,输入“ping”确认网络连接是否完成; 3.点击capture->options选择网卡(默认有线); 4.点击capture开始抓包; 5.打开浏览器,访问一个网站,这样才可以抓到tcp的数据包; 6.点击stop停止抓包。 三、实验结果分析 1.Arp---address resolution protocol,地址解析协议的缩写,就是主机在发送帧前将目 标IP地址(32位)转换成目标MAC地址(48位)的过程。它属于链路层的协议。

ARP协议数据包包头数据位分析: 1.第一栏显示帧信息。 Frame 280 (60 bytes on wire,60 bytes capture)是指该数据包含有60个字节,ethereal软件截获了60个字节。点击打开,里面包括了到达时间、相对前一个包的时间延迟、传输时间、帧号280、包长度(60字节)和捕获到的长度(60字节)。 2.第二栏显示以太网信息。 源MAC地址是f4:6d:04:3a:62:33,目的MAC地址是ff:ff:ff:ff:ff:ff。 3.第三栏显示因特网协议信息。 它包括了硬件类型:以太网;协议类型是IP协议和发送方的IP地址与MAC地址,也包括了目的IP地址和MAC地址。 2.tcp—transition control protocol,传输控制协议的缩写。是一种面向连接(连接导向) 的、可靠的、基于字节流的传输层通信协议。

网络数据包分析实验

实验一:网络数据包分析实验 班级:班学号:姓名:一、实验目的 通过对实际的网络数据包进行捕捉,分析数据包的结构,加深对网络协议分层概念的理解,并实际的了解数据链路层,网络层,传输层以及应用层的相关协议和服务。 、实验内容 1. IGMP包解析 1.1数据链路层 El代XEL洱丁;亡日:亡5 MB)」osr: IP- 4m 4 t-is :hi-At I _n * tP f Ld L^iJ 1 Sei 00:00:1^^ saur-ctt El1imro_&ai?SiU Type;IP CgMOsw) 源数据: 数据链路层头部:01 00 5e 00 00 16 00 21 97 0a e5 16 08 00 数据链路层尾部:00 00 00 00 00 00 分析如下:

数据头部的前6个字节是接收者的mac地址:01 00 5e 00 00 16 数据头部的中间6个字节是发送者的mac地址:00 21 97 0a e5 16 数据头部的最后2个字节代表网络协议,即:08 00协议类型。 1.2网络层 Header* 1 cngth: 24 byres n axed services "乜Id:0x00 (.DSCP 0X00: D&fau11: 0x003 Tqtil rength:斗D Tdsrrtificar I cn: QklclJ 也^7460) H Flmqs: Q>00 Fra^Tienr offset;:Q Time VQ live; 1 Fr DTCCDl : IGMP go?) ¥ HPAder fhecksijn:CxJ85c [correct] 5DU RUM;172,10.103.?0

网络层数据包抓包分析

网络层数据包抓包分析 一.实验内容 (1)使用Wireshark软件抓取指定IP包。 (2)对抓取的数据包按协议格式进行各字段含义的分析。 二.实验步骤 (1)打开Wireshark软件,关闭已有的联网程序(防止抓取过多的包),开始抓包; (2)打开浏览器,输入https://www.doczj.com/doc/db16801439.html,/网页打开后停止抓包。 (3)如果抓到的数据包还是比较多,可以在Wireshark的过滤器(filter)中输入http,按“Apply”进行过滤。过滤的结果就是和刚才打开的网页相关的数据包。 (4)在过滤的结果中选择第一个包括http get请求的帧,该帧用

于向https://www.doczj.com/doc/db16801439.html,/网站服务器发出http get请求 (5)选中该帧后,点开该帧首部封装明细区中Internet Protocol 前的”+”号,显示该帧所在的IP包的头部信息和数据区: (6)数据区目前以16进制表示,可以在数据区右键菜单中选择“Bits View”以2进制表示:

(注意:数据区蓝色选中的数据是IP包的数据,其余数据是封装该IP包的其他层的数据) 回答以下问题: 1、该IP包的“版本”字段值为_0100_(2进制表示),该值代表该IP包的协议版本为: √IPv4 □IPv6 2、该IP包的“报头长度”字段值为__01000101__(2进制表示),该值代表该IP包的报头长度为__20bytes__字节。 3、该IP包的“总长度”字段值为___00000000 11101110___ (2进制表示),该值代表该IP包的总长度为__238__字节,可以推断出该IP包的数据区长度为__218__字节。 4、该IP包的“生存周期”字段值为__01000000__ (2进制表示),该值代表该IP包最多还可以经过___64__个路由器 5、该IP包的“协议”字段值为__00000110__ (2进制表示) ,该值代表该IP包的上层封装协议为__TCP__。 6、该IP包的“源IP地址”字段值为__11000000 10101000

网络通信协议分析及应用试题集6828(I)

1. OSI标准中,采用的是三级抽象:体系结构,服务定义,协议说明。 2. TCP/IP协议族中,使用了三个不同层次的地址,主机网络层或网络接口层使用了:物理地址(MAC地址)。 3. TCP/IP协议族中,使用了三个不同层次的地址,传输层使用了:端口地址。 4. TCP/IP协议族中,使用了三个不同层次的地址,网络层使用了:逻辑地址(IP地址)。 5. 根据所提供的服务方式的不同,端口又可分为TCP协议端口和UDP协议端口两种。 6. 从端口的性质来分,通常可以分为以下三类,注册端口(Registered Ports)松散地绑 定于一些服务。 7. 从端口的性质来分,通常可以分为三类,FTP和HTTP服务需要使用:公认端口(Well Kno wn Ports)类型。 8. 从端口的性质来分,通常可以分为三类,动态或私有端口(Dynamic and/or Private Po rts)容易被黑客和木马程序利用。 9. 接口是同一结点内相邻层之间交换信息的连接点。 10. CCITT与ISO的工作领域是不同的:CCITT 主要是考虑通信标准的制定。 11. CCITT与ISO的工作领域是不同的:ISO主要是考虑信息处理与网络体系结构。 12. OSI参考模型和TCP/IP参考模型只是描述了一些概念,用来协调进程间通信标准的制定。 13. 通信服务可以分为两大类:面向连接服务(connect-oriented service)和无连接服 务(connectless service)。 14. 网络数据传输的可靠性一般通过确认和重传机制保证。 15. 通信协议包括:面向连接与确认服务;面向连接与不确认服务;无连接与确认服务;无连接与不确认服务四种类型。 16. IP协议是无连接的、提供“尽力而为”服务的网络层协议。 17. 17. INTERNET使用了不同类型的地址概念,应用层使用了域名(DNS)、电子邮件址、URL等地址。 18. 网络协议是由程序和进程来完成的。 19. B类IP地址中的一个私有网络地址,如果需要50个子网,网络掩码应该为(点十进制表示):。 20. C类IP地址中的一个私有网络地址,从网络地址开始。

数据包捕获与解析

数据包捕获与解析课程设计报告 学生姓名:董耀杰 学号:1030430330 指导教师:江珊珊

数据包捕获与分析 摘要本课程设计通过Ethereal捕捉实时网络数据包,并根据网络协议分析流程对数据包在TCP/IP各层协议中进行实际解包分析,让网络研究人员对数据包的认识上升到一个感性的层面,为网络协议分析提供技术手段。最后根据Ethereal的工作原理,用Visual C++编写一个简单的数据包捕获与分析软件。 关键词协议分析;Ethereal;数据包;Visual C++ 1引言 本课程设计通过技术手段捕获数据包并加以分析,追踪数据包在TCP/IP各层的封装过程,对于网络协议的研究具有重要的意义。Ethereal是当前较为流行的图形用户接口的抓包软件,是一个可以用来监视所有在网络上被传送的包,并分析其内容的程序。它通常被用来检查网络工作情况,或是用来发现网络程序的bugs。通过ethereal对TCP、UDP、SMTP、telnet和FTP等常用协议进行分析,非常有助于网络故障修复、分析以及软件和协议开发。,它以开源、免费、操作界面友好等优点广为世界各地网络研究人员使用为网络协议分析搭建了一个良好的研究平台。 1.1课程设计的内容 (1)掌握数据包捕获和数据包分析的相关知识; (2)掌握Ethreal软件的安装、启动,并熟悉用它进行局域网数据捕获和分析的功能; (3)设计一个简单的数据包捕获与分析软件。 1.2课程设计的要求 (1)按要求编写课程设计报告书,能正确阐述设计结果。 (2)通过课程设计培养学生严谨的科学态度,认真的工作作风和团队协作精神。 (3)学会文献检索的基本方法和综合运用文献的能力。 (4)在老师的指导下,要求每个学生独立完成课程设计的全部内容。

实验1:网络数据包的捕获与协议分析

实验报告 ( 2014 / 2015 学年第二学期) 题目:网络数据包的捕获与协议分析 专业 学生姓名 班级学号 指导教师胡素君 指导单位计算机系统与网络教学中心 日期2015.5.10

实验一:网络数据包的捕获与协议分析 一、实验目的 1、掌握网络协议分析工具Wireshark的使用方法,并用它来分析一些协议; 2、截获数据包并对它们观察和分析,了解协议的运行机制。 二、实验原理和内容 1、tcp/ip协议族中网络层传输层应用层相关重要协议原理 2、网络协议分析工具Wireshark的工作原理和基本使用规则 三、实验环境以及设备 Pc机、双绞线、局域网 四、实验步骤 1.用Wireshark观察ARP协议以及ping命令的工作过程: (1)打开windows命令行,键入“ipconfig -all”命令获得本机的MAC地址和缺省路由器的IP地址;结果如下: (2)用“arp -d”命令清空本机的缓存;结果如下 (3)开始捕获所有属于ARP协议或ICMP协议的,并且源或目的MAC地址是本机的包。(4)执行命令:ping https://www.doczj.com/doc/db16801439.html,,观察执行后的结果并记录。

此时,Wireshark所观察到的现象是:(截图表示) 2.设计一个用Wireshark捕获HTTP实现的完整过程,并对捕获的结果进行分析和统计。(截 图加分析) 3.设计一个用Wireshark捕获ICMP实现的完整过程,并对捕获的结果进行分析和统计。要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析该ICMP 报文。(截图加分析) 4. 设计一个用Wireshark捕获IP数据包的过程,并对捕获的结果进行分析和统计(截图加分析) 要求:给出捕获某一数据包后的屏幕截图。以16进制形式显示其包的内容,并分析在该数据包中的内容:版本首部长度、服务类型、总长度、标识、片偏移、寿命、协议、源Ip地址、目的地址 五、实验总结

网络数据包捕获工具的实现

本文来自中国协议分析网技术论坛,转载请注明 sniffer tcp http ospf rtp dhcp Sniffer EtherealWinpcap 其它技术返回首页当前位置: 网站首页>>协议分析>>Winpcap>> 利用WinPcap技术捕获数据包时间:2006-11-14 来源: 作者: 点击:849次收藏到: 前言随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列 前言 随着网络入侵的不断发展,网络安全变得越来越重要,于是网络入侵取证系统的研究也变得日益重要。在网络入侵取证系统中,对网络上传送的数据包进行有效的监听即捕获包是目前取证的关键技术,只有进行高效的数据包捕获,网络管理员才能对所捕获的数据进行一系列的分析,从而进行可靠的网络安全管理。 1winpcap简介 WinPcap 是由伯克利分组捕获库派生而来的分组捕获库,它是在Windows 操作平台上来实现对底层包的截取过滤。WinPcap 为用户级的数据包提供了Windows 下的一个平台。WinPcap 是BPF 模型和Libpcap 函数库在Windows 平台下网络数据包捕获和网络状态分析的一种体系结构,这个体系结构是由一个核心的包过滤驱动程序,一个底层的动态连接库Packet.dll 和一个高层的独立于系统的函数库Libpcap 组成。底层的包捕获驱动程序实际为一个协议网络驱动程序,通过对NDIS 中函数的调用为Win95、Win98、WinNT、和Win2000 提供一类似于UNIX 系统下Berkeley Packet Filter 的捕获和发送原始数据包的能力。Packet.dll 是对这个BPF 驱动程序进行访问的API 接口,同时它有一套符合Libpcap 接口(UNIX 下的捕获函数库)的函数库。WinPcap的结构图如图1。 WinPcap 包括三个部分:第一个模块NPF(Netgroup Packet Filter),是一个虚拟设备驱动程序文件。它的功能是过滤数据包,并把这些数据包原封不动地传给用户态模块,这个过程中包括了一些操作系统特有的代码。第二个模块packet.dll为win32平台提供了一个公共的接口。不同版本的Windows系统都有自己的内核模块和用户层模块。Packet.dll用于解决这些不同。调用Packet.dll的程序可以运行在不同版本的Windows平台上,而无需重新编译。第三个模块Wpcap.dll是不依赖于操作系统的。它提供了更加高层、抽象的函数。 packet.dll和Wpcap.dll:packet.dll直接映射了内核的调用。Wpcap.dll提供了更加友好、功能更加强大的函数调用。WinPcap的优势提供了一套标准的抓包接口,与libpcap兼容,可使得原来许多UNIX平台下的网络分析工具快速移植过来便于开发各种网络分析工具,充分考虑了各种性能和效率的优化,包括对于NPF内核层次上的过滤器支持,支持内核态的统计模式,提供了发送数据包的能力。 2网络数据包捕获的原理 以太网(Ethernet)具有共享介质的特征,信息是以明文的形式在网络上传输,当网络适配器设置为监听模式(混杂模式,Promiscuous)时,由于采用以太网广播信道争用的方式,使得监听系统与正常通信的网络能够并联连接,并可以捕获任何一个在同一冲突域上传输的数据包。IEEE802.3 标准的以太网采用的是持续CSMA 的方式,正是由于以太网采用

网络数据包的协议分析程序的设计开发—毕业设计论文

毕业设计(论文)网络数据包的协议分析程序的设计开发 论文作者姓名: 申请学位专业: 申请学位类别: 指导教师姓名(职称): 论文提交日期:

网络数据包的协议分析程序的设计开发 摘要 本文设计与实现了一个基于Linux下Libpcap库函数的网络数据包协议分析程序。程序的主要功能包括网络数据包捕获和常用网络协议分析。程序由输入/输出模块、规则匹配模块、数据捕获模块、协议分析模块组成。其中数据捕获模块和协议分析模块是本程序最关键、最主要的模块。 本文的主要内容如下:首先介绍了网络数据包协议分析程序的背景和概念。其次进行了程序的总体设计:确定了程序的功能,给出了程序的结构图和层次图,描述了程序的工作流程,对实现程序的关键技术做出了分析。接着,介绍完数据包捕获的相关背景和Libpcap函数库后,阐述了如何利用Libpcap函数库实现网络数据包捕获模块。然后对协议分析流程进行了详细的讲解,分析了常用网络协议。最后进行了程序的测试与运行:测试了程序能否按照预期的效果正确执行,印证了预期结果。 关键词:Libpcap;Linux;数据包捕获;应用层;协议识别

The Design and Development of Network Packet Protocol Analyzing Program Abstract The thesis is an attempt to introduce an implementation of network protocol analyzing program which is based on Libpcap, a famous network packet capture library on Linux. It has a rich feature set which includes capturing network packets and analyzing popular network protocols on Internet. The program is made up of an input/output module, a rules matching module, a packet capturing module and a protocol analyzing module. And the last two modules are key modules. The research work was described as followed. firstly, we introduce the background and concepts about network protocol analyzing programs; and we make an integrated design on the program, define functions of it, figure out its structure and hierarchical graphs, describe the workflow of it, and analyze the key techniques used in it; Secondly, after elaborating on the background of packet capture and the Libpcap library, we state a approach to implement a packet capture module with Libpcap; Thirdly, we explain the workflow about protocol analysis, and analyze common network protocols; Finally, we test our program to see whether it works as expected, fortunately, it does. Key words: Libpcap; Linux; Network packet capturing; Application layer; Protocol identification

相关主题
文本预览
相关文档 最新文档