第14章 路由器基本功能实现程序-1



《第14章 路由器基本功能实现程序-1》由会员分享,可在线阅读,更多相关《第14章 路由器基本功能实现程序-1(53页珍藏版)》请在文档大全上搜索。
1、计计算机硬件基算机硬件基础教学础教学中心中心Copyright by NUPT All rights reserved.1Technology of Network Programming网络编程技术网络编程技术网络编程技术网络编程技术2 路由器是实现路由器是实现IP协议最为关键协议最为关键的设备之一。通过简单路由器的设备之一。通过简单路由器程序的设计与实现,掌握路由程序的设计与实现,掌握路由器基本工作原理,理解路由选器基本工作原理,理解路由选择与数据包转发的方法择与数据包转发的方法网络编程技术网络编程技术3 编程训练目的编程训练目的 编程训练要求编程训练要求 相关知识介绍相关知识介绍 程序设
2、计分析程序设计分析 扩展与提高扩展与提高网络编程技术网络编程技术4 在理解在理解IP协议、协议、ICMP协议与路由选择基本工协议与路由选择基本工作原理的基础上,完成路由器基本功能的设计作原理的基础上,完成路由器基本功能的设计与编程实现与编程实现 掌握掌握Windwos平台下路由程序测试环境的搭建平台下路由程序测试环境的搭建方法方法 熟悉熟悉Winpcap编程,掌握数据包捕获与发送的编程,掌握数据包捕获与发送的方法。熟悉动态路由协议原理以及动态路由表方法。熟悉动态路由协议原理以及动态路由表的实现方法的实现方法网络编程技术网络编程技术5 编程训练目的编程训练目的 编程训练要求编程训练要求 相关知识
3、介绍相关知识介绍 程序设计分析程序设计分析 扩展与提高扩展与提高网络编程技术网络编程技术6利用利用Winpcap编写一个简单的路由处理程序,编写一个简单的路由处理程序,该路由程序应该至少应该包括以下功能:该路由程序应该至少应该包括以下功能: 静态路由表维护静态路由表维护 IP数据包处理数据包处理 ARP请求与解析请求与解析 处理处理IP数据包的数据包的TTL值值 重新计算重新计算IP数据包的头部校验和数据包的头部校验和 生成和处理生成和处理ICMP报文报文 记录日志功能记录日志功能 网络编程技术网络编程技术7程序运行的参考界面程序运行的参考界面 网络编程技术网络编程技术8 编程训练目的编程训练
4、目的 编程训练要求编程训练要求 相关知识介绍相关知识介绍 程序设计分析程序设计分析 扩展与提高扩展与提高网络编程技术网络编程技术9路由器结构路由器结构 网络编程技术网络编程技术10路由器基本功能路由器基本功能 为经过的为经过的IP数据包选择路由数据包选择路由处理处理IP数据包选项数据包选项处理处理IP数据包数据包TTL值值分片处理分片处理重新计算重新计算IP数据包的头部校验和数据包的头部校验和生成和处理生成和处理ICMP报文报文实现动态路由协议、维护静态路由实现动态路由协议、维护静态路由实现实现ARP协议、形成数据帧协议、形成数据帧网络编程技术网络编程技术11路由选择的基本原理路由选择的基本原
5、理IP互联网采用表驱动的路由选择算法互联网采用表驱动的路由选择算法需要路由选择的设备保存一张需要路由选择的设备保存一张IP路由表路由表路由表存储有关目的地址及怎样到达目的地路由表存储有关目的地址及怎样到达目的地的信息的信息通过查询路由表决定把数据报发往何处通过查询路由表决定把数据报发往何处IP路由选择利用路由选择利用IP地址隐藏主机信息地址隐藏主机信息连接到同一网络的所有主机共享同一网络号连接到同一网络的所有主机共享同一网络号网络编程技术网络编程技术12标准的路由选择算法标准的路由选择算法网络编程技术网络编程技术13子网选路子网选路网络编程技术网络编程技术14路由表路由表 路由表中的每一条路由
6、表项含有五个属性路由表中的每一条路由表项含有五个属性 :目的网络地址、网络掩码、下一跳、接口和跃点数目的网络地址、网络掩码、下一跳、接口和跃点数 网络编程技术网络编程技术15相关的相关的ICMP差错报文差错报文 目的不可达报文目的不可达报文当路由器不能为数据包找到路由器或主机交付数据当路由器不能为数据包找到路由器或主机交付数据包时,就丢弃该数据包,然后向源主机发出包时,就丢弃该数据包,然后向源主机发出ICMP目的不可达报文目的不可达报文 超时报文超时报文路由器在转发数据包时,如果生存周期路由器在转发数据包时,如果生存周期TTL值减值减1后为后为0,就丢弃这个数据包。当丢弃这样的数据包,就丢弃这
7、个数据包。当丢弃这样的数据包时,路由器向源主机发送一个超时报文时,路由器向源主机发送一个超时报文当计时器的时限到,而目的主机还没有接收到一个当计时器的时限到,而目的主机还没有接收到一个数据包的所有分片时,它会将接收的分片丢弃,并数据包的所有分片时,它会将接收的分片丢弃,并向源主机发送超时报文向源主机发送超时报文 网络编程技术网络编程技术16 编程训练目的编程训练目的 编程训练要求编程训练要求 相关知识介绍相关知识介绍 程序设计分析程序设计分析 扩展与提高扩展与提高网络编程技术网络编程技术17 测试环境示意图测试环境示意图 网络编程技术网络编程技术18 测试环境示意图测试环境示意图 逻辑结构逻辑
8、结构物理结构物理结构网络编程技术网络编程技术19路由器初始化模块路由器初始化模块初始化模块负责初始化设备,添加与路由器直接初始化模块负责初始化设备,添加与路由器直接相连网络的路由表项,并启动相应的数据包捕获相连网络的路由表项,并启动相应的数据包捕获与处理模块与处理模块 静态路由表维护模块静态路由表维护模块静态路由表维护模块完成路由表的添加、删除以静态路由表维护模块完成路由表的添加、删除以及显示及显示 数据包捕获与处理模块数据包捕获与处理模块 数据包捕获与处理模块用于捕获流经本路由器的数据包捕获与处理模块用于捕获流经本路由器的数据包并按照路由协议进行处理数据包并按照路由协议进行处理 网络编程技术
9、网络编程技术20定义数据包头数据结构定义数据包头数据结构 #pragma pack(1)typedef struct FrameHeader_t / 帧首部帧首部 UCHARDesMAC6; / 目的地址目的地址 UCHARSrcMAC6; / 源地址源地址 USHORTFrameType; / 帧类型帧类型 FrameHeader_t;typedef struct ARPFrame_t / ARP帧帧FrameHeader_t FrameHeader; / 帧首部帧首部 WORDHardwareType; / 硬件类型硬件类型WORDProtocolType; / 协议类型协议类型BYTEH
10、Len; / 硬件地址长度硬件地址长度BYTEPLen; / 协议地址长度协议地址长度WORDOperation; / 操作值操作值UCHARSendHa6; / 源源MAC地址地址ULONGSendIP; / 源源IP地址地址UCHARRecvHa6; / 目的目的MAC地址地址ULONGRecvIP; / 目的目的IP地址地址 ARPFrame_t;网络编程技术网络编程技术21定义数据包头数据结构定义数据包头数据结构 typedef struct IPHeader_t / IP首部首部BYTEVer_HLen; / 版本版本+头部长度头部长度BYTETOS; / 服务类型服务类型WORDT
11、otalLen; / 总长度总长度WORDID; / 标识标识WORDFlag_Segment; / 标志标志+片偏移片偏移BYTETTL; / 生存时间生存时间BYTEProtocol; / 协议协议WORDChecksum; / 头部校验和头部校验和ULONG SrcIP; / 源源IP地址地址ULONG DstIP; / 目的目的IP地址地址 IPHeader_t;typedef struct ICMPHeader_t / ICMP首部首部BYTE Type; / 类型类型BYTE Code; / 代码代码WORD Checksum; / 校验和校验和WORD Id; / 标识标识WOR