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

news2024/12/26 19:06:52

目录

  • 七层网络协议
  • 五层网络协议
    • 封装
      • 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程序拿到这些信息之后,就会在窗口中给你弹出提示~
并且把消息/消息的发送者/发送时间 都显示到聊天窗口上

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

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

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

相关文章

在鲲鹏麒麟服务器上部署MySQL主从集群

因项目需求需要部署主从MySQL集群,继续采用上次的部署的MySQL镜像arm64v8/mysql:latest,版本信息为v8.1.0。计划部署服务器192.168.31.100和192.168.31.101 部署MySQL主节点 在192.168.31.100上先创建好/data/docker/mysql/data和/data/docker/mysql/l…

一款支持80+语言,包括:拉丁文、中文、阿拉伯文、梵文等开源OCR库

大家好,今天给大家分享一个基于PyTorch的OCR库EasyOCR,它允许开发者通过简单的API调用来读取图片中的文本,无需复杂的模型训练过程。 项目介绍 EasyOCR 是一个基于Python的开源项目,它提供了一个简单易用的光学字符识别&#xff…

C++学习日记---第16天

笔记复习 1.C对象模型 在C中,类内的成员变量和成员函数分开存储 我们知道,C中的成员变量和成员函数均可分为两种,一种是普通的,一种是静态的,对于静态成员变量和静态成员函数,我们知道他们不属于类的对象…

如何搭建JMeter分布式集群环境来进行性能测试

在性能测试中,当面对海量用户请求的压力测试时,单机模式的JMeter往往力不从心。如何通过分布式集群环境,充分发挥JMeter的性能测试能力?这正是许多测试工程师在面临高并发、海量数据时最关注的问题。那么,如何轻松搭建…

人工智能-卷积神经网络(学习向)

一.概述; 卷积神经网络(Convolutional Neural Network, CNN)是一种专门用于处理具有类似网格结构的数据(如图像)的深度学习模型。 主要用于处理机器视觉任务。 主要功能; 1.图像分类 2.目标检测 3.图像分割…

一些基于宏基因组的巨型病毒研究

Introduction 上次已经介绍了巨型病毒的一些基本内容,也讲到了不依赖培养的方法是从环境样本中发现巨型病毒基因组成的不可或缺的工具。可以通过基因组解析宏基因组学来从环境序列数据中获取 NCLDV 基因组并进行深入研究如功能基因,宿主,进化…

【Django-xadmin】

时间长不用,会忘的系列 1、Django-xadmin后台字段显示处理 主要是修改每个模块下adminx.py文件 代码解释:第1行控制表单字段显示第2行控制列表字段显示第3行控制搜索条件第4行控制过滤条件第5行支持单个或多个字段信息修改第6行列表分页,每页显示多少行…

深入浅出体验AI生图产品Dall-E

DALL-E是由OpenAI开发的一种革命性的AI图像生成工具,能够根据文本描述生成图像。它的名字灵感来源于著名画家萨尔瓦多达利(Salvador Dal)和皮克斯动画电影中的角色瓦力(WALL-E),这暗示了其在艺术创造力与技…

域名解析系统 DNS

1.域名系统概述 用户与互联网上某台主机通信时,必须要知道对方的IP地址。然而用户很难记住长达32 位的二进制主机地址。即使是点分十进制地址也并不太容易记忆。但在应用层为了便于用户记忆各种网络应用,连接在互联网上的主机不仅有P地址,而…

学习ASP.NET Core的身份认证(基于Session的身份认证3)

开源博客项目Blog中提供了另一种访问控制方式,其基于自定义类及函数的特性类控制访问权限。本文学习并测试开源博客项目Blog的访问控制方式,测试程序中直接复用开源博客项目Blog中的相关类及接口定义,并在其上调整判断逻辑。   首先是接口A…

十六(AJAX3)、XMLHttpRequest、Promise、简易axios封装、案例天气预报、lodash-debounce防抖

1. XMLHttpRequest 1.1 XMLHttpRequest-基本使用 /* 定义:XMLHttpRequest(XHR)对象用于与服务器交互。通过 XMLHttpRequest 可以在不刷新页面的情况下请求特定 URL,获取数据。这允许网页在不影响用户操作的情况下,更…

【QT】音乐播放器demo

1、使用设计师模式绘制ui界面 添加QPushButton并设置大小,ctrl鼠标拖动复制相同的组件。 添加icon //ps:icon下载网站 设置按钮无边框并设置鼠标悬停颜色: 修改QWidget样式表,添加: *{ border:none; } QPushBu…

「Mac畅玩鸿蒙与硬件34」UI互动应用篇11 - 颜色选择器

本篇将带你实现一个颜色选择器应用。用户可以从预设颜色中选择,或者通过输入颜色代码自定义颜色来动态更改界面背景。该应用展示了如何结合用户输入、状态管理和界面动态更新的功能。 关键词 UI互动应用颜色选择器状态管理用户输入界面动态更新 一、功能说明 颜色…

T620存储安全方案SoC芯片技术手册

系统资源 集成32位国产CPU CK803S;最高工作频率260Mhz CK803S内置16KB I/D Cache,内置32KB DTCM 32KB ROM;256KB SRAM;8KB SRAM(系统专用) 512KB/1MB 片内Flash 安全算法 支持SM4数据加密,加密性…

计算机光电成像理论基础

一、透过散射介质成像 1.1 光在散射介质中传输 光子携带物体信息并进行成像的过程是一个涉及光与物质相互作用的物理现象。这个过程可以分为几个步骤来理解: 1. **光的发射或反射**: - 自然界中的物体可以发射光(如太阳)&am…

C语言——自我介绍_Gitee的基本使用

自我介绍 一名信息安全技术应用专业的大学生,来到CSDN博客论坛已有两年。写博客的目的:第一点是为了学习到更多的知识,以便以后所需;第二点是为了读者,俺是一个初学者,希望可以和读者朋友共同进步&#xf…

Redis高阶集群搭建+集群读写

问题 容量不够,redis 如何进行扩容?并发写操作, redis 如何分摊?另外,主从模式,薪火相传模式,主机宕机,导致 ip 地址发生变化,应用程序中配置需要修改对应的主机地址、端…

windows下kafka初体验简易demo

这里提供了windows下的java1.8和kafka3.9.0版本汇总,可直接免费下载 【免费】java1.8kafka2.13版本汇总资源-CSDN文库 解压后可以得到一个文件夹 资料汇总内有一个kafka文件资料包.tgz,解压后可得到下述文件夹kafka_2.13-3.9.0,资料汇总内还…

深入理解 TCP 标志位(TCP Flags)

深入理解 TCP 标志位(TCP Flags) 1. 简介 在网络安全和网络分析领域,TCP标志位(TCP Flags)是理解网络行为和流量模式的关键概念。特别是在使用工具如Nmap进行端口扫描时,理解这些标志位的意义和用法至关重…

【智商检测——DP】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510, M 110; int f[N][M]; int main() {int n, k;cin >> n >> k;for(int i 1; i < n; i){int x;cin >> x;f[i][0] __gcd(f[i-1][0], x);for(int j 1; j < min(i, k)…