跨网络传输的大致过程+图解(软件虚拟层),ip地址介绍,ip地址和mac地址对比

news2024/11/20 2:41:53

目录

跨网络传输

引入​​​​​​​

举例 -- 唐僧西天取经

结论

介绍

ip地址

引入

介绍

类型

公有ip

私有ip

版本 

ipv4

ipv6

ip地址和mac地址的唯一性问题

数据包转发的过程

引入

思考 -- 如何跨子网

过程

图解

封装和解包

去掉差异

ip地址/协议的重要性

注意 

ip vs mac


跨网络传输

引入​​​​​​​

举例 -- 唐僧西天取经

唐僧要从长安到西天,他无法直接到达,只能一步一步走向目的地,他途中会经历很多国家

类似于下图这样:

而跨网络传输大致流程也是这样

  • 数据无法直接传输给对方主机,必须经过不同设备(也就是中转站,相当于唐僧每次落脚的国家)的转发

他每次到达一个地方,都要说一句经典台词 -- 我从东土大唐而来,前往西天取经

为什么要说这句话?

  • 一是为了说明自己的来历
  • 二是需要根据最终目的地来确定下一站 (每当要动身离开某地时,都要根据"西天"来确定自己的下一站)
  • 那么,网络通信中,肯定也会有类似的设计 -- 需要一个最终地址来确定自己传输的方向

结论

所以,这里有两个地址是关键

  • 一个不变的地址(最开始从哪来,最终要到哪去) -- ip地址
  • 一个随着当前位置变化而变化的地址(上一站从哪来,下一站到哪去) -- mac地址(熟悉吗,就是在局域网通信中用到的那个)
  • 地址变化的依据 -- 最终目的地
  • 正是因为唐僧心里有这两个地址,最终他成功到达西天,所以网络传输只要有ip地址和mac地址,也可以成功将数据传输给正确的主机

具体怎么使用,将会在数据包的转发过程里介绍

总之,这个例子是为了让我们简单地描摹出跨网络传输的过程

介绍

指在不同网络之间传递数据或信息的过程

数据在网络之间传输时需要经过路由器

  • 路由器是网络设备,负责决定数据包在网络中的最佳路径,并进行转发
  • 它级联了左右两个子网(局域网),帮助数据跨越不同的网络边界

ip地址

引入

我们再次明确一下,为什么会有ip地址?

  • ip地址是ip协议定义出来的,而ip协议在网络层,是用来解决主机定位的问题
  • 类比唐僧取经: ip地址相当于某地的地址,它的存在是为了进行路径选择 (如果没有目的地的话,所谓路径又从何而来呢)
  • ip地址也像是我们每个人定下的目标,为了某个目标,我们是有规划地去完成的
  • 比如:你想要找到工作,就得去学习知识,做项目,投简历,去面试等等,这都是通往"找到工作"这个目标的道路上必要的结点

介绍

ip地址是在互联网协议(IP协议)中用于唯一标识和定位网络上设备的数值标签

  • 它允许网络中的计算机、服务器、路由器等设备进行通信,并确保数据能够正确地从一个设备传输到另一个设备

  • 有两个主要版本的ip地址:ipv4(主流使用)和ipv6

类型

公有ip
  • 全球范围内唯一标识一个设备的地址,用于在互联网上进行直接通信
  • 由互联网服务提供商分配
  • eg: xshell连接云服务器时输入的ip
私有ip
  • 在私有网络内使用的地址,不直接暴露在互联网上
  • 有可能重复

版本 

ipv4
  • 32位的二进制整数,类似可以被书写为xxx.xxx.x.x(十进制)
  • 分为网络地址和主机地址两部分,用于区分网络和主机,通过子网掩码来划分这两个部分
  • 主流使用的ip地址
  • ipv4的地址空间有限,约有42亿个可用的唯一地址,导致ipv4地址枯竭
ipv6
  • 采用128位的二进制数表示,通常以冒号分隔的十六进制数表示

ip地址和mac地址的唯一性问题

  • ip地址(需要保证主机在全网内的唯一性)
  • 而mac地址只需要保证局域网内的唯一性 (理论上他也可以保证全网内的唯一性,但以太网是局域网的技术实现,不需要太大)

数据包转发的过程

引入

通过路由器实现跨网络传输(这里以只经过一个路由器为例),其原理类似于下图(要通信的两个子网之间必须要横跨一个路由器)

278a42807e9246909ce955125a7c87e6.png

我们在已经了解了局域网内的通信流程的基础上,来理解一下如何通过路由器实现跨网络传输

思考 -- 如何跨子网

先不管那些专业知识,我们先自己思考一下,如何从子网1到子网2

  • 因为我们的目的ip并不在局域网内,所以首先要出自己的局域网 -- 这需要借助路由器实现

路由器也属于局域网内的一个普通设备

  • 它可以帮我们转发给其他局域网,而该局域网内的其他设备不行
  • 把数据交给路由器的过程,本质上就是局域网通信
  • 路由器再将数据交给主机,也是局域网通信

所以,图中其实就是两次局域网通信:

  • 278a42807e9246909ce955125a7c87e6.png

过程

我们将用户向服务器发送请求,看作是[子网1内的一台主机a] 和 [子网2内的主机b]通信

首先,a发送的数据被层层封装

  • 其中网络层协议的报头中包含<来源ip和目的ip>
  • 链路层协议的报头有<来源mac地址和目的mac地址>(指示物理层将报文发送给哪个设备)
  • 注意,这里要经过路由器,所以目的mac地址=路由器mac地址

然后这条报文被发送给子网1内的所有主机

  • 每台主机收到数据,上传至链路层被解析后,只有路由器保留了这条报文,且上传到网络层
  • 经过网络层(路由器就在网络层工作)的解析,路由器发现目的ip并不是自己,且识别到是与自己相连的子网2内的主机,就会将其转换为子网2内部的通信

所以它会向下传输(因为通信最终必须要通过物理层),交给自己的链路层

  • 这里假设子网2内部用的是令牌环网络
  • 路由器内部的链路层会将自己的报头封装进去(包含<自己的mac地址+目的设备的mac地址>),然后通过物理层传输给子网2的所有主机
  • 最终只有目的ip对应的主机会保留该报文,且经过一层层解析
  • 最终,目的主机就可以收到消息了

图解

6f76fa3ef9c64bd0a899dfddb310ba2a.png

封装和解包

到一个新局域网后,路由器会帮我们去掉老的链路层报头,换成新的报头

  • 这个过程也可以叫封装和解包
  • 路由器内部的局部封装/解包,贯穿协议栈的封装/解包,都叫做封装/解包

去掉差异

注意看图,前三层同层之间收到的报文都是一样的,但是在链路层,其链路层封装的报头有区别

  • 说明网络层及其以上的协议要使用一样的,但网络层以下可以是不同的
  • 所以局域网的类型(比如以太网/令牌环网/无线网等等)已经不重要了,因为他底层的差异已经被路由器去掉了(路由器会帮我们进行报头的更新)

因为是路由器帮助我们横跨网络

  • 所以其内部必须既要有以太网协议,又要有令牌环协议,或者其他协议
  • 同理,网卡也需要配齐(也就是物理层,它因不同的局域网类型而有所不同)

ip地址/协议的重要性

还记得我们捋出来的过程吗,ip地址是其中的关键

  • 有了ip地址,我们才可以指导路由器进行转发设备的选择,路由器去进行实际的定位和转发工作
  • 相当于ip地址是最初的1,有了1才会有之后
  • 而ip地址是ip协议定义的
  • 所以可以说,是ip协议屏蔽了底层网络的差异(靠的就是工作在网络层的路由器)

  • 那么,ip报文就可以被看作是一种在全球范围内设备之间进行通信的软件虚拟层
  • 它隐藏了底层网络技术的细节,使得不同类型的设备都能够在同一个网络中进行通信,只要它们支持ip协议,就可以在这个虚拟层上互相交流(无需关心它们之间的物理连接、链路层协议或其他底层细节)
  • 这样抽象后,跨网络通信是不是就和之前学习过的局域网通信很像?
  • 所以,他们都可以用统一的传输流程
  • 这个理念和linux系统中的一切皆文件非常相似 -- 文件对象让我们忽略硬件的差异,ip地址让我们忽略底层网络的差异

  • 而这也体现了软件分层的优越性(正是因为分了层,才有机会忽略差异),在系统和网络上都有使用该思想,它大大简化了我们的操作难度
  • 也正是因为ip协议的好用,所以网络技术可以很快普及

注意 

但即使上层玩出花来,也必须得经过实际的物理层传输(因为一切的网络通信,本质上都是操作网卡)

所以可以看到,图中的a主机和b主机想跨网络交流的话,这条数据运输线必然是将他俩相连的,而不能断掉 

ip vs mac

从上面的过程梳理中我们就可以发现,这两个地址还是有很多不同的:

  • ip地址是不会发生改变的,尤其我们需要目的ip来协助我们进行路径选择
  • 而mac地址是局域网内部使用的,相当于临时地址,一旦出局域网,源和目的mac地址都会被丢弃,由路由器在链路层为其重新封装

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1500580.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Nginx正向代理域名的配置

目录 前言 1.打开文件 2. 启用代理 3. 指定代理服务器 4. 保存配置文件并重新加载Nginx。 5. 添加域名解析。 6. 配置客户端。 总结 前言 Nginx是一个高性能、开源的Web服务器软件&#xff0c;不仅可以作为反向代理服务器使用&#xff0c;还可以作为正向代理服务器使用…

IDEA启动项目读取nacos乱码导致启动失败

新安装的2023社区版IDEA,启动项目报错。 forest: interceptors: - com.gdsz.b2b.frontend.api.Interceptors.ApiInterceptor org.yaml.snakeyaml.error.YAMLException: java.nio.charset.MalformedInputException: Input length 1 at org.yaml.snakeyaml.reader.S…

Zabbix(四)

Zabbix Proxy zabbix作为一个分布式监控系统(分布式监控解决方案)&#xff0c;支持通过代理(proxy)收集zabbix agent的监控数据&#xff0c;然后由zabbix proxy再把数据发送给zabbix server&#xff0c;也就是zabbix proxy 可以代替zabbix server收集监控数据&#xff0c;然后…

VBA中类的解读及应用第十讲:限制文本框的输入,使其只能输入数值(上)

《VBA中类的解读及应用》教程【10165646】是我推出的第五套教程&#xff0c;目前已经是第一版修订了。这套教程定位于最高级&#xff0c;是学完初级&#xff0c;中级后的教程。 类&#xff0c;是非常抽象的&#xff0c;更具研究的价值。随着我们学习、应用VBA的深入&#xff0…

React-父传子

1.概念 说明&#xff1a;父组件传递数据子组件标签身上绑定属性&#xff1b;子组件接受数据props的参数。props是一个对象&#xff0c;包含父组件传递的所有数据。例如数字、字符串、布尔值、数组、对象、函数、JSX。不允许直接修改父组件传递的数据。 2.例子 // 父传子 // …

YOLO建筑物损伤评估数据集

YOLO建筑物损伤评估数据集&#xff0c;重度损伤&#xff0c;轻微损伤&#xff0c;中度损伤&#xff0c;未损伤4类&#xff0c;近五千张图像&#xff0c;yolo标注完整&#xff0c;应用数据增强。 适用于CV项目&#xff0c;毕设&#xff0c;科研&#xff0c;实验等 需要此数据集…

抖店月销过万的爆单技巧,新手轻松月入1w+,附抖店学习资料!

我是电商珠珠 抖店开通之后&#xff0c;怎么才能快速出单是很多新手小伙伴困扰的问题。其实想要运营好抖店一点都不难&#xff0c;我做抖店也有三年多时间了&#xff0c;接下来我说的每一步&#xff0c;不管是有货源还是无货源的都适用。 1、铺货低价福利款 店铺开好之后&am…

【C++第三课 - 类和对象中】构造函数、析构函数、拷贝构造函数、赋值重载、取地址重载、Date类的完善、const成员

目录 类的6个默认成员函数构造函数自己写的构造函数默认生成的构造函数 析构函数概念特征 拷贝构造函数特征 运算符重载 、 >、 <赋值重载Date类的完善构造函数的完善、-的完善用复用-、-以及-和-的相互复用 前置、--后置、--流插入、流提取 取地址重载 const成员 类的6个…

安康杯安全知识竞赛上的讲话稿

各位领导、同志们&#xff1a; 经过近半个月时间的准备&#xff0c;南五十家子镇平泉首届安康杯安全生产知识竞赛初赛在今天圆满落下帏幕&#xff0c;经过紧张激烈的角逐&#xff0c; 代表队、 代表队和 代表队分别获得本次竞赛的第一、二、三名让我们以热烈的掌声表示祝…

TensorRT是什么,有什么作用,如何使用

TensorRT 是由 NVIDIA 提供的一个高性能深度学习推理&#xff08;inference&#xff09;引擎。它专为生产环境中的部署而设计&#xff0c;用于提高在 NVIDIA GPU 上运行的深度学习模型的推理速度和效率。以下是关于 TensorRT 的详细介绍&#xff1a; TensorRT 是 NVIDIA 推出的…

容器: string

引言: 为什么要有string类型, 就使用字符数组表示字符串不行吗? 原因: 使用字符数组描述文本信息, 无法确定开多大空间, 开多了浪费,开少了不够用使用string封装: 扩容机制:减少了空间的浪费各种接口:方便修改等操作 string的使用 容量相关 size:获取字符个数,不包含\0 (C语言…

IOS苹果通话记录在线生成网站源代码,直接上传就可使用

一键生成&#xff0c;PHP的上传到网站根目录打开域名访问即可 源码免费下载地址专业知识分享社区-专业知识笔记免费分享 (chaobiji.cn)

Mocha and Railgun(几何规律)

链接&#xff1a;https://ac.nowcoder.com/acm/contest/33186/D 来源&#xff1a;牛客网 题目描述 There is a candy store near Mochas school. Its said that the storekeeper, Dagashiya, can cast the railgun spell. To be the most powerful Mahou Shoujo, Mocha ask…

118.龙芯2k1000-pmon(17)-制作ramdisk

目前手上这个设备装系统不容易&#xff0c;总是需要借助虚拟机才能实现。 对生产就不太那么友好&#xff0c;能否不用虚拟机就能装Linux系统呢&#xff1f; 主要是文件系统的问题需要解决&#xff0c;平时我们一般是用nfs挂载后&#xff0c;然后对硬盘格式化&#xff0c;之后…

社区服务类创业项目推荐:抓住社区商业新机遇

大家好&#xff0c;我是一名90后鲜奶吧创业者&#xff0c;目前在社区经营5年时间&#xff0c;今天我想和大家分享一些关于社区服务类创业项目的推荐&#xff0c;都是这么多年我见证过生意最好的店面。 1、社区便利店&#xff1a; 随着人们生活节奏的加快&#xff0c;对便利购…

【Linux实践室】Linux常用命令:文件操作|文件夹操作

&#x1f308;个人主页&#xff1a;聆风吟 &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux文件操作2.1.1 &#x1f47b;创建文件2…

数组连续和 - 华为OD统一考试(C卷)

OD统一考试&#xff08;C卷&#xff09; 分值&#xff1a; 100分 题解&#xff1a; Java / Python / C 题目描述 给定一个含有N个正整数的数组&#xff0c;求出有多少连续区间&#xff08;包括单个正整数&#xff09;&#xff0c;它们的和大于等于 x。 输入描述 第一行为两个…

Linux——进程信号(一)

目录 1、信号入门 1.1、技术应用角度的信号 1.2、注意 1.3、信号概念 1.4、用kill -l命令可以查看系统定义的信号列表 1.5、信号处理常见方式概览 2、产生信号 2.1通过终端按键产生信号 Core Dump 2.2、调用系统函数向进程发信号 2.3、由软条件产生信号 3、总结思考…

华为北向网管NCE开发教程(2)REST接口开发

华为北向网管NCE开发教程&#xff08;1&#xff09;闭坑选接口协议 华为北向网管NCE开发教程&#xff08;2&#xff09;REST接口开发 华为北向网管NCE开发教程&#xff08;3&#xff09;CORBA协议开发 假设你现在要开始华为北向接口REST协议之前&#xff0c;需要准备如环境 1准…

学习与学习理论 - 2024教招 - test

一 方向 方向性很重要&#xff0c;像学投篮一样关注发力顺序才是关键出发点&#xff0c;如果这个出发点没确定下来&#xff0c;会走许多弯路。所有学习理论大的观点&#xff0c;到某个人物个人的观点。被干掉之前&#xff08;不能被干掉&#xff09;&#xff0c;掌握所需的知识…