计算机网络 - 主机、网桥、交换机、路由器之转发过程
计算机网络 - 主机、网桥、交换机、路由器之转发过程
准备
- OSI七层模型:
- 应用层
- 表示层
- 会话层
- 传输层
- 网络层
- 数据链路层
- 物理层
- 主机
主机有一块网卡 - 网桥
网桥工作在低2层,隔离碰撞域(因为链路被分开),有两个物理端口,连接两个数据链路(MAC寻址)。 - 交换机
多接口网桥,工作在低2层(2层交换机)。 - 路由器
路由器工作在低3层,隔离广播域(因为广播IP包不被转发),连接两个网络(IP寻址)。 - 路由表
路由表是路由器(主机也可视作一个路由器)用来进行IP包转发的依据。
1.目的网络与路由器直接相连,则直接交付。
2.目的网络为特定路由,则交付给特定路由(特定路由可为网络调试用途)
3.目的网络为表中路由,则交付给表中路由(下一跳路由)
4.目的网络没有路由,则交付给默认路由 - 默认网关
网关指一个网络通向另一个网络的一个出口(表现为一个IP地址)。默认网关也即默认的出口。对于主机,也即其默认的路由。主机在发出一个不是所在网络的包时,就可以考虑将包发送给默认网关。
Cisco Packet Tracer is wonderful!
本文多数结论来自于Cisco Packet Tracer 7.2.1仿真。
通信过程
几种示例场景:
例一
1.主机A和主机B通过交换机连接,A(192.168.1.2/24),B(192.168.1.3/24),即A、B属于同一网络。A向B发起PING:
分析:
- a 主机路由部分。由于目的地址192.168.1.3和A处于同一网络(192.168.1.3&*/24=192.168.1.0),因此IP包不需要交付路由,直接在所在网络找目的主机。
- b 查找192.168.1.3对应的MAC地址,没有找到,则发送ARP请求广播帧(mac=ffff.ffff.ffff,src=192.168.1.2,dst=192.168.1.3),发送至交换机。
- c 交换机转发广播帧至所有其它端口(只有一个,即主机B)
- d 主机B收到ARP广播帧,发现目的地址符合本机地址,则更新ARP表,同时发出ARP回复单播帧(mac=A的MAC地址,src=192.168.1.3,dst=192.168.1.2)。
- e A收到B的ARP回复帧,更新ARP表。继续PING流程,将ICMP包封装为帧,发送给B。此时整个流程基本完成(通信已畅通)。
根据目的IP查找arp表,如果没有则通过arp协议获取,找到目的IP对应的MAC地址,然后将IP包构造帧并通过链路(如网线)发送。交换机收到帧后,同样查表,找到目的MAC对应的物理端口,然后将帧转发到该端口。目的主机收到帧,通信完成。
例二
2.主机A和主机B通过交换机连接,A(192.168.1.2/24),B(192.168.2.2/24),即A、B处于不同的网络。A向B发起通信:
分析:
由于B的IP地址和A不在一个子网,故尽管B和A处于同一物理网络,但网络中没有路由进行网络转换,因此无法通信。以下为具体通信过程。
第一种情况,A没有配置默认网关。(实验表现为网关设置为0.0.0.0)
- a A准备ICMP包,构造帧时,发现目的IP地址和本机不在同一个子网,因此去查看默认网关信息,发现没有设置默认网关,因此将包丢弃。
第二种情况,A将默认网关配置为192.168.1.1。(不存在的网关)
- a A准备ICMP包,构造帧时,发现目的IP地址和本机不在同一个子网,因此查找默认网关信息。
- b 默认网关存在,因此准备将包转给默认网关。
- c 默认网关不在ARP表中,因此构造ARP请求广播帧。
- d 子网内没有主机,因此ARP广播帧没有回应,此时A的ARP请求超时,因此A的ICMP包被丢弃。
第三种情况,A将默认网关配置为192.168.2.2。(即直接配置为目的主机的IP地址)
- a 与第二种情况类似,区别为默认网关对应的ARP请求帧被主机B接受后,虽然目的IP符合,但是源IP和B不在一个子网内,因此该帧被B丢弃(也可以理解为B无法对不同子网的IP发送ARP回应)。
也即,通过交换机连接时,只能是同一个网络内的主机能相互通信。需要跨网络则必须通过路由器进行转发。
例三
3.主机A、B,各自通过交换机SA、SB,与路由器RA、RB相连,RA、RB通过通信线路SerialDCE1、SerialDCE2相连。
主机A:192.168.1.2/24,默认网关:192.168.1.1
主机B:192.168.2.2/24,默认网关:192.168.2.1
路由器RA:
Eth1:192.168.1.1/24,连接主机A
SerialDCE1:192.168.3.1/24,直连RB
路由表(静态配置):
目的网络 | 下一跳IP |
---|---|
192.168.2.0/24 | 192.168.3.2 |
路由器RB:
Eth1:192.168.2.2/24,连接主机B
SerialDCE1:192.168.3.2/24,直连RA
路由表(静态配置):
目的网络 | 下一跳IP |
---|---|
192.168.1.0/24 | 192.168.3.1 |
主机A向主机B发起PING:
- a 主机A构造ICMP报文,并封装成帧,发现目的IP地址192.168.2.2不是同一子网,因此需要查看默认网关。
- b 默认网关为192.168.1.1,查询ARP表,没有这一项。发送ARP查询广播帧,广播帧被转发至路由器R1的Eth1口。路由器R1判断符合,因此发送ARP回应帧。
- c A在收到ARP回应后,更新ARP表,同时ICMP报文构造的帧可以单播发送到路由器R1的Eth1口。
- d 路由器R1检查路由表并将包转发至SerialDCE1口。SerialDCE1数据链路层为HDLC协议,直接发送至R2的SerialDCE1口。R2收到包后,同样查询路由表,转发至R2的Eth1口。后续通信过程和A与R1通信过程类似。
posted on 2020-10-31 17:28 amazzzzzing 阅读(974) 评论(0) 收藏 举报