【事先声明】
这是对于中科大的计算机网络的网课的学习笔记,感谢郑烇老师的无偿分享
书籍是《计算机网络(自顶向下方法 第7版)》
需要的可以私信我,无偿分享,课程简介下也有
B站链接
目录
- 网络核心
- 电路交换
- 端到端之间的带宽分配策略
- 频分FDM
- 时分TDM
- 波分WDM
- 分组交换
- 排队延迟与丢失
- 关键功能
- 路由
- 转发
- 统计多路复用
- 分组交换与电路交换
- 定量分析
- 数据报
- 网络接入
- 接入方式
- modern
- 线缆网络
- 无线接入
- 互联网结构
- 分组丢失与延时
- 分组延时
- 节点处理延时
- 排队延时
- 传输延时
- 传播延时
- 分组丢失
- 流量强度
- 吞吐量
- 协议层次与服务模型
- 层次化模型
- 协议
- 服务类型
- 面向连接的服务
- 无连接的服务
- 服务与协议的关系
- 数据单元(DU)
- 一对一
- 一对多
- 多对一
- 网络协议栈
- 物理层
- 链路层
- 网络层
- 传输层
- 应用层
- OSI七层网络模型
- 数据的封装与解封装
- 各层次协议的数据单元
网络核心
电路交换
两个端(网络设备)之间一旦建立了连接,其线路就会独享,其它的任务就不能再占用这条线路
端到端之间的带宽分配策略
频分FDM
每一天链路上,可以被划分为很多的不同频率,然后不同的频率划分个不同的任务,一条线路可以多路复用
时分TDM
一条链路上的通讯时间按照一个T周期进行划分,然后再周期中,不同的时间片分配这条线路给不同的任务
波分WDM
两个节点之间的通信方式是采用光纤进行数据通信,光纤中不同的波长分配给不同的任务。
两个主机之间的带宽是1.536Mbps,采用TDM多路复用方法,带宽被分为24片,每个时间片被分给一个任务使用。
要实现主机之间传输640000bit的任务,需要 64 ∗ 10000 / ( 1.53 M / 24 ) 64 * 10000 / (1.53M/24) 64∗10000/(1.53M/24)
还要加上建立线路的500ms,如果传输线路长,还需要加上传播延时
电路交换不太适合计算机之间
- 线路资源建立耗时长
- 共享资源的能力低
- 计算机之间的通信有突发性,因为不共享,会造成时间片浪费
分组交换
分组,一个数据包进行转发
再每个交换节点中,以存储转发的形式,去完成从源端到目标端的发送。
一个交换节点收到一个分组的数据包,把数据包完全存储下来,然后再转发出去。再转发的时候,完全占用这条链路的网络资源,当不需要发数据包的时候,这个链路可以被其它任务使用
在节点的发送与接收中,对于接收端而言,发送数据包就是接收数据包,只不过可能会有一点延时而言,而接收与发送的时间耗时是只计算一次的,接收与发送是一个事件的两个方面。不能发送耗时计算一次,然后接收耗时计算一次
排队延迟与丢失
如果链路的到达速率大于链路的输出速率
- 分组(数据包)会排队,等待传输
- 如果路由器的缓存用完了,就会丢弃分组
关键功能
路由
路由是全局的,是对于分组(数据包)从源到目标的路径(经过的整个过程中的路由器或者交换机)
转发
转发是局部的,是当前路由器决定向相邻的哪个路由器/交换机进行转发
统计多路复用
在链路资源中,一段时间A发送分组,一段时间B发送分组,也有一段时间都没有分组发送,链组资源的时间上的划分你并不是固定的
这也是一种特殊的时分模式
分组交换与电路交换
分组交换跟适用于计算机之间的通信
分组交换共享性更好,可以支持更多的主机
定量分析
N个用户,只用10%的时间会使用,每次使用会需要100kps的带宽数据(这就是一种数据突发情况)
如果是电路交换,带宽1Mbps,最多可以同时支持10个用户的使用
如果是分组交换,N=35时,小于等于10个用户同时使用的概率 ∑ n = 0 9 [ C 35 n p n ( 1 − p ) 35 − n ] \sum ^{9}_{n=0}\left[ C_{35}^{n}p^{n}\left( 1-p\right) ^{35-n}\right] ∑n=09[C35npn(1−p)35−n]
则大于10个用户以上同时使用的概率 1 − ∑ n = 0 9 [ C 35 n p n ( 1 − p ) 35 − n ] = 0.004 1-\sum ^{9}_{n=0}\left[ C_{35}^{n}p^{n}\left( 1-p\right) ^{35-n}\right]=0.004 1−∑n=09[C35npn(1−p)35−n]=0.004
说明,有99.6%的概率,可以保证带宽资源可以满足,说明分组交换的共享性更好些
而且,分组交换是可以提供给缓存进行分组排队的,只有0.4%的需要分组排队,这个还是可以接受的
分组交换跟可以在同样的网络资源下,接受更多的突发资源,因为其共享性
数据报
主机之间通信之前,没必要去建立连接没直接有数据就发送。也不必去维护两主机之间的通讯状态。
路由器根据分组的目标IP地址进行发送,虽然有时候,转发的路由路径是会变动的,但是你目标IP是不会改变的,这也会导致有些分组到达目标IP的顺序可能会不一样,但是分组只要到达,是可以通过其它手段去恢复数据的有序性。
甚至有时,一个路由堵塞时,会转发到另一路由器,绕开,选这其它的路由路径。
网络接入
网络核心与网络边缘的组成构成一个互联网
网络边缘(设备、主机)可以有不同的方式进行接入网络核心
接入网络有两个重要指标
- 接入带宽(每秒传输的比特位数量)
- 共享/专用
接入方式
modern
调制解调器,将网络信号数据,加载到特定频率的音频信号上,然后又端的专门的解调器进行处理。
这个方式的带宽非常窄,几kbps的样子
线缆网络
有线电视信号线缆双向改造
FDM,在不同的频段上传输不同的信道数据
无线接入
- WLAN:用于建筑内部
- 广域无线:由运营商提供
互联网结构
ISP:互联网服务提供商
ISP之间也是需要互联的,不然无法互相访问
N个ISP进行互联,该如何处理
成本非常高,可扩展性差,每新增一个ISP,都需要增加很多的连接成本
分组丢失与延时
路由器与多个网编边缘设备连接,设备想路由器发送分组(数据包)。
路由器的缓冲区中,会对接受的分组进行排队等待发送。
路由器的分组等待队列是有限的,也就是说路由器的分组缓冲区是有限的。当缓冲区满了,又有心得分组发送进来,则路由器会对分组进行丢弃。
分组在排队过程中就会产生延时,分组排队延时。
分组延时
每个 节点/端 传输分组都需要有这些延时
或者说,每个分组传输经过这些节点都要有这些耗时
节点处理延时
分组进到路由器后,需要进行bit级的分组检查,判断是否有出错
检查分组的首部,去IP表中查找IP地址,判断分组将要向哪里发送
排队延时
在输出链路上等待发送的时间,依赖于路由器的阻塞程度。
排队延时取决于流量强度
传输延时
取决于链路宽度R(带宽),分组长度L(数据报的比特数)
发送一个比特需要耗时 1 / R 1/R 1/R,而分组交换是整个数据报发送完才停止传输,所以传输分组需要耗时 L / R L/R L/R。
这个传输时间,是指路由器发送到另一个端的时间或者,另一个端接收分组的时间。
传播延时
在物理链路上的传播耗时
物理链路长度 d d d,在媒介上传播的速度 s s s,耗时 d / s d/s d/s
如果两个端/节点之间的距离比较近,那么传播耗时可以忽略不计
分组丢失
每个节点的等待队列都是有限的,如果当分组到达某个节点时,队列满了,然后就会被抛弃
如果当前节点与上一个节点之间的线路是可靠的(有一些协议支持的可靠链路,丢失会不断重传直到节点回复收到),那么由上一个节点进行重传。
如果当前节点与上一个节点之间的线路是不可靠的,如以太网,就可能会由源主机负责重传,如果源主机是UDP协议,那么源主机不会重传,直接传下一个分组。
还有一种是ICMP协议,其协议的报头中有关位段是IP,表示目标IP地址。还有一个位段是TTL(Time to Live),当每经过一个节点,TTL就会减一,当TTL为0时,节点提取报文信息后,也会将该分段丢弃。
流量强度
取决于流量强度 I = L a R I=\dfrac{L a}{R} I=RLa
L:分组长度,a:单位时间内通过的分组数量,R:带宽
流量强度在[0,1],排队延时与流量强度的关系
流量强度不能超过1,排队时间在流量强度超过一定阈值时会陡增。
吞吐量
源端与目标端之间的有效比特的传输速率( 数据量 单位时间 \dfrac{数据量}{单位时间} 单位时间数据量)
根据时间的长度,还分为,瞬时吞吐量、平均吞吐量
吞吐量取决于短桶效应, min R s , R c \min{R_s,R_c} minRs,Rc
瓶颈链路:在端到端的路径上,限制端到端的吞吐的链路
前提是没有其它节点传输数据
实际场景中,瓶颈链路是端到端的链路上,传输有效分组数量最小的链路
协议层次与服务模型
互联网可以说是有史以来最复杂的人工系统,为了降低复杂度,分摊成本,使用模块化的设计思想,进行解耦,提高可拓展性。
模块化后,采用分层的设计方法,层层调用,不能跨层调用,降低互相的依赖性。
层次化模型
- 为上层模块提供服务接口
- 使用下层模块提供的服务接口
- 同层次模块,通过协议完成数据交换以实现新功能,需要借助下层模块提供的服务
协议
- 同层次模块规定好的动作的集合,以实现新的功能
- 目的是为了向上层提供更好的服务
- 实现是需要基于下层提供的服务的总和(包括下层的下层为下层提供的服务…)
服务类型
面向连接的服务
需要两个模块建立通信,TCP
建立连接->通信->拆除连接
可以保证数据的完整与有序性
无连接的服务
两个同层次的模块不需要建立连接后再进行通信,直接发送数据
发送的数据可能重复、可能失序
服务与协议的关系
- 服务:下层实体向上层实体提供他们之间的通信能力,垂直
- 协议:对等实体之间相互通信的过程中需要遵循的规则的集合,水平
数据单元(DU)
上一层传给下一层实体的数据叫做SDU,上一层需要通过下一层提供的ASP(接口)来发送SDU
一对一
SDU进入下一层后,会被在数据头部加上一部分控制信息,形成了这一层的PDU
一对多
当SDU比较大时,发送给下一层后,会被分割成很多部分,然后分别加上报头,形成多个PDU
多对一
当一个SDU非常小时,会收集多个SDU,然后拼一块,加上报头,合成一个PDU
网络协议栈
物理层
相邻两点之间的物理信号的传输与转换
将链路层传下来的每一帧数据(一组0/1数据),转化为电信号/电磁信号,然后通过物理线路或其它媒介,发送给接收端
接收端的物理层,再将获得电信号,转化为数字的0/1信号,再交给上面的链路层
链路层
将数据转化为一帧帧的比特数据,区分哪些是一帧比特数据的开头,哪些是一帧比特数据的节位,然后依次来分离出一帧比特数据,然后交给下方的物理层进行传输
在物理层提供的传输服务之上,在相邻的两点之间(从这个协议栈到另一个协议栈),以帧为单位传输数据
网络层
在链路层提供的相邻两点之间的数组传输的基础上,以分组为单位,从端到端(源主机到目标主机)的传输
网络层的核心功能:路由与转发(全局寻路与局部寻路,寻的路是网络核心的交换节点)
传输层
- 在网络层提供的主机到主机之间的传输服务基础上,确定从主机A的进程到主机B的进程的传输
- 在网络层传输数据不可靠的情况下,将数据传输变的可靠,然后提供给进程
应用层
在传输层提供稳定的数据包的基础上,进行数据报文的交换,可以实现很多应用功能
OSI七层网络模型
实现协议栈的厂商觉的太复杂,是不会去专门实现。
如果需要这两层功能,可以在应用层去自己实现。
数据的封装与解封装
协议栈中每一层都会为数据添加上自己的报文数据,也叫报头,是为了给另一边的协议栈中同层次的进行解包的,里面有控制信息,如,目标IP,生存时间等等。
这些控制信息/报头,本质上都是一个个独有的结构体对象或者说C语言中位段,每一段蕴含着一定的信息。这些都是规定好的协议,只有同层次的实体才能解封装。
当前层的报头也会是下一层的有效载荷
各层次协议的数据单元
- 应用层:报文
- 传输层:报文段
- 网络层:分组、数据报(无连接网络)
- 数据链路层:帧
- 物理层:位