当前位置: 首页 > news >正文

报文的路由过程

路由转发过程 

记住路由转发过程结论:报文ip是不变,mac改变。

  1. mac地址在同一个广播域传输过程中是不变的;在跨越广播域的时候会发生改变的;
  2. IP地址在传输过程中是不会改变的(除NAT的时候)。

        ip地址本质上是终点地址,目的ip地址不会变。而mac地址是下一跳地址,每经过一次路由器都会发生变化(mac地址起到了记录下一跳的作用)

        mac地址在链路层通过以太网协议封装,链路层只负责设备到设备之间的通信,这层是真正意义上的通信,所以称为物理通信。

 

路由表

ARP协议:通过报文的目标IP,获得下一跳的目标MAC。完成报文封装。

一个主机如何获取另一个主机的MAC地址呢?

这就需要用到ARP(Address Resolution Protocol)协议,它是一种用于根据IP地址获取MAC地址的协议。ARP协议的工作原理和过程如下:

当一个主机要发送数据给另一个主机时,首先会检查自己的ARP缓存表(ARP cache),看是否已经有目标主机的IP地址和MAC地址的对应关系。如果有,则直接使用该MAC地址封装帧并发送出去。

如果没有,则需要发起ARP请求(ARP request),向局域网内广播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及目标主机的IP地址。该帧的目标MAC地址为广播地址FF-FF-FF-FF-FF-FF,表示所有设备都要接收该帧。

局域网内的所有设备都会收到该ARP请求帧,并根据其中的目标IP地址判断是否是自己。如果不是自己,则丢弃该帧,并且将发送者的IP地址和MAC地址加入自己的ARP缓存表中。如果是自己,则回复一个ARP应答(ARP reply),向发送者单播一个特殊的帧,其中包含了自己的IP地址和MAC地址,以及发送者的IP地址。该帧的目标MAC地址为发送者的MAC地址。

发送者收到该ARP应答帧后,就知道了目标主机的MAC地址,并将其加入自己的ARP缓存表中。然后就可以使用该MAC地址封装帧并发送出去。
————————————————
原文链接:https://blog.csdn.net/weixin_43025343/article/details/130840277

路由转发过程-案例(有问题,未完善):

假设拓扑图是这个样子,B1和B2是路由器B上的两个接口(LAN、WAN口),C1和C2是路由器C上的两个接口(WAN、LAN口),A和E是PC,由主机A向主机E发送数据包。

A-----(B1-B2)-----(C1-C2)-------E

么在主机A形成的数据包的目的IP就是E的IP,源IP就是主机A的IP地址,源MAC地址就是A的MAC地址,此时目的(下一跳)MAC还不知道那么A首先要在局域网中通信(如果目标机在同一局域网最好)。

根据路由转发的宏观思路,A需要先找到目标IP所在的网段。通过网络层,先将报文中目标IP跟自身路由表第一条路径的子网掩码按位与得到网络号,这么做的目的是判断目标IP所处子网(网关路由) 是否等于 当前路由器直接相连的子网。如果是,就通过本机ARP表,获得子网中目标IP机的MAC地址,封装好报文广播在子网中,目标机直接比对MAC就收到包了;依次比对如果都不是,就把网关MAC直接封装到报文,广播到子网中。

该局域网中的每一台主机都会收到这个报文。先对这个报文进行解包取出里面的目的MAC地址,一比对发现MAC地址不对,于是直接将这个报文丢弃。最终只有路由器B在数据链路层解包取出MAC地址,一比对发现这个报文是给自己的。于是再次向上交付,到网络层解析出目的IP。路由器比对自己的路由表,判断下一跳网段,决定要将报文发送给C设备。此时需要再次向下封装,换上新的目的MAC地址,由B发给路由器C。

路由器C接收到数据包后和B做的操作是一样的,路由器比对自己的路由表,发现C的IP与目的IP是一致的,最终源MAC地址变成C2的MAC地址,目标MAC地址变成主机E的MAC地址,然后发送给主机E,这样E就收到了这个数据包。

当E回复数据包的时候,就是把收到的数据包的源IP地址(主机A的IP地址)和源MAC地址(接口C2的MAC地址)作为他的目标IP和目标MAC地址。

转:      路由转发过程的IP及MAC地址变化-chinaltang-ChinaUnix博客

非同一局域网下两台内网设备之间的网络通信

两台电脑都处在自己的一片局域网下,ip地址可能是碰巧“同网段”,也可能不同网段。这种情况下单纯只靠两个内网ip显然是不能准确到达对方主机的。很可能寻到错误的地址。

我们可以很毫无差错的从自己的主机访问到处于公网的一台服务器,因为公网ip地址的唯一性。这个过程中,你的报文会经过自己内网的路由器(报文中把源ip,从你自己的替换成路由器的WAN ip;并且路由器记住一个映射关系,你是哪个LAN的(猜测),你的局域ip是多少。这样将来报文返回的时候,里面的目的ip是你路由器,你应该要知道把这个报文给内网里面的谁),可能会穿过路由器所在的更大的内网,最终到达一个公网节点,最后到达目的服务器。【这样也就实现了我们可以和处在公网中的“中介”服务器互发消息】

这样就可以在上面的方式,通过同一台公网中介转发,同一个端口的方式,实现两个来自不同内网的主机通话。

01、处于不同局域网下的Socket通信(配置)_c++socket可以连接不在一个局域网中的ip地址吗-CSDN博客文章浏览阅读6.7k次,点赞14次,收藏85次。目录原理一、公网IP二、frp配置1、在服务器上配置2、在客户端配置配置安全组参考学习的网站原理拥有一台有公网IP的云服务器作为中转站,将局域网下的电脑将数据信息发送给中转的服务器,然后这个中转的服务器将收到的数据转给另外一台电脑,这样就可以实现两台电脑之间的互相通信。原因:我们可以实现在局域网下的通信而不能在不是同一局域网下的通信是因为,不同的私网之间是无法通信的,我们使用的192.168.x.x都是私网,但是所有的私网却都可以和公网ip直接通信的。所以..._c++socket可以连接不在一个局域网中的ip地址吗https://blog.csdn.net/weixin_44917390/article/details/106685219?ops_request_misc=&request_id=&biz_id=102&utm_term=TCP%E5%AE%9E%E7%8E%B0%E5%9C%A8%E4%B8%8D%E5%90%8C%E5%B1%80%E5%9F%9F%E7%BD%91%E4%B8%8B%E7%9A%84%E4%B8%A4%E5%8F%B0%E7%94%B5%E8%84%91%E7%BD%91%E7%BB%9C%E9%80%9A%E4%BF%A1%20(c/c++)&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-4-106685219.142%5Ev96%5Epc_search_result_base7&spm=1018.2226.3001.4187

家庭路由器的常见组网方式

https://ask.zol.com.cn/x/4745715.html

如果电脑是通过路由器上网,本地连接的IP地址是内网IP,它与路由器的LAN IP 同网段,通过路由器的LAN IP(也叫网关)与上一级路由器通讯。
一、电脑通过路由器上网,基本链路如图:
1、电脑IP地址:192.168.0.100为内网IP
2、路由器LANIP:192.168.0.1同样为内网IP,wanIP :200.200.200.200为公网IP即外网IP
3、电脑在互联网中使用IP :200.200.200.200为出口
 


二、部分营运商IP资源不足,一般常用搭建城域网共享互联网方式,如图:
1、电脑IP地址:192.168.0.100为内网IP
2、路由器LANIP:192.168.0.1同样为内网IP,wanIP :10.1.2.3为城域网IP。
3、电脑在互联网中使用IP :200.200.200.200为出口,与运营商的其它用户共用IP。
 


三、路由器做为家庭的桥接设备,链路与第二种相似,只是营运商路由器换成了家庭的主路由器。

主路由器和路由器是一个局域网的。桥接模式(bridge),是把副路由的DHCP功能关闭了的,连接副路由器的设备自然是使用的主路由分配的IP地址,连接副路由的设备的IP和连接主路由的IP它们依旧是一个网段,可以无障碍地互相访问的。


四、宽带为静态IP方式,营运商提供外网IP地址,电脑配置本地连接的IP地址即可上网,那这个IP地址就是外网地址,不再是内网地址。
 

二层交换机与三层路由器

二三层转发的二三层?

一层交换机:只支持物理层协议。
  二层交换机:支持物理层和数据链路层协议。
  三层交换机:支持物理层,数据链路层及网络层协议。
  也就是说,二层交换机主要执行二层数据链路层(但也参与物理层功能的执行,即一层交换机)的功能,所以叫二层交换机。
  如集线器是一层设备,因为只执行物理层的功能。

  从ISO/OSI的分层结构上说,交换机可分为二层交换机、三层交换机等,没有一层交换机的说法。
  二层交换机指的就是传统的工作在OSI参考模型的第二层--数据链路层上交换机,主要功能包括物理编址、错误校验、帧序列以及流控。

        应该不具有分ip功能吧?
  三层交换机是一个具有三层交换功能的设备,即带有第三层路由功能的第二层交换机,但它是二者的有机结合,并不是简单地把路由器设备的硬件及软件叠加在局域网交换机上。

虚拟网卡:

虚拟网卡_虚拟网卡是什么-CSDN博客

网络访问防火墙原理?

参考:

以太网帧格式 以及 认识MAC地址(局域网的通信原理)_目的mac地址-CSDN博客

浅谈IP地址和MAC地址的区别,路由转发过程_路由器通信是通过ip还是mac-CSDN博客

既然有了IP地址,为什么还需要MAC地址?两者到底有啥区别,深入分析后终于明白了!_为什么要有mac地址_wljslmz的博客-CSDN博客

【精选】路由转发的过程-CSDN博客

以太网帧格式 以及 认识MAC地址(局域网的通信原理)_目的mac地址-CSDN博客

【精选】认识ARP协议_源mac地址和目的mac地址怎么填-CSDN博客

有空时候消化下这几个 :?

【精选】【虚拟机】桥接模式下,让虚拟机和宿主机相互ping通(对比NAT模式)_桥接模式主机和虚拟机互ping-CSDN博客

ubuntu网络配置(桥接模式, nat模式, host主机模式)_桥接模式和nat模式过程u.untu-CSDN博客

路由模式和桥接模式的区别_道系 青年的博客-CSDN博客

20张图说清楚什么是 IP 协议 - 知乎 

相关文章:

报文的路由过程

路由转发过程 记住路由转发过程结论:报文ip是不变,mac改变。 mac地址在同一个广播域传输过程中是不变的;在跨越广播域的时候会发生改变的;而IP地址在传输过程中是不会改变的(除NAT的时候)。 ip地址本质上是…...

【CPP】类和对象

1- Classes and Objects Structures A struct in C is a type consisting of a sequence of data membersSome functions/Statements are needed to operate the data members of an object of a struct type 不不小心操作错误,不小心越界 Classes You should b…...

【多线程面试题二十】、 如何实现互斥锁(mutex)?

文章底部有个人公众号:热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享? 踩过的坑没必要让别人在再踩,自己复盘也能加深记忆。利己利人、所谓双赢。 面试官:如何实现互斥锁&#xf…...

hypercube背景设置为白色,绘制高光谱3D立方体

import scipy pip install wxpython PyOpenGL和Spectral需要本地安装 可参考链接https://blog.csdn.net/qq_43204333/article/details/119837870 参考:https://blog.csdn.net/Tiandailan/article/details/132719745?spm1001.2014.3001.5506Mouse Functions:left-cl…...

Visual Studio(VS)C++项目 管理第三方依赖库和目录设置

发现很多程序员存在这种做法:把项目依赖的第三方库的lib和dll放在项目目录下,或者复制到输出目录,因为每种配置都有不同的输出目录,所以要复制多份(至少包括Debug和Release两个输出目录),这些做…...

leetCode 2578. 最小和分割 + 排序 + 贪心 + 奇偶分组(构造最优解)

2578. 最小和分割 - 力扣(LeetCode) 给你一个正整数 num ,请你将它分割成两个非负整数 num1 和 num2 ,满足: num1 和 num2 直接连起来,得到 num 各数位的一个排列。 换句话说,num1 和 num2 中所…...

自定义实现图片裁剪

要实现这个功能,首先需要创建一个自定义的View,然后在该View中绘制背景框和裁剪后的图片。以下是一个简单的实现: 1. 创建一个名为CustomImageView的自定义View类,继承自View: import android.content.Context; impor…...

开发语言工具编程系统化教程入门和初级专辑课程上线

开发语言工具编程系统化教程入门和初级专辑课程上线 学习编程捷径:(不论是正在学习编程的大学生,还是IT人士或者是编程爱好者,在学习编程的过程中用正确的学习方法 可以达到事半功倍的效果。对于初学者,可以通过下面…...

【Truffle】二、自定义合约测试

一、准备测试 上期我们自己安装部署了truffle,并且体验了测试用例的整个测试流程,实际开发中,我们可以对自己的合约进行测试。 我们首先先明白自定义合约测试需要几个文件 合约文件:既然要测试合约,肯定要有合约的源码…...

场景交易额超40亿,海尔智家三翼鸟开始收获

文 | 螳螂观察 作者 | 余一 随着双十一的到来,国内的消费情绪再次被点燃。在这类大促之下,品牌们就像一个个天体,不断引动着市场潮汐,期待自己能触发更大的“海潮效应”。 所谓“海潮效应”是指,海水因天体的引力而…...

众和策略可靠吗?股票扛杆怎么玩?

可靠 股票扛杆是一种出资战略,经过假贷资金来增加出资金额,从而进步出资收益。这种战略在股票商场中被广泛运用,但一起也伴随着一定的危险。在本文中,咱们将从多个视点来剖析股票扛杆怎么玩。 首要,扛杆出资的原理是…...

解决连接Mysql出现ERROR 2013 (HY000): Lost connection to MySQL server at ‘waiting

在上一篇中解决Mysql ER_ACCESS_DENIED_ERROR: Access denied for user ‘root‘‘localhost‘ (using password: YES)-CSDN博客 写了mysql的密码报错问题,在执行 mysql -u root -p 出现了这个错误, ERROR 2013 (HY000): Lost connection to MySQL se…...

Hadoop YARN功能介绍--资源管理、调度任务

Hadoop YRAN介绍 YARN是一个通用资源管理系统平台和调度平台,可为上层应用提供统一的资源管理和 调度。 他的引入为集群在利用率、资源统一管理和数据共享等方面带来了好处。 1.资源管理系统 集群的硬件资源,和程序运行无关,比如内存、cu…...

从AlexNet到chatGPT的演进过程

一、演进 AlexNet(2012): AlexNet是深度学习领域的重要突破,包括5个卷积层和3个全连接层。使用ReLU激活函数和Dropout正则化,获得了ImageNet图像分类比赛的胜利。引入了GPU加速训练,大幅提高了深度神经网络…...

Unity如何实现bHaptics TrackSuit震动衣的SDK接入

前言 TrackSuit是bHaptisc公司旗下的一款震动衣,包括X16,X40等不同型号,是一款尖端的无线高级触觉背心,采用人体工程学设计,具有40个精确的触觉反馈点。通过无缝的跨平台支持和无限制、无滞后的游戏体验,增强您的VR冒险体验。用于PC或者VR游戏中高度还原真实射击触感。官…...

识别flink的反压源头

背景 flink中最常见的问题就是反压,这种情况下我们要正确的识别导致反压的真正的源头,本文就简单看下如何正确识别反压的源头 反压的源头 首先我们必须意识到现实中轻微的反压是没有必要去优化的,因为这种情况下是由于偶尔的流量峰值,Task…...

Spring是如何解决bean循环依赖的问题的

在Spring框架中,循环依赖是指两个或多个Bean之间相互依赖,形成了一个闭环的依赖关系。当存在循环依赖时,Bean的创建过程会陷入死循环,导致应用程序无法启动或出现异常。 说到循环依赖,首先我先说说bean的三级缓存 在S…...

[移动通讯]【Carrier Aggregation-9】【 Radio Resource Control (RRC) Aspects】

前言: CA 分析辅助工具: UE Capabilities 目录: 总体流程 Radio Resource Control (RRC) Aspects SCell addition and removal Handover 一 总体流程 1.1 CA 总体流程 1.2 CA 和 NSA 区别 NSA 我理解也是一种特殊的CA 方案&…...

故障预测与健康管理(PHM)的由来以及当前面临的挑战

故障预测与健康管理(PHM)作为一项关键技术,旨在帮助企业在事故发生之前较长时间内实现故障预测与健康管理,达到“治未病”的效果。PHM的发展源于对设备可靠性和安全性的追求,以及对预测性维护的需求。然而,…...

【ChatGPT瀑布到水母】AI 在驱动软件研发的革新与实践

这里写目录标题 前言内容简介作者简介专家推荐读者对象目录直播预告 前言 计算机技术的发展和互联网的普及,使信息处理和传输变得更加高效,极大地改变了金融、商业、教育、娱乐等领域的运作方式。数据分析、人工智能和云计算等新兴技术,也在不…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式

一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

变量 varablie 声明- Rust 变量 let mut 声明与 C/C++ 变量声明对比分析

一、变量声明设计:let 与 mut 的哲学解析 Rust 采用 let 声明变量并通过 mut 显式标记可变性,这种设计体现了语言的核心哲学。以下是深度解析: 1.1 设计理念剖析 安全优先原则:默认不可变强制开发者明确声明意图 let x 5; …...

UDP(Echoserver)

网络命令 Ping 命令 检测网络是否连通 使用方法: ping -c 次数 网址ping -c 3 www.baidu.comnetstat 命令 netstat 是一个用来查看网络状态的重要工具. 语法:netstat [选项] 功能:查看网络状态 常用选项: n 拒绝显示别名&#…...

uniapp微信小程序视频实时流+pc端预览方案

方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度​WebSocket图片帧​定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐​RTMP推流​TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN,根据VPN原理,打通两个内网必然需要借助一个公共中继节点,ktconnect工具巧妙的利用k8s原生的portforward能力,简化了建立连接的过程,apiserver间接起到了中继节…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

大学生职业发展与就业创业指导教学评价

这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...

VisualXML全新升级 | 新增数据库编辑功能

VisualXML是一个功能强大的网络总线设计工具,专注于简化汽车电子系统中复杂的网络数据设计操作。它支持多种主流总线网络格式的数据编辑(如DBC、LDF、ARXML、HEX等),并能够基于Excel表格的方式生成和转换多种数据库文件。由此&…...

倒装芯片凸点成型工艺

UBM(Under Bump Metallization)与Bump(焊球)形成工艺流程。我们可以将整张流程图分为三大阶段来理解: 🔧 一、UBM(Under Bump Metallization)工艺流程(黄色区域&#xff…...