1.7 协议层次和服务模型

协议层次

网络是一个复杂的系统!
 网络功能繁杂:数字信号的物理信
号承载、点到点、路由、rdt、进程区分、应用等

现实来看,网络的许多构成元素和设备:
 主机
 路由器
 各种媒体的链路
 应用
 协议
 硬件, 软件

Q:如何组织和实现这个复杂的网络功能?

模块化 分层


现实生活中的例子:航线系统

![[Pasted image 20240422185958.png]]

层次化方式实现复杂网络功能:

 将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一
功能,功能中有其上层可以使用的功能:服务

 本层协议实体相互交互执行本层的协议动作,目的是实现本层功能,
通过接口为上层提供更好的服务

 在实现本层协议的时候,直接利用了下层所提供的服务

 本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功
能(上层可以利用的)==+==更下层所提供的服务


例子2:两位异地哲学家的交流

![[Pasted image 20240422185414.png|450]]
最下层是通信层:解决异地通信
第二层是翻译层:
哲学家层:交流

好处:大问题分为小问题;利于新技术


服务和服务访问点

服务( Service):低层实体向上层实体提供它们之间的
通信的能力
 服务用户(service user)
 服务提供者(service provider )

原语(primitive):上层使用下层服务的形式,高层使用
低层提供的服务,以及低层向高层提供服务都是通过
服务访问原语来进行交互的—形式

服务访问点 SAP (Services Access Point) :上层
使用下层提供的服务通过层间的接口—地点
 例子:邮箱
 地址(address):下层的一个实体支撑着上层的多个实体,
SAP有标志不同上层实体的作用
(A1,A2,A3,三个应用,TCP通过SAP确定给谁服务。。。)
 可以有不同的实现,队列
 例子:传输层的SAP: 端口(port)


服务的类型

 面向连接的服务和无连接的服务-方式

面向连接的服务( Connection-oriented Service)
(两个应用进程使用下层服务通信之前要先握手)
(eg:TCP)
连接(Connection):
两个通信实体为进行通信而建立的一种结合

 面向连接的服务通信的过程:建立连接,通信,拆除连接
 面向连接的服务的例子:网络层的连接被成为虚电路
 适用范围:对于大的数据块要传输; 不适合小的零星报文
 特点:保序
 服务类型:
可靠的信息流 传送页面(可靠的获得,通过接收方的确认)
可靠的字节流 远程登录
不可靠的连接 数字化声音

无连接的服务(Connectionless Service)
(eg: UDP )
无连接服务:两个对等层实体在通信前不需要建
立一个连接,不预留资源;不需要通信双方都是
活跃;(例:寄信)

特点:不可靠、可能重复、可能失序
IP分组,数据包;
适用范围:适合传送零星数据;
服务类型:
不可靠的数据报 电子方式的函件
有确认的数据报 挂号信
请求回答 信息查询


服务和协议

服务与协议的区别

 服务(Service):低层实体向上层实体提供它们之间的
通信的能力,是通过原语(primitive)来操作的,垂直

 协议(protocol) :对等层实体(peer entity)之间在相互
通信的过程中,需要遵循的规则的集合,水平

服务与协议的联系

 本层协议的实现要靠下层提供的服务来实现
 本层实体通过协议为上层提供更高级的服务


数据单元(DU)

![[Pasted image 20240422193325.png]]
SAP:服务访问点
layer:层
interface:接口
protocol:协议
SDU:服务数据单元
IDU:接口数据单元
PDU:协议数据单元
(应用层PDU:报文;传输层PDU:报文段;网络层PDU:数据报…)
ICI:接口控制信息

第n层实体在其第n层协议中交换n-PDU
上层来了SDU,通过接口,SDU加上第n层的头部,加在一起形成第n层PDU

header怎么来:一部分上层ICI,一部分本层附加上

![[Pasted image 20240422195004.png]]


分层处理和实现复杂系统的好处?

对付复杂的系统

概念化:结构清晰,便于标示网络组件,以及描述其相互关系
 分层参考模型

结构化:模块化更易于维护和系统升级

 改变某一层服务的实现不影响系统中的其他层次 对于其他层次而言是透明的
 如改变登机程序并不影响系统的其它部分 改变2个秘书使用的通信方式不影响2个翻译的工作 改变2个翻译使用的语言也不影响上下2个层次的工作

 分层思想被认为有害的地方?
效率低。。。
好处远大于坏处


Internet 协议栈

应用层: 网络应用
 为人类用户或者其他应用进程提供网络应用服务
 FTP, SMTP, HTTP,DNS

传输层: 主机之间的数据传输
(1.主机到主机的基础上进程到进程的区分,2.把网络层可能不可靠的服务转变为可靠的服务,提供给应用层)
 在网络层提供的端到端通信基础上,细分为进程到进程,
将不可靠的通信变成可靠地通信
 TCP, UDP

网络层: 为数据报从源到目的选择路
(转发和路由)
(链路层基础上,源主机到目标主机的传输,端到端,分组)
 主机主机之间的通信,端到端通信,不可靠
 IP, 路由协议

链路层: 相邻网络节点间的数据传输
(物理层基础之上相邻两点【a到离它最近的路由器…】之间;传输以帧为单位的数据)
 2个相邻2点的通信,点到点通信,可靠或不可靠
 点对对协议PPP, 802.11(wifi), Ethernet

物理层: 在线路上传送bit(把数字数据转换为物理信号,传送bit)

![[Pasted image 20240422200617.png|150]]


ISO/OSI 参考模型

![[Pasted image 20240422200928.png|150]]
 表示层: 允许应用解释传输的数据
e.g., 加密,压缩,机器相关的表示转换
 会话层: 数据交换的同步,检查点,恢复

 互联网协议栈没有这两层!
 这些服务,如果需要的话,必须被应用实现
 需要吗?


封装和解封装

![[Pasted image 20240422201500.png]]
封装 (encapsulation)
在发送主机端, 一个应用层报文 (application- layer message) (图 24 中的 M)被传送给运输层 在最简单的情况下,运输层收取到报文并附上附加信息(所谓运输层首部信息,图 1-24 中的 Ht )’ 该首部将被接收端的运输层使用 应用层报文和运输层首部信息 道构成了运输层报文段 (transportlayer segment) 运输层报文段因此封装了应用层报文 附加的信息也许包括了下列信息:允许接收端运输层向上向适当的应用程序交付报文的信息; 差错检测位信息,该信息让接收方能够判断报文中的比特是否在途中已被改变 运输层则向网络层传递该报文段,网络层增加了如源和目的端系统地址等网络层首部信息(图 1-24 中的 )’ 生成了网络层数据报 (network-layer datagram) 该数据报接下来被传递给链路层,链路层(自然而然地)增加它自己的链路层首部信息并生成链路层帧 (li nk layer frame) 所以我们看到,在每层,一个分组具有两种类型的字段 首部字段和 有效载荷字段 (payload field) 有效载荷通常是来自上 层的分组


各层次的协议数据单元

应用层:报文(message)

传输层:报文段(segment):TCP段,UDP数据报

网络层:分组packet(如果无连接方式:数据报datagram)

数据链路层:(frame)

物理层:位(bit)(不重要)

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

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

相关文章

Linux上实现ssh免密通讯

Linux上实现ssh免密通讯 1.SSH互信原理2.SSH所需的RPM包3.两台机器实现互信4.常见问题及处理 1.SSH互信原理 SSH(Secure Shell)是一种安全的传输协议,它能让Linux系统中的服务器和客户端之间进行安全可靠的通讯。 SSH使用加密的传输方式&…

iOS组件化 方案 实现

iOS组件化 组件化的原因现在流行的组件化方案方案一、url-block (基于 URL Router)方案二、protocol调用方式解读 方案三、target-action调用方式解读 gitHub代码链接参考 组件化的原因 模块间解耦模块重用提高团队协作开发效率单元测试 当项目App处于…

网络原理-四

一、续 当窗口大小为0,意味着缓冲区满了,此时发送方,就因该暂停发送,发送方会周期性的除法 " 窗口探测包 " ,并不携带载荷,这样的包对于业务不产生影响,只是为了触发ACK,一旦查询出来的结果是非0,缓冲区右有空间了,发送方就可以继续发送. 二、拥塞控制 要限制发送方…

一步一步写线程之十三队列间的消息通知

一、线程和分布式的通信 随着技术的不断发展,多线程和分布式通信愈发的普及。那么在这种场景下的如何进行数据的通信,便成为了一个非常典型的问题。无论是多线程还是分布式,其实其抽象出来的通信机制都是类似的。或者说换句话,多…

java检测字符串是否包含数字和字母

在Java中,要检测一个字符串是否同时包含数字和字母,我们可以使用正则表达式(regex)或者通过遍历字符串并检查每个字符来实现。以下是两种方法的详细代码示例: 1.方法一:使用正则表达式 import java.util.…

【AI+知识库问答】沉浸式体验了解 AI知识库问答fastGPT

之前写过一篇文章 【AI本地知识库】个人整理的几种常见本地知识库技术方案 , 由于当时主要是针对AI本地知识库, 所以没列fastGPT。 最近经常刷到fastGPT,这里单独水一篇。 FastGPT 是一个基于 LLM 大语言模型的知识库问答系统,…

Github 2024-06-01 开源项目日报Top10

根据Github Trendings的统计,今日(2024-06-01统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目5Jupyter Notebook项目2TypeScript项目1Go项目1Shell项目1Lua项目1Kong:云原生API网关与AI能力 创建周期:3482 天开发语言:Lua协议…

如何确保绩效目标执行到位?

很多企业在实施绩效过程中,尽管制定好了绩效目标,但是没有执行下去,管理者将原因归咎于“员工低效”、“体制机制”等问题,那么在人力资源管理方面,企业应该如何确保制定的绩效目标执行到位?如何提高低效能…

云原生架构相关技术_4.服务网格

1.技术特点 服务网格(ServiceMesh)是分布式应用在微服务软件架构之上发展起来的新技术,旨在将那些微服务间的连接、安全、流量控制和可观测等通用功能下沉为平台基础设施,实现应用与平台基础设施的解耦。这个解耦意味着开发者无需…

React@16.x(14)context 举例 - Form 表单

目录 1,目标2,实现2.1,index.js2.2,context.js2.2,Form.Input2.3,Form.Button 3,使用 1,目标 上篇文章说到,context 上下文一般用于第3方组件库,因为使用场景…

Chisel入门——在windows下vscode搭建|部署Scala2.13.3开发环境|用Chisel点亮FPGA小灯等实验

文章目录 前言一、vscode搭建scala开发环境1.1 安装Scala官方插件1.2 创建hello_world.scala文件1.3 确认java的版本(博主使用的是1.8)1.4 下载Scala Windows版本的二进制文件1.5 配置环境变量1.6 交互模式测试一下1.7 vscode运行scala 二、windows安装sbt2.1 下载sbt2.2 设置环…

函数递归及具体例子(持续更新)

递归就是函数自己调用自己 求n的阶乘 n! n * (n - 1)! 直到n为1或者0的时候为止 举个例子 int Fun(int n) {if (n < 0){return 1;}else{return n * Fun(n - 1);} }int main() {int n 0;scanf("%d", &n);int ret Fun(n);printf("%d\n", ret…

安装Kubernetes v3 ----以docker的方式部署

以docker的方式部署 docker run -d \ --restartunless-stopped \ --namekuboard \ -p 80:80/tcp \ -p 10081:10081/tcp \ -e KUBOARD_ENDPOINT"http://192.168.136.55:80" \ -e KUBOARD_AGENT_SERVER_TCP_PORT"10081" \ -v /root/kuboard-data:/data \ e…

springboot中抽象类无法注入到ioc容器

1、背景 在写代码时&#xff0c;发现service接口有两个实现类&#xff0c;并且两个实现类中没有对类名重命名&#xff0c;属性注入的时候也没有使用byName或Qualifier&#xff0c;正确情况下会发生多实现报错的问题&#xff0c;以前对这个问题进行解析过。 2、调试过程 我想…

【设计模式】创建型-建造者模式

前言 在面向对象的软件开发中&#xff0c;构建复杂对象时经常会遇到许多挑战。一种常见的解决方案是使用设计模式&#xff0c;其中建造者模式是一个强大而灵活的选择。本文将深入探讨建造者模式的原理、结构、优点以及如何在实际项目中应用它。 一、复杂的对象 public class…

飞凌嵌入式FET3568/3568J-C核心板现已适配OpenHarmony4.1

近日&#xff0c;飞凌嵌入式为FET3568/3568J-C核心板适配了OpenHarmony4.1系统&#xff0c;新系统的加持使核心板在兼容性、稳定性与安全性等方面都得到进一步提升&#xff0c;不仅为FET3568/3568J-C核心板赋予了更强大的功能&#xff0c;也为开发者们提供了更加广阔的创新空间…

每日一练编程题:今天是【接口,多态】

设计程序 : 电脑类的属性USB接口数组 : 有3个usb插口电脑类的功能 : 通过接口插入外设 (u盘,麦克风,键盘等) addUSB(USB usb) { }开机 要求: 电脑开机前,先启动外设关机 要求: 电脑关机前,先关闭外设 外设类(u盘,麦克风,键盘等) 功能 : 启动 关闭 USB接口 定义usb设备的统一…

python多种方式 保留小数点位数(附Demo)

目录 前言1. 字符串格式2. round函数3. Decimal模块4. numpy库5. Demo 前言 在Python中&#xff0c;保留小数点后特定位数可以通过多种方式实现 以下是几种常见的方法&#xff0c;并附上相应的代码示例&#xff1a; 使用字符串格式化&#xff08;String Formatting&#xff…

IDE集成开发环境

IDE集成开发环境&#xff0c;全称“Integrated Development Environment” 介绍 定义&#xff1a; IDE是用于提供程序开发环境的应用程序&#xff0c;它集成了代码编写功能、分析功能、编译功能、调试功能等一体化的开发软件服务套。 组成部分&#xff1a; IDE通常包括代码编…

Ubuntu20.04 Mysql基本操作知识

#Mysql基本知识 运行环境Ubuntu20.04 1.开启mysql服务 sytemctl start mysql不然&#xff0c;命令行进入myql交互行提交命令后&#xff0c;就会出现4200错误。 2.显示所有数据库 SHOW DATABASES;注意复数s&#xff0c;毕竟很多数据库 3.新建数据库test CREATE DATABASE …