| 注册
home doc ppt pdf
请输入搜索内容

热门搜索

年终总结个人简历事迹材料租赁合同演讲稿项目管理职场社交

西工大计算机网络实验四

文***品

贡献于2021-12-24

字数:7129







实 验 报 告

















实验四解析IP分组

实验目
1IP分组网络层传输基单元通接受解析IP分组解IP分组基结构IP协议基功
2输出TCP报文数16进制输出建立TCP连接分析TCP三次握手

二实验程
(1)实验流程


(2)实验原理:
想抓取网络中IP数包必须网卡进行编程套接字(socket)进行编程通常情况网络通信套接字程序响应硬件址相匹配数包广播形式出发数包形式数包已达网络接口发送址数包网络接口验证投递址非身址引起响应说应程序法收取关数包想获取流网络设备数包需网卡设置混杂模式
程序三部分构成:初始化原始套接字反复监听捕获数包解析数包
1)原始套接字
套接字分三种流套接字(Stream Socket)数报套接字(Datagram Socket)原始套接字(Raw Socket)进行IP数包接受发送应原始套接字
WSASoccet函数中第参数指定通信发生区字段AF_INET针Internet允许远程机间通信第二参数套接字类型AF_INET址族SOCK_STREAMSOCK_DGRAMSOCK_RAW三种套接字类型里设置SOCK_RAW表示声明原始套接字类型第三参数赖第二参数指定套接字特定协议里IP协议第四参数WSAPROTOCOL_INFO位该位置空永远置0第六参数标志位WSA_FLAG_OVERRLAPPED表明发送接收超时设置课程设计标志位设置NULL设计考虑超时情况
创建原始套接字IP头会包含接收数中然设置IP头操作选项调sotscockpot函数中flag设置TRUE设定IP_HDRINCL选项表明户亲IP头进行处理完成socket初始化工作
填写sockaddr_in容时址值应填写机IP址通gethostbyname()函数获取端口号便填写系统突协议族应填写AF_INET注意sockaddr_in 结构值必须网络字节序表示值直接机字节序值htoms()函数符号短整型机数转换网络字节序数bind()函数socket绑定网卡
绑定网卡需WSAIoctl()函数网卡设置混杂模式网卡够接收网络数果接收数包中协议类型定义原始套接字匹配接收数拷贝套接字中网卡接收IP包
2)接收数包
程序中RECV()函数接收IP包该函数四参数第参数接收操作套接字描述符第二参数接收缓区址第二参数接收缓区址第三参数接收缓区接收字节数第四参数附加标志果发送数没特殊求直接设0IP数包长度65536B缓区65535B设置缓区利循环反复监听接收IP包recv()函数接收
然定义IP头部数结构程序需定义数结构表示IP头部时考虑IP头部结构考虑数部分捕获IP数包通指针缓区容强制转化IP_HEADER数结构
3)解析IP数包
解析IP数包字段两种策略针长度8位16位32位字段 (子字段)时利IP_HEADER成员指教获取解析长度9位倍数字段(子字段)时利C语言中位移操作完成面出通IP_HEADER解析IP头字段代码

(3)IP源代码
#include winsock2h
#include ws2tcpiph
#include iostream
#include stdioh
#pragma comment(libws2_32lib)

using namespace std

static const int NumOfData 8

typedef struct _IP_HEADER
{
union
{
BYTE Version版
BYTE HdrLenIHL
}
BYTE ServiceType服务类型
WORD TotalLen总长
WORD ID标识
union
{
WORD Flags标志
WORD FragOff分段偏移
}
BYTE TimeToLive生命期
BYTE Protocol协议
WORD HdrChksum头校验
DWORD SrcAddr源址
DWORD DstAddr目址
BYTE Options选项
DWORD Data[NumOfData]
}IP_HEADER

逐位解析IP头中信息
void getVersion(BYTE bBYTE &version)
{
versionb>>4
}

void getIHL(BYTE bBYTE &result)
{
result(b & 0x0f)*4
}

char *parseServiceType_getProcedence(BYTE b)
{
switch(b>>5)
{
case 7
return Network Control
break
case 6
return Internet work Control
break
case 5
return CRITICECP
break
case 4
return Flash Override
break
case 3
return Flash
break
case 2
return Immediate
break
case 1
return Priority
break
case 0
return Routine
break
default
return Unknown
}
}

char *parseServiceType_getTOS(BYTE b)
{
b(b>>1)&0x0f
switch(b)
{
case 0
return Normal service
break
case 1
return Minimize monetary cost
break
case 2
return Maximize reliability
break
case 4
return Maximize throughput
break
case 8
return Minimize delay
break
case 15
return Maximize security
break
default
return Unknown
}
}

void getFlags(WORD wBYTE &DFBYTE &MF)
{
DF(w>>14)&0x01
MF(w>>13)&0x01
}

void getFragOff(WORD wWORD &fragOff)
{
fragOffw&0x1fff
}

char *getProtocol(BYTE Protocol)
{
switch(Protocol)
{
case 1
return ICMP
case 2
return IGMP
case 4
return IP in IP
case 6
return TCP
case 8
return BGP
case 17
return UDP
case 41
return RSVP
case 89
return OSPF
default
return UNKNOWN
}
}
void ipparse(FILE *filechar *buffer)
{

int kj
IP_HEADER ip*(IP_HEADER *)buffer
fseek(file0SEEK_END)
for(k0k<5k++)
{
for(j0j<20j++)
{
fprintf(filexx ((unsigned char)buffer[20*k+j])>>4(buffer[20*k+j]&0x0f))
}
fprintf(file\n)
}
解析版信息
BYTE version
getVersion(ipVersionversion)
fprintf(file版d\r\nversion)

解析IP长度
BYTE headerLen
getIHL(ipHdrLenheaderLen)
fprintf(file头长度d(BYTE)\r\nheaderLen)

解析服务类型
fprintf(file服务类型ss\r\nparseServiceType_getProcedence(ipServiceType)
parseServiceType_getTOS(ipServiceType))

解析数包长度
fprintf(file数报长度d(BYTE)\r\nipTotalLen)

解析数包ID
fprintf(file数报IDd\r\nipID)

解析标志位
BYTE DFMF
getFlags(ipFlagsDFMF)
fprintf(file分段标志DFdMFd\r\nDFMF)

解析分段偏移
WORD fragOff
getFragOff(ipFragOfffragOff)
fprintf(file分段偏移值d\rnfragOff)

解析生存期
fprintf(file生存期d\r\nipTimeToLive)

解析协议
fprintf(file协议s\r\ngetProtocol(ipProtocol))

解析头校验
fprintf(file头校验0x0x\r\nipHdrChksum)

解析IP址
fprintf(file源IP址s\r\ninet_ntoa(*(in_addr *)&ipDstAddr))

解析目IP址
fprintf(file目IP址s\r\ninet_ntoa(*(in_addr *)&ipDstAddr))

解析数包前32字节
for (int i 0 i < NumOfData ++i)
{
fprintf(file数报第d字节x\r\n4 * iipData[i])
}
fprintf(file\r\n)

}
int main(int argcchar *argv[])
{

if(argc2)
{
printf(usage error\n)
return 1
}

FILE *file
if((filefopen(argv[1]wb+))NULL)
{
printf(fail to open file sargv[1])
return 1
}

WSADATA wsData
初始化失败程序退出
if(WSAStartup(MAKEWORD( 2 2 )&wsData)0)
{
printf(WSAStartup failed\n)
return 1
}

SOCKET sock建立原始socket
if((socksocket(AF_INETSOCK_RAWIPPROTO_IP))INVALID_SOCKET )
{
printf(create socket failed\n)
return 1
}

BOOL flagTRUE
设置IP头操作选项中flag设置true户亲IP头进行处理
if(setsockopt(sockIPPROTO_IPIP_HDRINCL(char *)&flagsizeof(flag))SOCKET_ERROR)
{
printf(setsockopt failed\n)
return 1
}

char hostName[128]
if(gethostname(hostName100)SOCKET_ERROR)
{
printf(gethostname failed\n)
return 1
}

获取IP址
hostent *pHostIP
if((pHostIPgethostbyname(hostName))NULL)
{
printf(gethostbyname failed\n)
return 1
}

充SOCKADDR_IN结构
sockaddr_in addr_in
addr_insin_addr*(in_addr *)pHostIP>h_addr_list[0]
addr_insin_familyAF_INET
addr_insin_porthtons(6000)
原始socket绑定网卡
if(bind(sock(PSOCKADDR)&addr_insizeof(addr_in))SOCKET_ERROR)
{
printf(bind failed)
return 1
}

DWORD dwValue1
设置SOCK_RAWSIO_RCVALL便接收IP包
#define IO_RCVALL _WSAIOW(IOC_VENDOR1)
DWORD dwBufferLen[10]
DWORD dwBufferInLen1
DWORD dwBytesReturned0
if(WSAIoctl(sockIO_RCVALL&dwBufferInLensizeof(dwBufferInLen)&dwBufferLensizeof(dwBufferLen)&dwBytesReturnedNULLNULL)SOCKET_ERROR)
{
printf(ioctlsocket failed\n)
cout< return 1
}

设置接收数包缓区长度
#define BUFFER_SIZE 65535
char buffer[BUFFER_SIZE]
监听网卡
printf(开始解析机IP数包\n)
while(true)
{
int sizerecv(sockbufferBUFFER_SIZE0)
if(size>0)
{
ipparse(stdoutbuffer)
ipparse(filebuffer)
}
}
fclose(file)
return 0
}
(4)实验结果分析
IP分组16进制形式输出:

IP数报分析:
版445中4占4位
头部长度20字节45中5包头长度5行532 位5*3220*8包头长度20字节
服务类型正常服务占8位00获更服务
总长度10240字节00 282*16*16*16+8*16*1610240指首部数长度字段占16位
标识ID397284 0f0*16*16*16+f*16*16+8*16+43972字段占16位
分段标志DF0MF04表示数包分片分片
分段偏移分片整数包相位置
生存时间1286480占8位
层协议类型TCP协议占8位06 0表示IP协议6表示TCP协议
头部校验0x19e5e5数值检错确保封包正确误接收该字段占16位
源IP址192168875c0 a8 08 4bc*16192 a*16+8168 0*16+88 4*16+b75该字段占32位
目IP址192168875c0 a8 08 4bc*16192 a*16+8168 0*16+88 4*16+b75该字段占32位

三实验中遇问题:
IP分组抓包熟悉导致实验直失败时IP数报组成非常解导致分析截获数报时知手学帮助解决问题完成实验
四心体会
次实验中重解IP数报组成分析截获数包出结修改代码部分需充分查找相关资料正确效代码
通次实验学解析IP数包更加深刻解IP数包结构IP协议相关问题IP层工作原理更理解认识
时希老师进行类实验时够先讲原理实验基程步骤样更方便实验时利进行实验头雾水知手
文档香网(httpswwwxiangdangnet)户传

《香当网》用户分享的内容,不代表《香当网》观点或立场,请自行判断内容的真实性和可靠性!
该内容是文档的文本内容,更好的格式请下载文档

下载文档,方便阅读与编辑

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 2 香币 [ 分享文档获得香币 ]

该文档为用户出售和定价!

购买文档

相关文档

西工大硬件描述语言实验报告

硬 件 描 述 语 言实 验 报 告班级: xxxxxxxx 学号: xxxxxxxx 姓名: xxxxxxxx 目 录硬 件 描 述 语 言 - 0 -实 验 报 告 - 0 -实验一 简单组合逻辑设计 - 2 -实验二 简单分频时序逻辑电路的设计 - 4 -实验三 利用条件语句实现计数分频时序电路 - 7 -实验四 阻塞赋值

文***享 3年前 上传472   0

计算机网络实验报告

1.理解电子邮件的工作原理;2.掌握电子邮件的申请方法;3.掌握电子邮件的使用方法。

一***旵 3年前 上传670   0

计算机网络实验报告

1、观察教学机房,了解计算机网络结构,并画出计算机网络拓扑结构图。 2、了解计算机网络中的网络设备,并了解每台计算机上使用的网络标识、网络协议。 3、制作2根直通双绞线和2根交叉线,并测试。 4、分别用制作好的直通线、交叉线以及串口线、并口线,连接两台计算机。

M***9 4年前 上传1653   0

计算机网络实验报告

(1)理解远程登录的工作原理;(2)掌握远程登录的设置方法;(3)熟悉远程桌面的使用方法;(4)理解端口的含义。

一***旵 3年前 上传647   0

西工大社会实践报告

西工大社会实践报告  【引言】20xx年7月13日,由西北工业大学材料学院和理学院组成的广州行社会实践队从西安出发赴有“羊城”美誉之称的广州来到几家知名企业进行零距离接触。在出发之前,我们广州行社会实践队进行了严密的分工,做好了大量的前期工作,包括人员的选拔、学校内充分的宣传等。紧紧围绕 “青春筑梦”的主题,在两位老师的带领下,我们在为期一星期的暑假社会实践过程中走访了广州宝洁、本田、丰田、

葭***弦 9年前 上传346   0

XX大学计算机网络实验报告

计算机网络实验报告册实验一 交换机基本配置实验学时:2学时实验类型:验证实验要求:必修一、实验目的1.掌握桌面网络组建方法2.掌握 Quidway S系列中低端交换机几种常见配置方法二、实验内容1. 通过 Console口搭建配置环境2. 通过 Telnet搭建配置环境3. 熟悉 VRP的各种视图及各视图下的常用命令三、实验原理、方法和手段1. 交换机配置方

文***品 3年前 上传612   0

《计算机网络基础》课内实验报告

《计算机网络基础》课内实验学 部: 经济与管理学院 专 业: 市场营销(网络营销) 班 级: 学 号: 姓 名: 指导教师:

徐***计 2年前 上传351   0

天津理工大学计算机网络实验三

实验报告学院(系)名称:计算机与通信工程学院姓名学号专业班级实验名称实验三:路由器配置课程名称计算机网络课程代码实验时间实验地点7#219批改意见成绩教师签字: 1. 实验目的理解路由器工作原理和配置方法,掌握路由器的接线方法,登录方式,静态路由和动态路由的配置。2. 实验环境Windows3. 实验要

文***享 1年前 上传294   0

西工大20年10月《经济数学(下)》作业(参考)

拿答案20199.10207西北工业大学网络教育学院2020年10月大作业 课程名称: 经济数学(下)一、(4分,共16分)1. ( )。A. -3 B. 5 C. 1 D. 02. 在下列四个向量组中线性无关的向量组有( )。A. 一个 B. 两个 C. 三个 D. 四个3. 设事件 与事件 互斥,则( )。A. B. C. D.4. 设总体 , 和 未知, , ,…

学***询 4年前 上传688   0

计量经济学实验教学案例实验四异方差

实验四 异方差性【实验目的】掌握异方差性的检验及处理方法【实验内容】建立并检验我国制造业利润函数模型【实验步骤】【例1】表1列出了1998年我国主要制造工业销售收入与销售利润的统计资料,请利用统计软件Eviews建立我国制造业利润函数模型。表1 我国制造工业1998年销售利润与销售收入情况行业名称销售利润销售收入行业名称销售利润销售收入食品加工业187.25

文***享 8个月前 上传184   0

信息论实验报告(实验四、哈夫曼编码)

学生实验报告院别电子工程学院课程名称 信息论与编码班级实验名称实验四、哈夫曼编码姓名实验时间学号指导教师成绩报 告 内 容一、实验目的和任务1、 理解信源编码的意义;2、 熟悉 MATLAB程序设计; 3、 掌握哈夫曼编码的方法及计算机实现; 4、 对给定信源进行香农编码,并计算编码效率; 二、实验原理介绍1、把信源符号按概率大小

文***品 1年前 上传274   0

客户关系管理实验四_1

实 验〔实训〕报 告项 目 名 称神经网络、logistics回归与聚类分析所属课程名称 客户关系管理 项 目 类 型 操作型 实验(实训)日期 2011-11-15 班 级 10信息C1班 学 号 10010413

鬼***笑 6个月前 上传210   0

中考物理复习实验专题四(物态变化)

实验专题四(热学)熔化实验一、 基础知识:二、 当堂训练1. 小梦所在的实验小组,设计了甲、乙两种装置来“探究冰熔化时温度的变化规律”。(1)该实验若选用   (选填“大冰块”或“碎冰块”)来进行实验,效果更好些。(2)实验小组应选用   (选填“甲”或“乙”)装置来进行实验。(3)如图丙所示,是小梦根据实验数据作出的冰在加热时温度随时间变化的图像,分析图像可知冰是 

郭***林 3年前 上传830   0

实验四:多用电表的读数和使用

 实验四:多用电表的读数和使用 (1)①在用多用电表粗测电阻时,该兴趣小组首先选用“×10”欧姆挡,其阻值如图甲中指针所示,为了减小多用电表的读数误差,多用电表的选择开关应换用________欧姆挡;②按正确的操作程序再一次用多用电表测量该待测电阻的阻值时,其阻值如图乙中指针所示,则Rx的阻值大约是________Ω. 5.(2010·四川攀枝花期

小***性 11年前 上传721   0

四年级实验教学总结

 四年级实验教学总结本学期在师生的共同的努力下,学生的实验能力和观察能力有了很大的提高。同学们在实验过程中享受了实验的乐趣,提高了他们的动手实践能力。下面把这学期数学实验总结如下:1、 教师放手、学生动手、主动发展。传统的教学,以传授知识为主体,学生被动接受知识,只能死记硬背来达到教学目的。而新的课改要求学生有主动搜集信息、处理信息的能力,培养学生解决问题的能力。

校***递 10个月前 上传167   0

计算机网络

杜拉拉三年以上工作经验 | 女 | 27岁(1982年10月18日)居住地:北京 电 话:139********(手机) E-mail:dulala@51job.com 最近工作 [ 3 年10个月] 公 司: XX银行软件开发(北京)有限公司 行 业: 金融/投资/证券 职 位: 高级软件工程师 最高学历 学 历: 硕士 专 业:

j***6 11年前 上传613   0

第一次实验选做实验四LC串并联谐振回路特性实验

选做实验四 LC串并联谐振回路特性实验标准实验报告一、 实验室名称 科A402二、 实验项目名称 LC串并联谐振回路特性实验三、 实验原理 (一)基本原理在高频电子电路中,用选频网络选出我们需要的频率分量和滤除不需要的频率分量。通常,在高频电子线路中应用的选频网络分为两大类。第一类是由电感和电容元件组成的振荡回路(也称谐振回路),它又可以分为单振荡回路以及耦合

文***品 4年前 上传1128   0

SQLserver实验实验6实验6答案

第7章 创建数据类型、表报告书名称实验7-2创建数据类型和表姓名指导教师学号日期任务清单l 场景Adventure Works 的销售经理请求修改公司数据库,以包含有关已退货物和已退款销售的信息。高级数据库开发人员针对退货和退款数据设计了一些新的数据类型和表,并且将在数据库中创建这些对象的任务分配给你。该任务的要求如下:l 必须使用 SQL Server Mana

z***u 3年前 上传1054   0

《计算机网络基础论文》

计算机网络基础论文随着计算机技术和网络技术在世界范围内不断普及,人类社会已经开始步入计算机网络时代。随着人类新的发展时期的到来,计算机和互联网将会带给社会怎样的变化将是我们今后十分关注的问题。本文主要对计算机网络      随着信息技术的迅猛发展,计算机网络的应用已经深入到人们日常生活的每一个角落,涉及到社会的各个方面,其影响之广、普及之快是前所未有的。宽带网络的蓬勃发展更是让人们欣喜地

雅***韵 2年前 上传1190   0

计算机网络管理规定

计算机网络管理规定一.系统安全管理规定未经网络管理人员批准,任何人不得改变网络拓扑结构,网络设备的布置和参数的配置。任何人不得进入未经许可的计算机系统更改系统信息和用户数据。任何人不得在校园局域网上利用计算机技术侵占其它用户的合法利益,不得制作、复制和传播妨害单位稳定的有关信息。各部门要定期对本部门计算机系统和网络系统中的本部门数据进行备份,以便在发生意外时进行数据恢复。任何人不得在

j***0 2年前 上传610   0

《计算机网络技术》教案

1)掌握计算机网络的概念2)了解计算机网络的发展3)掌握计算机网络的功能4)了解计算机网络的应用

w***2 2年前 上传391   0

《计算机网络》试卷

1. 一座大楼内的一个计算机网络系统,属于( B)。A.个人局域网PAN  B. 局域网LAN  C. 城域网MAN  D. 广域网WAN2. 计算机网络中可以共享的资源包括( A )。A. 硬件、软件、数据、通信信道  B. 主机、外设、软件、通信信道C. 硬件、程序、数据、通信信道  D. 主机、程序、数据、通信信道3. 计算机网络是计算机技术和通信技术相结合

文***享 3年前 上传998   0

《计算机网络原理》离线作业

  西安交通大学网络学院2014年秋季离线作业 《计算机网络原理》试卷 一.选择题(80分) 1. 下面不属于网络拓扑结构的是:(C  ) A.环形结构      B.总线结构    C.层次结构    D.网状结构 2. 下列有关网络拓扑结构的叙述中,最准确的是:( C  )_ A.星形结构的缺点是,当需要增加新的工作站时成本比较高 B.树型结构的线路复杂,网络管理也较困难

f***v 9年前 上传8003   0

计算机网络专业自我评价

计算机网络专业自我评价  在四年的大学学习和生活中,我各方面的能力都得到了发展,可以说,经过大学四年的学习,我已经具备了适应社会工作的能力。  在学习上:我刻苦努力,孜孜不倦,争取着大学那美好的时光去学习。大学四年,不光使我学到了许多知识,也使我懂得了学习的方法。正是利用这种方法,在除学校开设的课程外,我还自学了日语、网络数据库、网页制作、平面设计等知识,很好地充实了自己的业余生活,并为

w***g 10年前 上传566   0

计算机网络的定义

一〉       计算机网络的定义 计算机网络就是将地理上分散布置的具有独立功能的多台计算机(系统)或由计算机控制的外部设备,利用通信手段通过通信设备和线路连接起来,按照特定的通信协议进行信息交流,实现通信和资源共享的系统。   二〉       计算机网络的主要用途 1.资源共享  资源共享是计算机网络的主要功能。共享的资源包括共享软件、硬件和数据信息资源。 2.数据通信    视频

x***1 14年前 上传16739   0