我发送数据的时候只知道目的IP,路由器是咋把数据包传到目的IP呢也就是他是咋选择下一个传输节点的。( 三 )


此时ARP缓存表就是:
10.1.1.2 BB
3.0.4 ARP协议是个内网的协议,属于内网攻击的一个手段,ARP内网欺骗:
解析一:
假设我们现在在是10.1.1.0/24网段,网关是10.1.1.254,我是10.1.1.1,我想通信10.1.1.3,但是不知道谁是10.1.1.3,不知道它的Mac地址,
我先发送一个Arp询问所有PC,谁是10.1.1.3,然后10.1.1.2伪装了一个Mac地址返回给我了,而且还自然收到10.1.1.3的一个应答Mac地址,一共两个地址,我选谁?在ARP这里定义的是谁后到我选谁。
那如果10.1.1.2一直连续捏造一个假的Mac地址来应答,这样就能永远保证自己能后到,这样攻击的目的能让我和1.1.3两个人一直不能通信,危害不大。
解析二:
而现在我要上网了,我要连百度(200.1.1.1),先是查询自己10.1.1.1和200.1.1.1是否是同一个局域网,这明显不在同一个局域网就会填网关IP和网关Mac先发往网关。
而现在三层IP包头里面源IP和目标网关IP都有了,源Mac地址自己知道,目标Mac地址应该填网关的Mac地址,这个就得Arp广播一下问网关。
先发送一帧消息给交换机广播,网卡给加个帧头【(FF-FF-FF-FF-FF-FF,MacAA,类型) +“我是10.1.1.1,我的Mac地址是ee,谁是网关10.1.1.254?你的Mac地址是什么?”+ FCS】,
而这个时候如果10.1.1.2还像上面攻击你,你一直拿不到网关的Mac地址,就上不了网,但它获得不了什么好处,这次它不这样攻击了。
10.1.1.2这样攻击你,假定它的Mac地址是CC,他就发个广播,可能该局域网没有10.1.1.10这个IP可能也有这个IP,但是没有DD这个Mac地址。
【(FF-FF-FF-FF-FF-FF,MacCC,类型) +“我是10.1.1.254,我的Mac地址是DD,谁是IP10.1.1.10啊?你的Mac地址是什么?”+ FCS】,当所有电脑都将网关地址和Mac地址记录下来后,再请求网关MacDD上网时,瞬间所有人都被攻击了,因为根本没有MacDD地址。
解析三:
我还是10.1.1.1,我想给10.1.1.3发消息,我先给所有人发广播帧
【(FF-FF-FF-FF-FF-FF,MacAA,类型) +“我是10.1.1.1,我的Mac地址是AA,谁是IP10.1.1.3啊?你的Mac地址是什么?”+ FCS】,结果10.1.1.2给我回,我是10.1.1.3,我的Mac是AA,我记录下来,之后都把消息都发给10.1.1.2了。然后10.1.1.2把消息又原封不动的给到10.1.1.3,因为10.1.1.2事先知道或者事先广播询问10.1.1.3的Mac地址,并不需要广播询问导致10.1.1.1Arp缓存更改回10.1.1.2正确的mac地址。
这次消息都被过了一次手,甚至10.1.1.2可以偷换消息,更改数据,还可以控制你的数据,把数据减半,控制你的流量。

3.0.6:路由器原理二,上面路由表只是讲的IP地址,而一个帧即使IP知道路是往东南西北哪里走了,但一个帧帧头没有目标Mac地址,发送出去立马就会被干掉。
但是路由器又没有Mac地址表,只有交换机有的,而路由器是填写帧头里的目标Mac地址的呢?
我发送数据的时候只知道目的IP,路由器是咋把数据包传到目的IP呢也就是他是咋选择下一个传输节点的。

首先交换机无Mac地址,凡是能配IP的接口都有Mac地址,路由器的接口都是三层接口凡是有接口就有Mac地址,且是全球唯一的Mac地址。
解析一:
当AA的一个消息要发送到II主机,这个Hello的帧该怎么走呢?
第一个帧【CC AA 10.1 40.1】会先跑到局域网的路由器,结果看源Mac地址CC是给自己的,路由器才开始检测你的目标IP,发现40.1不是自己,路由器会将【CC AA】帧头干掉,再查看自己的路由表得知 要将数据从DD接口发到EE接口,下跳要到20.2网段的EE接口上去,路由器广播得到20.2的Mac地址EE,将【10.1 40.1】包装成 【EE DD 10.1 40.1】,最终发送到40.1主机,这个是Mac地址的过一跳变一次。


推荐阅读