网络原理初识(2)

目录

一、协议分层

        1、分层的作用

        2、OSI七层模型

        3、TCP / IP五层(或四层)模型

        4、网络设备所在分层

        5、网络分层对应

二、封装和分用

发送过程(封装)

1、应用层(应用程序) QQ

2、输入层

3、网络层

4、数据链路层

5、物理层

接收过程(分用)

1、物理层

2、数据链路层--以太网

3、网络层--IP协议

4、传输层--UDP协议

5、应用层--QQ应用程序

现实世界的封装和分用

假设上面其中某个节点是交换机

假设上面其中某个节点是路由器


一、协议分层

        1、分层的作用

        网络通信过程中,涉及到的细节非常多,如果要有一个协议来完成网络通信,就要约定好方方面面的内容,因为细节非常多,就导致协议非常麻烦。

        一个协议太庞大复制,就把它拆分成多个功能单一的协议,拆分出来的协议太多了,为了让这些协议更好的相互配合,就引用了协议分层

        网络协议被拆分出来后,就把这些协议进行分层,把功能相似的协议放到同一层,上层协议能调用下层协议的功能,下层协议给上层协议提供服务。类似公司的老板--领导--组织--员工体系。

        协议分层的初心就是让一个复制的协议变成多个简单的协议,这还附带了一些好处,如图:

        (1)上层协议直接使用下层协议就好了,不需要了解下层协议的细节

        如上图,语言层,不管老人还是小孩,只要会说汉语,就能打电话,并不需要知道电话机的工作原理。

        (2)某一层协议进行替换后,对其他协议并没有啥影响

        如上图,电话机协议换成汉语协议和英语协议,还是能打电话,说汉语的就使用无线电,说英语的就使用电话机,还是可以实现打电话这个功能,并没有啥影响。

        2、OSI七层模型

        最初大佬设计的方案,后来在实施过程中,因为太麻烦了,就简化成五层。

        OSI:即Open System Interconnection,开放系统互连.

OSI七层网络模型是一个逻辑上的定义和规范:把网络从逻辑上分为了七层.

OSI七层模型是一种框架性的设计方法,其最主要的功能使就是帮助不同类型的主机实现数据传输; 

        OSI:七层模型划分为以下七层:

        3、TCP / IP五层(或四层)模型

        这里的或四层的意思是不算物理层,物理层是纯硬件的,而程序员往往不用理会物理层。

        1)应用层:程序拿到数据后,要用来干嘛,解决什么问题。

        类似网上下单商品后,装进快递盒贴码后交给快递小哥,快递小哥拿快递盒开始运送。

        2)传输层:负责关注网络数据包的 起点和终点(从哪来到哪去),端口和端口之间的传输。

        类似网购的商品发送地址和收货地址,广东-->上海

        3)网络层:负责关注起点和终点之间的 路径规划(怎么走)。

        类似规划路线:广东-->武汉-->河北-->...-->上海

        4)数据链路层:负责两个相邻节点的传输。

        类似上海-->南京:飞机空运;南京-->无锡:铁路运输。

        5)物理层:通信过程的基础设施

        类似公路,铁路,航线....

        4、网络设备所在分层

        对于一台主机:它的操作系统内核实现了从传输层到物理层的内容,即TCP / IP五层模型的下四层

        对于一台路由器:它实现了从网络层到物理层,即TCP / IP五层模型的下三层

        对于一台交换机:它实现了从数据链路层到物理层,即TCP / IP五层模型的下二层

        对于一台集线器:它只实现了物理层

        注意:这里谈到的路由器和交换机是 “经典”的路由器、交换机(教科书上的);事实上,真实世界中的交换机 / 路由器要更复杂,功能也更强大。

        很多交换机,也具备一些路由器的的功能,也能工作在网络层。

        很多路由器,也具备一些交换机的功能,也能工作在数据链路层。

        现实世界的情况和考试的情况 可能存在差异。

        5、网络分层对应

        网络数据传输时,经过不同的网络结点(主机,路由器)时,网络分层需要对应.

        以下为同一个网段中两台主机进行文件传输:

        两台计算机通过TCP/IP协议通讯的过程如下图所示:

        TCP/IP通讯过程:

        以下为跨网段的主机文件传输:数据从一台计算机到另一台计算机传输过程中要经过一个或多个路由器.    


二、封装和分用

        封装和分用是网络传输过程中,最核心的过程。

1.不同协议层对数据包有不同的称谓:包(packet)->IP数据包,;段(segment)->TCP数据段;

报(datagram)->UDP数据报;帧(frame)->以太网数据帧.

2.应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装

3.首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息.

4.数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥离出相应的首部,根据首部中的"上层协议字段"将数据交给对应的上层协议处理.

        举个例子,介绍分装分用的过程:A 通过QQ 给 B 发送一个 hello。

发送过程(封装)

1、应用层(应用程序) QQ

        QQ从消息输入框,获取到用户输入的 “hello”,就要把这个字符串构造成应用层的数据包;QQ这样的程序内部就设置了一个应用层协议:应用层数据包就是按照这个应用层协议约定的格式来构造的。

        约定格式如下:

        应用程序就会调用操作系统的api,把这个数据包交给传输层。

2、输入层

        输入层就会把上述数据作为一个整体,再构造成一个传输层的数据包。

        此处假定使用UDP来进行通信,就会构造成一个UDP的数据包。如图:

        UDP报头:虽然不能保护数据,但能起到类似 “贴标签”的效果,就能承载一些关键的、用来转发数据的信息。对于UDP报头来说,承载的最重要的信息就是源端口目的端口

        形如上述添加报头的过程,就叫做封装,其实就是字符串拼接,只不过拼的报头,具有一定的结构。

        拼装好传输层数据包之后,就要把这个数据包进一步的交给下层,网络层继续进行封装。

3、网络层

        这里涉及的最核心的协议:IP协议。

        网络层根据IP协议,把刚才传输层的UDP数据包作为一个整体,再拼上IP协议的报头,构造成一个IP数据包。如图:

        IP协议的报头,相当于把整个UDP数据包当成一个整体了。这里也会包含一些辅助转发的关键信息,此处最关键的信息就是 源IP目的IP

        构造完成完整的IP数据包后,IP协议继续调用数据链路层的 api,再把数据交给数据链路层的协议处理。

4、数据链路层

        这里涉及核心的协议:以太网,此处的 “以太” 用来表示网络数据传输的介质。

        以太网就是日常最常见到的 有线网络,日常用到的网线,也叫做 “以太网线”,日常用到的网口,也叫做 “以太网口”,用到的交换机,也叫做 “以太网交换机”。

        在数据链路层中,会把IP数据包作为一个整体,再添加以太网数据帧,在IP数据包基础上,添加帧头和帧尾。如图下就是以太网数据帧:

        构造完以太网数据帧后,以太网协议就会把以数据交给物理层。

5、物理层

        物理层涉及到的是硬件设备,把上述这样的以太网数据帧,它是二进制结构(一串 0 1 0 1 这样的数据),转换成光信号 / 电信号 / 电磁波。

        光信号:光纤,通过光的频谱进行编码。

        电信号:网线,高电平 / 低电平

        电磁波:无线WiFi

经过上述流程,数据才从你电脑上发送出去

接收过程(分用)

        中间过程暂时不考虑,假定数据包已经到达B的网卡了,B如何处理这个数据包的过程,就称为 分用。

1、物理层

        B的物理层收到光信号 / 电信号 / 电磁波,就会把这些物理信号转换成数字信号(二进制的 0 1 0 1),得到一个以太网数据帧,进一步的把这个数据帧交给数据链路层处理。

2、数据链路层--以太网

        按照以太网数据帧的格式,来解析,取出其中的载荷,再交给上层协议。(发送方和接收方得使用一样的协议才行)如图:

3、网络层--IP协议

        按照IP协议的格式进行解析,取出其中的载荷,再交给上层协议。如图:

        

4、传输层--UDP协议

        按照UDP协议的格式来解析,取出其中的载荷,再交给上一层。如图:

5、应用层--QQ应用程序

        按照QQ应用程序内部的应用层协议格式来解析数据,如图:

        qq拿到上面数据后,就会再窗口给你弹出提示,并且把消息、发送者、发送时间 都显示在连聊天窗口上。

现实世界的封装和分用

        上面这种情况是两台主机网线直连的情况,并不是真实情况,真实情况更加复杂,会通过一系列交换机 / 路由器 进行数据转发。

       但实际上,即使是经过路由器或者交换机,上述的封装分用过程,也同样适用,只不过,封装分用的程度不一定是到 应用层(五层都有)。

        对于经典的交换机来说,就只需要封装分用到数据链路层

        对于经典的路由器来说,就只需要封装分用到网络层

假设上面其中某个节点是交换机

        交换机就会把上述光电信号转换成以太网数据帧二进制,交给数据链路层。如图:

        交换机的数据链路层就会对上述数据进行解析,这个解析过程:一方面要取出载荷部分,另一方面要解析帧头的关键信息

        根据帧头中的信息,决定下一步把数据往哪里进行发送,根据这个情况,再构造出新的以太网数据帧。如图:

        把新的数据继续通过物理层发送出去。

假设上面其中某个节点是路由器

        路由器则比交换机要更复杂一些,就是封装分用到网络层。

        先是物理层拿到光电信号,转换成二进制数据,再交给数据链路层,如图:

        数据链路层根据上面的数据进行解析,取出载荷,交给网络层(IP协议)。

        网络层中,IP协议进一步对收到的数据进行解析,取出载荷。

        也要解析IP报头,路由器需要通过IP报头,得到目的IP,接下来才知道如何转发。

        取出IP报头,IP协议进行重新封装,得到新的IP报头,如图:

        继续交给数据链路层,继续加上新的帧头和帧尾,如图:

        这个数据再交给物理层,转成光电信号,继续传输。

上述是经典的交换机和路由器,现实情况要更复制一下,比如交换机,就要截取 / 解析你传输的数据,会封装分用到应用层,把你的hello拎出来看看,你作为外人,无从得知,比如棱镜门事件,就是利用这一机制,监听各国机密的。


都看到这了,点个赞再走吧,谢谢谢谢谢

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

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

相关文章

ai直播数字人!AI大模型应用开发高级技术

AI直播数字人是一种新兴的技术应用,通过AI大模型的应用开发,实现了数字人的虚拟化呈现。数字人作为一种虚拟人物形象,在直播平台或其他媒介中可以展现出真实人物的表情、动作和声音,并且能够与观众进行实时互动,给人带…

视觉slam十四讲学习笔记(七)视觉里程计 2

介绍直接法的原理,并利用 g2o 实现直接法中的一些核心算法。 前言 1. 理解光流法跟踪特征点的原理。 2. 理解直接法是如何估计相机位姿的。 3. 使用 g2o 进行直接法的计算。 哔哩哔哩课程连接:视觉SLAM十四讲ch7_2_哔哩哔哩_bilibili 一、直接法…

django中URL配置和视图渲染

前提: 使用django-admin startproject XXX创建了一个django项目【项目目录为project】 django-admin startproject project 一:控制器配置 在项目的根目录创建一个Controller目录,后续所有的控制器方法都放在此目录下 这里我们在Control…

20240307-2-前端开发校招面试问题整理HTML

前端开发校招面试问题整理【2】——HTML 1、HTML 元素&#xff08;element&#xff09; Q&#xff1a;简单介绍下常用的 HTML 元素&#xff1f; 块状标签&#xff1a;元素独占一行&#xff0c;可指定宽、高。 常用的块状元素有&#xff1a; <div>、<p>、<h1&…

unity学习(50)——服务器三次注册限制以及数据库化角色信息5--角色信息数据库化收尾

上一节内容结束后确实可以写入文件了&#xff0c;但还有两个问题&#xff1a; 1.一个是players.txt中&#xff0c;每次重启服务器&#xff0c;当注册新账号创建角色时&#xff0c;players.txt之前内容都会清空。 2.players.txt之前已经注册3次的账号&#xff0c;新注册的角色…

首发:鸿蒙面试真题分享【独此一份】

最早在23年华为秋季发布会中&#xff0c;就已经宣布了“纯血鸿蒙”。而目前鸿蒙处于星河版中&#xff0c;加速了各大互联网厂商的合作。目前已经有200参与鸿蒙的原生应用开发当中。对此各大招聘网站上的鸿蒙开发需求&#xff0c;每日都在增长中。 2024大厂面试真题 目前的鸿蒙…

使用Java生成JWT(JSON Web Token)的详细指南

介绍 在现代应用程序中&#xff0c;身份验证和授权是至关重要的。JSON Web Token&#xff08;JWT&#xff09;是一种开放标准&#xff08;RFC 7519&#xff09;&#xff0c;它定义了一种紧凑且自包含的方式用于在各方之间安全地传输信息。在本文中&#xff0c;我们将学习如何使…

驱动调试第013期-G120XA驱动同步电机应用案例

概述 SINAMICS G120XA是西门子SINAMICS系列变频器的新成员&#xff0c; 功率范围覆盖0.75 kW~560 kW&#xff0c;内置风机和水泵行业应用功能&#xff0c;汇集了优异的高性能矢量控制算法&#xff0c;可以轻松的驱动风机、水泵及压缩机等负载。胜任各种应用场合&#xff0c;专…

Postman 接口自动化测试教程:入门介绍和从 0 到 1 搭建 Postman 接口自动化测试项目

关于Postman接口自动化测试的导引&#xff0c;全面介绍入门基础和从零开始搭建项目的步骤。学习如何有效地使用Postman进行API测试&#xff0c;了解项目搭建的基础结构、环境设置和测试用例的编写。无论您是新手还是经验丰富的测试人员&#xff0c;这篇教程都将为您提供清晰的指…

pycuda安装失败问题

pycuda安装失败问题 遇到一个pycuda安装失败的问题&#xff0c; 这里有一个合理的解释可以去尝试一下&#xff0c;看起来很有道理&#xff1a;

MySQL为什么要用B+树?

二叉树&#xff08;二叉查找树&#xff09; 平衡二叉树&#xff08;B树就是B-树&#xff09;(解决了二叉查找树的极端情况&#xff09; Q&#xff1a;具体是怎么解决的呢&#xff1f; A&#xff1a; 树左右两边层数相差不大于1一旦符合条件1的时候&#xff0c;就进行左旋/右…

无法更新下载安装升级谷歌浏览器Chrome无法更新至最新版本怎么解决下载更新谷歌浏览器?

谷歌Chrome浏览器有新版本chrome可用&#xff0c;点击后无法更新chrome至最新版本&#xff0c;造成每次在电脑上打开谷歌chrome浏览器都会提示更新&#xff0c;重新安装chrome又无法打开谷歌浏览器官方网站。 谷歌浏览器Chrome无法更新至最新版本怎么办&#xff1f; 1、百度搜…

System Verilog学习笔记(十八)——线程控制

线程控制 发生器把激励传给代理时&#xff0c;环境类需要知道发生器什么时候完成任务&#xff0c;以便及时终止测试平台中还在运行的线程&#xff0c;这个过程就需要借助线程间的通信来完成。常用的线程间通信有事件控制、wait语句、SV信箱和旗语等。 Verilog对语句有两种分组…

Numpy 数组转换为 Pandas DataFrame

参考&#xff1a;Convert Numpy Array to Pandas DataFrame Numpy 介绍 Numpy是Python中一个非常强大的科学计算库&#xff0c;它提供了许多高效的数组操作方法。Pandas是另一个重要的数据处理库&#xff0c;它基于Numpy&#xff0c;并提供了更高级别的数据分析和处理工具。在…

SMT贴片加工——品质检验要求

一、元器件贴装工艺品质要求 1.元器件贴装需整齐、正中&#xff0c;无偏移、歪斜 2.贴装的元器件型号规格应正确&#xff1b;元器件应无漏贴、错贴 3.贴片元器件不允许有反贴 4.有极性要求的贴片器件安装需按正确的极性标示安装 二、元器件焊锡工艺要求 1.FPC板面应无影响…

Mybatis-Plus——05,乐观锁(新注解)

乐观锁&#xff08;新注解&#xff09; 一、数据库添加一个字段二、实体类添加version注解三、注册乐观锁插件四、测试一下4.1成功的乐观锁4.2失败的乐观锁————————创作不易&#xff0c;笔记不易&#xff0c;如觉不错&#xff0c;请三连&#xff0c;谢谢~~ 乐观锁实现方…

[LeetCode][8]【学习日记】实现字符串转换整数 (atoi)函数

题目 8. 字符串转换整数 (atoi) 请你来实现一个 myAtoi(string s) 函数&#xff0c;使其能将字符串转换成一个 32 位有符号整数&#xff08;类似 C/C 中的 atoi 函数&#xff09;。 函数 myAtoi(string s) 的算法如下&#xff1a; 读入字符串并丢弃无用的前导空格检查下一个字…

nginx代理minio客户端

错误方式 在点击桶名查看文件时, 会一直处于loading加载中 worker_processes 1; #设置 Nginx 启动的工作进程数为 1。events {worker_connections 1024; ##设置每个工作进程的最大并发连接数为 1024。 }http {include mime.types; #该文件定义了文件扩展名和 MIME 类型…

Linux文件描述符剖析

文章目录 文件描述符文件描述符分配规则重定向软硬链接软链接&#xff08;Symbolic Link&#xff09;&#xff1a;硬链接&#xff08;Hard Link&#xff09;&#xff1a; 文件描述符 文件描述符&#xff08;File Descriptor&#xff09;是一个非负整数&#xff0c;用于标识打开…

Java开发从入门到精通(一):Java的基础语法高阶

Java大数据开发和安全开发 &#xff08;一)Java的流程控制1.1 分支语句1.1.1 IF分支语句第一种IF语句第二种IF-ELSE语句第三种IF-ELSE IF-ELSE语句if语句使用的几个常见问题 1.1.2 switch分支语句switch分支的执行流程switch分支的导学案例:电子备忘录if、switch的比较&#xf…