彻底搞懂两台电脑在“不同网络“下完整通信全过程

什么是嵌入式?一篇文章让你彻底搞懂! 阅读详情

场景设定

主机A(内网):IP 192.168.1.10,   MAC : MAC-A,

网关:192.168.1.1(路由器R1内网口)

主机B(另一局域网):IP 202.99.88.77,MAC : MAC-B,

网关:202.99.88.1(路由器R2内网口)

两个主机不在同一个网段,中间经过路由器R1、R2。

核心思想一句话:IP全程标识源主机、目的主机(端到端不变);MAC只负责当前一段链路,每经过一台路由器,二层MAC地址全部重写。


第一步:主机A判断目标主机是否在同一网段

主机A要发数据给B(192.168.1.10 → 202.99.88.77) A拿自己的子网掩码,和源IP、目的IP分别做与运算:

  • 源网络:192.168.1.0

  • 目的网络:202.99.88.0 👉 网络号不一样,判断:B不在同一个局域网!

规则:不同网段,数据包不能直接发给B,必须发给默认网关。 所以A现在需要得到网关192.168.1.1的MAC地址。

第二步:ARP请求,获取网关MAC

主机A发送ARP广播帧:

问:谁是192.168.1.1?请把你的MAC告诉我! 同一局域网内所有设备收到ARP。路由器R1内网口IP匹配,回复ARP单播应答: 我是192.168.1.1,我的MAC是 MAC-R1-in

主机A把【192.168.1.1 ↔ MAC-R1-in】存入ARP缓存表。

第三步:主机A封装数据包(网络层+数据链路层)

  1. 网络层封装(生成IP数据报)

    • 源IP:192.168.1.10

    • 目的IP:202.99.88.77

    ✅ IP地址从头到尾不会变(不考虑NAT场景)

  2. 数据链路层封装(生成帧)

    • 源MAC:MAC-A

    • 目的MAC:MAC-R1-in(网关MAC,不是主机B的MAC!重点考点)

    • FCS校验尾

重点区分: 目的IP=最终要找的主机;目的MAC=下一跳设备。

封装完成,帧交给物理层,转换成比特流,发送到局域网。

第四步:路由器R1收到帧,解封装 + 路由查找

  1. 数据链路层解封装 R1网卡收到比特流,组装成帧。FCS校验,校验无误。 剥掉二层帧头、FCS尾部,取出里面的IP数据报。

到此,二层MAC信息被丢弃,不再保留。

  1. 网络层处理 读取IP首部:目的IP是202.99.88.77。 查询R1自身路由表,找到去往202.99.88.0网段对应的下一跳(路由器R2外网口)。

  2. 重新封装二层帧 IP数据报不变,重新封装新的数据链路层帧:

  • 源MAC:R1外网口MAC MAC-R1-out

  • 目的MAC:R2外网口MAC MAC-R2-out

IP仍然是:源192.168.1.10,目的202.99.88.77,保持不变。

新帧发送给路由器R2。

第五步:路由器R2接收帧,解封装、路由查找,再次封装

  1. R2链路层解封装:拆掉帧头FCS,取出IP数据报。

  2. 读取目的IP:202.99.88.77。查路由表,发现该网段是R2直连内网。

  3. R2需要知道主机B的MAC地址,发送ARP广播到自己内网:

谁是202.99.88.77?请回复MAC。 主机B收到ARP请求,回复ARP单播,告知MAC-B。

  1. R2重新封装帧:

  • 源MAC:MAC-R2-in(R2内网口MAC)

  • 目的MAC:MAC-B

  • IP依旧不变!源IP192.168.1.10,目的IP202.99.88.77

帧发送给主机B。

第六步:主机B接收帧,逐层解封装

  1. 主机B的数据链路层:校验FCS,拆掉帧头和FCS,取出IP数据报。

  2. 网络层:读取IP首部,目的IP和本机IP匹配。剥掉IP首部,取出上层传输层数据,交给TCP/UDP。

  3. 传输层根据端口号,把数据交给对应的应用程序。

✅ 至此,A到B的数据发送完成。

回复过程:B发给A是反向执行一遍整套流程,源IP、目的IP互换;每一跳MAC地址再次重新更换。

设计思想:为什么要IP+MAC双层架构?

很多人疑惑:为什么不只用一个地址完成通信?官方为什么设计双层寻址?

这是计算机网络最经典的分层取舍设计,权衡了灵活性与传输效率:

1. 只用MAC的致命缺陷

MAC是扁平无层级的编号,就像所有人的身份证号乱序排列,没有地域区分。路由器无法通过MAC判断设备所在网络,无法实现路由转发,只能局限小局域网使用。且MAC固定,无法适配网络拓扑变动。

2. 只用IP的致命缺陷

IP是逻辑地址,可随时修改,没有硬件绑定。同一个网段内,无法精准定位具体设备,无法完成相邻节点的精准传输,缺少底层落地传输能力。

3. 双层架构的完美权衡

IP负责宏观路由:靠层级结构搞定“全网找路”,实现跨网段传输,灵活适配网络变更;

MAC负责微观交付:靠硬件唯一标识搞定“隔壁交付”,保证每一段链路的精准传输;

分层设计让路由逻辑和链路传输逻辑解耦,各自独立迭代、互不影响,这是互联网能够全球组网的核心基石。

单臂路由实战:从原理到配置,彻底搞懂跨VLAN通信 在计算机网络中,VLAN(虚拟局域网)技术通过逻辑隔离广播域,有效提升了网络的安全性和管理效率。其核心原理是基于IEEE 802.1Q协议为数据帧打上标签,实现二层流量的隔离。然而,当不同VLAN(即不同IP网段)的主机需要相互通信时,就必须借助三层(网络层)的路由功能。单臂路由(Router-on-a-Stick)作为一种经典的低成本解决方案,清晰地揭示了二层交换与三层路由的协作边界。它通过在路由器的一个物理接口上创建多个逻辑子接口,并利用`dot1q termination vid`命令终结特定VLAN 阅读详情

相关推荐

彻底搞懂“大小端”存储机制

本文介绍了计算机数据存储中的大端(Big-Endian)和小端(Little-Endian)两种字节序模式。小端模式将低位字节存储在低地址,主要用于PC电脑;大端模式将高位字节存储在低地址,符合人类阅读习惯,是网络通信标准。通过C代码示例演示了如何检测系统字节序,并展示了网络通信中必要的字节序转换函数(htonl/htons)。文章强调字符串作为单字节序列不受字节序影响,并总结了两种模式的存储规则、应用场景及转换方法。理解字节序对跨平台数据传输和网络编程至关重要。

Web安全工具库 424

彻底搞懂Docker网络原理之跨主机通信

一、背景 在前一篇文章彻底搞懂Docker网络原理之单机通信中,列举了在单主机场景下docker容器之间的通信方式。这篇文章主要介绍跨主机的docker容器之间的通信方式。 二、准备 虚拟机 笔者在Mac上通过docker-machine创建了3个虚拟机,前提是已经安装好docker engine、docker machine、visualbox,如果已经有现成的服务器可以跳过这步 $ docke...

小方的专栏 4288

抓包实战:用VMware和Wireshark搞懂TCP/IP通信与三层网络架构

TCP/IP分层模型是现代网络通信的基石,数据从应用层到物理层需经历封装、寻址与转发。理解每一层的职责,尤其是交换机按MAC地址转发、路由器按IP地址路由,以及跨网段时MAC地址的改写机制,是网络排障和架构设计的基础。通过抓包工具分析真实流量,能够直观看到ARP广播、TCP握手和网关转发过程,让抽象协议变得可观测、可验证。这种实践能力对网络运维、网工认证学习以及开发人员定位应用层问题都极具价值。本文基于Windows宿主机搭配VMware Workstation虚拟化环境,以三台虚拟机模拟接入层、汇聚层和服

weixin_30582943的博客 225

一文搞懂:两台电脑“隔空对话”到底是怎么做到的?

本文系统对比 OSI七层模型与 TCP/IP五层模型,揭示其本质区别在于 OSI的表示层、会话层功能被TCP/IP合并至应用层实现(如HTTPS加密/会话管理)。通过分层职责对比表及"访问百度"案例解析,阐明工程实践中以TCP/IP五层为核心(路由器处理网络层IP路由、交换机处理数据链路层MAC寻址),而OSI七层仍是网络理论教学与面试的重要基础,二者共同构成理解网络通信分层的双视角。

蜗牛老师,专注编程领域 1133

CentOS7下快速修复libssl.so.1.1缺失问题(附腾讯云镜像加速下载)

本文详细介绍了在CentOS7系统中快速修复libssl.so.1.1缺失问题的工程化实践方案。通过编译安装OpenSSL 1.1.x版本、配置动态链接器及创建符号链接等步骤,有效解决共享对象文件缺失问题,并提供了腾讯云镜像加速下载的优化方案,帮助开发者高效部署现代应用。

weixin_33711647的博客 372

M系列芯片MacBook上UTM虚拟机部署达梦DM8的避坑指南

本文详细介绍了在M系列芯片MacBook上使用UTM虚拟机部署达梦数据库DM8的完整流程与避坑指南。针对ARM架构环境,重点解决了虚拟机选择、麒麟系统安装、系统调优及DM8命令行安装中的常见问题,为开发者提供了稳定可靠的国产数据库本地测试方案。

weixin_28455801的博客 460

udp搜索不同网段设备_彻底搞懂计算机网络通信设备与协议

一、前言二、设备2.1 调制解调器2.2 中继器2.3 网卡2.4 交换机2.5 路由器三、协议3.1 DNS3.2 ARP3.3 DHCP3.4 NAT3.5 ICMP四、通信4.1 判断是否在同一网段4.2 同网段不同主机通信4.3 不同网段不同主机通信五、结束语❝作者:薛勤(赞赏账户名)微信公众号:代码艺术未经许可,禁止转载!❞一、前言面试时回答计算机网络这块的问题,很对应试者回答...

weixin_39552768的博客 1210

HP SPP download

是一个全面的系统软件和固件更新解决方案,以单个ISO映像的形式提供。该解决方案使用智能更新管理器(SUM)作为部署工具。

极致,细节 9863

[特殊字符] 数据包是如何“打包”和“拆包”的?一文搞懂网络通信中的封装与解封装

封装:发送方将原始数据从上层逐层“打包”,添加各层协议头部,形成可在物理网络中传输的帧。解封装:接收方从下层逐层“拆包”,剥离协议头部,还原出原始数据。这个过程遵循分层模型(如 OSI 七层模型 或 TCP/IP 四层模型),每一层只关心自己的“包裹单”(协议头),不关心里面装了什么。✅一句话总结发送 = 层层加码,接收 = 层层剥皮。价值说明网络排错当网络不通时,可逐层检查(如:能 ping 通?说明 IP 层通;打不开网页?可能是 TCP 或应用层问题)安全防护。

m0_67420754的博客 9967

AGX Orin 部署PyTorch与Torchvision 2026避坑指南

本文提供了2026年在AGX Orin开发板上部署PyTorch与Torchvision的详细避坑指南。针对ARM64架构和JetPack 6.2系统,重点解决了Python 3.10环境配置、官方wheel包安装、torchvision源码编译等关键步骤,并分享了常见问题解决方案和性能优化技巧,确保深度学习环境稳定运行。

sky77的博客 753

DSPy 入门: 再见提示,你好编程

DSPy("Declarative Self-improving Language Programs (in Python)",发音为 "dee-es-pie")[1] 是斯坦福大学 NLP 研究人员开发的 "基础模型编程 "框架。它强调编程而非提示,并将构建基于 LM 的管道从操作提示转向编程。因此,它旨在解决构建基于 LM 应用程序时的脆弱性问题。DSPy 还将程序的信息流与每一步的参数(提示和 LM 权重)分离开来,为构建基于 LM 的应用程序提供了更系统的方法。

具身机器人和通用AI 3488

从网络通信的演进过程彻底搞懂Redis高性能通信的原理

我们一直说Redis的性能很快,那为什么快?Redis为了达到性能最大化,做了哪些方面的优化呢? 在深度解析Redis的数据结构 这篇文章中,其实从数据结构上分析了Redis性能高的一方面原因。 在目前的k-v数据库的技术选型中,Redis几乎是首选的用来实现高性能缓存的方案,它的性能有多快呢? 根据官方的基准测试数据,一台普通硬件配置的Linux机器上运行单个Redis实例,处理简单命令(O(n)或者O(logn)),QPS可以达到8W,如果使用pipeline批处理功能,QPS最高可以达到10W。 Re

跟着Mic学架构 422

《民机适航入门指南:从法规学习到项目实践的全面解析》

适航(Airworthiness)是指航空器、其发动机、螺旋桨和其他部件在规定条件下,能够安全飞行并满足有关航空法规规定的条件。简而言之,适航代表了航空器在任何时候都能安全运营的状态。适航在民用航空领域尤为关键,因为飞机必须经过严格的适航认证才能投入商用。这些认证的目标是确保飞机能够在广泛的运行条件下保持飞行安全,从而保护乘客、机组和地面人员的生命财产安全。适航法规覆盖了飞机的整个生命周期,包括设计、制造、测试、运营、维护和报废。

qq_41854911的博客 995

虚拟机网络配置踩坑记:为什么不同网段的IP还能通信?带你从底层源码,深入浅出一篇搞懂 NAT 与虚拟网络原理

本文科普了NAT技术,并解释了为什么“不同子网的ip”能通信。并给出了虚拟机无法联网时的排查以及解决办法。先科普,再解决!!! 还做了不依赖路由器,仅用一台电脑实现局域网共享上网实验。 如果看完以上觉得还不过瘾的同学,和我一样对他的代码底层逻辑还感兴趣的可以接着看这一部分。但是如果你只是冲着解决问题的想法,看到这里即可,直接跳到第四节,因为这部分内容需要一定的知识储备。

肖肖的博客 1907

机器学习与深度学习基础概念

本篇主要介绍机器学习主要概念,包括不限于标签、特征、样本、训练、模型、回归模型、分类模型、泛化、过拟合、预测、平稳性、训练集、验证集、测试集。

专注大数据与人工智能技术分享,欢迎私信加群互相学习! 3万+

Qt/C++编写自定义控件42-开关按钮

一、前言 从2010年进入互联网+智能手机时代以来,各种各样的APP大行其道,手机上面的APP有很多流行的元素,开关按钮个人非常喜欢,手机QQ、360卫士、金山毒霸等,都有很多开关控制一些操作,在Qt widgets应用项目上,在项目中应用些类似的开关按钮,估计也会为项目增添不少新鲜感。 总结了大部分的开关按钮控件,基本上有两大类,第一类是纯代码绘制,这种对代码的掌控度要求比较高,但是灵活性比较好...

Qt/C++视频监控/推流/物联网/大屏系统/自定义控件/UI定制/输入法 3330

从网络通信的演进过程彻底搞懂Redis高性能通信的原理(全网最详细,建议收藏)

阿里伤透我心,疯狂复习刷题,终于喜提offer 哈哈~好啦,不闲扯了1、JAVA面试核心知识整理(PDF):包含JVMJAVA集合JAVA多线程并发,JAVA基础,Spring原理微服务,Netty与RPC,网络,日志,ZookeeperKafkaRabbitMQ,Hbase,MongoDB设计模式负载均衡数据库一致性哈希JAVA算法数据结构,加密算法,分布式缓存,Hadoop,Spark,Storm,YARN,机器学习,云计算共30个章节。2、Redis学习笔记及学习思维脑图。

2401_84439674的博客 788

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

从零入门数据通信网络:搞懂网络的底层逻辑

这是一篇数据通信网络的入门科普,用通俗的类比拆解了网络的底层逻辑:从通信的基础概念,到以寄快递的类比讲清信息传递的过程,再逐一讲解交换机、路由器等网络设备的作用,同时梳理了不同规模网络的区别、常见的网络拓扑,还介绍了网络工程师的成长路径,帮零基础读者快速建立对数据通信网络的完整认知。

ICT_gogoT的博客 568

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

一文揭秘TCP连接:从三次握手到数据传输,零基础搞懂网络通信基石

TCP(传输控制协议)连接是两台计算机之间建立的可靠数据通道,确保数据有序、完整地传输。fill:#333;color:#333;color:#333;fill:none;虚拟通道你的电脑服务器核心特点面向连接:必须先“握手”建立通道可靠传输:数据丢失自动重传有序到达:乱序数据重组排序流量控制:智能调节发送速度UDP像寄明信片→ 扔出去就不管了TCP像打电话→ 确认接通后才聊天双方需确认彼此的发送能力和接收能力都正常!步骤详解SYN:客户端发送“接头请求”(SYN=1)SYN+ACK。

全栈开发工程师 1483

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Linux网络基础:从零开始,搞懂你的电脑是怎么上网的

本文深入浅出地讲解了计算机网络的基础知识。从局域网(LAN)的工作原理开始,介绍了IP地址、交换机的作用,以及如何通过路由器连接外网。重点解析了子网划分、NAT地址转换、防火墙规则和端口管理等核心概念,并详细说明了DNS域名解析的全过程。文章还提供了Linux系统下常用的网络排障命令,帮助读者快速定位和解决网络问题。通过清晰的图示和生动的比喻,让复杂的网络原理变得易于理解,为开发者和运维人员提供了实用的网络基础知识参考。

医药/LIMS实验室IT · Office自动化 · .NET+Vue全栈 · 鸿蒙实战 · 欢迎技术交流 1343

Wireshark抓包实战:从MAC地址到二层三层交换,彻底搞懂通控通信

对比维度二层交换(L2)三层交换(L3)寻址依据MAC地址(48位)IP地址(32位)+ 路由表转发决策查MAC地址表,固定端口转发查路由表,决定下一跳IP作用范围同一广播域(同一子网)跨网段(全网)能否跨网段❌ 不能✅ 能典型设备二层交换机路由器、三层交换机问题答案Wireshark能抓到对端MAC吗?能,但抓到的是“下一跳”设备的MAC,不一定是最终目标二层交换靠什么寻址?MAC地址表(只认MAC,不认IP)三层交换靠什么寻址?路由表(查IP网段,决定下一跳)二层能跨网段吗?

xjw的博客 324

一文搞懂RS-485通信协议

是一种通用的通信标准,广泛用于数据采集和控制应用中。它的主要优点之一是它允许将多个 RS485 设备放在同一条总线上,这使得多个节点可以相互连接。RS-485是美国电子工业协会(EIA)在1983年批准了一个新的平衡传输标准(balanced transmission standard),EIA一开始将RS(Recommended Standard)做为标准的前缀,不过后来为了便于识别标准的来源,已将RS改为EIA/TIA。

qq_52049228的博客 3万+

一篇文章带你彻底搞懂IP地址(初级)

本篇文章讲解了所有初级IP地址的知识,傻瓜式讲解,超级详细

网络安全小菜鸡 5987

Docker 网络原理:bridge/host/overlay + namespace,彻底搞懂容器通信

容器之间为什么能互相访问?-p 端口映射底层是什么原理?为什么 Docker Compose 里直接写服务名就能找到对应容器?本文从 Linux network namespace 和 veth pair 入手,深入讲解 Docker 三种网络模式(bridge/host/overlay)的底层实现,同时介绍 iptables、SNAT、DNAT 的作用,并结合实战演示如何用自定义网络实现容器间的通信隔离。

2301_80127826的博客 616
上一篇: np.array函数详解--NumPy 零基础教学|全程手写代码
下一篇: 为什么互联网还需要IP地址?明明已经有MAC地址了啊!!!
王_teacher
博客等级 码龄9年 118粉丝 51原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值