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

ncp计算机网络,计算机网络(待完成)

原本想等到写完才发出来的,但是太多了,只好每天写一点点咯

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

目录

1.1

1.2 计算机的性能指标

1.3

待解决的问题。

1.网络为啥要分层?

2.分层的原则是什么?

3.每一层含义和作用?

4.列举一次网络传输经过的层级?

5.同一层的协议如何识别?

1.为什么要分组传输?

2.什么叫IMP?

3.IMP的点点信道的拓扑结构有几种?为什么要这么设计?

4.IMP共享广播信道?

1.2计算机的性能指标

1.2.1 速率

又称 数据率,代表数据的传输速率,也就是每秒传输的bit量。

注意:数据率不代表传播速率

1.2.2 带宽

上限速率

1.2.3 吞吐量

单位时间内通过某接口的实际数据量, 速率可以解释为是一秒的吞吐量。

1.2.4 时延

1.2.4.1 不同的时延

发送时延

主机或路由发送数据帧所需要的时间。

发送时延 = 数据帧长度(bit) / 发送速率(bit/s)

传播时延

数据在信道上经过的时间。

传播时延 = 信道长度(m) / 信道传播速率(m/s) (注意两个单位速率单位不同)

处理时延

主机或路由收到消息处理的时延。(解析首部、校验、查找路由)。

排队时延

分组转发需要排队等待的时延。

总时延计算

总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延

1.2.4.2 例题

题1:

试在下列条件下比较电路交换和分组交换。要传送的报文共x(bit)。从源站到目的站共经过后段链路,每段链路的传播时延为d(s),数据率为b(b/s)。在电路交换时电路的建立时间为s(s)。在分组交换时分组长度为p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时延比电路交换的要小?

解答:

电路交换:kd + x/b + s ,电路交换的特点是不需要路由器去转发分组,所以节点发送时延可以忽略。

分组交换:kd + x/b + (k-1)p/b ,这里我们可以理解成一个运行的火车,当最后一节通过时,整个火车通过。 而这个 + (k-1)p/b ,可以解析为,当数据全部发送完,最后一分组在线路中运行时间。

所以我们可以得出结论,当 s > (k-1)p/b时,分组交换的时延比电路交换的要小。 所以我们提高数据率和降低节点能够降低分组交换的时延(注意,如果分包越多,处理时延就越大,这里忽略处理时延,所以看不出来。所以降低分包长度,并不一定能降低总时延)

题2:

在上题的分组交换网中,设报文长度和分组长度分别为x和(p+h)(bit),其中p为分组的数据部分的长度,而h为每个分组所带的控制信息固定长度,与p的大小无关。通信的两端共经过k段链路。链路的数据率为b(bit/s),但传播时延和结点的排队时间均可忽略不计。若打算使总的时延为最小,问分组的数据部分长度p应取为多大?

解答:

这道题的最坑的在于这个刚开始的发送时延怎么计算。

发送时延: (p+h)/b * (x/p)

全部节点发送时延:k * (p+h)/b

总时延:D=(p+h)/b * (x/p) + (k-1) * (p+h)/b

//TODO 这个式子怎么算的,完全布吉岛

1.2.5 时延带宽积

时延带宽积 = 总时延 * 带宽

意义:主要是来衡量整个链路中的流量

1.2.6 返回时间RTT

主要来确定一个有效数据率,如TCP你发送一个包就必须ACK一次,比如这个包100Kb,传送用了10s,返回时间用了1s,那么这个有效数据率就是:100*1024 * 8 /(10+1)

1.2.7 利用率

公式:D=D0/1-U (其中D 表示当前时延,D0表示网络空闲时延,U表示利用率)

(这个可以反映出,利用率越高时延也就越大)

3 数据链路层

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

可以看出,边缘需要解析5层协议,而核心只需要解析3层协议就够了,因为只需要解析出ip,就知道如何传输了。

//TODO 数据链路层是干嘛的?

可以通过图上,大概查出,物理链路层主要研究链路上如何保证正常通信,以及信道的通信方式。

3.1 链路层基本概念

链路 : 结点和相邻结点间的一段物理线路(有线或无线)。

数据链路 = 通讯协议(规程)(网卡实现) + 物理链路

帧:数据链路层数据,每传一次,我们称为帧,帧就是链路层协议单元。

3.2 基本步骤

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

将网络层的ip数据包封装成帧。

将帧发送到链路上。

接受帧并取出其中的IP数据报交给网络层。

3.3 三个基本问题

3.3.1 如何将数据封装成帧?

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

首部:SOH (start of header)

尾部:EOT (end of transmission)

最大传送单元:MTU(Maximum Transfer Unit)注意:指不包括首部和尾部的ip数据报。

首部和尾部一般作用是定界符,但不仅限于此,而ETU则一般出于效率和占用链路的时间考虑,原则上,出于传输效率上考虑,数据报部分应该尽可能大于首部加尾部的长度。

定界符的几种常见方式与选择:

方案

优点

缺点

SOH

需要转义、包含字符少

1.SOH字符转义,2.无法做校验

SOH+length

1. 可做校验 2. 需要转义字符少

1.SOH字符需要转义 2. length的占用的字节不确定

SOH+EOT

1. 可做校验 2. 占用字节稳定

1.SOH、EOT字符需要转义

3.3.2 透明传输?

1. 传输就传输,为啥要讲透明传输,那什么是不透明传输?

因为首部或者尾部的数据可能会出现重合,那么就不可以传输这些特殊字符,这就是不透明传输,比如出现了EOT相同的字符,链路层就会错误的找到边界。

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

2. 如何解决不透明传输

我们可以类比java处理字符串中引号问题,在java中,我们加入了转义字符 \ ,来处理字符串中的特殊字符,那么在解决透明传输上,我们也可以参考这种办法。

字符填充法:

我们装帧的数据部分里面的 "SOT"、"EOT"前面加上"ESC"作为转义符,我们取帧时,去掉"ESC"字符。

这里可能数据部分里面也有"ESC"字符,我们可以在"ESC"字符前再加上"ESC"字符。

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

3.3.3 差错校验

现实的链路并不理想,在比特传输过程中可能由1变成0,也可能有0变成1,这种差错叫比特差错。目前在物理链路层,广泛采用循环冗余校验(CRC)的校验技术。

循环冗余校验(CRC):

假定帧的数据部分长度为k,假定待传数据为M 。

CRC运算就是在数据M后面添加冗余码n,即发送长度为 (k + n)。发送的双方事先商定好(n+1)位的除数P(这个P我们有相关规范),用M采用MOD2除法除以P,得出商为Q而余数为R(商没用),这个余数R就拼接到M后面一起发出去。我们称这个要拼接的余数为 FCS(Frame Check Sequence)帧校验序列, 而接受方,使用除数P看是否可以采用MOD2整除(M+R)来判断是否成功交换。

举个栗子:

我们现在帧的数据M = 101001 ,我们约定好除数是P = 1101 (说明n=3),那么如何得到完整数据?

首先得到长度 使用模2乘法: 2^n * M,实际上就是在M后面添上n非0,得到新的M (101001000)

M : 1 0 1 0 0 1

2^n : 1 0 0 0

---------------------

0 0 0 0 0 0

0 0 0 0 0 0

0 0 0 0 0 0

1 0 1 0 0 1

---------------------------------

1 0 1 0 0 1 0 0 0

使用模2运算,将得到的新M除以P,得到商(110101),余数 (001)

1 1 0 1 0 1

____________________________________

1101 √ 1 0 1 0 0 1 0 0 0

1 1 0 1

-----------------

0 1 1 1 0

1 1 0 1

---------------------

0 0 1 1 1 0

1 1 0 1

---------------------

0 0 1 1 0 0

1 1 0 1

-------------

0 0 0 1

将新的M (101001000)或上 余数R(001)最终获得发送的数为 :101001001。

接收端处理

客户端收到信息后:对每一帧都用模2运算除以相同的除数P,看余数是否为0。(如果出现误码余数为0的概率很小)

如果余数为0:就帧没有误差,如果出现异常。

如果余数不为0:说明帧存在误差,直接丢弃。

除数P的表示:

除数P可以用P(X)来表示,其中多项式P(X)被称为生成多项式。

例如,上面除数P=1101可以表示P(X) = X^3 +X^2+1

目前常用的多项式有:

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

3.4 可靠运输和不可靠运输

3.4.1 比特差错与传输差错。

传输常见差错可分为:比特差错、传输差错。

比特差错:接受的帧和原发送帧的数据不一致。

传输差错:

帧丢失、帧重复、帧失序

1)帧丢失:[#1],[#3]

2)帧重复:[#1],[#2],[#2],[#3]

3)帧失序:[#1],[#3],[#2]

所谓的无比特差错运输就是指传输中干掉了比特差错,目前我们通过CRC仅能做到对帧无比特差错接受,即凡是接受端数据链路层接受到的帧,我们都认为这些帧在传输过程中无差错,但是这并不代表可靠运输

3.4.2 什么是可靠传输,如何做到以及优缺点和场景

介绍:

简单的说,可靠传输就是干掉比特差错和传输差错。

如何做到:

即在无比特差错传输的基础上加上"帧编号","确认","重传机制",来确保可靠传输。

优缺:

但是我们可以看出,多加了3种机制,可以保证帧的传输不出差错的同时,意味着通讯效率的降低。

场景:

可以看出:

1.可靠运输的场景适用于通讯质量较差线路,容易出现帧丢失、帧重复、帧失序等问题。

2.不可靠运输的场景适用于通讯质量较好的线路

3.4.3 互联网的普遍的传输

事实上当前互联网采用一种贪心策略。

即:

对于通信质量良好的链路,我们不做确认和重传,即做无比特差错传输,将可靠性传输的任务交给传输层来做(如TCP),

对于通讯质量差的链路,采用确认和重传,向上提供可靠传输服务。

3.5 点对点协议 PPP

PPP是目前使用最广泛的数据链路层协议,不管是低速的拨号猫连接还是高速的光纤链路,都适用PPP协议。

因特网用户通常都要连接到某个ISP 才能接入到因特网。 PPP协议就是用户计算机和ISP进行通信时所使用的数据链路层协议。 ISP使用PPP协议为计算机分配一些网络参数(如IP地址、域名等)。

3.5.1 特点

简单:

对数据链路层的帧不需要确认、重传、序号,提供不可靠数据服务。(由传输层如TCP来做可靠校验)

为什么PPP协议简单?

由于不管是核心部分还是边缘部分,都会解析链路层协议,所以尽可能的将链路层协议写简单,这样解析快。可以将复杂的部分放入传输层协议(如TCP)来处理。

大致流程:

接收方接受到一个帧,对帧进行CRC校验,如果校验通过就收下这个帧,反之丢弃。

支持多种网络协议

如IP、IPX。(向上兼容)

支持类型链路

串行、并行、同步、异步、光信号、电信号(向下兼容)

检查连接状态

隔几分钟就发心跳包。

主要用于那些出现故障,隔了一段时间又恢复的链路。

网络层地址协商

//TODO

数据压缩协商(不做强制规定,未进入标准化)

如出现连续出现80个1,我们就压缩这个80个1,用过标志符表示80个1, 反正有很多压缩方法。

7.PPP协议仅支持点对点链路通信,不支持多点线路(一个主站轮流和多个从站通信)

8.PPP协议仅支持全双工链路。

3.5.2 协议组成

3.5.3 帧组成字段

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

字段F :为标识首部或尾部

字段A:地址字段,OXFF(无用,在PPP协议中可以去掉)

字段C:控制字段,OxO3(无用,在PPP协议中可以去掉)

字段协议:协议字段,占2个字节,相当于一个Type,标识PPP帧信息部分类型,其中 0x0021标识PPP帧就是IP数据报,若为0xC021标识PPP帧信息部分为链路控制协议LCP的数据,而0x8021标识标识PPP帧信息部分为网络控制协议NCP数据。

信息部分:可以是ip数据包,也可以是LCP或NCP的控制协议,最大为MTU。

FCS:2个字节,推测为CRC16的校验码

3.5.4 异步传输和同步传输

3.5.5 字节填充

当采取异步传输时,PPP协议选取字节填充。

将每一个0x7e转换成0x7d,0x5e

将每一个0x7d转换成0x7d,0x5d

将每一个小于0x23的字符前面加上0x7d

3.5.6 比特填充

当采取同步传输时,PPP协议采取比特填充。

对帧的数据部分中,每5个连续的1,后面添加一个0,这么做主要是,防止0x7e出现。

然后在接受端,每5个连续的1后面减少一个0。

3.5.7 PPP协议的工作方式

PPP链路的初始化:

用户拨号,建立一条从个人主机到ISP的物理链路。

个人主机向ISP发送链路控制协议LCP分组,建立LCP连接。(这些分组和响应决定了将要使用的一些PPP参数,如 是否使用PPP协议的地址和控制字段)

待成功建立LCP连接后,接着进行网络层配置,NCP协议给个人主机分配一个临时IP,此时用户个人电脑就成为互联网上一个有IP地址的主机了。

d31cfaa738e8?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

3.6 习题

LCP包括哪些功能?

封装成帧、透明传输、差错校验、连接状态检测。

相关文章:

  • 计算机专业的口号运动会四字,运动会口号四字
  • 给div赋html,jquery怎么给div赋值
  • koa渲染html文件,Koa 中返回 html 文件引发的思考-一一网络
  • 第一章计算机系统基础知识答案解析,计算机基础知识第一章练习题及答案解析教案资料(20200719174546)(20页)-原创力文档...
  • 计算机中实时与在线的关系,为什么新版QQ不再区分手机在线和电脑在线
  • 计算机教师招聘基本功试题及答案,2015年教师招聘考试新面试答辩题(附答案)第六卷...
  • 计算机系班级未来展望,云程发轫,重装上阵——计算机工程系2020级班级工作阶段性总结汇报与计划展望交流会...
  • 不用计算机证明数学定理,计算机证明数学定理的方式论
  • 计算机游戏设计专业世界大学排名,看过来,世界五大顶尖游戏设计大学在这里...
  • 转专业申请加拿大计算机硕士,GPA低?教你如何成功申请加拿大硕士!
  • 安徽计算机技术学院蚌埠,安徽蚌埠技师学院2021年招生简章
  • 襄阳职业技术学院计算机技能高考,2021湖北技能高考襄阳职业技术学院怎么报名?...
  • 与计算机硬件本身密切相关的是什么语言,计算机硬件单选试题及答案
  • 中南大学和中山大学计算机专业哪个好,中山大学和中南大学哪个好?该如何选择?...
  • 计算机二级foxpro,计算机二级Visual FoxPro练习试题及答案
  • JavaScript-如何实现克隆(clone)函数
  • [NodeJS] 关于Buffer
  • Akka系列(七):Actor持久化之Akka persistence
  • egg(89)--egg之redis的发布和订阅
  • HTTP--网络协议分层,http历史(二)
  • Java 23种设计模式 之单例模式 7种实现方式
  • Javascript 原型链
  • JavaScript/HTML5图表开发工具JavaScript Charts v3.19.6发布【附下载】
  • Java反射-动态类加载和重新加载
  • Linux编程学习笔记 | Linux多线程学习[2] - 线程的同步
  • Linux后台研发超实用命令总结
  • mockjs让前端开发独立于后端
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • spring-boot List转Page
  • vue从入门到进阶:计算属性computed与侦听器watch(三)
  • 不上全站https的网站你们就等着被恶心死吧
  • 创建一个Struts2项目maven 方式
  • 搭建gitbook 和 访问权限认证
  • 检测对象或数组
  • 前端之Sass/Scss实战笔记
  • 使用权重正则化较少模型过拟合
  • 一个项目push到多个远程Git仓库
  • 智能合约Solidity教程-事件和日志(一)
  • const的用法,特别是用在函数前面与后面的区别
  • mysql面试题分组并合并列
  • 交换综合实验一
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 曾刷新两项世界纪录,腾讯优图人脸检测算法 DSFD 正式开源 ...
  • ​​​​​​​sokit v1.3抓手机应用socket数据包: Socket是传输控制层协议,WebSocket是应用层协议。
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (06)Hive——正则表达式
  • (1)(1.11) SiK Radio v2(一)
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (3)(3.5) 遥测无线电区域条例
  • (C语言)输入一个序列,判断是否为奇偶交叉数
  • (k8s中)docker netty OOM问题记录
  • (Oracle)SQL优化技巧(一):分页查询
  • (poj1.2.1)1970(筛选法模拟)
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转)树状数组