您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 计算机网络课程设计实验报告
12020年4月19日计算机网络课程设计实验报告文档仅供参考22020年4月19日计算机网络课程设计实验报告文档仅供参考32020年4月19日一、实验内容和要求1、实验一数据包的捕获与分析Wireshark是一种开源的网络数据包的捕获和分析软件,本实验经过Wireshark软件的安装使用,监控局域网的状态,捕获在局域网中传输的数据包,并结合在计算机网络课程中学习到的理论知识,对常见网络协议的数据包做出分析,加深网络课程知识的理解和掌握。具体内容及要求如下:Wireshark软件的安装;Wireshark软件的启动,并设置网卡的状态为混杂状态,使得Wireshark能够监控局域网的状态;启动数据包的捕获,跟踪PC之间的报文,并存入文件以备重新查;设置过滤器过滤网络报文以检测特定数据流;对常见协议的数据包的报文格式进行分析,利用协议分析软件的统计工具显示网络报文的各种统计信息。2、实验二网络层实验—Ping程序的设计与实现实验目的本实验目的是使学生掌握网络层协议的原理及实现方法。实验设计内容本实验为ICMP实验。实验内容:Ping命令实现的扩充,在给定的Ping程序的基础上做如下功能扩充:-h显示帮助信息-b允许ping一个广播地址,只用于IPv4-t设置ttl值,只用于IPv4-q安静模式。不显示每个收到的包的分析结果,只在结束时,显示汇总结果Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMPEcho消息,接着该节点返回一个ICMPEchoreplay消息。ICMP消息使用IP头作为基本控制。文档仅供参考42020年4月19日二、实验环境实验一数据包的捕获与分析1.联网计算机2.Windows或linux系统3.在PC中安装协议分析软件(如:Wireshark)4.物理基础:IEEE802.3标准的以太网采用的是持续CSMA的方式,正是由于以太网采用这种广播信道争用的方式,使得各个站点能够获得其它站点发送的数据。运用这一原理使信息捕获系统能够拦截的我们所要的信5.工作模式:1)广播模式(BroadCastModel):它的物理地址(MAC)地址是0Xffffff的帧为广播帧,工作在广播模式的网卡接收广播帧。2)多播传送(MultiCastModel):多播传送地址作为目的物理地址的帧能够被组内的其它主机同时接收,而组外主机却接收不到。可是,如果将网卡设置为多播传送模式,它能够接收所有的多播传送帧,而不论它是不是组内成员。3)直接模式(DirectModel):工作在直接模式下的网卡只接收目地址是自己MAC地址的帧。4)混杂模式(PromiscuousModel):工作在混杂模式下的网卡接收所有的流过网卡的帧,信包捕获程序就是在这种模式下运行的。实验二网络层实验—Ping程序的设计与实现1.联网计算机2.Linux系统3.系统自带编译环境文档仅供参考52020年4月19日三、程序的需求分析与逻辑框图需求分析1、实验一数据包的捕获与分析1.在PC中安装协议分析软件。2.启动Wireshark协议分析软件,选择抓包菜单项启动实时监视器,开始实时跟踪显示网络数据报文。可根据系统提示修改显示方式。3.调出跟踪存储的历史报文,选择有代表性的ETHERNET,IEEE802.3,IP,ICMP,TCP,UDP报文,对照有关协议逐个分析报文各字段的含义及内容。4.设置过滤器属性,如目的地址,源地址,协议类型等。如过滤不需要的网络报文,过滤器允许设置第二层,第三层或第四层的协议字段。2、实验二网络层实验—Ping程序的设计与实现PING程序是我们使用的比较多的用于测试网络连通性的程序。PING程序给予ICMP使用ICMP的回送请求和回送应答来工作。ICMP是基于IP的一个协议,ICMP包经过IP的封装之后传递。实现检测网络通畅及速度的ping,并扩展以下功能:-h显示帮助信息-b允许ping一个广播地址,只用于IPv4-t设置ttl值,只用于IPv4-q安静模式,不显示每个收到的包的分析结果,只在结束时,显示汇总结果文档仅供参考62020年4月19日三、程序的需求分析与逻辑框图逻辑框图1、总体设计程序分为两大部分:一部分读取收到的所有消息,并输出ICMPEchoreplay消息,另一部分每个一秒钟发送一个Echo消息。另一部分由SIGALARM信号每秒驱动一次。2、详细设计mainreadlooprecvfromprocsig_alarmsend为SIGALARM建立信号处理程序无限接收循环每秒发送一个Echo消息1)main函数设置随同Echo请求一起发送的可选数据长度处理命令行参数调用readloop处理分组为SIGALARM信号建立一个处理程序处理主机名参数文档仅供参考72020年4月19日三、程序的需求分析与逻辑框图逻辑框图2)readloop函数创建套接口设置套接口缓冲区大小发送第一个分组读取返回给ICMP原始套接口的每个分组记录收到分组的时间调用proc来处理这些分组3)proc函数4)send函数获取ICMP头部指针检查ICMPEchoreplay输出收到的所有ICMP消息构造ICMP消息计算校验和发送数据报文档仅供参考82020年4月19日三、程序的需求分析与逻辑框图逻辑框图Checksum开始定义初始化cksum(size1)确定cksum及size大小是if(size)计算校验cksum,获得结果cksum+=*(UCHAR*)buffer;否结束文档仅供参考92020年4月19日四、程序核心功能的实现机制1、实验一利用协议分析软件跟踪局域网报文,实验内容如下:将安装协议分析软件的PC接入以太网中,跟踪PC之间的报文,并存入文件以备重新查。设置过滤器过滤网络报文以检测特定数据流。利用协议分析软件的统计工具显示网络报文的各种统计信息。2、实验二Ping命令的基本描述Ping的操作是向某些IP地址发送一个ICMPEcho消息,接着该节点返回一个ICMPEchoreplay消息。ICMP消息使用IP头作为基本控制。IP头的格式如下012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Version|IHL|TypeofService|TotalLength|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identification|Flags|FragmentOffset|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|TimetoLive|Protocol|HeaderChecksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|SourceAddress|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|DestinationAddress|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+Version=4IHLInternet头长TypeofService=0TotalLengthIP包的总长度Identification,Flags,FragmentOffset用于IP包分段TimetoLiveIP包的存活时长ProtocolICMP=1Addresses发送Echo消息的源地址是发送Echoreply消息的目的地址,相反,发送Echo消息的目的地址是发送Echoreply消息的源地址。文档仅供参考102020年4月19日四、程序核心功能的实现机制2、实验二Ping实际上是使用ICMP中的ECHO报文来实现的。Echo或EchoReply消息格式如下:012301234567890123456789012345678901+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Type|Code|Checksum|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identifier|SequenceNumber|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Data...+-+-+-+-+-Typeecho消息的类型为8echoreply的消息类型为0。Code=0Checksum为从TYPE开始到IP包结束的校验和Identifier如果code=0,identifier用来匹配echo和echoreply消息SequenceNumber如果code=0,identifier用来匹配echo和echoreply消息功能描述:收到echo消息必须回应echoreply消息。identifier和sequencenumber可能被发送echo的主机用来匹配返回的echoreply消息。例如:identifier可能用于类似于TCP或UDP的port用来标示一个会话,而sequencenumber会在每次发送echo请求后递增。收到echo的主机或路由器返回同一个值与之匹配文档仅供参考112020年4月19日四、程序核心功能的实现机制2、实验二1、数据结构的描述1)IP包格式structip{BYTEVer_ihl;//版本号与包头长度BYTETOS;//服务类型WORDLeng;//IP包长度WORDId;//IP包标示,用于辅助IP包的拆装,本实验不用,置零WORDFlg_offset;//偏移量,也是用于IP包的拆装,本实验不用,置零BYTETTL;//IP包的存活时间BYTEProtocol;//上一层协议,本实验置ICMPWORDChecksum;//包头校验和,最初置零,等所有包头都填写正确后,计算并替换。BYTESaddr[4];//源端IP地址BYTEDaddr[4];//目的端IP地址BYTEData[1];//IP包数据};2)ICMP包格式structicmp{BYTEType;//ICMP类型,本实验用8:ECHO0:ECHOREPLYBYTECode;//本实验置零WORDChecksum;//ICMP包校验和,从TYPE开始,直到最后一位用户数据,如果为字节数为奇数则补充一位WORDID;//用于匹配ECHO和ECHOREPLY包WORDSeq;//用于标记ECHO报文顺序BYTEData[1];//用户数据};文档仅供参考122020年4月19日五、程序源代码(核心部分)2、实验二PING.H#ifndefPING_H_#definePING_H_#includenetinet/in_systm.h#includenetinet/ip.h#includenetinet/ip_icmp.h#includenetinet/icmp6.h#includenetinet/ip6.h#includesys/types.h/*basicsystemdatatypes*/#includesys/socket.h/*basicsocketdefinitions*/#includesys/time.h/*timeval{}forselect()*/#includetime.h/*timespec{}forpselect()*/#includenetinet/in.h/*sockaddr_in{}andotherInter
本文标题:计算机网络课程设计实验报告
链接地址:https://www.777doc.com/doc-6191801 .html