1、实验四 网际协议 IP 实验目的1掌握 IP 数据报的报文格式。2 理解特殊 IP 地址的含义。3 掌握路由表信息含义实验环境1安装 Windows2000/2003Server/XP 操作系统的 PC 计算机一台。2每台 PC 具有一块以太网卡,通过双绞线与局域网相连。2每台 PC 运行网络协议分析软件 Wireshark。实验原理一、 IP 报文格式IP 数据报是由 IP 首部加数据组成的。IP 首部的最大长度不超过 60 字节。 IP 数据报文格式如下图所示:4 位版本 4 位首部长度 8 位服务类型 16 位总长度(字节数)16 位标识 3 位标志 13 位片偏移8 位生存时间 8 位
2、协议类型 16 位首部检验和32 位源 IP 地址32 位目的 IP 地址选项(如果有)数据IP 报文格式二、 IP 分片链路层具有最大传输单元(MTU)这个特性,它限制了数据帧的最大长度。不同的网络类型都有一个上限值。以太网通常是 1500 字节。 如果 IP 层有数据包要传输,而数据包的长度超过了 MTU,那么 IP 层就要对数据包进行分片操作。使每一片长度都小于 MTU。 IP 首部中“16 位标识” 、 “3 位标志”和“13 位片偏移”包含了分片和重组所需的信息。另外,当数据被分片后,每个片的“16 位总长度” 值要改为该片的长度值。三、 IP 路由表大部分网络层设备都存储着一张记录
3、路由信息的表格,称为路由表。它由许多条项目组成。网络层设备收到数据报后,根据其目的 IP 地址查找路由表确定数据报传输的最佳路径(下一跳)。然后利用网络层的协议重新封装数据报,利用下层提供的服务把数据报转发出去。 路由表的项目一般含有五个基本字段:目的地址、网络掩码、下一跳地址、接口、度量。路由表按如下顺序匹配: 直接交付:路由表表项的“目的地址”字段是交付主机的本网络地址。 特定主机交付:路由表表项的“目的地址”字段是某台特定主机的 IP地址。 特定网络交付:路由表表项的“目的地址”字段是另一个网络的地址。 默认交付:路由表表项的“目的地址”字段是一个默认路由器(默认网关) 。四、 路由选择
4、过程路由选择模块从 IP 处理模块接收到 IP 分组后,使用该分组的目的 IP 地址同路由表中的每一个项目按特定的顺序(按照前面介绍的“路由表匹配顺序”)查找匹配项,当找到第一个匹配项后就不再继续寻找了,这样就完成了路由选择过程。匹配路由表项的方法是将 IP 地址与路由表中的一个项目的 “子网掩码”进行按位“与”操作,然后判断运算结果是否等于该项目的“目的地址” ,如果等于,则匹配成功,否则,匹配失败。路由选择模块的工作过程实验步骤1、 IP 数据报格式与 IP 首部校验和的计算用 wireshark 捕获 IP 数据报,查看 IP 数据报的格式。2、特殊的 IP 地址(1)直接广播地址 网
5、络 广 播 会 被 路 由 , 并 会 发 送 到 专 门 网 络 上 的 每 台 主 机 IP 地 址 的 网 络 字 段 定 义 这 个 网 络 , 主 机 字 段 通 常 全 为 1。其中:目的 MAC 地址:FFFFFF-FFFFFF。目的 IP 地址:192.168.32.255。 (2)受限(有限)广播地址它不被路由但会被送到相同物理网络段上的所有主机, IP 地址的网络字段和主机字段全为 1其中:目的 MAC 地址:FFFFFF-FFFFFF。目的 IP 地址:255.255.255.255。(3)环回地址: 127.0.0.1ping 127.0.0.1正常情况下,主机发送到
6、127.0.0.1 的数据报,会不会出现在本地网络? 3、IP 路由表(1)进入命令行模式,输入 route print(2)试着解释路由表各部分的含义。 思考题1试说明 IP 地址与硬件地址的区别。为什么要使用这两种不同的地址? 2IP 数据报中的首部检验和并不检验数据报中的数据。这样做的最大好处是什么?坏处是什么?3不同协议的 MTU 的范围从 296 到 65535。使用大的 MTU 有什么好处?使用小的 MTU 有什么好处?附录:我们打开 cmd,运行 route print ,来查看一下当前的路由表,如下:Active Routes:Network Destination Netma
7、sk Gateway Interface Metric0.0.0.0 0.0.0.0 192.168.0.1 192.168.5.20 20127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1192.168.0.0 255.255.248.0 192.168.5.20 192.168.5.20 20192.168.5.20 255.255.255.255 127.0.0.1 127.0.0.1 20192.168.5.255 255.255.255.255 192.168.5.20 192.168.5.20 20224.0.0.0 240.0.0.0 192.16
8、8.5.20 192.168.5.20 20255.255.255.255 255.255.255.255 192.168.5.20 192.168.5.20 1Default Gateway: 192.168.0.1=Persistent Routes:None大家也可以打开自己当前网络的路由表对照起来看,会更清晰些。初看这个路由表,让人感觉有点怪,怎么一开始就目的地了呢? 源在那? 为了更容易理解,我把这个路由表的格式稍微改了一下:-Interface Network Dest. Netmask Gateway Metric127.0.0.1 127.0.0.0 255.0.0.0 127
9、.0.0.1 1127.0.0.1 192.168.5.20 255.255.255.255 127.0.0.1 20-192.168.5.20 192.168.5.255 255.255.255.255 192.168.5.20 20192.168.5.20 192.168.0.0 255.255.248.0 192.168.5.20 20192.168.5.20 0.0.0.0 0.0.0.0 192.168.0.1 20192.168.5.20 224.0.0.0 240.0.0.0 192.168.5.20 20192.168.5.20 255.255.255.255 255.255.
10、255.255 192.168.5.20 1Default Gateway: 192.168.0.1-请大家注意,我把 interface 调到了第一列,并根据 interface 一列,将表分为 2 部分,一部分是 127 的路由条目,一部分是和物理网卡 ip 192.168.5.20 相关的路由条目。下面我们来分析这些路由条目先看第一部分127.0.0.1 尽管很特殊,但毕竟还是一个 IP 地址,那么它也一样有自己的网段和广播地址,尽管我们几乎用不到。所以,它自身有 1 条路由就是从接口 127.0.0.1 到目的地 127.0.0.0 这个 8 位网段,掩码自然是255.0.0.0,网关
11、呢? 网关简单说就是下一跳出口地址,因为如果你想访问 127.0.0.0/8 的任意一个地址,显然这个地址和自己在一个网段上,没有必要跨网段,就像你想从自己家的厨房到客厅一样,不用出门,就可以直接到达,因此最终的出口(下一跳)就是自己了,metric 表示跳跃数,用于确定最佳路由,在某些情况下越小越好,但也不是绝对的。第二条可以这样理解,如果想让 tcp/ip 和网卡良好的通讯,就需要有一条路由可以让系统内部的路由到物理网卡上,如此,才可以保证在本机上设置的任意 IP 均可以顺利与环回地址通讯,同时这也是系统自身网络机制必须实现的一部分。剩下的都和网卡地址有关了。第三条,接口为本机 IP,目标
12、为 192.168.5.255,这是一个直接广播地址,也就是广播地址的另一种类型,指代一个特定网络中的所有主机。显然这里是只 192.168.5.X 的目标地址。 ping 命令其实就是用的这条路由。第四条,可以理解为,如果某个地址和掩码 255.255.248.0 进行与运算后结果都是 192.168.0.0,则本机地址可以与之通讯,这条路由的作用其实是代替了这个计算过程,和上一跳相比,比仅仅局限与192.168.5.x,而是符合上面条件的所有地址,实际上,我可以 ping 通 192.168.0.x-192.166.7.x 的任意一个 IP,就是因为这条路由在起作用。第五条,如果访问地址并
13、非本地,则系统会将目标地址当作 0.0.0.0 掩码是 0.0.0.0,也就是处本地、127地址之外的所有地址均通过 192.168.0.1 这个网关出去,这条路由通常被称为默认路由,说白了,你上外网就是依靠此条路由策略。就是因为有了这条路由,才可以将访问外网的请求都发给网关 192.168.0.1,之后就由 0.1 主机上的 isa2006 去处理这些请求了。第六条,224 开头的是多播地址,这个是在某些情况下给多地址发广播时用的,因此这里会单独作为一条路由策略列出。最后一条,255.255.255.255 的地址已提到过,它是广播地址的另一种被称为有限广播,同时也叫本地广播。我想这个地址经常用抓包工具的朋友应该比较常见,MAC 地址是全 F 的就是目标广播地址了,arp 协议会用到此地址会对全部主机发送广播以实现查询特定主机的请求,由于对方 mac 地址位置,所以就用全 F,也就是 FF-FF-FF-FF-FF-FF 来表示。从上面我们可以看出,下一条的指定很重要,因为它会指引系统或程序等的访问请求下一个要去的地方在哪里,这点至关重要。