网络分层及通信过程

网络分层体系

主流的理论体系中主要包含三种网络分层模型,即ISO的七层网络模型、TCP/IP的四层网络模型以及结合两种模型优点的五层网络模型,关于网络模型,主要起到对网络体系的一个整体认识,作为网络知识学习的开始,这也是各大教材、书籍一上来就讲解分层模型的原因。自顶向下、自底向上说的就是从底层到顶层还是从顶层到底层的学习顺序区别。

  • ISO七层网络模型

    • 自顶向下分别是应用层表示层会话层传输层网络层链路层物理层
  • TCP/IP四层网络模型

    • 自顶向下分别是应用层传输层网络层网络接口层,对应的将ISO模型中的表示层和会话层统一归结到应用层,链路层和物理层归结到网络接口层,更加抽象和简洁。
  • 五层网络模型

    • 自定向下分别是应用层传输层网络层链路层物理层,五层模型是结合ISO、TCP/IP模型的折中定义,顺延了TCP/IP模型中对应用层的定义,保留了ISO对于链路层、物理层的区分;解决了TCP/IP四层模型中物理层面细节的缺失以及ISO模型中应用层面过于臃肿的缺点,五层模型也是最佳的学习路线

应用层

应用层主要面向的是计算机用户,更多的是软件编程人员,该层拥有最为完善的封装。ISO中的表示层、会话层主要也是对数据处理、连接的封装,辅助用户通过应用层协议完成在网络中的活动,在网络分层定义中都属于应用层面。表示层主要用于处理数据,对数据的压缩、安全、格式转换等;会话层建立、管理不同机器上的会话,对应主机的进程层面,指本地主机与远程主机的连接会话,代表有SSL、TLS。

  • 该层关键点是应用协议,主要学习的内容也是具体协议的细节,常见的应用层协议有:HTTP、HTTPS、FTP、DNS等
  • 从数据流视角来看,该层作为最高抽象存在,建立的是不同主机间应用与应用之间的通信
  • 从数据角度来看,该层的数据为基于应用协议的报文数据

传输层

主要用于定义传输数据的协议端口号,以及传输的流控和差错校验,接受应用层的应用数据,对数据进行切割,分包,并将数据传递给网络层,同时负责数据是否有效到达对应端,原则上数据包一旦离开网卡,即代表进入传输层。

  • 该层对应的协议主要为传输层协议,即TCP和UDP
  • 从数据流视角,该层对应的是主机上的端口(即根据IP确定主机后,通过端口确定通信进程),建立的是不同主机上端口与端口之间的通信
  • 从数据视角来看,数据在该层称之为数据报文

网络层

进行逻辑地址的寻址,实现不同网络间的路径选择,在网络中进行具体的数据传递;控制网络划分、子网运作;在计算机网络中进行通信的两个计算机之间可能会经过很多个数据链路,也可能还要经过很多通信子网,网络层的任务就是选择合适的网间路由和交换结点,确保数据及时传送。

  • 该层对应的协议为网络层协议,主要有IP、ICMP(互联网控制信息协议) IGMP(组管理协议)
  • 从数据流视角,该层对应的是主机的IP地址,即具体的主机,建立的是主机与主机之间的通信
  • 从数据视角来看,数据在该层称之为数据包

链路层

在物理层提供比特流服务的基础上,建立相邻结点之间的数据链路,通过差错控制提供数据帧(Frame)在信道上无差错的传输,并进行各电路上的动作系列。数据链路层在不可靠的物理介质上提供可靠的传输。该层的作用包括:物理地址寻址、数据的成帧、流量控制、数据的检错、重发等。

  • 从数据流视角,该层主要是负责节点与节点间具体的通信,是物理层基础之上的数据稳定传输
  • 从数据视角来看,数据在该层称之为帧

物理层

构建网络视角的具体实物,规定的通信设备的功能与过程特征,负责物理学层面的信息传递

  • 从数据视角来看,数据在该层称之为比特

 网络数据通信模型

从数据角度来看,网络的传输,数据报文是由上向下逐层包装,最终通过物理层面进行传递。在应用层面主要为操作数据加应用层协议头部,传递至传输层,加装传输层协议,以此类推,逐层加装,最终变为帧,再通过物理层的传输媒介以比特的形式进行传输。

各层中物理设备及概念

在学习网络和实际操作过程中,很容易出现概念和设备对不上,经常一脸问号,比如,我们可能会听到一些网络工程师把路由器叫做网关,把交换机(三层)叫做路由,其实物理设备与我们术语中常说的一些概念是有层级关系的。

将网络互相连接起来要使用一些中间设备(或中间系统),ISO的术语称之为·中继(relay)系统。根据中继系统所在的层次,可以有以下五种中继系统:

  1. 物理层(即常说的第一层、层L1)中继系统,即转发器(repeater)。
  2. 数据链路层(即第二层,层L2),即网桥桥接器(bridge)。
  3. 网络层(第三层,层L3)中继系统,即路由器(router)。
  4. 网桥和路由器的混合物桥路器(brouter)兼有网桥和路由器的功能。
  5. 在网络层以上的中继系统,即网关(gateway)。

以上标明的是纯理论层面的概念划分,并不等价于实际的物理设备(因为有很多词语与实际的物理设备或系统配置重名,导致混乱)

集线器

集线器的主要功能是对接收到的信号进行再生整形放大,以扩大网络的传输距离,同时把所有节点集中在以它为中心的节点上。集线器每个接口简单的收发比特,收到1就转发1,收到0就转发0,不进行碰撞检 测。集线器属于纯硬件网络底层设备,基本上不具有类似于交换机的"智能记忆"能力和"学习"能力。它也不具备交换机所具有的MAC地址表,所以它发送数据 时都是没有针对性的,而是采用广播方式发送。也就是说当它要向某节点发送数据时,不是直接把数据发送到目的节点,而是把数据包发送到与集线器相连的所有节点。

交换机

交换机拥有一条很高带宽的内部总线和内部交换矩阵。交换机的所有的端口都挂接在这条总线上,控制电路收到数据包以后,处理端口会查找内存中的地址对照表以确定目的MAC(网卡的硬件地址)的NIC(网卡)挂接在哪个端口上,通过内部交换矩阵迅速将数据包传送到目的端口,目的MAC若不存在则广播到所有的端口,接收端口回应后交换机会“学习”新的地址,并把它添加入内部MAC地址表中。

交换机是一种基于MAC地址识别,能完成封装转发数据包功能的网络设备。交换机可以"学习"MAC地址,并把其存放在内部地址表中,通过在数据帧的始发者和目标接收者之间建立临时的交换路径,使数据帧直接由源地址到达目的地址。

二层交换机(交换机)

是根据第二层数据链路层的MAC地址和通过站表选择路由来完成端到端的数据交换的。 二层交换机的数据传输流程:

(1) 当交换机从某个端口收到一个数据包,它先读取帧头中的源MAC地址,并将MAC地址与源端口做对应存储在站表中。

(2) 再去读取帧头中的目的MAC地址,并在地址表中查找相应的端口;

(3) 如表中有与这目的MAC地址对应的端口,把数据包直接复制到这端口上;

(4) 如表中找不到相应的端口则把数据包广播到同一VLAN下的所有端口,当目的机器对源机器回应时,交换机又可以学习一目的MAC地址与哪个端口对应,在下次传送数据时就不再需要对所有端口进行广播了。 不断的循环以上过程,对于全网的MAC地址信息都可以学习到,二层交换机就是这样建立和维护它自己的地址表。

因为站表的建立与维护是由交换机自动完成,而路由器又是属于第三层设备,其寻址过程是根据IP地址寻址和通过路由表与路由协议产生的。所以,第二层交换机的最大好处是数据传输速度快,因为它只须识别数据帧中的MAC地址,而直接根据MAC地址产生选择转发端口的算法又十分简单,非常便于采用ASIC专用芯片实现。显然,第二层交换机的解决方案,实际上是一个“处处交换”的廉价方案,虽然该方案也能划分子网、限制广播、建立VLAN,但它的控制能力较小、灵活性不够,也无法控制各信息点的流量,缺乏方便实用的路由功能。

三层交换机

是直接根据第三层网络层IP地址来完成端到端的数据交换的,具备路由器的功能。 三层交换机的数据传输:

(1)A设备通过三层交换机访问B设备

(2)已知B设备的IP,那么A就用子网掩码取得网络地址,判断目的IP是否与自己在同一网段,若在同一网络,但不知道转发数据所需的MAC地址,A就发送一个ARP请求,B返回其MAC地址,A用此MAC封装数据包并发送给交换机,交换机起用二层交换模块,查找MAC地址表,将数据包转发到相应的端口。

(3)如果B设备的IP地址显示不是同一网段的,那么A要实现和B的通讯,在流缓存条目中没有对应MAC地址条目,就将第一个正常数据包发送向一个缺省网关,这个缺省网关一般在操作系统中已经设好,对应第三层路由模块,所以对于不是同一子网的数据,最先在MAC表中放的是缺省网关的MAC地址;然后就由三层模块接收到此数据包,查询路由表以确定到达B的路由,将构造一个新的帧头,其中以缺省网关的MAC地址为源MAC地址,以主机B的MAC地址为目的MAC地址。通过一定的识别触发机制,确立主机A与B的MAC地址及转发端口的对应关系,并记录进流缓存条目表,以后的A到B的数据,就直接交由二层交换模块完成。这就通常所说的一次路由多次转发。 综上,第三层交换机是第二层交换器与路由器的二而一设备

四层交换机

四层交换机是基于传输层数据包的交换过程的,是一类基于TCP/IP协议应用层的用户应用交换需求的新型局域网交换机。 第四层交换机支持TCP/UDP第四层以下的所有协议,可识别至少80个字节的数据包包头长度,可根据TCP/UDP端口号来区分数据包的应用类型,从而实现应用层的访问控制和服务质量保证。所以,与其说第四层交换机是硬件网络设备,还不如说它是软件网络管理系统。也就是说,第四层交换机是一类以软件技术为主,以硬件技术为辅的网络管理交换设备。

路由器

路由器工作于OSI七层协议中的第三层,其主要任务是接收来自一个网络接口的数据包,根据其中所含的目的地址,决定转发到下一个目的地址。因此,路由器首先得在转发路由表中查找它的目的地址,若找到了目的地址,就在数据包的帧格前添加下一个MAC地址,同时IP数据包头的TTL(Time To Live)域也开始减数,并重新计算校验和。当数据包被送到输出端口时,它需要按顺序等待,以便被传送到输出链路上。

路由器在工作时能够按照某种路由通信协议查找设备中的路由表。如果到某一特定节点有一条以上的路径,则基本预先确定的路由准则是选择最优(或最经济)的传输路径。由于各种网络段和其相互连接情况可能会因环境变化而变化,因此路由情况的信息一般也按所使用的路由信息协议的规定而定时更新。

网络中,每个路由器的基本功能都是按照一定的规则来动态地更新它所保持的路由表,以便保持路由信息的有效性。为了便于在网络间传送报文,路由器总是先按照预定的规则把较大的数据分解成适当大小的数据包,再将这些数据包分别通过相同或不同路径发送出去。当这些数据包按先后秩序到达目的地后,再把分解的数据包按照一定顺序包装成原有的报文形式。路由器的分层寻址功能是路由器的重要功能之一,该功能可以帮助具有很多节点站的网络来存储寻址信息,同时还能在网络间截获发送到远地网段的报文,起转发作用;选择最合理的路由,引导通信也是路由器基本功能;多协议路由器还可以连接使用不同通信协议的网络段,成为不同通信协议网络段之间的通信平台。

  一般来说,路由器的主要工作是对数据包进行存储转发,具体过程如下:

  第一步:当数据包到达路由器,根据网络物理接口的类型,路由器调用相应的链路层功能模块,以解释处理此数据包的链路层协议报头。这一步处理比较简单,主要是对数据的完整性进行验证,如CRC校验、帧长度检查等。

  第二步:在链路层完成对数据帧的完整性验证后,路由器开始处理此数据帧的IP层。这一过程是路由器功能的核心。根据数据帧中IP包头的目的IP地址,路由器在路由表中查找下一跳的IP地址;同时,IP数据包头的TTL(Time To Live)域开始减数,并重新计算校验和(Checksum)。

  第三步:根据路由表中所查到的下一跳IP地址,将IP数据包送往相应的输出链路层,被封装上相应的链路层包头,最后经输出网络物理接口发送出去。

  简单地说,路由器的主要工作就是为经过路由器的每个数据包寻找一条最佳传输路径,并将该数据包有效地传送到目的站点。由此可见,选择最佳路径策略或叫选择最佳路由算法是路由器的关键所在。为了完成这项工作,在路由器中保存着各种传输路径的相关数据——路由表(Routing Table),供路由选择时使用。上述过程描述了路由器的主要而且关键的工作过程,但没有说明其它附加性能,例如访问控制、网络地址转换、排队优先级等。

  ARP全称 地址解析协议在局域网内信息是以帧传输的。要记住地址就要有一个ARP缓存表,保存的就是当前局域网内与你连接的机器的IP和MAC的地址。ARP—a就可以查看到这个表。第一个是IP。第二个是网卡地址。第三个是连接类型。

网关

网关分很多的类型:传输网关、应用网关、协议网关等等,我们经常说的网关是指的传输网关,简称网关。那么网关到底是什么呢?网关实质上是一个网络通向其他网络的IP地址。比如有网络A和网络B,网络A的IP地址范围为 “192.168.1.1192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上, TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。网关的配置可在具有路由功能的设备上(路由器、三层及以上交换机)

如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。网络B向网络A转发数据包的过程也是如此。

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

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

相关文章

【Python进阶】正则表达式、pymysql模块

目录 一、正则表达式的概述 1、基本介绍 2、快速使用re模块 二、正则的常见规则 1、匹配单个字符 2、原始字符串 3、匹配多个字符 4、匹配开头和结尾 5、匹配分组 三、Python与MySQL交互 1、pymysql模块的安装 2、pymysql的操作步骤 3、connection对象 4、cursor…

【Git从入门到精通】——Git常用命令总结

🎼个人主页:【Y小夜】 😎作者简介:一位双非学校的大二学生,编程爱好者, 专注于基础和实战分享,欢迎私信咨询! 🎆入门专栏:🎇【MySQL&#xff0…

购物系统 (GUI)

一、前言 1 研究背景 随着电子商务的快速发展,越来越多的消费者选择在网上购物。为了提高用户体验、提升交易效率和管理便捷性,许多企业和个人开始开发和使用各种类型的购物系统商城。而基于Java Swing的购物系统商城正是应运而生的一种应用。Java Swi…

C++中链表的底层迭代器实现

大家都知道在C的学习中迭代器是必不可少的,今天我们学习的是C中的链表的底层迭代器的实现,首先我们应该先知道链表的底层迭代器和顺序表的底层迭代器在实现上有什么区别,为什么顺序表的底层迭代器更加容易实现,而链表的底层迭代器…

更换Mac硬盘后如何将数据恢复到新驱动器?

在本文中,我们将分享几种在用新 Mac 硬盘替换旧 Mac 硬盘后从旧 Mac 硬盘恢复数据的方法。 您是否最近由于存储空间不足或损坏问题而必须更换新的Mac硬盘?是否要将受影响驱动器中的数据恢复到新驱动器?我们可以帮忙!但是&#xf…

线性代数|机器学习-P24加速梯度下降(动量法)

文章目录 1. 概述2. 引入3. 动量法梯度下降 1. 概述 我们之前学的最速梯度下降[线搜索方法] 公式如下: x k 1 x k − s k ∇ f ( x k ) \begin{equation} x_{k1}x_k-s_k\nabla f(x_k) \end{equation} xk1​xk​−sk​∇f(xk​)​​ 但对于这种方法来说&#xff…

手机数据恢复篇:如何从 Android 设备内恢复数据

如何从 Android 内部存储恢复数据? 要从 Android 内部存储恢复已删除的文件,您需要一个 Android 内部存储恢复应用或程序。请继续阅读以获取可靠的 Android 数据恢复软件,并让它帮助您从 Android 手机的内部存储恢复数据。 是否有可能恢复 An…

【vue3-命名规范以及注意事项】

使用多字组件名 使用详细的道具定义props 在提交的代码中,prop定义应该总是尽可能详细,至少指定类型。 在声明期间,道具名应该始终使用camelCase。当在in-DOM模板中使用时,props应该是串式的。单文件组件模板和JSX可以使用keba…

sklearn之神经网络学习算法

文章目录 什么是神经网络人工神经网络的结构输入层输出层隐含层神经元的链接 近几年深度学习还是比较火的,尤其是在大语言模型之后,在本质上深度学习网络就是层数比较多的神经网络。sklearn并不支持深度学习,但是支持多层感知机(浅…

AI 歌词创作:突破想象,惊艳听觉

在音乐的世界里,歌词是触动心灵的钥匙,是引发共鸣的桥梁。而如今,AI 歌词创作正以其惊人的力量,突破我们的想象,为我们带来前所未有的听觉盛宴。 “妙笔生词智能写歌词软件(veve522)”便是这场…

【机器学习-00】机器学习是什么?

在科技飞速发展的今天,机器学习已成为一个热门话题,广泛应用于各个行业和领域。那么,机器学习到底是什么?它又是如何工作的?本文将深入探讨机器学习的定义、原理及其在各领域的应用,带领读者走进这个神秘而…

QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型

QuantML-Qlib Model | ICLR 24: 基于独立Patch的时序预测模型 原创 QuantML QuantML 2024年07月12日 19:23 上海 Content 论文提出了一种新的时间序列嵌入方法,主要观点是独立地嵌入时间序列块(patches),而不是捕捉这些块之间的…

MySQl高级篇-主从复制

主从复制 复制的基本原理 slave会从master读取binlog来进行数据同步 MySQL复制过程分成三步: master将改变记录到二进制日志(binary log)。这些记录过程叫做二进制日志事件,binary log events;slave将master的binary log events拷贝到它的中继日志(r…

SpringBoot+Vue实现简单的文件上传(txt篇)

SpringBootVue实现简单的文件上传 1 环境 SpringBoot 3.2.1&#xff0c;Vue 2&#xff0c;ElementUI 2 页面 3 效果&#xff1a;只能上传txt文件且大小限制为2M&#xff0c;选择文件后自动上传。 4 前端代码 <template><div class"container"><el-…

2024-07-13 Unity AI状态机2 —— 项目介绍

文章目录 1 项目介绍2 模块介绍2.1 BaseState2.2 ...State2.2.1 PatrolState2.2.2 ChaseState / AttackState / BackState 2.3 StateMachine2.4 Monster 3 其他功能4 类图 项目借鉴 B 站唐老狮 2023年直播内容。 点击前往唐老狮 B 站主页。 1 项目介绍 ​ 本项目使用 Unity 2…

SQL 字段类型-上

总 数据类型关键字描述整数迷你整型tinyint使用1个字节存储整数短整型smallint使用2个字节存储整数中整型mediumint使用3个字节存储整数标准整型int使用4个字节存储整数小数大整型bigint使用8个字节存储单进度float (.. , ..)使用4个字节 ...表示宽度 后面的... 表示小数位双精…

链接追踪系列-08.mac m1安装logstash-番外

下载地址&#xff1a;https://elasticsearch.cn/download/ 配置es相关&#xff1a; #安装plugin&#xff1a; jelexbogon bin % ./logstash-plugin install logstash-codec-json_lines启动&#xff1a;指定配置文件运行 jelexbogon bin % nohup ./logstash -f ../config…

docker安装mysql, 虚拟机连接mysql

docker已安装&#xff1a;安装教程docker和docker的安装-CSDN博客docker是容器技术&#xff08;软件&#xff09;&#xff0c;提供标准的应用镜像&#xff08;包含应用&#xff0c;和应用的依赖&#xff09;可以轻松在docker里安装应用&#xff0c;每个应用独立容器。https://b…

Linux系列--命令详解

目录 一、Linux资源管理方式 二、查询类型命令详解 三、文件管理类型命令详解 四、文件压缩与解压 五、文件编辑 六、系统命令 七、文件内容查看命令 一、Linux资源管理方式 linux操作系统采用一个文档树来组织所有的资源。这棵树的根目录的名字叫做&#xff1a;//…

Spring AOP 实现 Excel 导出统一处理

你好&#xff0c;我是柳岸花开。在实际开发中&#xff0c;经常会遇到需要导出 Excel 数据的需求。为了避免代码重复&#xff0c;我们可以使用 Spring AOP&#xff08;面向切面编程&#xff09;来实现 Excel 导出的统一处理。本文将介绍如何使用 Spring AOP 在项目中统一处理 Ex…