OSI七层网络模型 /TCP/IP五层模型以及封装分用的详细讲解

文章目录

    • 协议分层的好处
    • OSI七层网络模型
    • TCP/IP五层网络模型
    • 网络设备所在的分层(重点)
    • 封装和分用

协议分层的好处

第一点:

在网络通信中,如果使用一个协议来解决所有的问题,那么这个协议就会非常的庞大,非常不利于去学习和理解,相比之下,就可以把大的协议拆分成多个小的协议,让每一个小的协议只关注某一个部分的工作,使每一个小的协议都不会太麻烦,这样也就达到了化繁为简。而在网络通信中,有太多太多的协议,为了方便管理,就对协议进行了分层,按照协议的作用分类,并且约定了不同层次的调用关系,上层协议调用下层协议,下层协议给上层协议提供支持,这样就不容易混乱;

举个例子,比如说,在创业时,这时候就只需要老板一个人对所有员工进行管理即可,就不需要中层领导,随着公司的规模越来越大,老板管不过来了,这时候就需要有中层领导,当老板想要发布某个任务是,就不需要向底层的员工直接发布,只需要向中层领导发布,然后呢,中层领导就会向下再发布,最后到员工手里,这也就是刚才所说的,上层协议调用下层协议,下层协议给上层协议提供支持,这样在通信过程中,就会很容易的方便管理

第二点:

协议分层了之后,上层和下层彼此之间就进行了封装,使用上层协议,不必关注下层协议,使用下层协议,不必关注上层一些,每个协议就只关注自己本身的就可以了

在这里插入图片描述

类似于上图,在语言层,根本不需要理解通信设备是什么样的,我们只需要说话就行了,而在通信设备层,制造通信设备时,并不需要关心你使用什么语言说话,我只要把说的话给传达过去就行,只要会说话,就能打电话,大大降低了使用者的成本

第三点:

每一层协议都可以根据需要灵活的转换

在这里插入图片描述

例如上图,在通信设备层,我可以把电话替换成手机,该怎么打电话怎么说话都是一样的,并不会影响到语言层,在语言层这里,不管是使用英语、汉语、日语,也都不会影响到通信设备层;

这里面提到的数据报严格来讲是有区分的,因为,不同的协议层对数据包都有不同的称谓,在传输层叫做数据段(segment),在网络层叫做数据报(datagram),在链路层叫做数据帧(fram)

计算机中的分层就有两种分层模型👇

OSI七层网络模型

在这里插入图片描述

OSI 七层模型很复杂也不实用,所以只是存在教科书中,而在现实中使用的使 IOS 七层模型的的简化版本 -> TCP/IP五层网络模型

TCP/IP五层网络模型

TCP/IP 是一组协议的名字,在五层网络模型中还包括了其他许多协议,组成了TCP/IP协议簇,TCP/ IP是网络通信过程中最重要的两个协议。

  1. 应用层:描述了应用程序如何发送数据,如何获取数据以及获取数据以后如何使用,应用层是由应用程序实现的,也就是需要通过我们写代码实现的。

  2. 传输层:关注起点和终点

    比如,我在京东上买了一件衣服,提供了收件人地址和收件人电关心中间是怎么运输的,这就是传输层的工作

  3. 网络层:进行路径规划

    商家发货,就需要将衣服交给快递公司,快递公司就会根据起点和终点来进行路径上的规划,筛选出一个合适的路径,这也就是网络层的工作

    传输层和网络层是由操作系统的内核实现的,都是现成的,不需要我们手动去实现。

  4. 数据链路层:两个相邻节点之间的数据传输情况

    当快递公司确定好了路径以后,假如是从上海 -> 南京 -> 郑州,这样的一条路径,接下来需要考虑每一步该怎么走,例如,从上海到南京使用火车,从南京到郑州使用飞机,这也就是 相邻节点之间如何传输,也就是数据链路层的工作

    数据链路层是由驱动程序+硬件实现的,比如硬件厂商搞了个硬件,都会提供对应的驱动程序,由了驱动,才能让操作系统很好的来操作这个硬件。

  5. 物理层:描述的是网络通信的硬件设备,比如使用的网线、光纤应该是啥规格的。

    其实也就是,越往上,关注的话题就越宏观,越往下,关注的细节就更多。

    在这里插入图片描述

网络设备所在的分层(重点)

  • 对于一台主机,它的操作系统内核实现了从应用层到物理层的内容,五层都会涉及到
  • 对于一台路由器,它实现了从网络层到物理层,也就是TCP/IP五层模型的下三层
  • 对于一台交换机,它实现了从数据链路层到物理层,也就是TCP/IP五层网络模型的下两层
  • 对于集线器,它是实现了物理层

封装和分用

描述了网络通信过程中,数据传输的基本流程

举个例子:

考虑有这样一个场景,张三通过QQ把一个hello发个给了李四,通信过程如下:

发送方:

1.应用层:

QQ就会对用户输入的“hello”按照QQ的应用层协议进行封装,打包成一个应用层数据报,这里的打包过程也就是字符串拼接,而应用层协议往往是由程序员自己决定的,在应用层打包好数据报后,就会调用操作系统API将数据报交给传输层

2.传输层:

在传输层这里,就会对应用层数据按照传输层的协议,再进行打包(传输层最常用的协议就是TCP/UDP),以UDP为例,这里的打包过程也是字符串拼接,也就是在应用层数据的基础上,拼接上一个UDP报头报头,这个报头也是一个二进制数据,报头里面最主要的信息就是源端口和目的端口

3.网络层:

传输层数据打包好之后,就会交给网络层,网络层就会根据网络层的协议针对传输层的数据报再进行打包(最常用的协议就是IP协议),也就是在传输层数据报基础上再添加一个报头,也是字符串拼接,在IP报头中也包含了很多的属性,最重要的属性就是 源IP和目的IP

4.数据链路层:

网络层数据打包好之后,就会交给数据链路层。数据链路层比较典型的协议就是以太网协议,所以,在网络层数据报的基础上就会拼接上一个以太网报头和以太网尾,就会构成一个以太网数据帧,在以太网报头中,包含最重要的信息就是 源mac地址,目的mac地址,mac地址也是用来描述一个设备在网络上的地址。

  1. 物理层

    将上述经过打包的数据转换成二进制的0 或 1序列,通过光信号/电信号传输,以上这些打包的过程就是封装,如下图

在这里插入图片描述

数据发出去之后,就会进行一系列的交换机和路由器进行转发,等到目标主机接收到了这些数据后,就会对收到的数据进行分用

接收方:

1.物理层

拿到光/电信号,转换成二进制数据,得到以太网数据报,就会交给数据链路层,按照数据链路层协议处理

2.数据链路层

通过以太网协议,针对以太网数据报进行解析,这个解析过程就会解析出报头和报尾,拿到中间的载荷,把载荷部分交给网络层,按照网络层协议进行处理

3.通过IP协议针对网络层数据报进行解析,去掉报头,拿到载荷,再进一步把载荷交给传输层

4.传输层

此处使用UDP协议针对这个数据报进行解析,去掉报头,把载荷交给应用层,通过报头中的端口号,就可以知道应该把数据交给那个应用程序

5.应用层

QQ 这个应用程序就会按照程序员自定义的应用层协议 进行解析,最后拿到 hello 这个数据

上述只是在讨论发送方和接受方之间的分装和分用的实现,而数据报在网络传输的过程中,如果经过路由器,路由器也会进行一个封装和分用,而这里的封装和分用只是达到网络层,需要拿到网络层的IP地址,根据地址决定下一步怎么传输;

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

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

相关文章

2023华为od机试C卷【转盘寿司】C 实现 单调栈

#include <stdio.h> #include <stdlib.h>/*单调栈 旋转寿司3 15 6 14 3 21 9 17*/ int main() {int i 0;int len 0;int data 0;int nums[501];char c ;while(scanf("%d",&nums[i]) 1){i;len;c getchar();if(c \n)break;}int *out NULL;int *s…

C语言-部分字符串函数详解 1-4

C语言-部分字符串函数详解 1-4 前言1.strlen1.1基本用法1.2注意事项\0size_t 1.3模拟实现 2.strcpy2.1基本用法2.2注意事项**源字符串必须以 \0 结束****会将源字符串中的 \0拷贝到目标空间****目标空间必须可修改****目标空间必须能容纳下源字符串的内容** 2.3模拟实现 3.strn…

【深度学习】【语音TTS】GPT-SoVITS v2 实战,训练一个人的音色,Docker镜像

文章目录 原理Dockerdocker push训练教程: https://www.yuque.com/baicaigongchang1145haoyuangong/ib3g1e/xyyqrfwiu3e2bgyk 原理 Docker 不用docker不行,不好分配显卡, 做个docker镜像: docker pull pytorch/pytorch:2.1.2

接口基础知识9:详解response body(响应体)

课程大纲 一、定义 HTTP响应体&#xff08;HTTP Response Body&#xff09;&#xff1a;服务器返回给客户端的数据部分&#xff0c;‌它包含了服务器对客户端请求的响应内容&#xff08;如客户端请求的资源、客户端请求的执行结果&#xff09;。 与请求类似&#xff0c;HTTP …

python之matplotlib (3 坐标轴设置)

写在前面 在说明坐标轴设置之前&#xff0c;我有必要和大家说清楚图像设置的一些方法&#xff0c;避免陷入困扰模糊的地步。前面我们说过&#xff0c;画图的三种方法&#xff08;python之matplotlib &#xff08;1 介绍及基本用法&#xff09;-CSDN博客&#xff09;。而设置也…

2024开源资产管理系统推荐 8款免费开源IT资产管理系统/软件

开源资产管理系统 开源资产管理系统是帮助企业管理、跟踪和优化其资产的强大工具。这些系统能够自动记录资产的详细信息&#xff0c;如采购日期、使用情况、维护记录等&#xff0c;从而实现资产的全生命周期管理。企业可以通过这些系统优化资产使用效率&#xff0c;减少资产闲…

【TCP】确认应答、超时重传机制和TCP报头

TCP 相关机制 TCP 基本特点&#xff1a;有连接、可靠传输、面向字节流、全双工 有连接、面向字节流和全双工都能在前面的代码中体现有连接&#xff1a;必须要先调用 accept 建立联系才能处理面向字节流&#xff1a;会拿到 clientSocket 对象的 InputStream 和 OutputStream&a…

python人工智能002:jupyter基本使用

小知识&#xff1a;将jupyter修改为中文&#xff0c;修改用户变量&#xff0c; 注意是用户变量&#xff0c;不是系统变量 新增用户变量 变量名&#xff1a;LANG 变量值&#xff1a;zh_CN.UTF8 然后重启jupyter 上一章的软件安装完成之后&#xff0c;就可以创建文件夹来学习写…

MaxKB(二):Ubuntu24.04搭建maxkb开发环境

接上文&#xff1a;windows10搭建maxkb开发环境&#xff08;劝退指南&#xff09; 上文在windows10环境搭建maxkb开发环境遇到各种坑&#xff0c;后面就转战ubuntu平台&#xff0c;果然比较顺利的完成开发环境搭建。当然遇到相关的问题还是可以参考上文《windows10搭建maxkb开发…

拟合与插值|线性最小二乘拟合|非线性最小二乘拟合|一维插值|二维插值

挖掘数据背后的规律是数学建模的重要任务&#xff0c;拟合与插值是常用的分析方法 掌握拟合与插值的基本概念和方法熟悉Matlab相关程序实现能够从数据中挖掘数学规律 拟合问题的基本提法 拟合问题的概念 已知一组数据(以二维为例)&#xff0c;即平面上n个点 ( x i , y i ) …

C语言指针详解-上

C语言指针详解-上 前言1.指针的基本概念1.1指针是什么1.2指针的声明与初始化1.3取地址符&和解引用符*& 运算符用于**获取变量的地址*** 运算符用于访问指针指向的值 2.指针的类型常见数据类型的指针指针与数组、字符串数组指针结构体指针函数指针二级指针void指针 3.指…

对零基础想转行网络安全同学的一点建议

最近有同学在后台留言&#xff0c;0基础怎么学网络安全&#xff1f;0基础可以转行做网络安全吗&#xff1f;以前也碰到过类似的问题&#xff0c;想了想&#xff0c;今天简单写一下。 我的回答是先了解&#xff0c;再入行。 具体怎么做呢&#xff1f; 首先&#xff0c;你要确…

滑动变阻器的未来发展趋势和前景如何?是否有替代品出现?

滑动变阻器是常见的电子元件&#xff0c;主要用于调节电路中的电阻值。随着科技的不断发展&#xff0c;滑动变阻器的未来发展趋势和前景也引起了广泛关注。 滑动变阻器的未来发展将更加注重智能化&#xff0c;随着物联网、人工智能等技术的快速发展&#xff0c;滑动变阻器也将与…

C语言 | Leetcode C语言题解之第347题前K个高频元素

题目&#xff1a; 题解&#xff1a; struct hash_table {int key;int val;// 查看 https://troydhanson.github.io/uthash/ 了解更多UT_hash_handle hh; };typedef struct hash_table* hash_ptr;struct pair {int first;int second; };void swap(struct pair* a, struct pair*…

YUM和NFS

文章目录 yum软件仓库的提供方式RPM软件包的来源Linux系统各家厂商用的安装源命令---yum 配置本地yum源具体操作 搭建ftp yum仓库环境具体操作实操环境服务端一、安装 vsftpd服务二、创建一个文件&#xff0c;并且挂载三、开启服务四、查看挂载 客户端五、备份六、搭建ftp yum仓…

【联想电脑】:使用拓展坞后转接HDMI,无法识别显示屏

项目场景&#xff1a; 作为一个嵌入式软件开发者&#xff0c;有两个外接屏幕&#xff0c;不足为奇。 但是在今天的使用电脑过程中&#xff0c;出现了接了一个拓展坞上面有HDMI接口&#xff0c;但是HDMI接口接上外接显示屏的时候电脑无法识别到&#xff0c;导致只有电脑直连的HD…

使用Docker-compose一键部署Wordpress平台

一、Docker-compose概述&#xff1a; docker-compose&#xff1a;单机容器编排 Dockerfile&#xff1a;先配置好文件&#xff0c;然后build&#xff0c;镜像——>容器。 docker-compose&#xff1a;即可基于Dockerfile&#xff0c;也可以基于镜像&#xff0c;可以一键式拉…

安全基础学习-SM4加密算法

SM4 是一种中国国家密码标准(GB/T 32907-2016)中定义的分组加密算法,又称为“中国商用密码算法SM4”。它是由中国国家密码管理局发布的,并广泛应用于金融、电子商务和其他需要数据加密的场景。 1、SM4 算法概述 SM4 是一种对称加密算法,意味着加密和解密使用相同的密钥。…

使用WINUI3 编写一个小软件1 C#

本篇主要是记录安装和运行的问题。 先说安装 因为我是WIN11&#xff0c;所以勾了&#xff0c;如果你是WIN10就不用勾选11那个&#xff0c;但是我不确定用11要不要10那个&#xff0c;所以就勾了&#xff0c;按安装手册来的。 2、创建项目 照着选就完事了&#xff0c;别选错 这…

【数据结构与算法】快速排序

快速排序目录 一.快速排序的原理二.快速排序的图解三.快速排序的实现1.基准两边分2.分而治之 四.完整代码 一.快速排序的原理 每次选取第一个数为基准数.然后使用乾坤大挪移将大于或者小于基准的元素分别放置于基准数两边.继续分别对基准数两侧未排序的数据使用分治法进行处理…