一、 实验环境
1.1 实验要求
本实验的目的是利用 visual C++编写一个简单的路由程序,实现 IP 数据报的转发。本实验可以在一个局域网中进行,采用如下图所示的实验环境:
其中路由 R1 和 R2 是连接不同子网的通用计算机,通过 R1 和 R2 上运行编制的路由程序,绑定双 IP,通过路由程序添加路由表,对接收的数据包进行分析和转发,实现处于不同网络中的主机 I 和 II 的相互通信。通信测试由ping 命令执行,可以通过 tracer +IP 地址来追踪数据包在网络中的转发路径。
1.2 路由软件应该处理的内容
编制一个较为完整的路由软件相当复杂包含如下工作:
1.为经过的 IP 数据报选择路由:路由器基本功能,对接受的 IP 数据报提取目的 IP 地址,根据自己的路由表信息为该数据报选择最优的转发路径。
2.处理 IP 数据报的 TTL 域中的数值,抛弃 TTL<=0 的数据报,将转发的IP 数据报 TTL 减一。
3.分片处理。
4.处理 IP 数据报选项:处理 IP 数据报可能的选项(记录路由、源路由、时间戳等)。
5.重新计算 IP 数据报的头部校验和:由于路由软件需要进行 TTL 处理、分片处理、选项处理等工作,因此,需要送出的 IP 数据报报头需要重新计算校验和。
6.生成和处理 ICMP 报头
7.实现路由协议,维护静态路由。