【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式
目录
- 协议
- 什么是协议
- 协议是水平存活的
- 协议的组成
- 接口
- 服务
- 服务是什么
- 服务原语
- 协议与服务的区别
- 计算机网络提供的服务的三种方式
- 面向连接服务与无连接服务
- 可靠服务与不可靠服务
- 有应答服务与无应答服务
协议
什么是协议
协议,就是规则的集合。
在计算机网络中,我们需要在庞大的网络中有条不紊地交换数据,就必须遵循一些事先约定好的规则。这些规则明确了所交换的数据的格式以及相关的同步方案。我们称这些为了进行网络中的数据交换而建立的规则、标准或者约定称为网络协议,网络协议也简称为“协议”。
协议是水平存活的
需要注意的是,网络协议,控制的是两个(或多个)对等实体中进行通信的规则的集合,是水平的。不对等实体间是没有协议的。比如使用 TCP/IP 协议栈通信的两个结点,结点A 的传输层与 结点B 的传输层之间是存在协议,但是 结点A 的传输层和 结点B 的网络层是不存在协议的。
协议的组成
协议是由语法、语义和同步三个部分组成。
- 语法:规定了传输数据的格式。
- 语义:规定了所要完成的功能,即需要发出何种控制信息、完成何种动作以及做出何种应答。
- 同步:规定了执行各种操作的条件、时序关系等,即事件实现顺序的详细说明。
一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能。
接口
接口是同一结点内相邻两层间交换信息的连接点,是一个系统内部的规定。每层只能为紧邻的层次之间定义接口,不能跨层定义接口。
在典型的接口上,同一结点相邻两层的实体通过服务访问点(SAP)进行交互。服务是通过 SAP 提供给上层使用的,第 n n n 层的 SAP 就是第 n + 1 n+1 n+1 层可以访问第 n n n 层服务的地方。
每个 SAP 都有一个能够标识它的地址,且 SAP 是一个抽象的概念,实际上是一个逻辑接口,是和通常所说的两个设备之间的硬件接口是很不一样的。
服务
服务是什么
服务是指下层为紧邻的上层提供的功能调用,是垂直的。
对等实体在协议的控制下,使得本层能够为上一层提供服务,但要实现本层协议,还需要使用下一层所提供的服务。
服务原语
上层使用下层所提供的服务时,必须与下层交换一些命令。这些命令在 OSI 参考模型中被称为 服务原语。
服务原语被分为以下几类:
- 请求: Request,由服务用户发往服务提供者,请求完成某项工作。
- 指示: Indication,由服务提供者发往服务用户,指示用户做某件事情。
- 响应: Response,由服务用户发往服务提供者,作为对指示的响应。
- 证实: Confirmation,由服务提供者发往服务用户,作为对请求的证实。
这几类原语用于不同的功能,如建立连接、传输数据和断开连接等。根据是否包含全部原语,又将服务分为 有应答服务 以及 无应答服务:
- 有应答服务: 包括全部原语;
- 无应答服务: 仅包含请求和指示两类原语。
协议与服务的区别
协议和服务在概念上是不同的。
- 只有本层协议实现了才能保证向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议,即下面的协议对上层的服务用户是透明的。
- 协议是“水平”的,即协议是控制对等实体之间通信的规则,而服务是“垂直”的,即服务是由下层通过层间接口向上层提供的。
- 另外,并非在一层内完成的全部功能都称为服务,只有那些能够被高一层实体“看得见”的功能才能被称为服务。
协议、接口、服务三者之间的关系可以如下图所示:
计算机网络提供的服务的三种方式
面向连接服务与无连接服务
- 在 面向服务 中,通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后,释放连接以及所占用的资源。因此这种服务可以分为连接建立、数据传输和连接释放三个阶段。TCP 就是一种面向连接服务的协议。
- 在 无连接服务 中,通信前双方无需先建立连接,需要发送数据时可直接发送,把每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输。这是一种不可靠的服务。IP/UDP 就是一种无连接的服务。
可靠服务与不可靠服务
- 可靠服务 是指网络具有纠错、检错、应答机制,能够保证数据正确、可靠地传送到目的地。
- 不可靠服务 是指网络只是尽量正确、可靠地传送,而不能保证数据正确、可靠地传送至目的地,是一种尽力而为的服务。
对于不可靠服务的网络,其网络的正确性、可靠性要由应用或者用户来保障。例如用户收到信息后要判断信息的正确性,如果不正确,那么用户要把出错信息报告给信息的发送者,以便发送者采取纠错措施。通过用户的这些措施,可以把不可靠的服务变成可靠的服务。
有应答服务与无应答服务
- 有应答服务 是指接收方在收到数据后向发送方给出相应的应答,该应答由传输系统内部自动实现,而不由用户实现。所发送的应答既可以是肯定应答,也可以是否定应答,通常在接收到的数据有错误时发送否定应答。例如,文件传输服务就是一种有应答的服务。
- 无应答服务 是指接收方收到数据后不自动给出应答,若需要应答,则由高层实现。例如对于 WWW 服务,客户端收到服务器发送的页面文件 后不给出应答。
相关文章:

【计算机网络】P3 计算机网络协议、接口、服务的概念、区别以及计算机网络提供的三种服务方式
目录 协议什么是协议协议是水平存活的协议的组成 接口服务服务是什么服务原语 协议与服务的区别计算机网络提供的服务的三种方式面向连接服务与无连接服务可靠服务与不可靠服务有应答服务与无应答服务 协议 什么是协议 协议,就是规则的集合。 在计算机网络中&…...
多角度剖析事务和事件的区别
事务和事件这两个概念在不同的领域有着不同的含义,尤其是在计算机科学、数据库管理和软件工程中。下面从多个角度来剖析事务和事件的区别: 计算机科学与数据库管理中的事务 事务(Transaction): 定义:在数据库管理中,…...

模糊小波神经网络(MATLAB 2018)
模糊系统是一种基于知识或规则的控制系统,从属于智能控制,通过简化系统的复杂性,利用控制法来描述系统变量之间的关系,采用语言式的模糊变量来描述系统,不必对被控对象建立完整的数学模型。相比较传统控制策略…...
HTML布局
标准流: 标准流就是元素在页面中的默认排列方式,也就是元素在页面中的默认位置。 1.1 块元素----独占一行----从上到下排列 1.2 行内元素----不独占一行----从左到右排列,遇到边界换行 1.3 行内块元素----不独占一行…...

数据结构:双链表
数据结构:双链表 题目描述参考代码 题目描述 输入样例 10 R 7 D 1 L 3 IL 2 10 D 3 IL 2 7 L 8 R 9 IL 4 7 IR 2 2输出样例 8 7 7 3 2 9参考代码 #include <iostream>using namespace std;const int N 100010;int m; int idx, e[N], l[N], r[N];void init…...
Python3 元组、列表、字典、集合小结
前言 本文主要对Python中的元组、列表、字典、集合进行小结,主要内容包括知识点回顾、异同点、使用场景。 文章目录 前言一、知识点回顾1、列表(List)2、 元组(Tuple)3、 字典(Dictionary)4.、…...

2024会声会影破解免费序列号,激活全新体验!
会声会影2024序列号注册码是一款专业的视频编辑软件,它以其强大的功能和易用性受到了广大用户的喜爱。在这篇文章中,我将详细介绍会声会影2024序列号注册码的功能和特色,帮助大家更好地了解这款产品。 会声会影全版本绿色安装包获取链接&…...
机器学习18个核心算法模型
1. 线性回归(Linear Regression) 用于建立自变量(特征)和因变量(目标)之间的线性关系。 核心公式: 简单线性回归的公式为: , 其中 是预测值, 是截距, 是斜…...
平滑值(pinghua)
平滑值 题目描述 一个数组的“平滑值”定义为:相邻两数差的绝对值的最大值。 具体的,数组a的平滑值定义为 f ( a ) m a x i 1 n − 1 ∣ a i 1 − a i ∣ f(a)max_{i1}^{n-1}|a_{i1}-a_i| f(a)maxi1n−1∣ai1−ai∣ 现在小红拿到了一个数组…...

使用matplotlib绘制折线条形复合图
使用matplotlib绘制折线条形复合图 介绍效果代码 介绍 在数据可视化中,复合图形是一种非常有用的工具,可以同时显示多种数据类型的关系。在本篇博客中,我们将探讨如何使用 matplotlib 库来绘制包含折线图和条形图的复合图。 效果 代码 imp…...
云计算中网络虚拟化的核心组件——NFV、NFVO、VIM与VNF
NFV NFV(Network Functions Virtualization,网络功能虚拟化),是一种将传统电信网络中的网络节点设备功能从专用硬件中解耦并转换为软件实体的技术。通过运用虚拟化技术,NFV允许网络功能如路由器、防火墙、负载均衡器、…...
# SpringBoot 如何让指定的Bean先加载
SpringBoot 如何让指定的Bean先加载 文章目录 SpringBoot 如何让指定的Bean先加载ApplicationContextInitializer使用启动入口出注册配置文件中配置spring.factories中配置 BeanDefinitionRegistryPostProcessor使用 使用DependsOn注解实现SmartInitializingSingleton接口使用P…...

家用洗地机哪个品牌好?洗地机怎么选?这几款全网好评如潮
如今,人们家里越来越多的智能清洁家电,小到吸尘器、电动拖把,大到扫地机器人、洗地机,作为一个用过所有这些清洁工具的家庭主妇,我觉得最好用的还是洗地机。它的清洁效果比扫地机器人更好,功能也比吸尘器更…...
iOS与前端:深入解析两者之间的区别与联系
iOS与前端:深入解析两者之间的区别与联系 在数字科技高速发展的今天,iOS与前端技术作为两大热门领域,各自在移动应用与网页开发中扮演着不可或缺的角色。然而,这两者之间究竟存在哪些差异与联系呢?本文将从四个方面、…...

SpringBoot 基于jedis实现Codis高可用访问
codis与redis的关系 codis与redis之间关系就是codis是基于多个redis实例做了一层路由层来进行数据的路由,每个redis实例承担一定的数据分片。 codis作为开源产品,可以很直观的展示出codis运维成本低,扩容平滑最核心的优势. 其中࿰…...
力扣108. 将有序数组转换为二叉搜索树
108. 将有序数组转换为二叉搜索树 - 力扣(LeetCode) 找割点,一步一步将原数组分开。妙极了!!!!! /*** Definition for a binary tree node.* public class TreeNode {* int val;…...

人工智能机器学习系统技术要求
一 术语和定义 1.1机器学习系统 machinelearningsystem 能运行或用于开发机器学习模型、算法和相关应用的软件系统。 1.2机器学习框架 machinelearningframework 利用预先构建和优化好的组件集合定义模型,实现对机器学习算法封装、数据调用处理和计算资源使用的软件库。 1…...
学习整理使用JavaScript中如何判断变量是否存在的四种常用方法
学习整理使用JavaScript中如何判断变量是否存在的四种常用方法 前言1. 使用 typeof 运算符判断变量类型2. 使用全局对象 window 或 global 判断变量是否存在3. 使用 in 关键字判断变量是否存在4. 使用 try…catch 块判断变量是否存在5. 综合示例总结 前言 在 JavaScript 中&am…...

docker实现jenkins+git+naocas一体化自动部署
一、jenkins安装 1.1 docker 安装jenkins docker pull jenkins/jenkins 1.2 docker 启动jenkins docker run --name myjenkins -d -p 8081:8080 -p 8085:8085 jenkins/jenkins –name 指定容器名称为myjenkins -d 表示后台运行 -p 8081:8080 表示Docker Host(运行Do…...
Flutter 中的 PerformanceOverlay 小部件:全面指南
Flutter 中的 PerformanceOverlay 小部件:全面指南 Flutter 是一个由 Google 开发的跨平台 UI 框架,它允许开发者使用 Dart 语言构建高性能、美观的应用。在 Flutter 的开发过程中,性能监控是一个重要的方面。PerformanceOverlay 是 Flutter…...

STM32F4基本定时器使用和原理详解
STM32F4基本定时器使用和原理详解 前言如何确定定时器挂载在哪条时钟线上配置及使用方法参数配置PrescalerCounter ModeCounter Periodauto-reload preloadTrigger Event Selection 中断配置生成的代码及使用方法初始化代码基本定时器触发DCA或者ADC的代码讲解中断代码定时启动…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Spring AI 入门:Java 开发者的生成式 AI 实践之路
一、Spring AI 简介 在人工智能技术快速迭代的今天,Spring AI 作为 Spring 生态系统的新生力量,正在成为 Java 开发者拥抱生成式 AI 的最佳选择。该框架通过模块化设计实现了与主流 AI 服务(如 OpenAI、Anthropic)的无缝对接&…...

算法笔记2
1.字符串拼接最好用StringBuilder,不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析
Java求职者面试指南:Spring、Spring Boot、MyBatis框架与计算机基础问题解析 一、第一轮提问(基础概念问题) 1. 请解释Spring框架的核心容器是什么?它在Spring中起到什么作用? Spring框架的核心容器是IoC容器&#…...
CRMEB 中 PHP 短信扩展开发:涵盖一号通、阿里云、腾讯云、创蓝
目前已有一号通短信、阿里云短信、腾讯云短信扩展 扩展入口文件 文件目录 crmeb\services\sms\Sms.php 默认驱动类型为:一号通 namespace crmeb\services\sms;use crmeb\basic\BaseManager; use crmeb\services\AccessTokenServeService; use crmeb\services\sms\…...

Windows安装Miniconda
一、下载 https://www.anaconda.com/download/success 二、安装 三、配置镜像源 Anaconda/Miniconda pip 配置清华镜像源_anaconda配置清华源-CSDN博客 四、常用操作命令 Anaconda/Miniconda 基本操作命令_miniconda创建环境命令-CSDN博客...

Android写一个捕获全局异常的工具类
项目开发和实际运行过程中难免会遇到异常发生,系统提供了一个可以捕获全局异常的工具Uncaughtexceptionhandler,它是Thread的子类(就是package java.lang;里线程的Thread)。本文将利用它将设备信息、报错信息以及错误的发生时间都…...

数据结构第5章:树和二叉树完全指南(自整理详细图文笔记)
名人说:莫道桑榆晚,为霞尚满天。——刘禹锡(刘梦得,诗豪) 原创笔记:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:《数据结构第4章 数组和广义表》…...