三层/二层转发基础(1)

前言:基于OSI参考模型,这里三层指的是网络层,二层指的是数据链路层;同时,当前二层链路环境为以太网链路;

步骤
1、 源主机想要要向一个目的IP地址的远端主机发送数据报文;首先本地资源有了想要发送目的主机的IP地址;
2、 查看目的IP地址是否和本地主机在同一个网段内,这个可以使用主机配置的子网掩码进行校验;
3、 如果是,那么这个可以认为就是介入了二层转发的范畴,对于一个数据包来说,光有一个目的IP地址是不够的,本地的二层转发是不依赖IP地址的,而是以太网物理地址;那么这里需要找到对应IP的物理地址了,这里需要的发现技术就是ARP地址解析协议;本地主机先在本地主机维护的一张ARP软件表中拿着目的IP地址来查找对应的MAC地址;在windows中可以输入arp -a查看;如果有,那么恭喜了,之前应该是和远端主机痛心过并保存了他的MAC地址,那么直接拿这个MAC地址填到对应数据包中,然后发送出去;这个数据包就到了二层交换的物理口收到了这个包,那么二层交换机开始做了什么呢?
3.1 二层交换机同样维护了一张二层转发表

MAC

PORT

00-01-02-03-04-05

Port1

00-01-02-03-04-06

Port2

….


当二层交换收到了这个数据包,首先,将会抽取这个数据包中的源MAC地址,在二层交换维护的转发表中查看是否和原来保存的MAC对应的端口一致,如果不一致将新的MAC地址和对应端口更新到这张转发表中。之后,二层交换开始抽取这个数据包中目的MAC地址,同样在这个二层转发表中查找对应的MAC-Port;如果找到了,恭喜省了好多事,直接把这个数据包从找到的对应目的端口扔出去,因为这里目的主机就是直接连载这个二层交换的这个端口。好吧,如果没有找到匹配的MAC-PORT,那么二层交换将要开始广播ARP报文,(广播报文:谁知道10.10.1.2的MAC是多少?),如果找到了,那么就好,对应的目的主机会发送一个回应ARP应答报文到二层交换上,二层交换将会把这个MAC地址更新学习到二层转发表中,然后之前发送的数据包这时候有可能还是被交换缓存着,或者是当前数据包已经被丢掉了,那么就主机一般都会重发报文,之后的报文将会按照新的通路进行二层转发;