跨网络的通信过程、路由的作用以及默认网关

如下网络拓扑图,交换机0所在的网段为192.168.1.0/24,交换机1所在网段为192.168.2.0/24,且各自有2台主机:

假设PC0(192.168.1.10/32)要跟PC4(192.168.2.11/32)通信,如何实现?

中间就需要一个路由器的东西。我们知道,PC0发出的数据包的目的地址是跨网段的,也就是需要出网关网关 是数据包出所在网段的出口。网关地址一般是所在网段的前一两个地址,且网关一般都集成在路由器中,称为下一跳 。而第一跳的路由地址又被称为默认网关。

子网中的每一台主机都需要配置好默认网关,即下一跳:PC0的默认网关为192.168.1.1/32、PC4的默认网关为192.168.2.1/32。这样子PC0要发给PC4的数据包会先抵达路由器的192.168.1.1/32地址的网卡,路由器拿到该数据包后,将其从192.168.2.1/32的网卡发送出去。也就是说,路由器在中间负责中转数据包

PC0(192.168.1.10/32)与PC4(192.168.2.11/32)通信过程中的IP与MAC变化:

  • PC0发送数据包给PC4时,数据包先由PC0发给路由器,再由路由器发送给PC4

数据包由PC0发给路由器时,目的IP为PC4的IP(192.168.2.11/32)目的MAC为路由器的192.168.1.1/32网卡的MAC,源IP为PC0的IP(192.168.1.10/32),源MAC为PC0的MAC

数据包由路由器发送给PC4时,目的IP为PC4的IP(192.168.2.11/32)目的MAC为PC4的MAC地址,源IP为PC0的IP(192.168.1.10/32),源MAC为路由器的192.168.2.1/32网卡的MAC

  • PC4发送数据包给PC0时,数据包先由PC4发给路由器,再由路由器发送给PC0

数据包由PC4发送给路由器时,目的IP为PC0的IP(192.168.1.10/32)目的MAC为路由器的192.168.2.1/32网卡的MAC,源IP为PC4的IP(192.168.2.11/32),源MAC为PC4的MAC地址

数据包有路由器发送给PC0时,目的IP为PC0的IP(192.168.1.10/32)目的MAC为PC0的MAC,源IP为PC4的IP(192.168.2.11/32),源MAC为路由器的192.168.1.1/32网卡的MAC

从上面可以看出,在单向通信过程中源I P和目的IP的地址是不变的,而MAC地址是不断变化的

在如上拓扑图中,PC0还是要发数据包给PC4,当数据包抵达路由器1时,路由器1并不知道通往PC4的路径,于是需要在路由器1上的路由表上添加路由规则,使其知道应该将数据包发往192.168.2.0/24网段的地址,需要走往哪一个路由器,这里是路由器2。其他路由器同理,直至到目的主机PC4。

网络畅通的条件是有去有回,所以当数据包从PC4返回PC0时,沿途的所有路由器都需要数据包的转法路径,也就是配置好返回的路由,使其知道数据包发往192.168.1.0/24网段的地址需要走往哪一个路由器。

人为添加的路由称之为静态路由 ,但当路由器连接的网段太多时不方便配置静态路由,可以让路由器自行学习得到数据包的下一个中转地址,称之为动态路由

源码等资料获取方法

各位想获取源码等教程资料的朋友请 点赞 + 评论 + 收藏 ,三连!

三连之后我会在评论区挨个私信发给你们~

相关推荐
biter008837 分钟前
Ubuntu 22.04 有线网络时好时坏?最终解决方案
linux·网络·ubuntu
郝学胜-神的一滴1 小时前
现代OpenGL窗口管理:GLFW从入门到实战
开发语言·c++·程序人生·图形渲染·个人开发
世界尽头与你2 小时前
SSL 签名相关漏洞
网络·安全·ssl
g***B7382 小时前
Rust在网络中的Tokio
开发语言·网络·rust
xu_yule3 小时前
网络和Linux网络-5(应用层)HTTP协议(方法+报头+状态码)
linux·网络·网络协议·http
报错小能手3 小时前
TCP/UDP面经整理
网络·tcp/ip·udp
xxp43213 小时前
Qt 网络编程 网络下载
网络·qt·php
xuchaoxin13754 小时前
cdn节点代理的副作用@fail2ban对接cdn封锁恶意请求ip@fail2ban封锁ip有效性问题
运维·网络·cdn·cloudflare
西幻凌云4 小时前
了解计算机网络的“物理根基”——物理层与数据链路层
网络·网络协议·计算机网络·数据链路层·物理层
白狐_7987 小时前
网络基础核心问题深度解析:从IP/MAC到IPv6与路由配置
网络·tcp/ip·macos