网络设备图
在计算器网络通信中,数据链路层与网络层的转发是必不可少的。
- A向D发送数据包
如果是A向D发送数据包,则数据包可以理解为大致这样:
知道对方的IP地址,还需要知道对方的MAC地址,这样数据链路层才能转发包,如何知道D的MAC地址,此时A需要先判断是否和D在同一个网络,假设A的子网掩码是255.255.255.0,与目标IP地址进行与运算,如果运算结果的网络部分和A的一致,则表示在同一个网络,此时需要发送ARP协议来广播IP地址是192.168.1.8的MAC是多少,此时交换机广播所有端口,会收到来自3号端口的相应,那么A就可以知道D的MAC地址了。封装好数据包之后,发送给交换机,交换机内部维护了一张MAC地址与端口的映射表,知道了MACD这个地址需要从3号端口发出去,D就可以收到数据了。
- 路由器
引入路由器主要是能实现在不同网络之间做数据包发送, 一台路由器可以同时连接多个网络,如果不引入路由器,交换机能维护的MAC是有限的,一台交换机无法连接更庞大的网络。
- A向G发送消息
首先还是要知道G的IP地址,IP地址为192.168.2.6,此时A还是先判断G是否与自己在同一个子网内,
192.168.2.6 & 255.255.255.0 = 192.168.2.0 ,与A不是在同一个子网内,这个时候A就要向网关发送请求了,网关可以配置。
假设这里的网关IP配置的192.168.1.0,网关IP可以理解为一个网络出口的IP,只有数据包到达这个IP才能做转发。
知道要发送数据包到网关,也知道网关的IP是192.168.1.0,但是要发送包还需要知道MAC地址,如何获取网关的MAC地址,这里同样还是要发送ARP广播,交换机从5号口发送出去广播,路由器的1号端口发现IP是自己的1.0 则将自己的MAC地址返回,此时A主机就知道了网关的MAC地址,这时候就可以将数据包发送了。
数据发送给交换机,交换机根据数据链路层的MAC地址从5号口发出去到达路由器,路由器解析网络层协议,看目标ip地址是192.168.2.6,此时路由器根据自己的路由表(根据目标IP与子网掩码)发现数据包需要从2号口发出去,但是此时依然有一个问题,既然要发包,数据包的MAC地址依然是路由器的,此时到达交换机后就会发生错误,为了避免这个问题,路由器需要进行ARP广播,询问IP地址是192.168.2.6的MAC地址是多少,此时G响应了自己的MAC地址。路由器会替换数据链路层的MAC地址。
然后继续将数据包从2号口发出去,到达交换机,交换机一看是发给G的,则从5号口发出去,此时就完成了A到G的通信。