一、实验场景。
实验准备,Linux主机4台。分别是主机A,路由主机R1,路由主机R2,主机 C,主机A的ip是192.168.56.66/24,且只有一块网卡eth0;路由主机R1有两块网卡eth0和主机A在同一网段其ip地址是192.168.56.100/24,eth1的ip地址是172.16.56.223/16;主机R2有两块网卡eth0和主机C在同一网段其地址为10.0.0.25/8,eth1同R1在同一网段其地址为,172.16.56.200/16,主机C只有一块网卡eth0其地址为10.0.0.18/8
实验目的,实现主机A和主机C互相通信。模拟Linux主机通信原理,深入了解通信过程。
以上就是本次实验的拓扑图(图画的有点丑,看得懂就行,哈哈哈)
接下来开始试验。
1,从上面的拓扑图我们可以看出有3个网络,为了不让其他网络影响本次实验,我们在vmware里面增加3条虚拟网络
添加好虚拟网络后,现在准备4台主机,并配置好其相应的ip
说明:配置ip这里都是centos的系统,编辑其相应的文件/etc/sysconfig/network-scripts/ifcfg-eth0 或者eth1 ,然后重启网络服务就可以了。
2.开启r1,r2的转发,以及配置器路由
说明:因为A主机和R1在同一个网段,我们这里就不需要再配置到A主机的路由,只需要配置主机R1到C的路由,并指向R2为网关,也就是说要访问主机C 就必须通过R1的路由告诉报文要去找R2。开启R1的转发是因为,当报文到达R1的时候,它会检查数据报文是否是自己的,如果不是它默认会丢弃的,开启转发就表示不是本机的数据报文,它将转发到其他主机。这样配置后从A的报文理论上可以到达R2,如果打开R2的转发,报文将会到达C,但是从C回来的报文走到R2的时候,因为R2里面没有配置到A的路由,所以回来的报文还不能够到达A,接下来配置R2的路由。
说明:配置R2的路由的作用是当访问C主机的时候,C主机回应回来的报文,在经过R2是会查看R2的路由,这样从C回来的报文才能够顺利到达A
3,验证从ApingC
从CpingA
4,扩展
1.查看到达目标网络所经过的路由
说明:可以得之到达10.0.0.18 从本机经过了2个路由才到达。
2,删除同网段的路由是否能够通讯?
说明:这里要把默认路由也要删除,因为删除同网段的路由后,它默认会走默认路由,这样就可以看出删除了同网段的路由后,本机上不能和本网段的其他主机通信。
3,在r1上配置一个不是同网段的地址,主机A是否能够与之通讯?
说明:是可以通讯的,因为在Linux里ip是属于主机,不是属于某块网卡,只要主机A有到达主机R1的路由,就可以和R1上的所有ip通讯。这里主机A是走的默认路由
4,将R1的转发关了,数据报文还能到达C吗?
说明:是不可以的,因为当主机R1收到来自A主机的报文时,它会检查是不是它的,如果不是,它将会丢弃,不予回应,这里我们可以在R1上抓包就明白了
说明:可以看出在R1上是收到了A主机的发往C的报文,但是R1并没有给出回应。
说明:当我们打开R1的转发时,就可以看到从C回应A的数据报文,当然A主机上也会收到相应的回应报文。
5,在C上抓包看源ip和目标ip,源MAC和目标MAC的变化
说明:源ip是主机A的地址,目标ip是主机C的地址
主机A的MAC
主机C的MAC
主机R2的MAC
说明:通过上面的抓包,我们可以知道源ip和目标ip在以太网帧结构中是不会变化的,因为ip是在以太网上层internel协议的内容,但是源mac会变的。这是因为mac地址是Ethernet协议的内容,也可以得出在数据链路层通讯以太网协议是通过ARP mac地址通信的,在到达C主机的报文源MAC都是R2的MAC地址,也就是说在通讯的时候,以太网帧的结构中,源ip和目标ip是不会变化的,源mac会记录上一个发送数据报文的设备的MAC。
从上面的实验我们可以看出从A到C我们经过了两个路由;一个主机想要和另一个主机通讯,在通讯前主机会先查看自己的路由表,如果本机没有到达目标主机的路由时,本机的数据报文是不能发送到目标主机的;要让一个主机转发另一个主机的报文时,我们必须开启转发才行,否则不予转发;路由配置所指定的网关必须是本机能够到达的地址(也就是本机路由表有到达网关的路由),否则配置的路由无意义。同一网段的主机通讯,也必须配置路由,当然这个路由一般我们不用管,因为配置了其ip后,路由表就会默认生成相应的路由信息。如果没有路由,同一网段的主机也是无法通信的;在Linux里ip地址是属于主机不属于某一个网卡,所以只要有能够到达主机的地址,我们也可以将报文送到主机的另外一个地址。