如图,交换机不做任何配置
思考:现在从hostA ping hostB,数据经过什么样的过程?此过程用的是arp协议还是icmp协议?
首先hostA把ping命令的指令以bit的形式通过网线传输到与其相连的交换机端口GE0/0/1,经过交换机GE0/0/1后将bit封装为数据帧......别太微观了,微观的东西不要太较真,要不然都是无用的知识。
重新开始
hostA ping hostB,首先hostA会查看自己的MAC地址表,如果有,直接按照hostA的MAC地址表.........
如果没有,hostA就会向交换机发送ARP广播包,ARP帧报文格式如下:
目的MAC | 源MAC | OP | 发送者MAC | 发送者IP | 目标MAC | 目标IP |
FF-FF-FF-FF-FF-FF | 54-89-98-AA-57-A8 | 1 | 54-89-98-AA-57-A8 | 192.168.1.100 | 00-00-00-00-00-00 | 192.168.2.100 |
(省略了一部分,ARP报文格式详见下图)
OP的值表示
1:表示arp请求
2:表示arp应答
3:表示rarp请求
4:表示rarp应答
交换机接收到ARP请求报文后,会查询交换机的MAC地址表,如果有hostB的MAC地址,直接返回给hostA;
如果没有,交换机就会向所有端口泛洪ARP广播,其他端口上的主机发现以后,如果目标不是自己,就会丢弃报文;直到hostB主机接收到了报文以后,就会响应hostA的MAC地址,同时学习主机hostA的MAC地址,并按照同样格式的ARP报文返回给hostA
hostB返回的ARP帧报文:
目的MAC | 源MAC | OP | 发送者MAC | 发送者IP | 目标MAC | 目标IP |
54-89-98-AA-57-A8 | 54-89-98-2E-10-82 | 2 | 54-89-98-2E-10-82 | 192.168.2.100 | 54-89-98-AA-57-A8 | 192.168.1.100 |
hostA收到hostB返回的ARP帧后,就学习到了hostB的MAC地址,这个时候就可以发送icmp报文
目的地址 | 源地址 | ... | 目标IP | 源IP | ... | icmp报文 |
54-89-98-2E-10-82 | 54-89-98-AA-57-A8 | 192.168.2.100 | 192.168.1.100 | icmp request |
hostB收到hostA的icmp报文之后回复
目的地址 | 源地址 | ... | 目标IP | 源IP | ... | icmp报文 |
54-89-98-AA-57-A8 | 54-89-98-2E-10-82 | 192.168.1.100 | 192.168.2.100 | icmp reply |
由以上过程可以看出来,ping是先通过ARP协议获取到目标MAC地址后,就可以具备ICMP协议4要(源目IP源目MAC)的条件,再发送ICMP协议。
细心的已经发现hostA和hostB所在网段不一样,为什么还可以ping通呢?