第一节 局域网内通信过程
局域网是一种私有网络,是指由某一个小范围地区形成的区域网络,在网络中表现为:同一局域网内的设备接口的IP地址属于同一个网络号。如下图R1的E0/0、R2的E0/1都位于一个局域网中,属于192.168.1.0/24网络
1.局域网内通信过程配置:
图中,R1、R2用于模拟网络中的PC,并与交换机SW相连,启动设备并打开CLI进行配置。
第一步:配置IP地址
为R1的E0/0和R2的E0/1接口配置IP地址,交换机作为交换设备可不进行配置
R1#conf t • R1(config)#int e0/0 • R1(config-if)#ip add 192.168.1.100 255.255.255.0 • R1(config-if)#no sh • R1(config-if)#end R1#wr
R2#conf t • R2(config)#int e0/0 • R2(config-if)#ip add 192.168.1.101 255.255.255.0 • R2(config-if)#no sh • R2(config-if)#end R2#wr
第二步:对R1、R2做进一步配置
因为此时R1、R2均为路由器,而为了使其充当成PC,我们需要输入以下命令即可:
R1#conf t • R1(config)#no ip routing //关闭路由功能 R2#conf t • R2(config)#no ip routing
第三步:在R1的E0/0和SWE0/0之间的链路上选择设备右击,选择caputre,选择接口编号(如e0/0),此时会自动打开Wireshark,通过Wireshark,我们可以观察到流经该链路的数据包(也就是我们常说的抓包)
第四步:打开R1,通过ping命令,测试与LAN内192.168.1.101的连通性。
R1#ping 192.168.1.101
第五步:在Wireshark中观察敲完ping命令后回显的数据包
2.局域网内通信过程分析:
要实现网络通信,其步骤大体可以分为以下几步:
第一步:发送数据包的设备构造其要发送的数据包。一个数据包的组成必须具备以下四个地址:
第二步:数据包构造完成后,设备根据目的IP地址查找路由表,决定数据包从哪个接口发送出去。
第三步:等待该数据包的回包响应(如果需要)。
以上面的实验为例,当R1(192.168.1.100/24)第一次向R2(192.168.1.101/24)发送数据包时,R1构造要发送的数据包,此时R1具备如下条件:
源MAC:R1 E0/0接口MAC 源IP:R1 E0/0接口IP地址192.168.1.100 目的MAC地址:? 目的IP:R2 E0/1接口IP地址192.168.1.101
可以发现,唯独缺少一段目的MAC地址,这就会导致数据包无法构造完成,因此R1在正式发送数据包之前,会先进行一个操作:向整个局域网内询问192.168.1.101的MAC地址是多少。这个操作是通过ARP(Address Resolution Protocol,地址解析协议)来完成的。
ARP数据包的详细结构如下图。由于不知道目的MAC地址,因此用FFFF:FFFF:FFFF代替,这是一个广播MAC地址,交换机收到目的MAC地址为全F的广播帧时,会从除了收到该数据帧的接口外的其他所有接口转发出去。因此,R2的E0/1能收到这个数据包。同时,在ARP报文中有Target IP Address字段,表示该ARP报文要请求该字段中的IP地址对应的MAC地址。R2收到后,发现Target IP Address字段中的IP地址存在于本地(即自己的地址和Target IP Address字段中的IP地址一致),因此进行响应,填入E0/1接口的MAC地址并源目对调后回复。此时,R1收到回复后知道了192.168.1.101对应的MAC地址,数据包能够正常构造并被发送。
R1将构造好的数据包通过E0/0接口发送出去,SW收到后转发至E0/1接口发给R2,R2收到后再进行回复。
接下来探讨交换机是如何确定数据帧该从哪个接口转发:
交换机工作在OSI第二层,即数据链路层,因此也常被称为二层交换机,二层交换机转发数据帧的依据是MAC地址表,可以通过命令 show mac-address-table查看,如图所示。
MAC-Address-Table中有四列信息,分别对应着:所属VLAN、MAC地址、获取方式和出接口。该表是通过自动学习得来的,即获取方式中的Dynamic(动态获取),自动学习的实现过程是:当交换机收到一个数据帧后,提取该数据帧中的源MAC地址并与收到该数据帧的接口进行绑定,这样就自动学习到了一条MAC地址表项。自动学习MAC地址是交换机的基本功能之一,无法关闭。
当交换机拥有了MAC地址表后,交换机再收到数据帧时,只需要提取出目的MAC地址,在MAC地址表中找到对应的出接口进行转发即可。
至此,局域网内的通信过程就算是结束了。
第二节 局域网间通信过程
局域网间通信,也就意味着数据包需要跨网络传输,那在局域网中必须有三层设备,如路由器、三层交换机,因为在跨网络传输时,需要根据路由表决定数据包的去向。在第一节实验的基础上,对拓扑进行适当修改,在该图中,R3为192.168.1.0/24和192.168.2.0/24的网关设备。
什么是网关:gateway,是一个网络通向其它网络必须经过的三层设备称之为网关,即一个网络的关口
1.局域网间通信过程配置:
图中,R1、R2用于模拟网络中的PC,并与网关设备(路由器R3)相连,启动设备并打开CLI进行配置。
第一步:配置IP地址
为R1的E0/0和R2的E0/1接口配置IP地址,交换机作为交换设备可不进行配置
R1#conf t R1(config)#int e0/0 R1(config-if)#ip add 192.168.1.100 255.255.255.0 R1(config-if)#no sh R1(config-if)#end R1#wr
R2#conf t R2(config)#int e0/0 R2(config-if)#ip add 192.168.2.100 255.255.255.0 R2(config-if)#no sh R2(config-if)#end R2#wr
R3#conf t R3(config)#int e0/0 R3(config-if)#ip add 192.168.1.1 255.255.255.0 R3(config-if)#no sh R3(config-if)#exit R3(config)#int e0/1 R3(config-if)#ip add 192.168.2.1 255.255.255.0 R3(config-if)#no sh R3(config-if)#end R3#wr
第二步:对R1、R2做进一步配置
因为此时R1、R2均为路由器,而为了使其充当成PC,我们需要输入以下命令即可:
Tips:相比于局域网内通信,局域网间通信加入了网关的概念,因此对于终端设备来说,如果想要跨网络通信就必须有网关,这里我们可以手动指定网关。
R1#conf t • R1(config)#no ip routing //关闭路由功能 • R1(config)#ip default-gateway 192.168.1.1 #指定网关地址为192.168.1.1
R2#conf t • R2(config)#no ip routing • R1(config)#ip default-gateway 192.168.2.1 # 指定网关地址为192.168.2.1
第三步:在R1的E0/0和SWE0/0之间的链路上选择设备右击,选择caputre,选择接口编号(如e0/0),此时会自动打开Wireshark,通过Wireshark,我们可以观察到流经该链路的数据包。
第四步:打开R1,通过ping命令,测试与LAN内192.168.1.101的连通性。
R1#ping 192.168.2.100
第五步:在Wireshark中观察敲完ping命令后回显的数据包
2.局域网间通信过程分析:
当R1要ping192.168.2.100时,由于目标地址和自己不在同一网络,同时也配置了默认网关,因此R1会直接将该数据包发送给网关,希望网关设备能够帮助自己转发数据包。此时R1是不知道192.168.2.100的MAC地址的,所以直接将向网关设备发送ARP请求,将网关的MAC地址作为将来数据包的目的MAC字段填入。
ping包的IMCP报文如下:
当网关收到这个数据包时,首先查看有没有目的IP地址的路由,发现是其E0/1接口下的直连路由,此时网关设备会对该数据包进行重封装。
网关设备对数据包进行重封装时,源目IP地址不变,目的MAC地址改为192.168.2.100对应的MAC地址,同时源MAC地址改为该数据包出接口的MAC地址,即E0/1。