最近参与一个华为HCS云平台的规划设计,主要是辅助角色。过往的经验中,对于网络知识理论学得多,实践比较少,借此项目从新学习了相关的网络知识。本文转自两层网络、三层网络的理解_cj2580的博客-CSDN博客_二层网络和三层网络的区别 ,如有侵权,请联系我删除,谢谢。

1.前言

网络的通用模型是ISO七层模型,其只是提供了一个参考,并没有具体实现,当前现网中使用最多的实现其实是TCP/IP协议族。但是对于TCP/IP,除了表示层和会话层没有体现,其它几层和ISO基本有对应关系。

2.OSI模型科普

  1. 物理层:例如电信号和光信号,例如网卡、光纤、双绞线等都被归到物理层;
  2. 链路层:数据在离散电/光信号的基础之上,被逻辑划分成一帧一帧(Frame)来管理,这一层是数据交换的主要层面,使用网卡MAC地址进行寻址,以太网(定义了一种帧格式)、交换机、集线器都划归这一层;
  3. 网络层:比链路层更高一级的逻辑层,在这一层主要工作的是路由器,路由器基于IP地址进行跨网链路的计算;
  4. 传输层:用来控制网络层传输的,网络层只是一个“尽力而为”的层,其传输不是完全可靠的,传输层提供了TCP和UDP两种机制,负责传输的可靠性。
  5. 表示层:对应了解数据传输意义不大;
  6. 会话层:对应了解数据传输意义不大;
  7. 应用层:最高层的协议,HTTP、SSH、FTP等都被划归这一层,与软件应用相关。

在这七层中网络层、链路层、物理层属于低三层,其余属于高四层,传输层以下是真正通过网络传输数据的层面。关于物理层,主要定义的是各种传输介质的信号传输方式,比如时钟频率、电平高低、信道编码等,这一层只是机械的传输,不涉及数据包选路逻辑,链路层(L2层)和网络层(L3层)才是我们要理解的地方。

3.数据传输实例

首先看L2链路层,这一层以帧(Frame)为单位组织物理信号,每个帧都需要有一个源地址和目的地址,绝大多数情况下使用的都是网卡MAC地址。这一层主要的数据转发设备是集线器和交换机,对于集线器,由于每一个数据帧都会被复制到各个端口,使每个连接主机收到很多跟自己无关的数据帧,这直接导致主机和集线器之间信道冲突剧烈(冲突域属于物理层概念),因此现在基本不用该设备。而交换机则具有MAC地址学习功能,能够向各个端口准确投放数据帧,这样就大大提高了数据传输效率。对于L2层,交换机只能转发一个子网内的数据帧(子网是通过IP地址划分的),如果要将一个数据帧跨网转发,则需要借助于L3层的路径规划功能。

现在假设有如下网络拓扑结构,ABCD四台主机属于10.0.0.0子网,网关都指向路由器的10.0.0.1端口,EFGH属于10.0.1.0子网,网关指向路由器的10.0.1.1端口。

先看同一子网内的通信的情况(A向C发送数据,这种情况下都是通过IP地址指定的),假如所有的主机、交换机和路由器都刚刚加电,内部没有缓存任何MAC映射表和路由表。A在发送之前,发现C和A在同一个子网内,于是A试图先在物理子网内找一下C,但是在同一物理子网内是通过硬件MAC地址来寻址的,而A此时并不知道C的MAC地址,于是A通过ARP广播来试图获取,发出的广播包包括如下类似内容:(注:广播时用的MAC地址是ff:ff:ff:ff:ff:ff)

交换机1在收到这个ARP广播包后,首先学习到了主机A原来是和1口连接的,然后在缓存中查找C的MAC地址,但是最终没有找到,于是交换机1将这个包从所有端口(连接A的1口除外)发出去,交换机2收到后也会继续广播出去。当主机B和D收到这个广播包之后,发现和自己无关,于是便直接丢弃这个包,不做任何处理;C收到这个广播包后,发现原来是找自己的,于是它发出如下类似格式的回应内容,来告知A自己的身份。

这个过程对于所有参与的交换机也是个学习的过程,因此交换机1和交换机2也学习到了A和C的位置。至此AC相互找到对方后,便可以在同一物理子网之间直接通过指定MAC地址通信了,他们发送数据帧的类似格式如下:

下面再来看跨物理网络通信的情况(A向E发送数据),同样假设设备都刚刚加电,缓存为空。A发现E的IP也是同一网段的,于是又开始广播,但是这次BCD都没有回应。我们此时把视线转到路由器1上,当路由器1收到这个ARP广播包后,为了避免广播风暴的产生,路由器1不会继续广播这个ARP包,但是路由器1会把自己的MAC告诉A,回发如下类似格式的内容:

A在等待超时后,发现当前物理子网内找不到E,但是A已经知道了网关路由器的MAC地址,于是便会将发给E的数据包扔给网关(也就是路由器1的1口),路由器1收到这个包后,发现E的IP在自己内部也没有缓存,于是路由器1也开始了寻找E的过程。相比交换机的子网内“广播找人”,路由器的选路范围更大也更复杂,很多情况下是整个Internet,并且要夸多个运营商,所以在L3层面路由器的路径计算协议较多,包括:RIP、OSPF、IS-IS、BGP、IGRP等协议。路由器之间计算路径时,任何一台路由器都是无法窥探整个网络的,因此每台路由器都只是通过选路算法找到下一跳的最优路径,这些最优路径连接起来便形成了一条完整的路径。换句话说,路由器的转发路径不是一个路由器选择出来的,而是一群路由器共同选择出来的下一跳地址序列。这里假设路由器1直接找到了路由器2。

当路由器2接到寻找主机E的广播包后,发现E位于自己的网络中(当然也提前需要一个广播学习的过程才能知道),便向前一跳路由器(即路由器1)反馈自己离主机E最近,最终经过这样一个“A→网关路由器→路由器间选路→找到主机E所在子网”的过程A终于可以与E进行通信了,由于A和E之间经历了多个物理子网,因此需要多次的L2转发才能实现数据包的到达,这个过程中L3层IP包外包帧的MAC地址会不断变换。A→B→A这个过程中,数据帧和IP包的地址经历过程如下(假设A使用的是本机的88端口,B使用的是本机的99端口):

在这个过程中,数据包在路由器1和2的1<-->4口之间传递时,由于是在一个设备内部,因此可以直接转发,而不用变换帧头,从而提高转发效率。如果A要与其它子网的FGH主机通信,过程基本是一样的,只不过刚开始不会先在当前子网内“广播找人”,而是直接将数据包投递给出口网关。

[云计算]两层网络、三层网络的理解相关推荐

  1. 两层和三层网络架构差异

    园区网络的物理架构推荐采用树形组网,不仅便于部署和管理,还具有良好的扩展性.树形组网通常采用分层架构,园区网络的层次一般包括终端层.接入层.汇聚层和核心层等.针对接入层.汇聚层和核心层的层次结构,在实 ...

  2. 华为eNSP两层架构综合网络配置

    华为ENSP两层架构综合实验 一.企业网划分多个VLAN,减少广播域大小,提高网络稳定性. (一)配置接入交换机SW2接口. (二)配置接入交换机SW3接口. (三)配置核心交换机SW1接口. 二.在 ...

  3. python装饰器两层和三层区别_学习python的第十五天(函数的装饰器,两层装饰器和三层装饰器)...

    06.01自我总结 一.装饰器 1.函数装饰圈的定义 函数装饰器:一种装饰函数的函数 2.个人理解两层函数装饰器 两层函数装饰器个人觉得他其实就是把需要装饰的函数名丢入形参,然后用一个嵌套的函数对其头 ...

  4. 【python】利用两层神经网络(网络必须用类)来训练mnist数据(要求准确率90%以上)

    要求: 用python自建一个class类,不能使用其他高级库函数,如pytorch,tensorflow,含有两个隐含层,隐含层数量可以指定. 准确率达到90以上. 画出学习曲线:损失曲线核准确率曲 ...

  5. python装饰器两层和三层_我终于弄懂了Python的装饰器(三)

    此系列文档: 三.装饰器应该在何时发挥作用? 现在有个大问题: 我可以使用装饰器做什么? 装饰器看起来很酷而且功能强大,但是展示一个实际的例子会更清晰. 使用的场景有1000种可能性.但是经典用法: ...

  6. [转]oracle分页用两层循环还是三层循环?

    select t2.* from --两层嵌套 (select t.* , rownum as row_numfrom t where rownum <=20) t2 where t2.row_ ...

  7. 两层网络,三层网络的理解

    对于搞IT的同行而言,大部分人都不会直接和网络打交道,因此除非从事网络开发,否则对网络内部机制也不会太关心,但是明白网络数据是怎么走的,这对每个IT工程师应该是很重要的基础知识.网络数据包如何在网络上 ...

  8. 网络知识梳理--OSI七层网络与TCP/IP五层网络架构及二层/三层网络

    作为一个合格的运维人员,一定要熟悉掌握OSI七层网络和TCP/IP五层网络结构知识. 废话不多说!下面就逐一展开对这两个网络架构知识的说明: 一.OSI七层网络协议 OSI是Open System I ...

  9. OSI七层网络、TCP/IP五层网络架构、二层/三层网络

    一.OSI七层网络协议 OSI是Open System Interconnect的缩写,意为开放式系统互联. OSI参考模型各个层次的划分遵循下列原则: 1)根据不同层次的抽象分层 2)每层应当有一个 ...

最新文章

  1. glove 安装错误
  2. Stanford UFLDL教程 反向传播算法(BP算法)
  3. 海驾学车过程全揭秘——第九篇:科目三集训及考试
  4. 基于MaxCompute+PAI的用户增长方案实践
  5. 注册域名需要资格吗_域名对于企业商标注册的重要性你知道吗?
  6. 加速度传感器与车祸报警解决方案
  7. 移植最新版libmemcached到VC++的艰苦历程和经验总结(上)
  8. 欧拉线性筛 与 欧拉函数 + 几道例题
  9. RabbitMq之发布订阅模式
  10. ORACLE成果,天天10问(四)
  11. java 构造函数嵌套_java – spring – 构造函数注入和覆盖嵌套bean的父定义
  12. 在哪里可以查询中国某一地区的历史气象数据(过去15年,如降雪,降雨等)?
  13. 小型超市网站php,[PHP源码]便利100豪华版网上超市 ecshop生活便利商城源码/13165
  14. C# WPF 的多国语言处理
  15. 易基因|文献科普:MeRIP-seq揭示m6A RNA甲基化改变导致亨廷顿病(HD)小鼠海马记忆障碍
  16. 计算机重装系统后黑屏,电脑重装系统后黑屏怎么办
  17. msm8x16 耳机阻抗检测
  18. npm install XXX 报错:error An unexpected error occurred:
  19. SSL协议密钥交换过程理解
  20. Android app反编译

热门文章

  1. webpack构建工具快速上手指南
  2. K近邻模型(k-NN)
  3. Webservice 的安全
  4. 戴森工程师揭秘Dyson 360 Eye吸尘机器人的故事:先要做到“智能”
  5. web.xml的contextConfigLocation作用及自动加载applicationContext.xml
  6. 【小工匠聊Modbus】07-错误响应
  7. 获取文件绝对路径最后的文件夹名称
  8. 日志分析(shell脚本)
  9. iphone开发 拨打电话
  10. 问题七:operator+=()是什么鬼函数?(重载操作符)