计算机网络课程设计-IP数据包解析实验报告

解析 IP数据报实验报告目录目录 21、课程设计目的 .22、课程设计要求 .23、相关知识 .24、课程设计分析 .64.1 网卡设置64.2 使用套接字74.2.2 接收数据包74.3 定义 IP头部的数据结构84.4 IP包的解析.94.5 协议的定义94.6捕获处理.95、运行结果 106、总结 117、课程设计参考资料 118、源程序代码 111、课程设计目的本课程设计的目的就是设计一个解析 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版本 报头标长 服务类型 总长度标识 标志 片偏移生存时间 协议 头校验和源 IP 地址目的 IP 地址选项 填充域数据部分图 1 IP 数据包的格式服务类型字段共 8 位,用于指示路由器如何处理该数据包.该字段长度由 4 位服务类型(TOS)子域和 3 位优先级子域组成,1 位为保留位,该字段结构如图 2 所示.B7 b6 b5 b4 b3 b2 b1 b0优先级 D T R C 0图 2 服务类型字段结构优先级共有 8 种,优先级越高表明数据包越重要.表 1 中列出了各种优先级所代表的意义.表一 优先子域的说明位数(b7b6b5) 意义111 网络控制110 网络间控制101 重要(CRITIC/ECP)100 即时,优先011 即时010 立刻001 优先000 普通在 4 位服务类型子域中 b4,b3,b2,b1 分别表示 D(延迟),T(吞吐量),R(可靠性)与 C(成本).表 2 列出了服务器类型自域的构成.位数( b4b3b2b1) 意义1111 安全级最高1000 延迟最小0100 吞吐量最大0001 金钱成本最小0000 普通服务总长度字段为 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 所示.序号 协议名称 序号 协议名称12468ICMPIGMPIP inIPTCPEGP17414689UDPIPV6RSVPOSPFA表 3 典型的协议号头校验和字段为 16 位,用于存放检查报头错误的校验码。检验的范围是整个 IP 包的报头。校验和按如下方法计算:1)将头校验和的字段置为 0。2)将报头部分的所有数据以 16 位为单位进行累加,累加方式是求异或。3)将累加的结果取反码,就是头校验和。当收到一个 IP 包时,要检查报头是否出错,就把报头中的所有数据以 16 位为单位进行累加,若累加的结果为 0,则报文没有出错。地址字段包括源地址和目的地址。源地址和目的地址的长度都是 32 位,分别表示发送数据包的源主机和目的主机的 IP 地址。选项字段的长度范围为 0~40B,主要用于控制和测试。在使用选项字段的过程中,有可能出现报头部分的长度不是 32 位的整数倍的情况。如果出现这种情况,就需要通过填充位来凑齐。4、课程设计分析4.1 网卡设置为了获取网络中的 IP 数据包,必须对网卡进行编程,在这里使用套接字(socket)进行编程。但是,在通常情况下,网络通信的套接字程序只能响应与自己硬件地址相匹配的数据包或是以广播形式发出的数据包。对于其他形式的数据包,如已到达网络接口,但却不是发送到此地址的数据包,网络接口在骓投递地址并非自身地址之后将不引起响应,也就是说应用程序无法收取与自己无关的数据包。我们要想获取网络设备的所有数据包,就是需要将网卡设置为混杂模式。4.2 使用套接字套接字分为三种,即流套接字(Stream socket)、数据报套接字(Datagram Socket)和原始套接字(Raw Socket)。要进行 IP 层数据包的接收和发送,

计算机网络ip数据包分析题,计算机网络课程设计-IP数据包解析实验报告相关推荐

  1. 计算机网络ip数据包分析题,计算机网络课程设计_IP数据包的捕获及分析.doc

    CENTRAL SOUTH UNIVERSITY 计算机网络课程设计报告 目录 第一章 课程设计的目的与要求1 1.1 课程设计的目的1 1.2 课程设计的要求1 第二章 课程设计的内容3 2.1 课 ...

  2. 《数据结构课程设计》 活期储蓄管理系统 实验报告

    <数据结构课程设计> 题目1:活期储蓄管理系统   学生姓名 胡泳行 所在专业 信息管理与信息系统专业 所在班级 信管1134班 任课老师 易学明 实习时间 2015年 1月 4 日 指导 ...

  3. C语言 自动排课系统课程设计(附源码,实验报告)

    学校教务的管理作为高校教育信息化工作中的一项重要工作,如何构建一个具有开放性.实用性和灵活性的平台,是一个值得探讨的课题.其中,作为学校教务重点环节之一的排课系统也尤为重要.以前,在统筹安排各班级上课 ...

  4. 排球计分系统java_Java课程设计(排球比赛记分系统)实验报告.pdf

    <Java 程序课程设计> 实验报告 题目: 排球比赛记分系统 专业: 软件工程 班级: 2015 级 组别: 组长: 岑海佳 成员: 1515080101 岑海佳.1515080127 ...

  5. 计算机网络实验arp协议分析,计算机网络ARP地址协议解析实验报告

    计算机网络ARP地址协议解析实验报告 (5页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 计算机网络实验报告.实验目的:1. 掌握ARP协议 ...

  6. Java抓包分析四(基于jnetpcap进行抓包)——分析Http请求数据包

    在上篇文章中Java抓包分析三(基于jnetpcap进行抓包)--抓取Http请求数据包,我们讲解了TCP三次握手的过程和如何抓取Http数据包,但是我们并没有进行一个数据分析,接下来这篇文章我们将要 ...

  7. 网络协议分析与仿真课程设计报告:网络流量分析与协议模拟

    公众号:CS阿吉 网络协议分析与仿真课程设计报告  题  目:网络流量分析与协议模拟 专业名称:         网络工程 班    级: 学生姓名:           阿吉 学号(8位): 指导教 ...

  8. FTP协议中的登录 上传 下载 新建目录 删除目录 的wireshark包分析(一文看完TCP包分析,附源文件,ppt,操作视频)

    ​​​​​​​目录 一原理 二.FTP登录 三.FTP下载 四.FTP上传 五.FTP新建目录 六.FTP删除目录 一原理 前言:TCP/IP四层模型和OSI模型对照,以及FTP在模型中的位置. • ...

  9. R语言淮河流域水库水质数据相关性分析、地理可视化、广义相加模型GAM调查报告...

    采样地点:淮河流域一带,昭平台水库.白龟山水库.燕山水库.石漫滩水库.板桥水库.宿鸭湖水库.博山水库.南湾水库.石山口水库.五岳水库.泼河水库.鲶鱼山水库(点击文末"阅读原文"获取 ...

最新文章

  1. Top 10 Mistakes Java Developers Make(转)
  2. Google发布App Engine第二代运行时,提供Python 3.7和PHP 7.2支持
  3. write_cfgmem 产生存储器配置文件?
  4. EUREKA原理总结
  5. python3 字典合并_python3字典合并怎么做?
  6. Python Pandas General functions(静态方法)
  7. linux删除目录下文件的几种方法
  8. 解决idea的html代码中使用es6语法报错的问题
  9. SecureCRT或XShell软件
  10. hdu 1536 S-Nim (sg)
  11. C语言程序设计知识必备pdf,C语言程序设计基础知识要点.pdf
  12. Android端公司通讯录开发与实现(一)
  13. 记一次生产httpclient导致的tomcat假死事件
  14. 计算机专业选择银行必须知道的20个问题
  15. Android实时监听短信并上传服务器
  16. ubuntu mongo数据库无缘无故丢失了?如何保护mongoDB的数据。
  17. 解决Linux“Device is busy”与磁盘只读
  18. Paddle2.0让你成为诗词大师-PaddlePoetry
  19. PTA数据结构练习题——旅游规划
  20. configparser.DuplicateSectionError: While reading from '/home/qinghua/.theanorc' [line 18]: section

热门文章

  1. MES管理系统解决方案,主要实现的目标
  2. 移动距离 JAVA题解
  3. electron packager打包报错: EBUSY: resource busy or locked
  4. 【51Nod 1463】找朋友
  5. JetBrains 系列(社区版)安装-以idea为例
  6. 武昌区ISO20000认证的价值及补贴政策出炉了
  7. STM32—PID控制在直流电机中的应用
  8. python和c哪个好找工作,Python和c++哪个好就业
  9. 打印word文档时遇到标记区如何取消
  10. 【Youtobe trydjango】Django2.2教程和React实战系列六【自定义主页、路由与请求】