初识二层转发
1.测试组网图:
2.实验前提条件
1) PC2上ARP表项IP:1.1.1.1(IP_PC) MAC:0000-0000-0003(PC3);
2) PC1上ARP表项IP:1.1.1.2(IP_PC) MAC:0000-0000-0002(PC2);
3) PC3上没任何表项;
4) 交换机上没有MAC表项;
5) PC1,PC2,PC3在同一网段,交换机各个端口都设置为access口,PVID为1
3.实验问题:
在PC1上ping PC2的IP地址(1.1.1.2),是否能通?
4.报文交互流程;
1) PC1处理流程:PC1 ping PC2,PC1检查自己的IP地址和PC2的IP地址在同一网段,然后ICMP进程开始处理ping这个动作,封装ICMP相关信息,开始封装ICMP REQUEST头相关信息,ICMP封装完后将数据交给IP进程,IP进程根据ping目的地址和自身接口(出接口)IP地址及数据部分(ICMP报文)封装成IP数据报,源IP地址为接口IP地址(1.1.1.1),目的IP为ping的IP地址(1.1.1.2)。IP数据报封装完成后将此报文交付给数据链路层,数据链路层开始封装MAC 帧,MAC帧格式依次为目的MAC地址(0000-0000-0002),源MAC地址(0000-0000-0001),type类型(0x0800(IPv4协议)),数据段(IP数据报文),FCS。然后从PC1的GE_0/1接口发出这个报文。数据帧如下:
目的MAC地址 |
源MAC地址 |
type |
.... |
protocol |
源IP地址 |
目的IP地址 |
....
|
ICMP报文 |
FCS |
0000-0000-0002 |
0000-0000-0001 |
0x0800 |
1 |
1.1.1.1 |
1.1.1.2 |
Echo request |
.......
|
2) 交换机处理:交换机从0/10接口收到这个报文,为报文添加缺省VLANID标记为VLAN1,解析此报文,检查源MAC地址并与MAC地址表相比较,发现源MAC地址不在表中则交换机学习源(PC1)MAC地址,芯片自动把PC1的MAC地址以及进入交换机的端口号等信息填入到芯片的MAC地址表中(如下表)
MAC-address |
vlan |
port |
aging |
0000-0000-0001 |
1 |
GE_0/10 |
300s |
然后在MAC地址表中进行目的地址查找。没有找到目的MAC地址信息。交换机发现报文里的VLAN ID和接口GE_0/20允许VLAN ID相同,和接口GE_0/30 允许VLAN ID相同,则可以将此报文从GE0/20,GE_0/30转发出去,又因为接口GE_0/20,GE0/30是access口,转发前报文去掉tag VLAN1标记再通过泛洪法从GE_0/20,GE_0/30接口转发出去。
3)PC3的处理:PC3从GE_0/1接收到此报文,解封装此报文,得知目的MAC地址是PC2的MAC地址,不是自己的MAC地址,则丢弃此报文。
4)PC2的处理:PC2从GE_0/1接收到这个报文,解封装这个报文,发现目的MAC地址是0000-0000-0002,是自己的MAC地址,就知道是发给自己的报文,根据type类型知道是0x0800,发现这个报文的源IP地址是1.1.1.1,目的IP地址是1.1.1.2,目的IP地址是自己的IP地址,根据protocol(1)知道是ICMP协议发送的request,于是PC2通过ICMP进程发送给PC1 replay,封装报文,交付给IP层,IP层加入源IP地址(PC2的ip地址),目的IP 地址(pc1的IP地址),protocol为1(ICMP报文)封装成IP数据报交付给数据链路层,数据链路层加入源MAC地址(PC2的MAC地址),查找ARP表加入目的MAC地址(1.1.1.1对应得MAC地址为PC3的MAC地址),数据类型(0x0800(IPV4))最后封装成MAC帧。MAC帧如下:
目的MAC地址 |
源MAC地址 |
type |
.... |
protocol |
源IP地址 |
目的IP地址 |
....
|
ICMP报文 |
FCS |
0000-0000-0002 |
0000-0000-0003 |
0x0800 |
1 |
1.1.1.2 |
1.1.1.1 |
Echo replay |
.......
|
5)交换机处理:交换机从GE_0/20接口接收到此报文,为这个报文添加缺省VLANID标记为VLAN1,解析此报文的源MAC地址是PC2的MAC地址,检查MAC表中没有PC2的MAC地址信息就学习到PC2的MAC地址信息。
Mac-address |
vlan |
port |
aging |
0000-0000-0001 |
1 |
GE_0/10 |
300s |
0000-0000-0002 |
1 |
GE_0/20 |
300s |
解析出目的MAC地址是PC3的MAC地址,交换机查找自己的MAC表,没有找到PC3MAC的地址信息,交换机需要将此报文通过泛洪法将此报文从其他接口转发出去,交换机发现报文里的VLAN ID和接口GE_0/10,GE_0/30允许VLAN ID相同,则可以将此报文从GE_0/10,GE_0/30转发出去,又因为接口GE_0/10,GE_0/30是access口,转发前报文去掉tag VLAhfanN1标记此报文去掉tag VLAN1通过泛洪法从GE_0/10,GE_0/30接口转发这个报文。
6)PC3收到报文处理:PC3从GE_0/1收到这个报文后,解封装这个报文,发现源MAC地址是PC2的MAC地址,目的MAC地址是自己的MAC地址,根据type知道是IP协议,在IP层解析知道源IP地址是PC2的IP地址,目的IP地址是1.1.1.1,目的地址不是自己的IP地址,不再解析报文,丢弃此报文。
7)PC1收到报文处理:PC1从GE_0/1收到这个报文后,解析这个报文发现源MAC地址是PC2的MAC地址,目的MAC地址是0000-0000-0003,目的MAC地址不是自己的地址,丢弃此报文。
5.结果;
在以上环境条件下,PC1pingPC2ping 不通
原文:https://www.cnblogs.com/linxl/p/12824543.html