五层网络协议(封装和分用)

目录

  • 七层网络协议
  • 五层网络协议
    • 封装
      • 1.应用层
      • 2.传输层
      • 3.网络层
      • 4.数据链路层
      • 5.物理层
    • 分用
      • 1. 物理层
      • 2.数据链路层
      • 3.网络层 IP 协议
      • 4.传输层 UDP 协议
      • 5.应用层

七层网络协议

网络通信过程中,需要涉及到的细节,其实是非常非常多的,如果要有一个协议来完成网络通信,就需要约定好方方面面的内容,非常多的细节,导致这个协议非常复杂。

怎么办呢?拆分。一个协议太复杂太庞大,非常不利于学习和维护,需要把一个高大全的协议,拆分成多个功能更单一,“小而美”的协议。拆分出来的协议太多了怎么办?为了让这些协议更好的相互配合,引入了协议分层,就好比一个公司一样的。

网络通信协议拆分的多了之后也是分成了很多层。把功能定位相似的协议放到同一层之中。上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。

只有相邻的层次之间可以进行沟通,不能跨层次调用(就容易混乱)

协议分层的初心是为了让复杂的一个协议变成更简单的多个协议
还附带了一些好处:

1)上层协议直接使用下层协议即可,不需要了解下层协议的细节(相当于下层协议吧细节封装好了)

在这里插入图片描述

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

在这里插入图片描述

五层网络协议

OSI七层网络协议,最初大佬们设计的时候,给出的方案,后来在实施过程中,太麻烦了,就简化成了五层。

应用层 :程序拿到数据之后,要用来干啥,解决什么问题

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

网络层:负责关注起点终点之间,要走哪条路(路径规划)

数据链路层:负责两个相邻节点之间的传输

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

TCP/IP五层(或四层)模型:四层就不算物理层,物理层是纯硬件的。

在这里插入图片描述

说是五层,实际上下面这四层都是
在操作系统内核,硬件,驱动程序中已经实现好了(计算机内置了),咱们作为程序员在网络编程过程中能影响到的也就只有应用层了

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

路由器工作在网络层,交换机工作在数据链路层

这里的路由器/交换机是“经典”的路由器交换机(教科书上的)。事实上,真实的交换机/路由器的功能更复杂,功能更复杂。很多交换机,也具有一些路由器的功能,也能工作在网络层。

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

甚至还有些交换机路由器可以工作在应用层。

封装

网络传输数据过程中,最核心的流程就是封装和分用

比如:A通过QQ给B发送一个hello

1.应用层

(应用程序)QQ

QQ从消息输入框获取到用户输入的hello

就要把这个字符串构造成一个应用层的数据包,

QQ这样的程序内部就设置了一个应用层协议,应用层数据包就是按照这个应用层协议约定的格式(字符串拼接)来构造的

在这里插入图片描述

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

2.传输层

传输层就会把上述数据作为一个整体,再构造成一个传输层的数据包,(传输层涉及到的协议,最主要的就是TCP和UDP

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

在这里插入图片描述

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

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

【交给下层,指的是,下层协议提供一组API(函数),上层调用这个API,并且把刚才构造好的数据通过参数传过去,下层协议就可以来处理这个数据了】

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

3.网络层

这里涉及到的最核心的协议,IP协议

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

在这里插入图片描述

IP报头还会包含一些辅助转发的关键信息,此处最关键的信息就是 源IP和目的IP

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

4.数据链路层

数据链路层这里涉及到的核心协议->以太网

此处“以太”用来表示网络数据传输的介质

以太网就是日常最常见到的 有线网络

日常用到的网线,也叫做“以太网线”,日常用到的网口也叫做“以太网口”

用到的交换机,也叫做“以太网交换机”

以太网数据帧,也是一IP数据包为一个整体,在这个基础上添加上帧头和帧尾

在这里插入图片描述

5.物理层

把上述这样的以太网数据帧,二进制结构转换成光信号/电信号/电磁波,然后进行发送

经过上述一系列的操作,数据终于从你的电脑上发送出去了!!

分用

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

1. 物理层

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

2.数据链路层

按照以太网数据帧的格式,来解析,取出其中的载荷,再交给上层协议~~

在这里插入图片描述

3.网络层 IP 协议

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

在这里插入图片描述

4.传输层 UDP 协议

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

在这里插入图片描述

5.应用层

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

在这里插入图片描述

qq程序拿到这些信息之后,就会在窗口中给你弹出提示~
并且把消息/消息的发送者/发送时间 都显示到聊天窗口上

分用的过程,就是封装的逆向过程~~

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

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

相关文章

阿里云人工智能平台(PAI)免费使用教程

文章目录 注册新建实例交互式建模(DSW)注册 注册阿里云账号进行支付宝验证 新建实例 选择资源信息和环境信息,填写实例名称 资源类型需要选择公共资源,才能使用资源包进行抵扣。目前每月送250计算时。1 * NVIDIA A10 8 vCPU 30 GiB 1 * 24 GiB1 * NVIDIA V100 8 vCPU 32 Gi…

【实战】Oracle基础之控制文件内容的5种查询方法

关于Jady: ★工作经验:近20年IT技术服务经验,熟悉业务又深耕技术,为业务加持左能进行IT技术规划,右能处理综合性故障与疑难杂症; ★成长历程:网络运维、主机/存储运维、程序/数据库开发、大数…

蓝桥杯第 23 场 小白入门赛

一、前言 好久没打蓝桥杯官网上的比赛了,回来感受一下,这难度区分度还是挺大的 二、题目总览 三、具体题目 3.1 1. 三体时间【算法赛】 思路 额...签到题 我的代码 // Problem: 1. 三体时间【算法赛】 // Contest: Lanqiao - 第 23 场 小白入门赛 …

使用 Pytorch 构建 Vanilla GAN

文章目录 一、说明二、什么是 GAN?三、使用 PyTorch 的简单 GAN(完整解释的代码示例)3.1 配置变量3.2 、PyTorch 加速3.3 构建生成器3.4 构建鉴别器 四、准备数据集五、初始化函数六、前向和后向传递七、执行训练步骤八、结果 一、说明 使用…

【Windows 11专业版】使用问题集合

博文将不断学习补充 I、设置WIN R打开应用默认使用管理员启动 1、WIN R输入 secpol.msc 进入“本地安全策略”。 2、按照如下路径,找到条目: “安全设置”—“本地策略”—“安全选项”—“用户账户控制:以管理员批准模式运行所有管理员” …

合规性要求对漏洞管理策略的影响

讨论漏洞管理中持续面临的挑战,包括确定漏洞的优先级和解决修补延迟问题。 介绍合规性要求以及自动化如何简化漏洞管理流程。 您认为为什么尽管技术不断进步,但优先考虑漏洞和修补延迟等挑战仍然存在? 企业基础设施日益复杂,攻…

IDEA全局设置-解决maven加载过慢的问题

一、IDEA全局设置 注意:如果不是全局设置,仅仅针对某个项目有效;例在利用网上教程解决maven加载过慢的问题时,按步骤设置却得不到解决,原因就是没有在全局设置。 1.如何进行全局设置 a.在项目页面,点击f…

Java - JSR223规范解读_在JVM上实现多语言支持

文章目录 1. 概述2. 核心目标3. 支持的脚本语言4. 主要接口5. 脚本引擎的使用执行JavaScript脚本执行groovy脚本1. Groovy简介2. Groovy脚本示例3. 如何在Java中集成 Groovy4. 集成注意事项 6. 与Java集成7. 常见应用场景8. 优缺点9. 总结 1. 概述 JSR223(Java Spe…

oracle数据库的启动与关闭

一.oracle数据库的启动过程 启动实例(Start the Instance) 启动实例:一个Oracle数据库实例由内存结构和后台进程组成,启动实例时会加载这些内存结构和启动进程。实例是数据库的一个运行时环境,它包含了数据库的控制文…

【C++】自主实现stack/queue

大家好,我是苏貝,本篇博客带大家了解C的自主实现stack/queue,如果你觉得我写的还不错的话,可以给我一个赞👍吗,感谢❤️ 目录 1. stack2. queue 栈:后进先出 队列:先进先出 栈和队列…

Hive学习基本概念

基本概念 hive是什么? Facebook 开源,用于解决海量结构化日志的数据统计。 基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张表,并提供类SQL查询功能 本质是将HQL转化为MapReduce程序。 Hive处理的数据存储在H…

Android studio 签名加固后的apk文件

Android studio打包时,可以选择签名类型v1和v2,但是在经过加固后,签名就不在了,或者只有v1签名,这样是不安全的。 操作流程: 1、Android studio 对项目进行打包,生成有签名的apk文件&#xff…

CSS学习记录03

CSS背景 CSS 背景属性用于定义元素的背景效果。 CSS background-color background-color属性指定元素的背景色。 页面的背景色设置如下: body {background-color: lightblue; } 通过CSS,颜色通常由以下方式指定: 有效的颜色名称-比如“…

Unity类银河战士恶魔城学习总结(P155 More example on audio effects更多的音效细节)

【Unity教程】从0编程制作类银河恶魔城游戏_哔哩哔哩_bilibili 教程源地址:https://www.udemy.com/course/2d-rpg-alexdev/ 本章节添加了更多的音效细节 音频管理器 AudioManager.cs 使得多个音效可以同时播放,注释掉以下代码 public void PlaySFX(in…

【分组去重】.NET开源 ORM 框架 SqlSugar 系列

💥 .NET开源 ORM 框架 SqlSugar 系列 🎉🎉🎉 【开篇】.NET开源 ORM 框架 SqlSugar 系列【入门必看】.NET开源 ORM 框架 SqlSugar 系列【实体配置】.NET开源 ORM 框架 SqlSugar 系列【Db First】.NET开源 ORM 框架 SqlSugar 系列…

openwrt利用nftables在校园网环境下开启nat6 (ipv6 nat)

年初写过一篇openwrt在校园网环境下开启ipv6 nat的文章,利用ip6tables控制ipv6的流量。然而从OpenWrt22版本开始,系统内置的防火墙变为nftables,因此配置方法有所改变。本文主要参考了OpenWRT使用nftables实现IPv6 NAT 这篇文章。 友情提示 …

IS-IS的原理

IS-IS的基本概念: 概述: IS-IS,中间系统到中间系统,是ISO国际标准化组织为它的无连接网络协议设计的一种动态路由协议 IS-IS支持CLNP网络和IP网络,采用数据链路层封装,区别于ospf只支持IP网络&#xff0…

006 MATLAB编程基础

01 M文件 MATLAB输入命令有两种方法: 一是在MATLAB主窗口逐行输入命令,每个命令之间用分号或逗号分隔,每行可包含多个命令。 二是将命令组织成一个命令语句文集,使用扩展名“.m”,称为M文件。它由一系列的命令和语句…

hhdb数据库介绍(10-31)

管理 数据恢复 执行数据恢复说明 恢复页面输入正确的恢复信息,提交恢复任务后跳转到恢复页面,任务状态显示“恢复中且有进度更新显示”,此时若触发删除操作,则提示“恢复执行中不能删除” 恢复期间计算节点会暂停服务&#xff…

IntelliJ IDEA配置(mac版本)

用惯了eclipse开发java的小伙伴们,初次接触IntelliJ IDEA可能会和我一样,多少有些不适感,在使用过程中总想着eclipse得对应功能。 接下来,我就总结下我日常开发中遇到的常用配置(不包括快捷键,我认为每个人…