性能:丢包、分组延时、吞吐量
分组丢失和延时是怎么发生的 ?
**在路由器缓冲区的分组队列 **
- 分组到达链路的速率超过了链路输出的能力
- 分组等待排到队头、被传输
只有排在对头的 ,或者说是有可用缓存区的才会被传输, 剩下的都会被丢弃。
四种分组延时
节点处理延时:
- **检查 bit级差错 **
- **检查分组首部和决定将分 组导向何处 **
- dproc = 处理延时
通常是微秒数量级或更少
- dqueue = 排队延时
取决于拥塞程度
- dtrans = 传输延时
= L/R, 对低速率的链路而言很大(如拨号),通常为微秒级 到毫秒级
- **dprop = 传播延时 **
几微秒到几百毫秒
排队延时
- 在输出链路上等待传输的 时间
- **依赖于路由器的拥塞程度 **
【R=链路带宽 (bps) 】【L=分组长度 (bits) 】【a=分组到达队列的平均 速率】
** 流量强度 = La/R**
- ** La/R ~ 0: 平均排队延时很小 **
- ** La/R -> 1: 延时变得很大 **
- ** La/R > 1: 比特到达队列的速率超过了从该队 列输出的速率,平均排队延时将趋向无穷大! **
传输延时:
- R=链路带宽(bps)
- L=分组长度(bits)
- 将分组发送到链路上的 时间= L/R
- 存储转发延时
传播延时
- d = 物理链路的长度
- s = 在媒体上的传播速度 (~2x108 m/sec)
- 传播延时 = d/s
Internet的延时和路由
Internet的延时和路由是怎么样的?
**Traceroute 诊断程序: 提供从源端,经过路 由器,到目的的延时测量 **
**For all i: **
- 沿着目的的路径,向每个路由器发送3个探测分组
- 路由器 i 将向发送方返回一个分组
- 发送方对发送和回复之间间隔计时
在linux下, 通过Traceroute [网址] :就可以看到往返延时
分组丢失
- **链路的队列缓冲区容量有限 **
- ** 当分组到达一个满的队列时,该分组将会丢失 **
- 丢失的分组可能会被前一个节点或源端系统重 传,或根本不重传
吞吐量
吞吐量: 在源端和目标端之间传输的速率(数 据量/单位时间)(有效的吞吐量)
瞬间吞吐量: 在一个时间点的速率
平均吞吐量: 在一个长时间内平均值
- Rs < Rc 端到端平均吞吐是多少?
上下两个问题都是 : 取决于最小的那一方
瓶颈链路 : 端到端路径上,限制端到端吞吐的链路
- Rs > Rc 端到端平均吞吐是多少?
吞吐量: 互联网场景
协议层次、服务模型
网络是一个非常复杂的系统
- 网络功能繁杂:
数字信号的物理信 号承载、点到点、路由、rdt、进 程区分、应用等
- 现在来看, 网络的许多构成元素设备:
主机、路由器、媒体链路、应用、协议、硬件、软件等等
作为一个工程师, ** 如何组织和实现这个复 杂的网络功能? **
采用分层的方式来实现这种复杂的网络功能。
分层实现这种复杂的网络功能
类似于军队中的分配任务。一级一级向下分配任务, 由单个的任务实现从而达到上层的任务实现
层次化方式实现复杂网络功能:
- 将网络复杂的功能分层功能明确的层次,每一层实现了其中一个或一组 功能,功能中有其上层可以使用的功能:服务
- **本层协议实体相互交互执行本层的协议动作,目的是实现本层功能, 通过层间的接口为上层提供更好的服务 **
- 在实现本层协议的时候,直接利用了下层所提供的服务 来实现数据报文的传输
- **本层的服务:借助下层服务实现的本层协议实体之间交互带来的新功能(上层可以利用的)+更下层所提供的服务 **
服务和服务访问点
1. ** 服务( Service):**低层实体向上层实体提供它们之间的 通信的能力
- 服务用户(service user)
- 服务提供者(service provider )
2. **原语(primitive):**上层使用下层服务的形式,高层使用 低层提供的服务,以及**低层向高层提供服务都是通过 服务访问原语来进行交互的**。
也就是**提供服务的形式 就是原语 **
服务访问者通过原语 来告诉 服务提供者 我需要你干什么 。
服务提供者也是通过原语来问服务访问者, 你要干嘛
3. **服务访问点 SAP (Services Access Point) :**上层 使用下层提供的服务通过层间的接口—地点:** (也就是 :下层的服务者区分上层服务访问者的信息)**
- 例如: 邮箱
- 地址(address): 下层的一个实体支撑着上层的多个实体, SAP有标志不同上层实体的作用
- 可以有不同的实现、队列
- 例子: 传输层的SAP:端口(port)
服务的类型
两种服务方式: 面向连接的服务和无连接的服务-方式
** 面向连接的服务( Connection-oriented Service) **
** 无连接的服务(Connectionless Service) **
面向连接的服务方式
用户在使用下层提供的服务之前, 需要进行握手, 来为后续的通信做出准备。 这就是面向连接的服务
- 连接(Connection):两个通信实体为进行通信而建立的一 种结合
- 面向连接的服务通信的过程:建立连接,通信,拆除连接
- 面向连接的服务的例子:网络层的连接被成为虚电路
- 适用范围:对于大的数据块要传输; 不适合小的零星报文
- 特点:保序
- 服务类型:
可靠的信息流 传送页面(可靠的获得,通过接收方的确认)
可靠的字节流 远程登录
不可靠的连接 数字化声音
无连接的服务方式
两个应用进程采用UDP的方式进行交互, 在其通信之前不需要握手。 直接进行信息交换。
- 无连接服务:两个对等层实体在通信前不需要建 立一个连接,不预留资源;不需要通信双方都是 活跃;(例:寄信)
- 特点:不可靠、可能重复、可能失序
- IP分组,数据包;
- 适用范围:适合传送零星数据;
- 服务类型:
不可靠的数据报 电子方式的函件
有确认的数据报 挂号信
请求回答 信息查询
、
服务和协议
服务和协议的区别
- 服务(Service):低层实体向上层实体提供它们之间的 通信的能力,是通过原语(primitive)来操作的,垂直 (上下层之间)
- 协议(protocol) :对等层实体(peer entity)之间在相互 通信的过程中,需要遵循的规则的集合,水平 (同层之间)
★服务与协议的联系★★★
- 本层协议的实现要靠下层提供的服务来实现
- **本层实体通过协议为上层提供更高级的服务 **
数据单元(DU)
层次n向上层n+1 进行提供服务, 通过原语来区分上层服务。
上一层需要下层处理的数据或其他叫SDU (服务数据单元)
在传输上下层之间有一个层间接口Interface, 所以需要加上一些控制信息, 这些控制信息叫做** ICI (接口控制信息)**
ICI + SDU ==IDU (接口数据单元)
上层的控制信息+ 本层服加的一些控制信息 = (同步) 形成本层的PDU(协议数据单元)
1对多的关系:上层发送的一个(SDU)数据单元太大了,需要拆解成分组大小
每层交换的数据单元的称呼都是不一样的 ,但是表达的意思基本是一致的。 比如:
应用层:报文;传输层:报文段或段;网络层:分组或数据报;链路层:侦;物理层:字节、位
分层处理和实现复杂系统的好处
- 概念化:结构清晰,便于标示网络组件,以及描述其 相互关系
分层参考模型
- **结构化:模块化更易于维护和系统升级 **(分而治之思想)
改变某一层服务的实现不影响系统中的其他层次
对于其他层次而言是透明的
便于交流和讨论
- 如改变登机程序并不影响系统的其它部分
改变2个秘书使用的通信方式不影响2个翻译的工作
改变2个翻译使用的语言也不影响上下2个层次的工作
分层思想被认为有害的地方?
分层到若干个子系统, 子系统之间的信息交换的效率是非常低的
总体好处 > 坏处
Internet中的协议栈★★★★★
应用层: 网络应用
**在传输层提供的可靠的传输基础上 为人类用户或者其他应用进程提供网络应用服务 **
如何保证这些服务之间的可靠性呢 ,那么这里就用到了应用层的协议:
FTP, SMTP, HTTP,DNS
当然,应用层的协议有几千中, 以上仅是最重要的几个
传输层: 主机之间的数据传输
**在网络层提供的端到端通信基础上,细分为进程 到 进程,将不可靠的通信变成可靠地通信 **
**如何做到进程之间的区分 ? **
需要用到端口的机制
**因为网络层传输的服务是不可靠的, 传输层如何保证这些服务之间的可靠性呢 ,那么这里就用到了传输协议—–TCP, UDP **
网络层: 为数据报从源到目的选择路由
链路层传输的是相邻两点之间 , 而我们需要的可不是相邻 ,而是全球范围内的通讯。
网络的核心就是**源主机 和 目标主机之间的端对端的网络传输。 **
同时这也是网络层要做的事。
网络层 在链路层相邻两点传输的基础上, 传输以分组为单位的端对端的数据传输。
所以就需要
- 主机主机之间的通信,端到端通信,不可靠
- **IP, 路由协议 **
所以网络层最重要的两个就是转发、路由
链路层: 相邻网络节点间的数据传输
两个网卡之间 通过一段链路 传输数据,然后连起来
链路层: 传输以 帧 为单位的数据 (在相邻两点之间 )
在物理层提供的服务的基础上在相邻两点之间传输以 帧 为单位的数据
- 2个相邻2点的通信,点到点通信,可靠或不可靠
- **点对对协议PPP, 802.11(wifi), Ethernet **
物理层: **线路上传送bit **
**在线路上传送bit (组合而成为帧) **
将所有的信息转换为物理信号, 承载在媒体之上。然后在端与端之间进行传输
除了互联网(Internet)的五层参考模型之外的其他模型 : ISO/OSI 参考模型
表示层:
** 允许应用解释传输的 **数据, e.g., 加密,压缩,机 器相关的表示转换
会话层:
** 数据交换的同步,检 查点,恢复 **
互联网协议栈是没有上述的两层
虽然没有, 但是他们干的事情,在互联网协议栈中也是有的, 应用层自己去做。
封装和解封装
各层次的协议数据单元
- **应用层:报文(message) **
- 传输层:报文段(segment):TCP段,UDP数据报
- 网络层:分组packet(如果无连接方式:数据报 datagram
- **数据链路层:帧(frame) **
- **物理层:位(bit) **