ip数据报解析源地址目的地址_第1页
ip数据报解析源地址目的地址_第2页
ip数据报解析源地址目的地址_第3页
ip数据报解析源地址目的地址_第4页
ip数据报解析源地址目的地址_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

青 岛 农 业 大 学 理学与信息科学学院 计算机网络综合实习报告 题 目 IP 数据报解析源地址 目的地址 专 业 计算机科学与技术 学 号 姓 名 指导教师 日 期 2014 年 11 月 8 日 计算机网络课程设计 1 目目 录录 一 设计任务和目的 2 二 设计要求 2 三 设计内容 2 3 1 原理概述 2 3 1 1 点分十进制表示法 2 3 1 2 IP 数据报格式 2 3 2 运行结果及分析 4 3 2 1 程序运行及截图 4 3 2 2 分析 5 四 设计方案改进及建议 5 五 总结体会 5 六 主要参考文献 6 七 附录 7 附录 1 程序流程图 7 附录 2 程序源代码及解释 7 计算机网络课程设计 2 一 一 设计任务和目的设计任务和目的 设计一个解析 IP 数据包的程序 并根据这个程序 从 IP 数据报头中解析出源地址 和目的地址等相关问题 从而对 IP 层的工作原理有更好的理解和认识 通过实际操作 加深对计算机网络的理解 了解计算机网络应用的灵活性 加深 对 IP 数据报格式的了解 点分十进制理解 巩固所学习的 C 语言 二 二 设计要求设计要求 编写计算机程序 从网络捕获数据包 从 IP 数据报头中解析出源地址和目的地址 将它们以点分十进制形式输出 三 三 设计内容设计内容 3 1 原理概述原理概述 3 1 1 点分十进制表示法 点分十进制表示法 对主机或路由器来说 ip 地址都是 32 位的二进制代码 为了提高可读性 我们常 常把 32 位的 ip 地址中的每 8 位用其等效的十进制数字表示 并且在这些数字之间加上 一个点 这就叫做点分十进制表示法 dotted decimal notation 例如 一个 ip 地址 100000000 00001011 00000011 00011111 用点分十进制表示为 128 11 3 31 读起来要方 便得多 3 1 2 IP 数据报格式 数据报格式 IP 协议所处理的数据单元称为 IP 数据报 其格式如下 计算机网络课程设计 3 图 3 1 数据报格式图 1 IP 数据报由首部和数据两部分组成 首部又分为定长部分和变长部分 版本 VER 4 位 表示数据报的 IP 协议版本 当前的 IP 协议版本号为 4 即 IPv4 下一代网络协议 IPv6 版本号为 6 首部长度 HLEN 4 位 表示以字长 4 字节 为单位的数据报首部长度 服务类型 SERVICE TYPE 8 位 规定本数据报的处理方式 前三位是优先级 0 7 0 表示最低 7 最高 最重要 但目前的 IPv4 没有使用优先级 后 4 位是 TOS 表示本数据报在传输过程中所希望得到的服务 D 最小延迟 minimize delay T 最大吞吐率 maximize throughout R 最高可靠性 maximize reliability C 最低 成本 minimize cost 值得注意的有 2 点 服务类型代表用户的希望 并不具有强制性 目前许多设备 TCP IP 中不支持服 务类型特性 在 D T R C 这 4 个参数中只能设置其中一个 数据报总长度 在 IP 数据报封装到以太网帧中进行传输时很有用 标识 IDENTIFICATION 16 位每个 IP 数据报都有一个本地唯一的标识符 它由信源机赋予 IP 数据报 每次自动加 1 标志 FLAGS 3 位 表示该 IP 数据报是否允许分片以及是否最后一片 片偏移 FRAGMENTATION OFFSET 表示本片数据在他所属原始数据报数 据区的偏移量 生存时间 time to live TTL 8 位 协议 PROTOCOL 8 位 指明被 IP 数据报封装的协议 ICMP 1 IGMP 2 TCP 6 EGP 8 UDP 17 OSPF 89 首部校验和 HEADER CHECKSUM 16 位 保证首部数据完整性 源 IP 地址 SOURCE ADDRESS 32 位 IPv4 中 发送方源地址 目的地址 DESTINATION ADDRESS 32 位 IPv4 中 最总接收方 IP 地址 IP 选项 IP OPTIONS 变长字段 传输数据报时的附加功能 本实验的功能主要是实现将 32 位的二进制表示成十进制数 计算机网络课程设计 4 图 3 2 IP 组成结构图 2 3 2 运行结果及分析运行结果及分析 3 2 1 程序运行及截图程序运行及截图 图 3 2 1 程序运行图 图 3 2 2 运行结果图 计算机网络课程设计 5 3 2 2 分析分析 IP 数据报的首部长度和数据长度都是可变长的 但总是 4 字节的整数倍 对于 IPv4 4 位版本字段是 4 4 位首部长度的数值是以 4 字节为单位的 最小值为 5 也 就是说首部长度最小是 4x5 20 字节 也就是不带任何选项的 IP 首部 4 位能表示的最 大值是 15 也就是说首部长度最大是 60 字节 8 位 TOS 字段有 3 个位用来指定 IP 数 据报的优先级 目前已经废弃不用 还有 4 个位表示可选的服务类型 最小延迟 最 大呑吐量 最大可靠性 最小成本 还有一个位总是 0 总长度是整个数据报 包括 IP 首部和 IP 层 payload 的字节数 每传一个 IP 数据报 16 位的标识加 1 可用于分 片和重新组装数据报 3 位标志和 13 位片偏移用于分片 TTL Time to live 是这样用 的 源主机为数据包设定一个生存时间 比如 64 每过一个路由器就把该值减 1 如 果减到 0 就表示路由已经太长了仍然找不到目的主机的网络 就丢弃该包 因此这个 生存时间的单位不是秒 而是跳 hop 协议字段指示上层协议是 TCP UDP ICMP 还有 IGMP 然后是校验和 只校验 IP 首部 数据的校验由更高层协议负责 IPv4 的 IP 地址长度为 32 位 选项字段的解释从略 四 四 设计方案改进及建议设计方案改进及建议 首先理解点分十进制表示方法的运用 理解 IP 数据报的格式 利用 C 语言设计程 序以点分十进制表示输出 IP 数据报头源 目的地址 从网络抓取数据包作为源操作数 再生成 32 位二进制数作为目的操作数 用编程 实现将二进制数转化成十进制数 以点分的形式输出在屏幕上 五 五 总结体会总结体会 通过本次课程设计 让我学到了很多 经过实习 通过实际操作 对计算机网络 加深了理解 才知道计算机网络的可以应用的很灵活 而且加深了对 IP 数据报格式的 了解 点分十进制理解 而且对于 C 语言也进行了巩固 在实习中并不是一番风顺的 但是经过努力最终解决了这些困难 让我认识到了 坚持的重要性 总的来说通过实习是我收获不小 也让我认识到了认真学习知识的重 要性 希望学校以后多提供这样的机会 本次实习 其目的是将以前所学的计算机网络理论知识上升为实践 在编程的基 础上进一步了解计算机通信交流以及组网的方法 实践就要求对知识的掌握更加的系 统化 在实习之初 仔细的查找了相关的资料 了解与本实习有关的知识 对 IP 数据 计算机网络课程设计 6 报报头的格式更进一步的复习和掌握 并查找最前沿的资料充实自己 力求将自己的 实习做得的更加全面 在实习的准备过程中了解到 在实际的网络管理中大多使用的 sniffer 软件对流经网络的数据进行抓取和处理以及分析的过程也可以通过软件的设置 将所需数据显示在终端上 本实验所要求处理的任务是将 IP 数据报报头中的源和目的 IP 地址以点分十进制的形式输出 程序的实现比较简单 结合以前 C 语言的基础和编 程方法使用随机数生成指令 以及调用 C 语言库函数实现将二进制的源和目的 IP 地址 转化为点分十进制 在实验过程中曾试图使用套接字编程实现数据包的抓取 然后使用解析程序分析 数据报的报头 但是在具体的实现过程中由于现在使用的 VC 平台不包含 mstcpip h 库文件 所以程序没有得到验证 但也在思考和设计的过程中学到了很多知识 六 六 主要参考文献主要参考文献 1 谢希仁 计算机网络 第 5 版 电子工业出版社 2008 2 殷肖川 网络编程与开发技术 西安交通大学出版社 2003 七 七 附录附录 附录附录 1 程序流程图程序流程图 捕获 IP 数据包 解析 IP 包 输出 IP 包信息 开始 构造程序运行环境 生成输出 文件 创建原始套接字 并初始化 退出 N END Y 计算机网络课程设计 7 图 7 1 程序流程图 附录附录 2 程序源代码及解释程序源代码及解释 include winsock2 h include ws2tcpip h include iostream h include stdio h pragma comment lib ws2 32 lib typedef struct IP HEADER 定义 IP 头 union BYTE Version 版本 前 4 位 BYTE HdrLen IHL 后 4 位 报头标长 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 头中的信息 void getVersion BYTE b BYTE 右移 4 位 获取版本字段 void getIHL BYTE b BYTE 获取头部长度字段 char parseServiceType getProcedence BYTE b 计算机网络课程设计 8 switch b 5 获取服务类型字段中优先级子域 case 7 return Network Control break case 6 return Internet work Control break case 5 return CRITIC ECP break case 4 return Flash Override break case 3 return Flsah break case 2 return Immediate break case 1 return Priority break case 0 return Routine break default return Unknow break char parseServiceType getTOS BYTE b b b 1 获取服务类型字段中的 TOS 子域 switch b case 0 return Normal service break case 1 return Minimize monetary cost break case 2 return Maximize reliability 计算机网络课程设计 9 break case 4 return Maximize throughput break case 8 return Minimize delay break case 15 return Maximize security break default return Unknow void getFlags WORD w BYTE MF w 13 void getFragOff WORD w WORD char getProtocol BYTE Protocol 获取协议字段共 8 位 switch Protocol 以下为协议号说明 case 1 return ICMP case 2 return IGMP case 4 return IP in IP case 6 return TCP case 8 return EGP case 17 return UDP case 41 return IPv6 case 46 return RSVP case 89 计算机网络课程设计 10 return OSPF default return UNKNOW void ipparse FILE file char buffer IP HEADER ip IP HEADER buffer 通过指针把缓冲区的内容强制转化为 IP HEADER 数据结构 fseek file 0 SEEK END BYTE version getVersion ip Version version fprintf file 版本号 d r n version BYTE headerLen getIHL ip HdrLen headerLen fprintf file 报头标长 d BYTE r n headerLen fprintf file 服务类型 s s r n parseServiceType getProcedence ip ServiceType parseServiceType getTOS ip ServiceType fprintf file 总长度 d BYTE r n ip TotalLen fprintf file 标识 d r n ip ID BYTE DF MF getFlags ip Flags DF MF fprintf file 标志 DF d MF d r n DF MF WORD fragOff getFragOff ip FragOff fragOff fprintf file 分段偏移值 d r n fragOff fprintf file 生存期 d hopes r n ip TimeToLive fprintf file 协议 s r n getProtocol ip Protocol fprintf file 头校验和 0 x 0 x r n ip HdrChksum fprintf file 源 IP 地址 s r n inet ntoa in addr fprintf file 目的 IP 地址 s r n inet ntoa in addr fprintf file r n int main int argc char argv if argc 2 printf usage eror n return 1 FILE file if file fopen argv 1 wb NULL 计算机网络课程设计 11 printf fail to open file s argv 1 return 1 WSADATA wsData if WSAStartup MAKEWORD 2 2 return 1 建立套接字 SOCKET sock if sock socket AF INET SOCK RAW IPPROTO IP INVALID SOCKET printf create socket failed n return 1 BOOL flag TRUE 设置 IP 头操作选项 用户可对 IP 头处理 if setsockopt sock IPPROTO IP IP HDRINCL char return 1 char hostName 128 if gethostname hostName 100 SOCKET ERROR printf gethostname failed n return 1 获取本地地址 hostent pHostIP if pHostIP gethostbyname hostName NULL printf gethostname failed

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论