1、 1 计算机网络 课程设计报告 解析 IP 数据报 2 目录目录 目录 . 2 1、课程设计目的 3 2、课程设计要求 3 3、相关知识 3 4、课程设计分析 7 4.1 网卡设置 . 7 4.2 使用套接字 . 7 4.2.2 接收数据包 . 8 4.3 定义 IP 头部的数据结构 8 4.4 IP 包的解析 10 4.5 协议的定义 10 4.6 捕获处理 . 10 5、运行结果 . 11 6、总结 . 11 7、课程设计参考资料 . 12 8、源程序代码 . 12 3 1、课程设计目的 本课程设计的目的就是设计一个解析 IP 数据包的程序,并根据这个程序, 说明 IP 数据包的结构及 I
2、P 协议的相关问题,从而对 IP 层的工作原理有更好的 理解和认识。 2、课程设计要求 本设计的目标是捕获网络中的 IP 数据包,解析数据包的内容,将结果显示 在标准输出上,并同时写入日志文件。 程序的具体要求如下: 1) 以命令行形式运行: ipparse logfile, 其中 ipparse 是程序名, 而 logfile 则代表记录结果的日志文件。 2)在标准输出和日志文件中写入捕获的 IP 包的版本、头长度、服务类型、数 据包总长度、数据包标识、分段标志、分段偏移值、生存时间、上层协议类型、 头校验和、源 IP 地址和目的 IP 地址等内容。 3)当程序接收到键盘输入 Ctrl+C
3、时退出。 3 3、相关知识、相关知识 互联网络层是 TCP/IP 协议参考模型中的关键部分.IP 协议把传输层送来的 消息组装成 IP 数据包,并把 IP 数据包传送给数据链层.IP 协议在 TCP/IP 协议族 中处于核心地位,IP协议制定了统一的IP数据包格式,以消除个通信子网中的差 异,从而为信息发送方和接收方提供了透明的传输通道.编制本程序前,首先要对 IP 包的格式有一定了解,图 1 给出了 IP 协议的数据包格式. 4 IP 数据包的第一个字段是版本字段,其度是 4 位,表示所使用的 IP 协议的版 本.目前的版本是 IPV4,版本字段的值是 4,下一代版本是 IPV6,版本字段值
4、是 6. 本程序主要针对版本是 IPV4 的数据包的解析. 报头标长字段为4位,它定义了以4B为一个单位的IP包的报文长度.报头中 除了选项字段和填充域字段外,其他各字段是定长的.因此,IP 数据包的头长度 在 2040B 之间,是可变的. 0 4 8 16 19 24 31 版本 报头标长 服务类型 总长度 标识 标志 片偏移 生存时间 协议 头校验和 源 IP 地址 目的 IP 地址 选项 填充域 数据部分 图 1 IP 数据包的格式 服务类型字段共8位,用于指示路由器如何处理该数据包.该字段长度由4位服务 类型(TOS)子域和 3 位优先级子域组成,1 位为保留位,该字段结构如图 2 所
5、示. B7 b6 b5 b4 b3 b2 b1 b0 优先级 D T R C 0 图 2 服务类型字段结构 5 优先级共有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. 6 标识字段的长度为16位,用于识别IP数据包的编号