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

目录

跨网络传输

引入​​​​​​​

举例 -- 唐僧西天取经

结论

介绍

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.mfbz.cn/a/440337.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

智慧城市如何助力疫情防控:科技赋能城市安全

目录 一、引言 二、智慧城市与疫情防控的紧密结合 三、智慧城市在疫情防控中的具体应用 1、智能监测与预警系统 2、智慧医疗与健康管理 3、智能交通与物流管理 4、智慧社区与基层防控 四、科技赋能城市安全的未来展望 五、结论 一、引言 近年来&#xff0c;全球范围内…

华为od机试C卷-开源项目热度榜单

1、题目描述 某个开源社区希望将最近热度比较高的开源项目出一个榜单&#xff0c;推荐给社区里面的开发者。 对于每个开源项目&#xff0c;开发者可以进行关注(watch)、收藏(star)、fork、提issue、提交合并请求(MR)等。 数据库里面统计了每个开源项目关注、收藏、fork、issue…

利用“定时执行专家”循环执行BAT、VBS、Python脚本——含参数指定功能

目录 一、软件概述 二、VBS脚本执行设置 三、触发器设置 四、功能亮点 五、总结 在自动化办公和日常计算机任务管理中&#xff0c;定时执行脚本是一项非常重要的功能。今天&#xff0c;我将为大家带来一款名为“定时执行专家”的软件的评测&#xff0c;特别是其定时执行VB…

YOLOX论文解读

paper&#xff1a;YOLOX: Exceeding YOLO Series in 2021 official implementation&#xff1a;https://github.com/Megvii-BaseDetection/YOLOX 本文的创新点 本文在YOLOv3的基础上进行了一些改进&#xff1a;包括将检测头进行解耦的decoupled head、从anchor-based转为anc…

Python使用错误总结

【1】cannot import name ‘ParameterSource’ from ‘click.core’ 其根本原因在于是black模块&#xff0c;其模块版本可能过时&#xff0c;升级black模块版本即可&#xff1a; pip install black --upgrade【2】partially initialized module ‘charset_normalizer’ has n…

React-父传子

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

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

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

刨析数据结构(三)

&#x1f308;个人主页&#xff1a;小田爱学编程 &#x1f525; 系列专栏&#xff1a;数据结构-带你无脑刨析 &#x1f3c6;&#x1f3c6;关注博主&#xff0c;随时获取更多关于IT的优质内容&#xff01;&#x1f3c6;&#x1f3c6; &#x1f600;欢迎来到小田代码世界~ &…

typeorm-入门

简述 typeorm是一个数据库orm框架&#xff0c;在nestjs官网中有提到&#xff0c;可以充分发挥利用typescript的特性&#xff0c;当然也支持js其中涉及的概念包括 DataSource 数据源&#xff0c;Connection 连接数据库Entity 实体&#xff0c;实体类映射数据库表Relation 关系…

《TCP/IP详解 卷一》第13章 TCP连接管理

目录 13.1 引言 13.2 TCP连接的建立与终止 13.2.1 TCP半关闭 13.2.2 同时打开与关闭 13.2.3 初始序列号 13.2.4 例子 13.2.5 连接建立超时 13.2.6 连接与转换器 13.3 TCP 选项 13.3.1 最大段大小选项 13.3.2 选择确认选项 13.3.3 窗口缩放选项 13.3.4 时间戳选项与…

开启AI绘画新纪元:让创意在指尖绽放

文章目录 一、了解AI绘画的基本原理二、选择合适的AI绘画工具三、掌握AI绘画的基本技巧四、借鉴与创新&#xff1a;从模仿到创作五、参与社区交流&#xff0c;共同成长《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》亮点推荐内容简介作者简介目录 在科技日新…

OpenAI (ChatGPT)中国免费试用地址

GitHub - click33/chatgpt---mirror-station-summary: 汇总所有 chatgpt 镜像站&#xff0c;免费、付费、多模态、国内外大模型汇总等等 持续更新中…… 个人能力有限&#xff0c;搜集到的不多&#xff0c;求大家多多贡献啊&#xff01;众人拾柴火焰高&#xff01;汇总所有 cha…

基于java+springboot+vue实现的宠物健康咨询系统(文末源码+Lw)23-206

摘 要 本宠物健康咨询系统分为管理员还有用户两个权限&#xff0c;管理员可以管理用户的基本信息内容&#xff0c;可以管理公告信息以及宠物健康知识信息&#xff0c;能够与用户进行相互交流等操作&#xff0c;用户可以查看宠物健康知识信息&#xff0c;可以查看公告以及查看…

目标检测——摩托车头盔检测数据集

一、简介 首先&#xff0c;摩托车作为一种交通工具&#xff0c;具有高速、开放和稳定性差的特点&#xff0c;其事故发生率高&#xff0c;伤亡率排在机动车辆损伤的首位。因此&#xff0c;摩托车乘员头盔对于保护驾乘人员头部安全至关重要。在驾乘突发状况、人体受冲击时&#…

【微信小程序】传参存储

目录 一、本地数据存储 wx.setStorage wx.setStorageSync 1.1、异步缓存 存取数据 1.2、同步缓存 存取数据 二、使用url跳转路径携带参数 2.1、 wx.redirectTo({}) 2.2、 wx.navigateTo({}) 2.3、 wx.switchTab({}) 2.4 、wx.reLaunch({}) 2.5、组件跳转 三、…

自动化测试框架robotframework安装教程

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 1.下载安装robotframework2.安装wxpython3.在线安装robotframework-ride4.安装selenium2library5.安装databaselibrary7.安装PyMySql8.下载浏览器驱动程序*9.启动ro…

C++:Stack和Queue的模拟实现

创作不易&#xff0c;感谢三连&#xff01; 一、容器适配器 适配器是一种设计模式(设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结)&#xff0c;该种模式是将一个类的接口转换成客户希望的另外一个接口。 就如同是电源适配器将不适用的交流电…

阿里云服务器怎么使用?3分钟搭建网站教程2024新版

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

代码随想录第53天|● 1143.最长公共子序列 ● 1035.不相交的线 ● 53. 最大子序和 动态规划

文章目录 ● 1143.最长公共子序列思路&#xff1a;代码一&#xff1a;dp二维数组代码二&#xff1a;滚动数组 ● 1035.不相交的线思路&#xff1a;代码&#xff1a;&#xff08;滚动数组&#xff09; ● 53. 最大子序和 动态规划思路代码&#xff1a;代码二&#xff1a;单一元素…

许多人可能还不了解这个信息差:美赛的第一批 EI 已经录用,不用再犹豫啦

格局打开&#xff0c;美赛论文转学术论文发表 &#x1f680;&#x1f680; 各位同学&#xff0c;美赛已经结束了一段时间&#xff0c;你们是否还在焦急地等待最终成绩的公布&#xff1f;一些有远见的同学已经提前收到了一份喜讯&#xff1a;他们的美赛论文已被转化为学术论文并…
最新文章