当前位置: 首页 > article >正文

【计算机网络】计算机网络协议、接口与服务全面解析——结合生活化案例与图文详解

协议、接口与服务

  • 导读
  • 一、协议
    • 1.1 定义
    • 1.2 组成
  • 二、接口
  • 三、服务
    • 3.1 定义
    • 3.2 服务与协议的区别
    • 3.3 分类
      • 3.3.1 面向连接服务于无连接服务
      • 3.3.2 可靠服务和不可靠服务
      • 3.3.3 有应答服务和无应答服务
  • 结语

协议、接口与服务

导读

大家好,很高兴又和大家见面啦!!!

在上一篇内容中我们介绍了……

一、协议

1.1 定义

网络协议(Network Protocol)是指为了在网络中进行数据交换而建立的规则、标准或者约定。

网络协议是控制对等实体之间进行通信的规则的集合,是水平的。

实体1
网络协议1
对等实体1
实体2
网络协议2
对等实体2

不对等的实体之间是没有协议的:

实体1
无协议
对等实体2

1.2 组成

协议是由语法、语义以及同步三部分组成:

  • 语法:数据与控制信息的格式
以太网帧语法
TCP头
------------------
序列号: 0x3a4b
窗口大小: 8192
IP头
------------------
版本: IPv4
TTL: 64
帧头
------------------
目标MAC: 00:1A:2B:xx
源MAC: 00:0C:29:xx
帧尾
------------------
CRC校验: 0x7d3f
数据载荷
------------------
(应用层数据)
  • 语义:即需要发出何种控制信息、完成何种动作及做出何种应答。
控制逻辑与动作
校验成功
校验失败
校验CRC
开始
发送ACK确认
发送NAK要求重传
更新接收窗口
等待重传
结束
  • 同步(时序):执行各种操作的条件、时序关系等,即事件发现顺序的详细说明。
发送方 接收方 数据包 (语法: 头部+数据) 语义: 解析头部并校验 ACK (控制信息) 重传数据 (语义: 超时动作) 发送下一包 (同步: 顺序约束) alt [超时未收到ACK] [正常收到ACK] 发送方 接收方

这里我以小明与小红这两个好友之间的交流为例进行说明:

  • 语法就是指的双方交流时采用的语法规则,如中文语法规则;
  • 语义则是当小明提问时,小红对问题的思考与回复;
  • 同步则是指交流时的先后顺序与事件的触发条件:

在双方沟通之前,有进行过如下约定:

  • T01协议:当接收方未正常接收到消息时触发
  • T02协议:当接收方未在规定时间内回复时触发
  • 规定当声音超过60dB对方才能听清

第一轮对话(物理层错误):

  • 小明:[音量40dB]“你吃饭了吗?”

→ 小红检测到振幅不足,不传递至语义层
小红触发T01协议

  • 小红:[音量60dB] “你声音太小了,声音大点再问一次”

第二轮对话(协议层超时):

  • 小明:[音量60dB]你吃饭了吗?

→ 对话状态机启动10秒计时
小红:语义分析完成,但生成回复耗时12秒
→ 小明检测超时 触发T02协议

  • 小明:再次提问[音量60dB]“你吃饭了吗?”

第三轮对话(正常流程):

  • 小明:[音量60dB]你吃饭了吗?

小红:[5秒内]语义解析 → 生成回复 → 输出

  • 小红:[音量60dB]“吃过了”

→ 计时器终止,对话状态更新

二、接口

同一节点内相邻两层的实体交换信息的逻辑接口称为服务访问点(Service Access Point, SAP)。

接口是也仅是相邻的上下层之间通信的渠道,不可能存在跨层接口,也就是说上层不可能的跨层与下层进行通信。

服务就是通过SAP提供给上层使用,第n层的SAP就是第n+1层访问第n层服务的渠道。

三、服务

3.1 定义

服务是指下层为紧邻的上层提供的功能调用,是垂直的。

对等实体在协议的控制下,使得本层能为上层提供服务,但要实现本层协议,还需要使用下层提供的服务。

3.2 服务与协议的区别

服务与协议是两个完全不同的概念,主要区别如下:

  1. 通信对象不同

    • 服务是垂直的,下层为紧邻的上层提供功能接口(如传输层为应用层提供可靠传输服务)。
    • 协议是水平的,同一层对等实体间通过协议通信(如两台主机的传输层通过TCP协议协商数据传输)。
  2. 依赖关系不同

    • 服务定义接口,协议实现功能:下层通过协议实现其向上层承诺的服务。例如,传输层通过TCP协议(三次握手、超时重传)实现可靠传输服务,向上层暴露 send()receive() 接口。
    • 上层仅依赖服务接口:应用层调用传输层的 send(data),无需知晓TCP协议如何实现可靠性(如滑动窗口、拥塞控制)。
  3. 透明性

    • 下层协议对上层透明:上层用户只能看到下层提供的服务接口,而协议实现细节(如TCP序列号管理)对上层不可见。
    • 示例:应用层(浏览器)通过传输层的 send() 发送HTTP请求,但无需了解TCP如何通过ACK确认数据包。

注意:只有能被上一层实体使用的功能才称为服务,协议实现的其他功能(如流量控制)对上层透明。

3.3 分类

计算机网络提供的服务可按以下三种方式分类:

3.3.1 面向连接服务于无连接服务

在面向连接服务中,通信双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和占用的资源。因此这种服务可分为连接建立、数据传输和连接释放三个阶段。

在无连接服务中,通信前双方不需要先建立连接,需要发送数据时可直接发送,将每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这种服务常被描述为“尽最大努力交付”,是一种不可靠服务。

3.3.2 可靠服务和不可靠服务

可靠服务是指网络具有纠错、检错、应答机制,能保证数据正确、可靠地传送到目的地。

不可靠服务是指网络只是尽量让数据正确、可靠地传送到目的地,是一种尽力而为的服务。

3.3.3 有应答服务和无应答服务

有应答服务是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。发送的应答可以是肯定应答也可以是否定应答,通常在收到数据有错误时发送否定应答。

无应答服务是指接收方收到数据后不自动给出应答。若需要应答,则由高层实现。

结语

在今天的内容中我们介绍了计算机网络的协议、接口与服务的相关内容:

  • 协议指的是计算机网络中数据交换的规则、标准与约定。由语法、语义与同步三部分组成。
  • 接口是分层结构中,相邻层之间通信的通道。
  • 服务是下层为紧邻的上层提供的功能调用。

今天的内容到这里就全部结束了,在下一篇内容中我们将介绍《OSI模型》,大家记得关注哦!

如果大家喜欢博主的内容,可以点赞、收藏加评论支持一下博主,当然也可以将博主的内容转发给你身边需要的朋友。最后感谢各位朋友的支持,咱们下一篇再见!!!

相关文章:

【计算机网络】计算机网络协议、接口与服务全面解析——结合生活化案例与图文详解

协议、接口与服务 导读一、协议1.1 定义1.2 组成 二、接口三、服务3.1 定义3.2 服务与协议的区别3.3 分类3.3.1 面向连接服务于无连接服务3.3.2 可靠服务和不可靠服务3.3.3 有应答服务和无应答服务 结语 导读 大家好,很高兴又和大家见面啦!!…...

51c自动驾驶~合集26

我自己的原文哦~ https://blog.51cto.com/whaosoft/11968755 #大模型/Sora/世界模型之间是什么关系 1 什么是大模型 人工智能大模型(Artificial Intelligence Large Model,简称AI大模型)是指具有庞大的参数规模和复杂程度的机器学习模…...

【汽车传感系统架构:借助传感获取安全】

为了将车辆自动化提升到一个新的水平,设计人员研究了 LiDAR 等传感器选项的权衡,并着眼于传感系统架构。 本文引用地址:https://www.eepw.com.cn/article/202503/468584.htm 每年,约有 120 万人死于道路交通事故,还有…...

【NUUO 摄像头】(弱口令登录漏洞)

漏洞简介:NUUO 是NUUO公司的一款小型网络硬盘录像机设备。 NUUO NVRMini2 3.0.8及之前版本中存在后门调试文件。远程攻击者可通过向后门文件handle_site_config.php发送特定的请求利用该漏洞执行任意命令。 1.Fofa搜索语句: 在Fofa网站,搜索&…...

论文阅读笔记:Denoising Diffusion Probabilistic Models (3)

论文阅读笔记:Denoising Diffusion Probabilistic Models (1) 论文阅读笔记:Denoising Diffusion Probabilistic Models (2) 论文阅读笔记:Denoising Diffusion Probabilistic Models (3) 4、损失函数逐项分析 可以看出 L L L总共分为了3项…...

【设计模式】抽象工厂模式(含与工厂方法模式的对比)

本期我们来学习一下设计模式之抽象工厂模式,在软件开发中,工厂模式 和 抽象工厂模式 都用于创建对象,但它们的应用场景和实现方式有所不同。本文将基于 C 代码,分析抽象工厂模式的实现,并对比其与工厂方法模式的区别。…...

消息队列保证最终一致性的优势

消息队列保证最终一致性的优势 使用消息队列(如Kafka、RabbitMQ等)来实现MySQL和Redis之间的最终一致性,具有以下几个显著优势: 1. 解耦系统组件 降低系统耦合度:生产者(MySQL更新)和消费者&…...

IDEA转战Trae AI IED配置

Trae Ai 的前身是vscode IDEA转战Trae AI IED配置 1.安装java相关的插件 2、安装spring相关的插件 3.配置maven环境 打开 Trae AI IDE -> 首选项 -> 设置 -> Editor 设置 ⚠️配置方式有两种 setting.json文件中直接编辑(推荐)界面设置 方案…...

再学:区块链基础与合约初探 EVM与GAS机制

目录 1.区块链是什么 2.remix ​3.账户​ ​4.以太坊三种交易​ 5.EVM 6.以太坊客户端节点 ​7.Gas费用 8.区块链浏览器 1.区块链是什么 只需要检验根节点 Merkel根是否有更改,就不用检查每个交易是否有更改。方便很多。 2.remix 3.账户 如果交易失败的话&…...

Nextjs15 - middleware的使用

nextjs 官方文档(current branch 对应如下文档) Middlewarepath-to-regexp 本专栏内容均可在Github:test_05/Middleware 找到 一、middleware 基本使用 中间件允许您在请求完成之前运行代码。然后,根据传入的请求,您…...

PHP If...Else 语句详解

PHP If...Else 语句详解 引言 PHP 是一种流行的服务器端脚本语言,常用于开发动态网站和应用程序。在 PHP 编程中,条件语句是编程逻辑的基础,其中 if...else 语句是最基本且最常用的条件语句之一。本文将详细介绍 PHP 的 if...else 语句&…...

Django之旅:第六节--mysql数据库操作增删改查(二)

前提条件(models.py已经设置好): from django.db import mmodelsclass UserInfo(models.Model):namemodels.CharFIeld(max_length32)passwordmodels.CharFIeld(max_length64)#agemodels.IntegerFIeld()操作数据语法(在views.py文件&#xff0…...

【SUNO】【AI作词】【提示词】

仿写歌词提示词模板(升级版) 一、仿写目标 风格定位 音乐风格: [填写目标风格,如:民谣/流行/古风/电子/爵士等]参考案例:如《成都》的叙事民谣,《孤勇者》的励志流行。 情感基调: […...

边缘计算 vs. 云计算,谁才是工业物联网的未来?

前言 在物联网(IoT)飞速发展的今天,边缘计算正在彻底改变数据的处理、存储和分析方式。传统的IoT设备数据通常需要发送到云端进行处理,但随着设备数量的激增,这种模式在延迟、带宽和安全性方面暴露出诸多局限。边缘计…...

【Qt】QByteArray详解

QByteArray 是 Qt 框架中用于处理原始字节数据的核心类&#xff0c;其实质可以概括为以下几点&#xff1a; 1. 底层数据结构 • 连续内存块&#xff1a;存储一段连续的字节数据&#xff08;char*&#xff09;&#xff0c;类似 std::vector<char>&#xff0c;但针对 Qt 框…...

leetcode.189.轮转数组

第一次全反转&#xff0c;第二次反转前k个&#xff0c;第三次反转后n-k个 需要注意的是向又轮转k个时&#xff0c;如果超出数组长度&#xff0c;要对其进行取模运算才是正确的向右轮转个数 class Solution { private:void rotate(vector<int>& nums,int start,int …...

OCR 识别案例

OCR 识别案例 注意点&#xff1a;输入图像尺寸比例尽量和参与模型训练的数据集比例相似&#xff0c;识别效果会更好。 1、pytesseract Pytesseract是一个Python的光学字符识别&#xff08;OCR&#xff09;工具&#xff0c;它作为Tesseract OCR引擎的封装&#xff0c;允许你在…...

微信 MMTLS 协议详解(五):加密实现

常用的解密算法&#xff0c;对称非对称 加密&#xff0c;密钥协商&#xff0c; 带消息认证的加解密 #生成RSA 密钥对 void GenerateRsaKeypair(std::string& public_key,std::string& private_key) {RSA* rsa RSA_new();BIGNUM* bn BN_new();// 生成 RSA 密钥对BN_s…...

Mybatis配置文件解析(详细)

引言 在了解Mybatis如何帮助客户进行数据的存取后&#xff0c;便对Mybatis的配置文件起了兴趣&#xff0c;在查阅官方文档后&#xff0c;总结了平时能用到的配置&#xff0c;希望能对大家有帮助 1.核心配置文件 主要是指Mybatis-config.xml中 其包含了会深深影响Mybatis行为…...

有额外限制的 bellman_ford 算法

题目链接 1.有限制的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford 时间复杂度: O ( N ∗ M ) O(N*M) O(N∗M) 在传统的 B e l l m a n _ F o r d Bellman\_Ford Bellman_Ford 中&#xff0c;可以处理边数不大于 K K K 条边的最短距离 但我们只要加一条限制(实际…...

深度剖析 Spring 源码 性能优化:核心原理与最佳实践

深度剖析 Spring 源码 & 性能优化&#xff1a;核心原理与最佳实践 &#x1f680; Spring 框架 作为 Java 生态的核心技术&#xff0c;广泛应用于企业级开发。但很多开发者只会“用”Spring&#xff0c;而不深入其内部原理&#xff0c;导致无法高效排查问题 & 进行性能优…...

【BFS】《单源、多源 BFS:图搜索算法的双生力量》

文章目录 前言单源BFS例题一、迷宫中离入口最近的出口二、 最小基因变化三、单词接龙四、为高尔夫比赛砍树 多源BFS例题一、 01 矩阵二、飞地的数量三、地图中的最高点四、地图分析 结语 前言 什么是单源、多源BFS算法问题呢&#xff1f; BFS&#xff08;Breadth - First Sear…...

【2025】基于springboot+vue的医院在线问诊系统设计与实现(源码、万字文档、图文修改、调试答疑)

基于Spring Boot Vue的医院在线问诊系统设计与实现功能结构图如下&#xff1a; 课题背景 随着互联网技术的飞速发展和人们生活水平的不断提高&#xff0c;传统医疗模式面临着诸多挑战&#xff0c;如患者就医排队时间长、医疗资源分配不均、医生工作压力大等。同时&#xff0c;…...

【前端】原生项目与框架项目区别

不定期更新&#xff0c;建议关注收藏点赞。 使用 HTML CSS JS 和 Vue 或 React 开发的项目各有其优势与不足&#xff0c;适用于不同的场景。目前基本上都采用框架&#xff0c; 总结 何时选择 HTML CSS JS&#xff1a; 适用于 小型项目、简单静态页面、不需要复杂交互 或 …...

STM32基础教程——PWM驱动舵机

目录 前言 技术实现 原理图 接线图 代码实现 内容要点 PWM基本结构 开启外设时钟 配置GPIO端口 配置时基单元 初始化输出比较单元 调整PWM占空比 输出比较通道重映射 舵机角度设置 实验结果 问题记录 前言 舵机&#xff08;Servo&#xff09;是一种位置&#xff…...

ThreadLocal详解与高频场景实战指南

ThreadLocal详解与高频场景实战指南 1. ThreadLocal概述 ThreadLocal是Java提供的线程本地变量机制&#xff0c;用于实现线程级别的数据隔离。每个访问该变量的线程都会获得独立的变量副本&#xff0c;适用于需要避免线程间共享数据的场景。 特点&#xff1a; 线程封闭性&a…...

odata 搜索帮助

参考如下链接&#xff1a; FIORI ELement list report 细节开发&#xff0c;设置过滤器&#xff0c;搜索帮助object page跳转等_fiori element label 变量-CSDN博客 注&#xff1a;odata搜索帮助可以直接将值带出来&#xff0c;而不需要进行任何的重定义 搜索帮助metedata配置…...

RK3588开发笔记-RTL8852wifi6模块驱动编译报错解决

目录 前言 一、问题背景 二、驱动编译 总结 前言 在基于 RK3588 进行开发,使用 RTL8852 WiFi6 模块时,遇到了一个让人头疼的驱动编译报错问题:“VFs_internal_I_am_really_a_filesystem_and_am_NoT_a_driver, but does”。经过一番摸索和尝试,最终成功解决了这个问题,在…...

Docker基本命令VS Code远程连接

Docker基本命令 创建自己的docker容器&#xff1a;docker run --net host --name Container_name --gpus all --shm-size 1t -it -v Your_Path:Your_Dir mllm:mac /bin/bashdocker run&#xff1a;用于创建并启动一个新容器-name&#xff1a;为当前新建的容器命名-gpus&#x…...

第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器

Shader初学者的学习笔记 第二天 开始Unity Shader的学习之旅之熟悉顶点着色器和片元着色器 文章目录 Shader初学者的学习笔记前言一、顶点/片元着色器的基本结构① Shader "Unity Shaders Book/Chapter 5/ Simple Shader"② SubShader③ CGPROGRAM和ENDCG④ 指明顶点…...