【计算机网络】认识协议

news2024/11/17 12:57:15

目录

  • 一、应用层
  • 二、协议
  • 三、序列化和反序列化

一、应用层

之前的socket编程,都是在通过系统调用层面,如今我们来向上打通计算机网络。认识应用层的协议和序列化与反序列化
在这里插入图片描述

我们程序员写的一个个解决我们实际问题, 满足我们日常需求的网络程序, 都是在应用层。我们在应用层使用的数据形式一般都是结构体或者对象,而对于网络来说,传输的数据一般都是字节流的

二、协议

为了使数据在网络上能够从源到达目的,网络通信的参与方必须遵循相同的规则,我们将这套规则称为协议(protocol),而协议最终都需要通过计算机语言的方式表示出来。只有通信计算机双方都遵守相同的协议,计算机之间才能互相通信交流。

协议是一种 “约定”. socket api的接口, 在读写数据时, 都是按 “字符串” 的方式来发送接收的. 如果我们要传输一些"结构化的数据" 怎么办呢?我们通过实现网络版的计算机来深入理解协议的作用。

分析:

  • 网络传输的数据也可以是结构体对象,但是最好不要,因为结构体在不同的平台中,有着不同的对齐规则,这样就会导致同一个结构体对象字节流在不同的平台中解析出来的结果不一样;如果想要解析结果需要一样,这样就要求主机和相应的操作系统需要高度的一样,显然,这是不可能的。所以,在网络传输的过程中,需要将结构体序列化成一个大的字符串,为了拿到消息,对于从网络中得到的数据,需要进行反序列化得到相应的信息!
  • 协议本质:对方约定好某种格式的数据,常见的就是结构体或者类来进行表达;
  • 序列化的作用:方便网络进行通信;
  • 反序列化作用:方便上层来设置和获取数据,就是通过. ->操作符来进行读写数据
  • 序列化和反序列化并只是单单将结构体的数据变成一串大的字符串,为了方便提取和标识数据,需要加上相关的分割符号和对应的报头。

三、序列化和反序列化

序列化和反序列化:

  • 序列化是将对象的状态信息转换为可以存储或传输的形式(字节序列)的过程。
  • 反序列化是把字节序列恢复为对象的过程。

OSI七层模型中表示层的作用就是,实现设备固有数据格式和网络标准数据格式的转换。其中设备固有的数据格式指的是数据在应用层上的格式,而网络标准数据格式则指的是序列化之后可以进行网络传输的数据格式。

序列化和反序列化的目的

  • 在网络传输时,序列化目的是为了方便网络数据的发送和接收,无论是何种类型的数据,经过序列化后都变成了二进制序列,此时底层在进行网络数据传输时看到的统一都是二进制序列。
  • 序列化后的二进制序列只有在网络传输时能够被底层识别,上层应用是无法识别序列化后的二进制序列的,因此需要将从网络中获取到的数据进行反序列化,将二进制序列的数据转换成应用层能够识别的数据格式。

我们可以认为网络通信和业务处理处于不同的层级,在进行网络通信时底层看到的都是二进制序列的数据,而在进行业务处理时看得到则是可被上层识别的数据。如果数据需要在业务处理和网络通信之间进行转换,则需要对数据进行对应的序列化或反序列化操作。
在这里插入图片描述

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

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

相关文章

GCC编译器 gcc编译过程 ‘ ‘ ‘ ‘ --- 记一次查缺补漏 ‘ ‘

文章目录 前言GCC介绍GCC编译过程预处理编译汇编链接关于链接: 前言 学习的过程遇到了.s后缀的文件,原来是gcc的编译过程,复习一下。 又牵扯到了各种C编译器,诸如MSVC、MinGW、ClangLLVM等,挖个坑先。 还有关于动态链…

大厂面试题-JVM为什么使用元空间替换了永久代?

目录 面试解析 问题答案 面试解析 我们都知道Java8以及以后的版本中,JVM运行时数据区的结构都在慢慢调整和优化。但实际上这些变化,对于业务开发的小伙伴来说,没有任何影响。 因此我可以说,99%的人都回答不出这个问题。 但是…

AI类APP上线需要注意的问题

上线AI类应用程序需要考虑一系列重要问题,以确保应用程序的顺利运行、用户满意度和法规遵从。以下是在上线AI应用程序时需要注意的关键问题,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。…

目标识别、目标追踪等计算机视觉技术在视频监控领域的应用

随着科技的不断进步和发展,人们的科技意识也在不断提高,人工智能技术也在逐渐改变着人类的生产和生活方式,尤其是在安防监控领域,人工智能技术的落地应用越来越多。 计算机视觉技术是指设备能够“看到”它正在进行的操作&#xf…

【python画画】蘑菇云爱心

来源于网上短视频 数学原理不懂,图个乐 import math from turtle import *def x(i):return 15 * math.sin(i) ** 3 * 20def y(i):return 20 * (12 * math.cos(i) - 5 * math.cos(2 * i) - 2 * math.cos(4 * i))speed(0) color(red) pensize(10) for i in range(51…

安全狗安装

安装waf 关闭apache程序及httpd.exe进程; 运行cmd,cd进入apache/bin文件夹目录, 执行httpd.exe -k install -n apache2.4.39; 启动apache,启动phpstudy 安全狗安装服务名称填写apache2.4.39; 安装安全狗之后就会提示报错 网站防护 可以设备黑白名单 漏…

ChatGLM系列六:基于知识库的问答

1、安装milvus 下载milvus-standalone-docker-compose.yml并保存为docker-compose.yml wget https://github.com/milvus-io/milvus/releases/download/v2.3.2/milvus-standalone-docker-compose.yml -O docker-compose.yml运行milvus sudo docker-compose up -d2、文档预处理…

华为云1核2G2M带宽HECS云服务器价格和性能测评

华为云1核2G2M带宽HECS云服务器优惠价一年51元,高IO_40G系统盘,自带独立公网IP地址,可选北京、乌兰察布、上海和广州地域,华为云1核2G2M带宽服务器适用于小型网站、软件及应用。活动链接:atengyun.com/go/huawei 活动打…

在Win11上部署ChatGLM2-6B详细步骤--(下)开始部署

接上一章《在Win11上部署ChatGLM2-6B详细步骤--(上)准备工作》 这一节我们开始进行ChatGLM2-6B的部署 三:创建虚拟环境 1、找开cmd执行 conda create -n ChatGLM2-6B python3.8 2、激活ChatGLM2-6B conda activate ChatGLM2-6B 3、下载…

echarts将展示全天的数据,如一天的电费,一个停车场一天的饱和度等问题

项目场景: 我们的项目是通过ai识别停车场的停车数,来展示此停车场全天的饱和度,如下 问题描述 后台接口给的数据,就是这种,返回所有有停车数量的时间段,但是我们的x轴要求展示全天的数据,并且可伸缩刻度展示具体时间的停车情况 [{time:2023-10-27 08:20:20,carS…

vue的双向绑定的原理,和angular的对比

目录 前言 Vue的双向绑定用法 代码 Vue的双向绑定原理 Angular的双向绑定用法 代码 Angular的双向绑定原理 理解 图片 关于Vue的双向绑定原理和与Angular的对比,我们可以从以下几个方面进行深入探讨: 前言 双向绑定是现代前端框架的核心特性之…

【sql】sql中true,false 和 null之间and、or运算的理解。

select true and null "tan",false and null "fan",true or null "ton",false or null "fon";结果如下: 怎么理解呢? 很简单,把null当做介于true和false中间的值,也就是如果true1,false…

npm : 无法加载文件 C:\Program Files\nodejs\npm.ps1,因为在此系统上禁止运行脚本。

1、在vscode终端执行 get-ExecutionPolicy ,显示Restricted,说明状态是禁止的。 2、更改状态: set-ExecutionPolicy RemoteSigned 出现需要管理员权限提示,可选择执行 Set-ExecutionPolicy -Scope CurrentUser 出现的ExecutionPolicy参数后输…

《ATTCK视角下的红蓝对抗实战指南》一本书构建完整攻防知识体系

一. 网络安全现状趋势分析 根据中国互联网络信息中心(CNNIC)发布的第51次《中国互联网络发展状况统计报告》,截至2022年12月,我国网民规模为10.67亿,互联网普及率达75.6%。我国有潜力建设全球规模最大、应用渗透最强的…

【AI视野·今日NLP 自然语言处理论文速览 第五十七期】Wed, 18 Oct 2023

AI视野今日CS.NLP 自然语言处理论文速览 Wed, 18 Oct 2023 Totally 82 papers 👉上期速览✈更多精彩请移步主页 Daily Computation and Language Papers VeRA: Vector-based Random Matrix Adaptation Authors Dawid Jan Kopiczko, Tijmen Blankevoort, Yuki Marku…

使用 RAG、Langchain 和 Streamlit 制作用于文档问答的 AI 聊天机器人

在这篇文章中,我们将探索创建一个简单但有效的聊天机器人,该机器人根据上传的 PDF 或文本文件的内容响应查询。该聊天机器人使用 Langchain、FAISS 和 OpenAI 的 GPT-4 构建,将为文档查询提供友好的界面,同时保持对话上下文完整。…

EtherCAT转Profinet协议网关使西门子和倍福的PLC实现通讯的方法

通过倍福PLC协议,远创智控YC-ECTM-PN网关能与倍福系列的PLC进行通信,一起探索下如何操作吧。 1.网关通过网线和倍福 PLC、电脑进行连接,如果网口不够,可以使用交换机连接。 开VS软件,新建一个工程,选择对应…

mac idea 解决0% classes 0% lines covered不显示,非快捷键办法

问题如下 网上说了一堆快捷键,冲突了用不了,页面按下面这样点就可以了点击no coverage就行了

高并发下的缓存击穿、雪崩、穿透和分布式锁(三)

一.缓存穿透 概念: 去查询缓存和数据库都不存在的数据,然后大量请求不存在的数据,导致数据库压力过大崩溃。 解决方案: 把不存在的数据null存入缓存,并给个短期的过期时间。 二.缓存雪崩 概念: 缓存采用…

树莓派 Qt中 QCameraInfo 无法使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、QCameraInfo 是什么?二、使用步骤1.测试代码2.解决方案2.1输入命令2.2输出 3. 成功打印了摄像头的信息 总结 前言 提示:这里可以添…