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


解析一:2.0.2.1 现在10网段的PC想发送一个消息给70网段的PC,第一个路由器的路由表:
//路由条目,C是直连,connected,手工配的叫S,static,静态路由就是手工写路由。
C 10.1.1.0/24 f0/0
C 20.1.1.0/24 f0/1
这个数据帧先到达f0/0,再到达f0/1,再到现在的路由表上找70的记录,表里面没有70网段的地址,那么这个向70请求的包立马就会被干掉,并返回10网段PC一个目标主机不可达(Destination Unreachable),
所以以后在遇到目标不可达时,要么就是IP写错了,地址写少了,或者下一跳写错了。
所以这个时候就需要工程师手动配置路由表,手动配置的部分:
S 70.1.1.0/24 20.1.1.2(会配置一个下一跳的IP地址)
S 30.1.1.0/24 20.1.1.2
S 40.1.1.0/24 20.1.1.2
S 50.1.1.0/24 20.1.1.2
S 60.1.1.0/24 20.1.1.2
这部分可以由S* 0.0.0.0/0 20.1.1.2代替,而S* 0.0.0.0/0代表世界上所有IP。
这个边缘路由甚至就只记了一个S* 0.0.0.0/0 20.1.1.2条目,就把数据包发出去了。
什么是下一跳地址?
目前路由到 目标网段前 下一个路由它的左端口地址就是下一跳的地址。
C的管理距离值是0,S的管理距离值是1,S*的管理距离值是无穷大,值越大,匹配记录的优先级越低。
解析二:
2.0.2.2 现在10网段的PC想给50网段的PC发一帧信息,第二个路由器的路由表就是:
C 20.1.1.0/24
C 30.1.1.0/24
C 60.1.1.0/24
S 10.1.1.0/24 20.1.1.1
#S 40.1.1.0/24 30.1.1.2
#S 50.1.1.0/24 30.1.1.2
S* 0.0.0.0/0 30.1.1.2
S 70.1.1.0/24 60.1.1.2
这个中间路由,只是记录了其他网段的网络地址,将数据包给发到下一跳,它并没有去记IP地址,没必要。

3 路由器路由要更改Mac,也要用到ARP协议,所以先讲ARP协议再讲怎么路由Mac。
3.0.1 在OSI七层模型里面,数据链路层有个问题未解决,就是A给B发信息,帧头是(MacBB,MacAA),但是我们A根本就不知道B的Mac地址,那么A是如何获取目标主机B的Mac地址呢?这个时候就需要讲我们的ARP协议了。
3.0.2 先讲广播,广播是什么?
广播:将广播地址做为目的地址的数据帧
广播域:网络中能接收到同一个广播所有节点的集合,广播域越小越好,就像五个人一直在广播,你可以都听下,但如果两千个人在广播呢?广播这个东西你又不得不听。
3.0.3 广播地址:
【我发送数据的时候只知道目的IP,路由器是咋把数据包传到目的IP呢也就是他是咋选择下一个传输节点的。】 MAC地址广播地址:FF-FF-FF-FF-FF-FF
IP地址广播:
1 全局广播地址:255.255.255.255
2 私网广播地址:192.168.1.255/24
一个圈就是一个广播域,所以交换机隔离不了广播域,路由器可以。
我发送数据的时候只知道目的IP,路由器是咋把数据包传到目的IP呢也就是他是咋选择下一个传输节点的。

3.0.4 什么是ARP协议?
Address Resolution Protocol,地址解析协议,将一个已知的IP地址解析成Mac地址。
ARP原理:
当A主机想知道B主机的Mac地址时,会通过ARP协议生成一个报文,流经网卡,网卡给加个帧头【(FF-FF-FF-FF-FF-FF,MacAA,类型) + “我是10.1.1.1,我的Mac地址是AA,谁是主机10.1.1.2?你的Mac地址是什么?”+ FCS】发出去了。
广播帧被送到交换机,交换机看了一眼地址,就广播出来让局域网的所有PC都收到这个报文,所有PC一看,类型是0x0806,哦是个ARP协议,B看到是问自己的Mac地址,就把自己Mac地址BB写了个帧,返回给A了,所以ARP广播请求+单播应答就是ARP协议的全部内容了。
而A收到应答之后,就将B的Mac地址和IP地址记录到自己电脑的ARP缓存中。


推荐阅读