什么是protocol分层,垂直service??计算机网络详解【计算机网络养成】

2023-11-19

Java学习二阶段(打卡第40天)


计算机网络第一章的收尾工作,分组延时,丢包,吞吐量,协议层次和服务模型


计算机网络的学习这里是自我进行的额外学习,之后如果再次学习课程,会直接在该专栏进行知识的补充,之前对于分组交换我们已经了解到排队和延时,但是对于更深层次的东西还没有了解过

分组交换就是使用了延迟和丢包来换取了共享性

分组丢失和延时

发生原因

之前分析过,在路由器缓冲区的分组队列,分组到达链路速率超过了链路输出的能力,分组等待排到队列,被传输,这里一旦缓冲区满,之后的数据包就会被放弃造成丢包,排队则是因为速率问题,前一个分组没有发送完,那么下一个来的分组只能在缓冲区排队,队列也不能太长,因为延迟过大就是去了意义,数据就没有价值了。

四种分组延时

节点处理延迟

检查bit有无差错,检查分组中的导向信息决定导向何处,对某些字段进行处理,提取IP查路由表

排队延迟

因为排队是需要时间的,这个时间就是排队延迟【在输出链路上等待传输的时间】—取决与当前路由器的拥塞程度

流量强度 I = L*a/R ,在0和1之间,0就是比较轻的程度,0到1之间排队延迟趋向于无穷大,流量强度为1就会产生大量丢包

I = 0,没有排队延迟 , 所以之气的分组交换计算人数时,10的时候流量强度为1,舍去

传输延时 Transmission

R = 链路带宽(bps), L = (分组长度)有多少个bit ,将分组从路由器缓冲区上载到链路的时间为 L/R,存储转发的延时【分组到达路由器也要存储到缓冲区,需要时间】

传播延时 Propagation

距离如果非常近就可以忽略传播的延时,非常远就不能忽略,比如地球同步轨道卫星,不断经过很多hop跳,段,到达目标

d = 物理链路的长度

s = 在媒体上的传播速度 (~2*10e8 m/sec)

传播延时 = d/s

Note,s and R are very different quantities! R是链路的带宽,

这里以车队来类比一下transmission和propagation

汽车以100km/h的速度传播,收费站服务每辆车需要12s【进行处理,将bit打出】

汽车—bit,车队—分组;在车队到达第二个收费站需要多长的时间,这里最后一辆车离开收费站所消耗的时间就是传输延迟,车队在两个收费站之间所耗费的时间就是传播延迟,广域网WAN【距离长】

如果传播速度快,比如车速非常快,那么就可能整个分组还没有传输完成,第一辆车(bit)就应景到达了第二个节点 这就是因为信道容量小的情况,就是局域网LAN【距离短,可忽略】

在start节点到target节点之间每一个节点都会经历这几个延迟,因为要经过很多hops才能到达目标节点

使用cmd命令tracert 和 tracerert 来检查延迟

可以通过Tranceroute命令诊断程序,提供源端,经过路由器,到达目的地的延时测量,tracert【路径跟踪程序】

方法是沿着路径,发送3个探测分组,路由器向发送方返回一个分组,发送方队发送与回复进行⏲

利用到ICMP协议,互联网数据报协议,其中包含一个message,之间有个字段,IP的head和body,ip的body字段前方有个TTL字段(生存时间),每经过一个节点都会减1,【最开始为1个有限值】,把TTL设置为1,到达第一个路由器就减为0,然后通过ICMP将消息返回,告诉哪个IP干掉了报文,同时⏲,就可以检测出延时,到达目标的时候就结束,目标端口不可达的消息,简单说就是通过ICMP协议的TTL递增的方式,检测出延迟

这里和大家示范一下命令的使用,首先WIN+ R,进入cmd命令窗口

之后键入命令 tracert + 目标地址(网站)这里我键入的是youtube.com

在这里插入图片描述

youtube为美国网站,到后面的传播的延迟过大,还有其他的各种原因,就超时了

分组丢失

链路的队列缓冲区容量有限,当分组到达一个满的队列时,该分组将会丢失,丢失的分组可能会被前一个节点或者源端系统重传或者不重传,数据链路层可靠与不可靠和物理链路层有关,比如WIFI无线传输,所以不可靠,亡羊补牢就可靠

吞吐量(有效的数据量)

在源端与目标端之间传输的速率(数据量/单位时间) ,link capacity有效吞吐量取决于最小的bps

瞬间吞吐量 : 在一个时间点的吞吐量

平均吞吐量:在一段时间的吞吐量的平均值

瓶颈链路:端到端路径上,限制端到端吞吐的链路【最小的带宽】

互联网通信中,AB之间进行通信时要经过网络核心中的某一条链路,但通过的分组交换的方式,不像线路交换直接划分了带宽为piece,因为链路是共享的,会有多个host对使用该条link,那么这里其真实获得的带宽为1/n, 那么最小的带宽就是AB之间的瓶颈链路,限制了AB的吞吐量

协议层次

网络是一个复杂的系统

网络的功能复杂,数字信号的物理信号承载、点到点,hop,路由,rdt,进程区分,应用等内容。现实来看,网络有许多构成元素和设备

主机,路由器,各种media的链路,应用,协议,硬件,软件,那么问题来了:如何组织和实现复杂的网络功能?

这里采用的是分层的方法来组织网络的功能,【模块化的方式】,只能紧相邻的两个模块才能调用,底层的结构通过接口向上层模块提供功能,一层调用一层,最终实现复杂的功能

这里为理解层次化,举一个例子

两个异地的语言不同的哲学家交流

这里设计3层,秘书层为底层,解决异地通讯的问题,翻译层位第2层,解决翻译的问题,哲学家层为最高层,要想实现交流,就需要依次通过底层来实现功能,一个哲学家就从上层到下层来转码然后传播,到目标秘书后,再从下到上转码形成交流【所商量的统一语言,和通讯方式都是相同的

还有战争组织,高级将官需要下一级的官员提供的服务实现对等军官的交流Service,同时可以实现新的功能。包括下层的所有功能,并且形成了新的功能

这个虽然要麻烦一些,但是可复用性很高。上层模块可使用下层的功能

对等层的实体通过协议实现PDU的交换,要借助下层的功能,每一层实现明确的功能,通过接口向上层提供更好的服务。协议是对等关系,通过interface调用下一层的功能。直到物理层就是直接发送bit的电磁波信号,光信号。

协议是对等的关系,服务service是垂直的关系

之前所使用的socket API 就是传输层向应用层所提供的接口,可以完成进程的交互

  • 服务service就是低层实体向上层提供它们之间通信的能力, service user ;service provider

  • 原语 primitive 上层使用下层服务的形式,高层使用底层所提供的服务,以及底层向高层提供服务都是通过服务访问原语来进行交互的–形式 ----比如之前的套接字接口中的方法就是primitive

  • 服务访问点SAP,(service access point),上层使用下层提供的服务通过的接口 ---- 地点 ;告诉服务用户到底要给谁使用服务。address,到底再哪个地方提供服务,【确定位置】

服务的类型

面向连接的服务

这里之前已经提到过依次了,面向连接的服务就是两个end system 通讯的时候,要先握手,建立好连接关系,之后再进行数据的交互,这里需要和有连接的服务区分,面向连接只是约束了end system,并不要求网络核心中的中转节点形成连接

无连接的服务

Connectionless Service ,两个对等层的协议实体在通信中不许哎哟建立一个连接,不需要握手,不需要通信双方都是活跃的【比如寄信】

特点就是不可靠,可能重复或者失序—分组交换不同分组的路径可能不一样,由于网络拥塞导致失序和丢失

服务的类型 请求问答与信息查询,还有自媒体的服务

协议protocol与服务service

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

服务则是垂直的,就是下层的实体向上层实体提供它们之间通讯的能力,是primitive实现,使用SAP区分不同的使用该协议实体的service user

服务和协议的联系

本层协议的实现是需要通过下层的服务来实现的

本层的实体通过协议为上层提供更高级的服务

数据单元 data unit

应用进程要使用传输层的服务socket API 来实现通信(当然是TCP/IP的协议下)上层来的数据单元SDU,通过层间接口,加上第n层的头部,n-header,加上一些控制信息,形成本层的PDU,(协议数据单元),之后再向下层传输时,再次修饰形成PDU,可以在对等层交换

上层的SDU时本层的PDU的组成部分,装载的方式为一对一,一对多,多对一,就是可以将一个SDU修饰为一个或者多个PDU,继续向下层传输

所以说分层的好处就是可修改性更好,底层采取的新技术对上层时透明的,便于修改

分层的问题比一下子实现 也有坏处----就是效率要第低一些,但是坏处低得多

各层次的协议数据单元PDU

  • 应用层—报文message
  • 传输层 – 报文段segment:TCP段,UDP数据报
  • 网络层 — 分组packet(如果无连接,就是数据报datagram)
  • 数据链路层—帧frame
  • 物理层 — 位bit

Internet协议栈 --- 分层

之前就说了互联网时分层的,那现在具体看一下具体分为那几个层次

  • 应用层 ----网络应用

    • 为人类用户或者其他应用进程提供服务
    • 该层的协议有FTP,SMTP,HTTP,DNS
  • 传输层 – 主机之间进行数据的传输

    • 由网络层提供的通讯功能上,细分为进程到进程,将不可靠的通信变为可靠的通信
    • 该层的协议由TCP,UDP
  • 网络层 ---- 为数据从源到目的地选择路由

    • 主机主机之间的通信,端到端通信,不可靠
    • 该层的协议有路由协议,IP
  • 链路层:相邻网络节点之间进行数据传输

    • 两个相邻两点的通信,点到点通信,可靠或者不可靠
    • 点到点协议PPP,802,Ehernet wifi
  • 物理层–在节点之间线路中进行bit传输

物理层就是最底层的传输,就是例子中的秘书,发送端的物理层将上层链路层下来的Frame信号转换为物理信号通过物理media进行传播,接收端的物理层将接受的信号从物理信号转化为01之类的计算机信号交给上层;物理层传输的是一个个bit,而链路层就是在节点间通过链路实现以frame帧为单位进行传输【识别物理层bit,开始字段和结束字段,中间就是一个帧】,一堆bit就是要进行识别【相邻两点】,网络层在链路层提供的点到点的功能的基础上,以分组为方式,实现网络中端到端的数据传输,主机到主机; 传输层借助主机到主机的服务,一个主机有很多进程,使用端口服务区分进程,实现进程到进程的服务,还有就是加强可靠性

就是一个封装和解封装的过程

ISO/OSI参考模型【7重天】

互联网协议栈多了两层,在应用层和传输层之间,互联网协议栈就是应用层完成所有的功能

表示层— 允许应用解释传输的数据,加密,压缩,机器的相关表示转换

会话层—数据交换的同步,检查点,恢复

之前的DU时就说过将上层的SDU经过修饰加上header封装,到达终点时要进行一个大的解封装,但是在中间的路由器也要进行3层的解封装和封装

路由器上面有许多网卡,每个网卡携带DL和PH两层,PH层接收到物理信号转化为bit,DL再将bit识别header解析为帧,网络层再解析,找到目标IP,之后选择另外的中转网卡,再次进行封装,发送bit物理信号,两层设备【交换机】就是一个两层的解封装和封装。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是protocol分层,垂直service??计算机网络详解【计算机网络养成】 的相关文章

随机推荐

  • 微信小程序 picker选择器 表单验证 源码

    微信小程序表单验证 这是自己写的 比较low 下篇附上公司大佬的源码 嘿嘿 所在城市带选择城市的功能 比较懒笨 附上的代码是完整的 把接口数据换成自己的就可以用了 样式需要自己调 请在评论区夸我 附上要用的API的路径 https deve
  • OCR目前的发展现状综述

    本文目的是为了总结OCR各类技术的发展 从搜集资料到整理 可以看出OCR技术目前的一个大致发展趋势 目前还处于随时添加状态 敬请期待 更新时间 2019年9月26日 很好的参考资料 这个GitHub收集了文本检测 文本识别 端到端的论文以及
  • Dynamics CRM2011 同一个FORM表单同一个字段可以摆放多次

    这是一个很细微的问题 细微到很容易被忽略 可能其他人没有但我确实是忽略了 红框中的勾默认是勾选的 可能有人会像我一样 从没关心过这个地方还有个勾也从没关心过要把这个勾去掉 所以在表单上A B两个节中需要同一个C字段 而不同条件下A B只有一
  • 【数据库入门】关系型数据库为什么这么受欢迎?

    个人主页 个人主页 系列专栏 数据库入门 新人博主 喜欢就关注一下呗 关系型数据库 关系型数据库 是指采用了关系模型来组织数据的数据库 其以行和列的形式存储数据 以便于用户理解 关系型数据库这一系列的行和列被称为表 一组表组成了数据库 用户
  • 关于wav文件读取的一个小问题(librosa和soundfile)

    今天在跑melgan时候 发现GPU使用率低的感人 原本以为是pytorch的dataloader的问题 之后把num worker改为0 用主进程进行读取数据 发现主要卡在了librosa的load上 from librosa core
  • Docker 之Harbor 初步使用

    1 命令行登陆 harbar 镜像仓库 root node1 harbor docker login 192 168 27 134 9901 Username admin Password WARNING Your password wil
  • LSM详解

    关于LSM结构的相关介绍 这篇文章比较好 特此纪录一下https yq aliyun com articles 767772
  • python服务器开发debug_如何使用PyCharm开发和调试服务器上的代码

    0x00 前言 之前调试Python程序的时候一直都使用的是pdb 一个Python内置的调试模块 然后拿本地的源码进行比对 偶然听 周佩雨 ph师傅提到可以使用PyCharm对远端服务器上的代码进行调试 同时还可以对多进程类程序进行调试
  • 蓝牙打开流程

    通常两种打开方式 一个是在菜单Setting上打开 一种就是自动打开 default on 两种都是最终调用IBluetooth enable 来打开的 启动蓝牙BluetoothService frameworks base servic
  • osg orbitManipulator拖拽位置不精确的问题解决。

    实际上 就是个焦距和视距的问题 摄像机在不同的位置 远近切面会改变 但是fovy和aspectRatio不改变 这样 也会导致近切面的宽高发生改变 就类似于一个无限延伸的视锥体滑梯 远近切面就在这滑梯上滑动 由于最终物体要投影到近切面 而近
  • Ubuntu安装g++

    在编译之前我们需要在系统里安装G GCC 它们就是Linux下的C C的编译器 代码如下 代码 sudo apt get install build essential 好 现在我们在文本编辑器里写一个C的简单的程序 好像所有学习C或者C
  • MQ的基本原理是怎样的?MQ的优点有哪些?MQ的核心概念包括哪些?MQ的消息传递模式有哪些?

    1 MQ的基本原理是怎样的 MQ 消息队列 是一种面向消息的中间件 用于实现不同系统之间的异步通信 其基本原理如下 生产者 Producer 将消息发送到消息队列中 而不是直接发送给消费者 Consumer 消息队列将接收到的消息存储在内部
  • Python字符串的截取

    字符串元素的截取 Python中的字符串用单引号 或双引号 括起来 同时使用反斜杠 转义特殊字符 字符串的截取的语法格式如下 变量 头下标 尾下标 索引值以 0 为开始值 1 为从末尾的开始位置 加号 是字符串的连接符 星号 表示复制当前字
  • 怎么优化深层神经网络(超参、正则以及优化)

    在训练神经网络时 我们需要做出很多决策 比如 神经网络分多少层 每层含有多少个隐藏单元 学习速率是多少 各层采用哪些激活函数等等 我们不可能从一开始就准确的预测出这些超参数 因为应用机器学习是一个高度迭代的过程 通常在项目启动时 我们会先有
  • 小程序识别车牌php,微信小程序——车牌键盘输入js+css

    请输入车牌号码 carNo item 清空 关闭 item OK Del pages jp cp jp cp wxss lf float left rt float right tel border bottom 2rpx solid dd
  • Python常用函数笔记汇总1

    清理 重塑 转换 numpy where condition x y 1 这里x y是可选参数 condition是条件 这三个输入参数都是array like的形式 而且三者的维度相同 2 当conditon的某个位置的为true时 输出
  • 树莓派启用ll命令

    前言 在Linux系统中ll命令是ls l的快捷命令 在树莓派中默认是禁用的 通过修改配置文件将其开启 启用说明 vi bashrc 找到以下位置 将 删除 some more ls aliases alias ll ls l alias
  • ubuntu中的终端是区分大小写的

    ubuntu中的终端是区分大小写的
  • 主成分分析法(PCA)的理解(附python代码案例)

    目录 一 PCA简介 二 举个例子 三 计算过程 公式 3 0 题干假设 3 1 标准化 3 2 计算协方差矩阵 3 3 计算特征值和特征值向量 3 3 多重共线性检验 可跳过 3 4 适合性检验 可跳过 3 5 计算主成分贡献率及累计贡献
  • 什么是protocol分层,垂直service??计算机网络详解【计算机网络养成】

    内容导航 分组丢失和延时 发生原因 四种分组延时 节点处理延迟 排队延迟 传输延时 Transmission 传播延时 Propagation 使用cmd命令tracert 和 tracerert 来检查延迟 分组丢失 吞吐量 有效的数据量