概述
互联网:专有名词
互连网:通用网络
互联网的组成
边缘部分
由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
端系统之间的两种通信方式
客户-服务器方式(C/S)
客户是服务的请求方,服务器是服务的提供方
- 客户软件的特点
- 被用户调用后运行,在打算通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址
- 不需要特殊的硬件和很复杂的操作系统
- 服务器软件的特点
- 一种专门用来提供某种服务的程序,可同时处理多个远地或本地客户的请求
- 系统启动后即自动调用并一直不断地运行着,被动地等待并接受来自各地的客户的通信请求。因此,服务器程序不需要知道客户程序的地址
- 一般需要强大的硬件和高级的操作系统支持
- 客户软件的特点
对等方式(P2P)
不区分客户和服务器。
核心部分
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)
在网络核心部分起特殊作用的是路由器 (router)。 at Shanghai University
路由器是实现分组交换 (packet switching) 的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。
分组交换是网络核心部分最重要的功能
电路交换
$$N$$ 部电话机两两直接相连,需 $$N(N – 1)/2$$ 对电线。这种直接连接方法所需要的电线对的数量与电话机数量的平方( $$N^2$$ )成正比。
当电话机的数量增多时,就要使用交换机来完成全网的分组任务,这就是电路交换
- 特点
- 电路交换必定是面向连接的
- 电路交换分为三个阶段:
- 建立连接:建立一条专用的物理通路,以保证双方通话时所需的通信资源在通信时不会被其他用户占用;
- 通话:主叫和被叫双方一直占用通信资源;
- 释放连接:释放刚才使用的这条专用的物理通路(释放刚才占用的所有通信资源)
- 总结
电路交换用于电话通信系统,两个用户要通信之前需要建立一条专用的物理链路,并且在整个通信过程中始终占用该链路。由于通信的过程中不可能一直在使用传输线路,因此电路交换对线路的利用率很低,往往不到 10%
分组交换
分组交换采用存储转发技术
- 步骤
- 在发送端,先把较长的报文划分成较短的、固定长度的数据段
- 每一个数据段前面添加上首部构成分组 (packet)
- 分组交换网以“分组”(也称为“包”,首部也可称为“包头”)作为数据传输单元,依次把各分组发送到接收端(假定接收端在左边)
- 接收端收到分组后剥去首部还原成报文
- 最后,在接收端把收到的数据恢复成为原来的报文。
- 首部的重要性
- 每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。
- 分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下一个结点交换机。
- 每个分组在互联网中独立地选择传输路径。(通过路由器)
- 用这样的存储转发方式,最后分组就能到达最终目的地。
- 路由器的作用
- 在路由器中的输入和输出端口之间没有直接连线。
- 路由器处理分组的过程是:
- 把收到的分组先放入缓存(暂时存储);
- 查找转发表,找出到某个目的地址应从哪个端口转发;
- 把分组送到适当的端口转发出去。
- 优点
- 高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用
- 灵活:为每一个分组独立地选择最合适的转发路由
- 迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。
- 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性
- 缺点
- 分组在各结点存储转发时需要排队,这就会造成一定的时延。
- 分组必须携带的首部(里面有必不可少的控制信息)也造成了一定的开销
- 总结
每个分组都有首部和尾部,包含了源地址和目的地址等控制信息,在同一个传输线路上同时传输多个分组互相不会影响,因此在同一条传输线路上允许同时传输多个分组,也就是说分组交换不需要占用传输线路。
在一个邮局通信系统中,邮局收到一份邮件之后,先存储下来,然后把相同目的地的邮件一起转发到下一个目的地,这个过程就是存储转发过程,分组交换也使用了存储转发过程。
报文交换
在 20 世纪 40 年代,电报通信也采用了基于存储转发原理的报文交换 (message switching)。
报文交换的时延较长,从几分钟到几小时不等。现在报文交换已经很少有人使用了。
三种交换的比较
核心与边缘
- 互联网的核心部分是由许多网络和把它们互连起来的路由器组成,而主机处在互联网的边缘部分。
- 互联网核心部分中的路由器之间一般都用高速链路相连接,而在网络边缘的主机接入到核心部分则通常以相对较低速率的链路相连接。
- 主机的用途是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。路由器的用途则是用来转发分组的,即进行分组交换的。
计算机网络的分类
按照网络的作用范围进行分类
- 广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里(跨越国家),是互联网的核心部分。
- 城域网 MAN (Metropolitan Area Network):作用距离约为 5 ~ 50 公里(几个街区甚至整个城市)。
- 局域网 LAN (Local Area Network) :局限在较小的范围(如 1 公里左右),校园网或企业网。
- 个人区域网 PAN (Personal Area Network) :范围很小,大约在 10 米左右,通过无线技术连接。
按照网络的使用者进行分类
公用网 (public network)
电信公司建造的大型网络。按 规定交纳费用的人都 可以 使用的 网络。因此也可称为公众网。
专用网 (private network)
某个单位 为特殊业务工作的需要而建造的网络 ,例 如军队、铁路、银行、电力等系统。
用来把用户接入到互联网的网络
接入网 AN (Access Network)
又称为本地接入网或居民接入网。
接入网是一类比较特殊的计算机网络 ,用于将用户接入互联网。 只是起到让用户能够与互联网连接的“桥梁”作用。
使用不同接入网技术,如电话线拨号、宽带
接入网本身既不属于互联网的核心部分,也不属于互联网的边缘部分。
接入网是从某个用户端系统到互联网中的第一个路由器(也称为边缘路由器)之间的一种网络。
从覆盖的范围看,很多接入网还是属于局域网。
计算机网络的性能
性能指标
速率
连接在计算机网络上的主机在数字信道上传送数据位数的速率,也称为数据率 (data rate) 或比特率 (bit)
速率的单位是 bit/s ,或 kbit /s 、 Mbit/s 、 Gbit /s 等。例如 $$4 \times 10^{10} bit/s$$ 的数据率就记为 40 Gbit /s 。
带宽
带宽 (bandwidth) 用来表示网络中某通道传送数据的能力 。 表示在单位时间内网络中的某信道所能通过的“ 最高数据率 ”。
更常用的带宽单位是
- 千比特每秒 ,即 kb/s (10^3^ b/s )
- 兆比特每秒 ,即 Mb/s (10 ^6^ b/s )
- 吉比特每秒 ,即 Gb/s (10^9^ b/s )
- 太比特每秒 ,即 Tb/s (10^12^ b/s )
吞吐量
吞吐量 (throughput) 表示在单位时间内通过某个网络(或信道、接口)的数据量,包括进和出
时延
时延 (delay 或 latency) 是指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间
有时也称为延迟或迟延
网络中的时延由以下几个不同的部分组成
发送时延
发送数据时,数据帧从结点进入到传输媒体所需要的时间。
也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
发送时延 = 数据帧长度 (bit) / 发送速率(bit/s)
传播时延
电磁波在信道中需要传播一定的距离而花费的时间。
传播时延 = 信道长度(米) / 信号在信道上的传播速率 (米/秒)
处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由 )所花费的时间
排队时延
分组在路由器输入、输出队列中排队等待处理所经历的时延。
排队时延的长短往往取决于网络中当时的通信量。
队列溢出时,相当于排队时延无限大。
时延带宽积
链路的时延带宽积又称为以比特为单位的链路长度。
时延带宽积 = 传播时延 × 带宽
往返时间 RTT
(Round Trip Time)
往返时间 表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
利用率
信道利用率
指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
网络利用率
全网络的信道利用率的加权平均值。
信道利用率并非越高越好。 当某信道的利用率增大时,该信道引起的时延也就迅速增加 。
非性能特征
(nonperformance characteristics)
费用 (cost)
质量 (quality of service) (QoS)
标准化
可靠性 (reliability)
可扩展性 (scalability)和可升级性 (upgradability)
易于管理和维护
计算机网络的体系结构
(协议分层)TCP/IP、OSI、五层
计算机网络体系结构的形成
开放系统互连基本参考模型 OSI/RM (Open Systems Interconnection Reference Model) Model),简称为 OSI 。
法律上的 (de jure) 国际标准 OSI 并没有得到市场的认可,非国际标准 TCP/IP 却获得了最广泛的应用。TCP/IP 常被称为 事实上的 (de facto) 国际标准
协议与划分层次
网络协议 (network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定。
网络协议的三个组成要素
- 语法: 数据与控制信息的结构或格式 。
- 语义: 需要发出何种控制信息,完成何种动作以及做出何种响应。
- 同步: 事件实现顺序的详细说明。
层次式协议结构
划分层次的概念举例:主机 1 向主机 2 通过网络发送文件。
分层的优劣
优点
- 各层之间是独立的。
- 灵活性好。
- 结构上可分割开。
- 易于实现和维护。
- 能促进标准化工作。
缺点
- 降低效率
- 有些功能会在不同的层次中重复出现,因而产生了额外开销 。
层数控制
层数太少,就会使每一层的协议太复杂。
层数太多,又会在描述和综合各层功能的系统工程任务时遇到较多的困难。
各层完成的主要功能
- 差错控制:使相应层次对等方的通信更加可靠。
- 流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
- 分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
- 复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
- 连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。
计算机网络的体系结构
计算机网络的体系结构 (architecture) 是计算机网络的各层及其协议的集合。
体系结构就是这个计算机网络及其部件 所应完成的功能的精确定义。
实现 (implementation) 是遵循这种体系结构的前提下用何种硬件或软件完成这些功能的问题。
体系结构是抽象的,而实现则是具体的,是真正在运行的计算机硬件和软件。
具有五层协议的体系结构
采取折中的办法,即综合 OSI 和 TCP/IP 的优点,采用一种只有五层协议的体系结构
应用层 (application layer)
通过应用进程间的交互来完成特定网络应用
域名系统 DNS ,万维网 HTTP 协议,电子邮件 SMTP 协议
运输层 (transport layer)
向两台主机中进程之间的通信提供通用的数据传输服务
传输控制协议 TCP 、用户数据报协议 UDP
网络层 (network layer)
为分组交换网上的不同主机提供通信服务;选择合适的路由
网际协议 IP 和路由选择协议
数据链路层 (data link layer)
两个相邻节点之间传送数据
物理层 (physical layer)
传输数据单位为比特,要考虑多大的电压代表 1 或 0
不包含物理媒介
实体、协议、服务和服务访问点
实体 (entity) 表示任何可发送或接收信息的硬件或软件进程。
协议是控制两个对等实体进行通信的规则的集合。
语法规则定义了信息的格式,语义规则定义了发送者或接收者所要完成的操作
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务
协议和服务的关系
协议的实现保证了能够向上一层提供服务 。
本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。
协议 是 “水平的 ”,即协议是控制对等实体之间通信的规则。
服务 是 “垂直的 ”,即服务是由下层向上层通过层间接口提供的。
上层使用下层提供的服务必须通过服务原语。
服务访问点
同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point) 。
服务访问点 SAP 是一个抽象的概念,它实际上就是一个逻辑接口 。
OSI 把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data)。
TCP/IP 的体系结构
它只有四层,相当于五层协议中数据链路层和物理层合并为网络接口层。
TCP/IP 体系结构不严格遵循 OSI 分层概念,应用层可能会直接使用 IP 层或者网络接口层
沙漏型协议族
IP over everything
物理层
物理层的基本概念
物理层考虑的是怎样才能在连接计算机的各种传输媒体上传输数据比特流,而不是指具体的传输媒体。
物理层的作用是要尽可能地屏蔽掉不同传输媒体和通信手段的差异 ,使数据链路层感觉不到这些差异。
用于物理层的协议也常称为物理层规程(procedure)
主要任务
确定与传输媒体接口的一些特性
机械特性:指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。
电气特性:指明在接口电缆的各条线上出现的电压的范围。
功能特性:指明某条线上出现的某一电平的电压表示何种意义。
过程特性:指明对于不同功能的各种可能事件的出现顺序。
数据通信的基础知识
数据通信系统的模型
组成
源系统
- 源点(信源):源点设备产生要传输的数据,例如计算机键盘输入汉字通过计算机产生输出的数字比特流。
- 发送器:数字比特流要经过发送器编码后才能在传输系统中传输。例如:调制器
传输系统
传输系统可以是传输线,也可以是复杂的网络系统。
目的系统
- 终点(信宿):终点设备将数字比特流转换成信息输出,例如把汉字显示在屏幕上。
- 接收器:接收器把来自传输线路上的模拟信号进行解调,还原出数字比特流。例如:解调器
术语
- 数据 (data):运送消息(话音、文字、图像等)的实体。
- 信号 (signal):数据的电气的或电磁的表现 。 数据 在信道中以电信号的形式传送,电信号分为:模拟信号和数字信号。
- 模拟信号 (analogous):代表消息的参数的取值是连续的
- 数字信号 (digital signal):代表消息的参数的取值是离散的。
- 码元 (code):在使用时间域(或简称为时域)的波形表示数字信号时,代表不同离散数值的基本波形。
- 使用二进制编码时,只有两种不同的码元(代表 0 和 1)
- 调制:把数字信号转换为模拟信号的过程 。
- 解调:把模拟信号转换为数字信号的过程。
模拟信号与数字信号
模拟数据、模拟信号
最早的电话系统
模拟数据、数字信号
模拟数据数字化后,可以使用先进的数字传输和交换设备,如现代的电话系统。
数字数据、模拟信号
有些传输媒体只适合传输模拟信号,如光纤和无线信道。
数字数据、数字信号
数字数据编码成数字信号的设备,比起数字到模拟设备更简单、更廉价。
信道
信道 ( channel ):一般用来表示向某一个方向传送信息的媒体。一条通信电路往往包含发送信道和接收信道。
信道类型
- 单向通信(单工通信):只能有一个方向的通信而没有反方向的交互。例:无线电广播
- 双向交替通信(半双工通信):通信的双方都可以发送信息,但不能双方同时发送,当然也就不能同时接收 。
- 双向同时通信(全双工通信):通信的双方可以同时发送和接收信息。
在计算机提供的二进制数字信号与电话网提供的模拟信号之间进行转换,这类技术统称为调制解调技术。
基带信号 (即基本频带信号):来自信源的信号,就是将数字信号 1 或 0 直接用两种不同的电压来表示,然后送到线路上去传输基带信号
- 计算机输出的信号通常为基带信号
- 基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进调行调制(modulation)
调制类型
- 基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码(coding)
- 带通调制:使用载波 (carrier) 进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道) 。
- 带通信号:经过载波调制后的信号。
数字信号编码(基带调制)
基带调制技术(从数字到数字信号,变换后的信号仍然是基带信号)
常用编码方式
- 不归零码:正电平代表 1,负电平代表 0 。
- 在一个码元的全部时间内,电压保持恒定
- 频率低
- 连续发送多个“ 1” 码或“ 0” 码时,码元之间没有间隙,不容易区分
NRZI 编码
(Non-Return-to-Zero Inverted Code)和 NRZ 的区别就是 NRZI 用信号的翻转代表一个逻辑,信号保持不变代表另外一个逻辑。
归零码:正脉冲代表 1,负脉冲代表 0,有跳变
- 在一个码元的全部时间内,非零电压的持续时间小于一个码元的时间
- 在一个码元的后半部分时间内,电压总是归于零的
- 好处:解决了不归零码在连续发送“ 1” 码或“ 0” 码不容易区分的问题
- 缺点:跳变次数过多,携带的数据量相对较少
- 曼彻斯特编码
- 位周期中心的向上跳变代表 0 ,位周期中心的向下跳变代表 1
- 也可反过来定义。
- 差分曼彻斯特编码
- 在每一位的中心处始终都有跳变。
- 利用每个码元的开始时有无跳变来表示“ 0” 或“ 1” 。
- 位开始边界有跳变代表 0 ,没有跳变代表 1
编码方式比较
从信号波形中可以看出,曼彻斯特编码和差分曼彻斯特编码产生的信号频率比不归零制高。
从自同步能力来看,不归零制不能从信号波形本身中提取信号时钟频率,这叫作没有自同步能力, 而曼彻斯特编码和差分曼彻斯特编码 具有自同步能力 。
数字调制技术
带通调制方法(数字信号到模拟信号)
二元制调制方法
选取一个适合于在线路上传输的正弦波作为载波,让载波的某些特性( 幅度、频率、相位随基带信号的变化而变化(即波形变换)。
最基本的二元制调制方法有以下几种:
1. 调幅 (AM)
载波的 振幅 随基带数字信号而变化。
- 实现起来简单 , 但抗干扰性能差
- 极端情况:0 不波动,1 波动
2. 调频 (FM)
载波的 频率 随基带数字信号而变化。
- 抗干扰性能好 , 但占用带宽较大
3. 调相 (PM)
载波的 初始相位 随基带数字信号而变化。
- 抗干扰性能最好,且相位的变化也可以同步发送器和接收器的时钟
- 绝对 PM 与相对 PM
- 用载波的相位绝对值或变化来表示数据。
- 绝对调相: 0 对应相位 “0”,1 对应相位 “180” 。
- 相对调相:发送的信号与前一个信号同相(相位不发生变化),则表示 “0”;发送的信号与前一个信号反相(相位发生变化),则表示 “1” 。(0 则一致,1 则反相)
- 注意:检测相位变化比检测相位值要容易。
多元制混合调制方法
上面几种调制方式,一个码元仅包含 2 个状态(两种振幅、频率、相位),即 1 个码元携带 1bit 信息
多元制混合调制方法可以获得更高的信息传输速率,让 1 个码元携带多位比特信息
正交振幅调制(QAM)
(Quadrature Amplitude Modulation)
例如:
- 可供选择的相位有 12 种,而对于每一种相位有 1 或 2 种振幅可供选择。总共有 16 种组合,即 16 个码元。
- 由于 4bit 编码共有 16 种不同的组合,因此这 16 个点中的每个点可对应于一种 4 bit 的编码。数据传输率可提高 4 倍
- 注意:不是码元越多越好。若每一个码元可表示的比特数越多,则在接收端进行解调时要正确识别每一种状态就越困难,出错率增加
脉冲编码调制(PCM)
(Pulse Code Modulation)
- 话音、图像等模拟信号在时间上和取值上都是连续的,对其进行数字信号编码 ,是将其转换成一系列在时间和取值上都是离散的 二进制数码脉冲。最常用的编码方法就是 PCM
- 现在的数字传输系统均采用脉码调制 PCM 体制 。
- PCM 包括三个主要步骤(将模拟信号转换为数字信号的过程):采样 -> 量化 -> 编码
采样
实现时间上的离散化
每隔一定时间间隔 , 取模拟信号的当前值作为样本,该样本代表了模拟信号在某一时刻的瞬时值
采样频率需远高于信号频率
采样的依据:奈奎斯特 (Nyquist) 采样定理
量化
是使采样值在取值上离散化
抽样信号虽然是时间轴上离散的信号,但仍然是模拟信号,其取值是连续值, 必须量化为离散值。
具体做法是:将原始信号的取值范围划分为若干个等级,将每个采样值“取整”到离它最近的一个等级上
量化后的抽样信号与量化前的抽样信号相比较,当然有所失真,表现为噪声
离散值的个数(等级划分)决定了量化的精度。
我国电话信号的 PCM 体制中,量化等级为 256,即 8 位。
编码
将量化后的采样值用一定位数的二进制数码来表示
编码的位数和量化的级数有关,若量化级数为 N ,则每个采样值就可以编码成 Log 2 N 为的二进制码。
我国的 PCM 体制的编码位数为 8 ,即每个脉冲信号编码为 8bit 信息,由于每秒 8000 个脉冲,话音的标准编码速率为 64Kb/s 。
通信的极限容量
任何实际的信道都不是理想的,在传输信号时会产生各种失真以及带来多种干扰。
码元传输速率越高,或信号传输距离越远,或噪声干扰越大,或传输媒体质量越差在信道的输出端的波形的失真就越严重。
限制码元在信道上的传输速率的因素有以下两个
- 信道能够通过的频率范围
- 信噪比
信道能够通过的频率范围
具体的信道所能通过的频率范围(信道的带宽 Hz )总是有限的。信号中的许多高频分量往往不能通过信道
- 理想低通信道 :信号的所有低频分量,只要频率不超过某个上限,都能够不失真地通过信道。
- 理想带通信道 :信号的频率在某个范围之间的频率分量能够不失真地通过信道,其它分量不能通过。
奈氏(Nyquist)准则
奈奎斯特给出了在假定的理想条件下,为了避免码间串扰,码元的传输速率的上限值。
理想低通信道的最高码元传输速率 = 2W Baud
- W 是理想低通信道的带宽,单位为赫 (Hz)
- 公式含义:每赫带宽的理想低通信道的最高码元传输速率是每秒 2W 个码元
- Baud 是波特,是码元传输速率的单位,1 波特为每秒传送 1 个码元 (即,码元 / 秒)
理想带通特性信道的最高码元传输速率 = W Baud(基本不考)
结论
在任何信道中,码元传输的速率是有上限的, 否则就会出现码间串扰的问题,使接收端对码元的判决(即识别)成为不可能
如果信道的频带越宽,也就是能够通过的信号高频分量越多,那么就可以用更高的速率传送码元而不出现码间串扰。
比特率与波特率(重要)
比特率 S:数据传输速率,单位 “比特 / 秒”
波特率 B:码元传输速率,单位 “码元 / 秒”
若码元的状态数为 2 时,比特率 = 波特率(即每秒钟传输的二进制位数等于每秒钟传输码元数)
若码元的状态数为 4 时,四种状态分别表示为 “00” ”01” “10” ”11” 。则一个码元可以携带两位二进制数,此时比特率 = 2 * 波特率。
若 1 个码元携带 n bit 的信息量, M Baud 的码元传输速率所对应的信息传输速率为 M × n b/s
公式 $$ S=B*log_2M $$
信噪比
噪声存在于所有的电子设备和通信信道中。
噪声是随机产生的,它的瞬时值有时会很大。因此噪声会使接收端对码元的判决产生错误 。
但噪声的影响是相对的 。 如果信号相对较强,那么噪声的影响就相对较小。
信噪比公式
信噪比就是信号的平均功率和噪声的平均功率之比 。常记为 S / N ,并用 分贝 (dB) 作为度量单位。即: $$ 信噪比 \ (dB) = 10 \log_{10}(S/N) \ (dB) $$ 例如,当 S / N = 10 时,信噪比为 10dB ,而当 S / N = 1000 时,信噪比为 30dB 。
香农公式
信道的极限信息传输速率 C 可表达为 $$ C=W\log_2(1+S/N) \ (bits/s) $$ 其中
W 为信道的带宽 ,以 Hz 为单位
S 为信道内所传信号的平均功率;
N 为信道内部的高斯噪声功率。
S/N 不带单位!
结论
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。
若信道带宽 W 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C 也就没有上限。
实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。
对于频带宽度已确定的信道,如果信噪比不能再提高了,并且码元传输速率也达到了上限值,那么还有办法提高信息的传输速率。这就是: 用编码的方法让每一个码元携带更多比特的信息量。
物理层下面的传输媒体
传输媒体也称为传输介质或传输媒介, 它就是数据传输系统中在发送器和接收器之间的物理通路 。
传输媒体可分为两大类
- 导引型传输媒体:电磁波被导引沿着固体媒体(铜线或光纤)传播 。
- 非导引型传输媒体:自由空间中传播,电磁波的传输常称为无线传输。
频谱
导引型传输媒体
双绞线
古老但最常用的传输媒体 。
电话系统使用的就是双绞线。
绞合可减少对相邻双绞线的电磁干扰。
模拟传输和数字传输都可以使用双绞线,其通信距离一般为几到十几公里。
带宽依赖于线的粗细和传输距离
分类
- 屏蔽双绞线 STP (Shielded Twisted Pair):带金属屏蔽层
- 无屏蔽双绞线 UTP (Unshielded Twisted Pair)
标准 EIA/TIA 568 A 。
此标准规定了 5 个种类的 UTP 标准 (从 1 类线到 5 类线)。
对传送数据来说,现在最常用的 UTP 是 5 类线(Category 5 或 CAT5)
同轴电缆
同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据 。
同轴电缆的带宽取决于电缆的质量
分类
基带同轴电缆
局域网发展初期常用
宽带同轴电缆
有线电视常用
光缆
光纤是光纤通信的传输媒体。
光纤 由非常透明的石英玻璃拉成细丝,主要由纤芯和薄层构成双层通信圆柱体,纤芯很细直径只有 8 至 100um ,纤芯和包层具有不同的折射系数。
由于可见光的频率非常高,约为 10 8 MHz 的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽
工作原理
光线在纤芯中传输的方式是不断地全反射
只要从纤芯中射到纤芯表面的光线的入射角大于某个临界角度,就可产生全反射 。
分类
多模光纤
可以存在多条不同角度入射的光线在一条光纤中传输。这种光纤就称为多模光纤
传输中光脉冲会逐渐展宽,造成失真,适合短距离传输
单模光纤
若光纤的直径减小到只有一个光的波长,则光纤就像一根波导那样,它可使光线一直向前传播,而不会产生多次反射。这样的光纤称为单模光纤
使用昂贵的半导体激光源,光脉冲的衰耗小,适合长距离传输
优点
通信容量非常大 。
传输损耗小,中继距离长。
抗雷电和电磁干扰性能好。
无串音干扰,保密性好。
体积小,重量轻。
光纤通信中使用的光波的波段
常用的三个波段的中心分别位于 850 nm (多模)1300 nm(多模和单模)和 1550 nm(单模)。
所有这三个波段都具有 25000~30000 GHz 的带宽, 可见光纤的通信容量非常大 。
非引导型传输媒体
将自由空间称为“非导引型传输媒体”。
无线传输所使用的频段很广。
分类
- 短波通信 (即高频通信) 主要是靠电离层的反射,但短波信道的通信质量较差,传输速率低。
- 微波通信 由于地球表面的弯曲,信号的直线传输有限,需要建微波中继站。
- 地面微波接力通信
- 卫星通信
无线局域网使用的 ISM 频段
要使用某一段无线电频谱进行通信,通常必须得到本国政府有关无线电频谱管理机构的许可证。但是,也有一些无线电频段是可自由使用的,正好满足计算机 无线局域网 的需求。例如: ISM(工业、科学、医学)频段。
信道复用技术
复用 (multiplexing) 是将多路信号组合在一条物理信道上进行传输,在接收端再将各路信号分离开来,提高通信线路的利用率。
频分复用 FDM
(Frequency Division Multiplexing)
将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
频分复用的所有用户在同样的时间占用不同的带宽资源 (请注意,这里的“带宽”是频率带宽而不是数据的发送速率)
例:ADSL 技术
(非对称数字用户线路)
利用现有电话线 实际带宽 1.1 MHz) 实现宽带网络连接
非对称(Asymmetric)的含义:下行速率大于上行
时分复用 TDM
(Time Division Multiplexing)
时分复用的所有用户是在不同的时间占用同样的频带宽度。
用户轮流使用
同步 TDM
(普通 TDM)
是将时间划分为一段段等长的时分复用帧(TDM 帧),每个用户占用的时隙周期性出现。
即:信号源与时隙序号固定,即同步 。
- 时间片的分配事先约定,且固定不变。
- 优点:控制简单,接收设备根据预约的时间片分配方案,将收到的数据分发到不同的输出线路上。
- 缺点:当某个信号源没有数据时,仍然占用时间片,不能充分利用信道。
造成线路资源的浪费
异步 TDM
(统计时分复用 STDM)
时间片按需分配,需要发送数据的信号源提出申请,才能获得时间片。
即:公共信道的时隙实行 “按需分配”,对那些需要传送信息或正在工作的终端(信号源)才分配时隙,可以使得所有时隙都能够饱满地得到使用,可以使得服务的终端数大于时隙的个数,提高信道的利用率
特点:可以充分利用信道,但控制比较复杂 。
- 例
- 电话系统中为了有效地利用传输线路,可将多个话路的 PCM 信号用时分复用 TDM (Time Division Multiplexing) 的方法装成时分复用帧,然后发送到线路上。
- 北美体制: 用于北美和日本的电话系统 T1 信号(1.544 Mbps)
- 欧洲体制: 我国电信部门使用的 E1 传输系统(2.048 Mbps)
波分复用
(Wavelength Division Multiplexing)
同 FDM 类似,主要用于光纤通信中; 波分复用就是光的频分复用 。
不同的信号源使用不同频率(波长)的光波来传输数据,各路光经过一个棱镜(或衍射光栅),合成一个光束在光纤上传输;在接收端再将各路光波分开。
密集波分复用 DWDM(Dense WDM ):技术的发展一根光纤上复用的光载波信息路数越来越多,例如 80 或更多路数。
码分复用
(Code Division Multiplexing)
常用的名词是码分多址 CDMA (Code Division Multiple Access)
每个用户在同样的时间使用同样的频带 进行通信。
各用户使用经过特殊挑选的不同码型 ,因此彼此不会造成干扰。
这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。
特别在无线局域网中,采用 CDMA 可提高话音质量、数据传输可靠性、增大通信系统容量(是 GSM 的 4、5倍),降低手机的平均发射功率。
码片序列
(chip sequence)
每一个比特时间划分为 m 个短的间隔,称为码片(chip)。设 m = 8
每个站被指派一个唯一 的 m bit 码片序列 。
- 如发送比特 1,则发送自己的 m bit 码片序列。
- 如发送比特 0,则发送该码片序列的二进制反码 。
例如:
- S 站的 8 bit 码片序列是 00011011
- 发送比特 1 时,就发送序列 00011011
- 发送比特 0 时,就发送序列 11100100
按惯例, 0 写成 - 1,1 写成 +1, S 站的码片序列:( - 1 - 1- 1 + 1 + 1 - 1 + 1 + 1 )
码片序列实现了扩频
假定 S 站要发送信息的数据率为 b bit/s 。由于每一个比特要转换成 m 个比特的码片,因此 S 站实际上发送的数据率提高到 mb bit/s ,同时 S 站所占用的频带宽度也提高到原来数值的 m 倍。
这种通信方式是扩频 (spread) 通信
CDMA 的一个重要特性
每个站分配的码片序列不仅必须各不相同, 并且还必须互相正交 (orthogonal) 。
在实用的系统中是使用 伪随机码序列。
令向量 S 表示站 S 的码片向量,令 T 表示其他任何站的码片向量。
两个不同站的码片序列正交,就是向量 S 和 T 的规格化内积 (inner product) 等于 0 $$ S*T\equiv\frac{1}{m}\sum_{i=1}^{m}S_iT_i=0 $$
码片序列的正交关系举例
向量 S 为 ( - 1 - 1 - 1 + 1 + 1 - 1 + 1 + 1 ),向量 T 为 ( - 1 - 1 + 1 - 1 + 1 + 1 + 1 - 1 ) 。
把向量 S 和 T 的各分量值代入公式就可看出这两个码片序列是正交的。
向量 S 和 T 的码片反码的向量内积也是 0
正交关系的另一个重要特性
任何一个码片向量和该码片向量自己的规格化内积都是 1
一个码片向量和该码片反码的向量的规格化内积值是 -1
CDMA 工作原理
每个站各自发送扩频信号,在接收端形成叠加的信号。
当接收站打算接收 S 站的信号时,就用 S 站的码片序列与收到的叠加信号求规格化内积:
若 S 站有信号发送 ,则内积结果为 1 ( 发送数据 1 ) 或 - 1 ( 发送数据 0 )
若 S 站没有信号发送 ,则内积结果为 0
数据链路层
在此层要解决的问题:封装成帧、透明传输、差错控制(检错、纠错)
- 点对点信道
- 这种信道使用一对一的点对点通信方式( PPP 协议 )
- 广播信道。
- 这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。 CSMA/CD 协议
为了分析链路层协议,采用简化的链路层模型
- 数据链路层以上的各层用一个主机代替;
- 物理层和通信线路等效成一条简单数据链路;
使用点对点信道的数据链路层
数据链路和帧
链路 (link) 是一条无源的结点到相邻结点的物理线路(有线或无线),中间没有任何其他的交换结点。
- 一条链路只是一条通路的一个组成部分。
数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。
现在最常用的方法是使用 网络适配器(即网卡) 来实现这些协议的硬件和软件。
一般的适配器都包括了数据链路层和物理层这两层的功能。
数据链路层的基本概念
也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路。
物理链路 就是上面所说的链路 。
逻辑链路 就是上面的数据链路,是物理链路加上必要的通信协议。
早期的数据通信协议曾叫做通信规程 (procedure) 。因此在数据链路层,规程和协议是同义语。
数据链路层的协议数据单元 - 帧
常常在两个对等的数据链路层之间画出一个数字管道,而在这条数字管道上传输的数据单位是帧
数据链路层不必考虑物理层如何实现比特传输的细节。 甚至还可以更简单地设想好像是沿着两个数据链路层之间的水平方向把帧直接发送到对方
三个基本问题
封装成帧
(framing)
定义
在一段数据的前后分别添加首部和尾部然后就构成了一个帧。使接收方能确定帧的界限。换句话说,首部和尾部的一个重要作用就是进行帧定界
字节计数法
思想
在帧头设置一个长度域,放置该帧的字节数,当收方收到帧后,通过帧的长度,确定帧的开始。
问题
当帧的长度域出错,帧同步完全丢失;
该方法很少单独使用。
字符填充法
当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的 ASCII 码 不可打印的控制字符 作为 帧定界符。
控制字符 SOH (Start Of Header) 放在一帧的最前面表示帧的首部开始 。 另一个控制字符 EOT (End Of Transmission) 表示帧的结束 。
比特填充法
思想
使用一个特殊的比特模式 01111110 (6个1)作为帧的起始和结束标志。
发送方边发送边检查数据,每连续发送 5 个“ 1” 后在后面自动插入一个“ 0” 。这样数据中只会连续出现 5个“ 1”,而不会出现定界符。
接收方在收到 5 个连续的 “1” 后将后面的 “0” 删掉而恢复出原始数据。
好处
数据传输的基本单位是比特而不是字符,可用来传输任意长度的二进制比特串,通用性强。
违法编码法
前提
物理介质上使用的信号编码有冗余码字时,使用这些冗余的码字来作为帧的定界。
举例
如曼彻斯特编码或差分曼彻斯特编码中,有效电平是 “低-高” 或 “高-低”,而 “低-低” 和 “高-高” 电平没有定义,这种违法编码可以作为帧的边界。
透明传输
若所传的数据的比特片段与某一个控制信息相同,要有可靠机制,保证收方能正确识别
如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”
- 解决方法
- 发送端的数据链路层在数据中出现控制字符 “SOH” 或 “EOT” 的前面 插入一个转义字符 “ESC” (其十六进制编码是 1B) 。
- 接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。
- 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC 。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
- 对应字节填充法
差错控制
纠错:通过编码技术,接收方自动将差错改正过来
检错:检测出帧有错误,要么忽略或重传
在传输过程中可能会产生比特差错: 1 可能会变成 0 而 0 也可能变成 1 。
在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)
- 例如误码率 10^-10^ ,表示 10^10^ 个比特就会出现 1 个比特的差错
误码率与信噪比有很大的关系。
为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错控制措施。
- 考虑怎样发现和纠正信号传输中的差错。
方法
- 如何发现差错?
- 检错码(奇偶校验码、 CRC):能检测出错误,但不能纠正错误
- 纠错码(海明码):能知道错误,且知道错误的位置
- 发现差错如何处理?
- 前向纠错:由接收方来检查并纠正错误
- 自动重发请求:不能纠正,接收方反馈。若有错误则重发,否则给肯定应答
- 如何发现差错?
前向纠错
(FEC Forward Error Correct)
即发送方发送能使接收方检错并纠错的冗余位,纠错任务由接收方完成;常采用海明码
主要应用于没有反向信道或反向传输时间很长的场合
缺点:为纠错附加的冗余码较多,传输效率低;
优点:实时性好。
自动重发请求
(ARQ Automatic Repeat reQuest)
即发送方发送能使接收方检错的冗余位,若无差错,则接收方回送一个肯定应答 (ACK);若有差错,则接收方回送一个否定应答 (NAK),要求发送方重发。
- 缺点:信息传递连贯性差
- 优点:接收端设备简单,只要请求重发,无需纠正错误。
检错码
- 构造
- 检错码 (码字、传输帧) = 信息位+冗余校验位
- 码字长 n = K (信息位位数) + r (校验位位数)
- 编码效率 R = 有效数据位 K / 码字长 n
- 信息字段和校验字段之间的对应关系
- 校验字段越长,编码的检错能力越强,编码解码越复杂;附加的冗余信息在整个编码中所占的比例越大,传输的有效成分越低,传输的效率下降。
- 检错码一旦形成,整个检错码将作为一个整体被发往线路,通常的发送顺序是信息字段在前,校验字段在后。
奇偶校验码
根据数据字节中 1 的个数来检验数据传输中是否发生了错误。
奇校验:使码字中 1 的总个数为奇数 。
偶校验:使码字中 1 的总个数为偶数 。
奇 / 偶校验码:最常用的一种检验码,包括:
- 水平奇 / 偶校验码
- 垂直奇 / 偶校验码
- 水平垂直奇 / 偶校验码
水平奇 / 偶校验码
其信息字段以字符为单位,校验字段仅含一个比特称为校验比特或校验位。
例如:使用七比特的 ASCII 码来构造成八比特的检错码时若采用奇 / 偶校验,校验位的取值应使整个码字包括校验位, 1 的比特个数为奇数或偶数。 信息字段 奇校验码 偶校验码 1000001 10000011 10000010
- 编码效率: Q / (Q+1) ( 信息字段占 Q 个比特 )
- 应用: 通常在异步传输方式中采用偶校验, 同步传输方式中采取奇校验。
垂直奇 / 偶校验码
被传输的信息进行分组,并排列为若干行和若干列。组中每行的相同列进行奇 / 偶校验,最终产生由校验位形成的校验字符 (校验行),并附加在信息分组之后传输
举例: 4 个字符( 4 行)组成一信息组
- 编码效率: PQ / P(Q+1) (假设信息分组占 Q 行 P 列)
水平垂直奇 / 偶校验
也叫方阵校验
在水平校验的基础上实施垂直校验。
例: 4 行 7 列信息组的水平垂直偶校验码为:
循环冗余码
(Cyclic Redundancy Check CRC) 计算机和数据通信中使用最广泛的检错码 ,漏检率低,可用简单的电路实现。
操作
给定一个 k 比特的帧或报文,发送方生成 n 比特的序列(也称为帧检验序列 FCS Frame Check Sequence ),形成 ( k+n ) 的码字,该码字能被某个事先确定的数整除。接收方用相同的数去除收到的帧,如果无余数,则认为数据帧无差错
步骤
- 在发送端,先把数据划分为组
- 假定每组 k 个比特
- 假设待传送的一组数据 M = 101001 (现在 k = 6 )。我们在 M 的后面再添加供差错检测用的 n 位 冗余码 一起发送。
计算方法
- 用二进制的 模 2 运算 (不相同则为1,相同则为0)进行 2^n^ 乘 M 的运算,这相当于在 M 后面添加 n 个 0
- 得到的 ( k + n ) bit 的数除以事先选定好的长度为 ( n + 1) bit 的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位 。
- 将余数 R 作为冗余码 (帧检验序列) 拼接在数据 M 后面发送出去 。
说明:帧检验序列
在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence) 。 循环冗余检验 CRC 和帧检验序列 FCS 并不等同。
- CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。
- FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。
接收端对收到的每一帧进行 CRC 检验
把收到的每一个帧都除以相同的除数 P 模 2 运算 然后 检查得到的余数 R
- 若得出的余数 R = 0 则判定这个帧没有差错就接受 (accept)
- 若余数 R 不等于 0 则判定这个帧有差错就丢弃
但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错 。
漏检 CRC 不能保证检测出所有的传输错误,但是只要选择位数足够的 P 可以使得差错的概率足够小
只要经过严格的挑选,并使用位数足够多的除数 P 那么出现检测不到的差错的概率就很小很小
CRC 也称多项式编码
任意一个由二进制位串组成的代码都可以和一个 系数仅为 ‘0’ 和 ‘1’ 取值的多项式 一一对应。
多项式表示:即将 k 比特的数据用 k 项多项式表示,它的各项为 X^k-1^, …, X^0^,它的系数为数据中对应位的 0 或 1 。
生成多项式 P
除数 P 可表示成生成多项式 P(X)
例如: P = 110101 ,即 P(X) = X^5^ + X^4^ + X^2^ + 1 (P 为 5 阶多项式);
生成多项式的最高位和最低位都必须为 1
发送方用它生成冗余位,接收方用它判断是否有错;
若 P 为 r 阶( r +1 bit ),将产生 r 位冗余位;
发送端帧检验序列 FCS 的生成和接收端 CRC 检验都是用硬件完成的,处理速度很快,不会延误数据的传输
P 的国际标准
注意
仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受,不能检验出帧有没有丢失、重复、失序
无差错接受是指:凡是接受的帧(即不包括丢弃的帧)我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错,也就是说,凡是接收端数据链路层接受的帧都无差错,有差错的帧就丢弃而不接受 。
区分无比特差错与无传输差错(在运输层实现)
要做到可靠传输(即发送什么就收到什么),就必须再加上确认和重传机制 。
在数据链路层使用 CRC 检验能够实现无比特差错的传输但这还不是可靠传输 。
本章介绍的数据链路层协议都不是可靠传输的协议
对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制可以提高通信效率
海明码(纠错码)
(重要)
单比特纠错海明码
- 基本思想
- 在 k 比特信息上附加 r 比特冗余信息(校验比特),构成 n = k + r 比特的码字,其中每个校验比特和某几个特定的信息比特构成偶校验关系。
- 接收端对这 r 个偶校验关系进行校验,即将每个校验比特和与它关联的信息比特进行相加(异或),相加的结果为 校正因子 。
- 如果没有错,则 r 个校正因子都为 0
- 若校正因子不全为 0 ,根据校正因子的取值,确定错误发 生的位置。
码距
(海明距离 Hamming Distance)
一个编码系统中任意两个合法编码(码字)之间不同的二进位( bit )数叫这两个码字的码距 。
例:10101,00110 ,码距为 3
而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距 。
两个结论
如果要检测出 d 个比特的错误,则编码集的海明距离至少为 d + 1
如果要纠正 d 个比特的错误,则编码集的海明距离至少应为 2d + 1
运算
点对点协议 PPP(了解)
面向比特的链路层协议 HDLC
高级数据链路控制 (High Level Data Link Control)是由国际标准化组织 ISO 制定的 面向比特 的链路层协议。
采用主从结构,链路上一个主站控制多个从站,主站向从站发送命令,从站向主站返回响应。
- 点 - 点
- 点 - 多点
目前很少使用
帧格式
字段
PPP 协议
点对点协议 (Point to Point Protocol) 是数据链路层的功能
主要用在拨号上网
满足的要求
简单
- 这是首要的要求。
封装成帧
- 必须规定特殊的字符作为帧定界符 。
透明性
- 保证数据传输的透明性 。
支持多种网络层协议
- 能够在同一条物理链路上同时支持多种网络层协议。
支持多种类型链路
- 能够在多种类型的链路上运行。
差错检测
- 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧 。
检测连接状态
- 能够及时自动检测出链路是否处于正常工作状态。
最大传送单元
- 必须对每一种类型的点对点链路设置最大传送单元 MTU 的 标准默认值,促进各种实现之间的互操作性。
网络层地址协商
- 必须提供一种机制使通信的两个网络层实体能够通过协商知 道或能够配置彼此的网络层地址。
数据压缩协商
- 必须提供一种方法来协商使用数据压缩算法。
不需要的功能
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
透明传输问题(要看)
使用广播信道的数据链路层
局域网的数据链路层
- 特点
- 网络为一个单位所拥有;地理范围和站点数目均有限
- 具有较高的数据率、较低的时延和较小的误码率
- 优点
- 广播功能
- 功能,从一个站点可很方便地访问全网。局域网上的主 机可共享连接在局域网上的各种硬件和软件资源。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变
- 提高了系统的可靠性、可用性和生存性
- 广播功能
- 拓扑结构
局域网信道分配策略
广播网中所有站点共享同一个信道,任一站点发送的信息能被所有其他站点接收到。
问题
若有两个或两个以上的站点同时发送数据,则信号在信道中发生碰撞,数据发送失败,为冲突。
广播网中,如何将单一的信道分配各各个不同的用户,是个重要的问题。
用户使用的信道称为媒体(介质),决定由谁来使用信道的协议为媒体(介质)访问控制协议
媒体(介质)共享技术
静态划分信道
频分复用
时分复用
波分复用
码分复用
静态分配的特点
站点数目少且固定,且每个站点有大量数据发送,控制协议简单且传输的效率高。
对于大部分计算机网络,站点数目多且不固定,数据传输有突发性,信道的利用率低。
代价较高,不适合于局域网使用
动态分配
动态媒体接入控制(多点接入)
信道不是在用户通信时固定分配给用户。
例如:异步时分多路复用 STDM ,各站点仅当有数据发送时,才占用信道发送数据。
动态接入控制类型
随机接入
又称争用,用户发送前不需要取得发送权,有数据就发送,发生**冲突(碰撞)**后采取措施解决冲突
控制接入(少用 )
用户首先获得发送权,再发送数据,不会产生冲突
令牌环局域网的多点线路探询(polling)
争用协议
争用协议的特性
随机访问: 意味着对任何站都无法预计其发送的时刻;
竞争发送: 是指所有发送的站自由竞争信道的使用权。
ALOHA 系统和它的后继者 CSMA/CD 都是争用协议的代表。
ALOHA
- 思想(想发就发,冲突重发)
- 任何用户有数据发送就可以发送(会带来冲突)
- 如果发生冲突,接收方会检测出差错,然后不予确认,发送方一定时间内收不到确认就判断发生冲突;
- 发现数据传输失败后,各自等待一段随机时间 ,再重新发送。
- 竞争系统中,一方面不断有新的数据帧发送,另一方面冲突帧需要重发,系统的吞吐量是一个重要的指标。
- 吞吐量 :单位时间内系统能够成功发送的新的数据帧的平均数量。
- 结论:
- ALOHA 系统最大的信道利用率为 18.4%
- ALOHA 系统的信道利用率是非常低的。原因主要是各个站自由发送数据,碰撞概率增大。
时隙 ALOHA 协议
( Slotted ALOHA )控制想发就发的随意性
把时间分为若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道若发生冲突,则必须等到下一个时间片开始时刻再发送。
时隙 ALOHA 系统的最大信道利用率为 36.8%
CSMA/CD 协议(重要)
以太网采取了两种重要的措施
为了通信的简便,以太网采取了两种重要的措施:
采用较为灵活的无连接的工作方式
- 不必先建立连接就可以直接发送数据。
- 对发送的数据帧不进行编号,也不要求对方发回确认。
- 这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。
- 以太网提供的服务是不可靠的交付,即尽最大努力的交付。
- 当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。 差错的纠正由高层来决定。
- 如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。
以太网发送的数据都使用曼彻斯特编码
- 曼彻斯特编码缺点是:它所占的频带宽度比原始的基带信号增加了一倍
协议内容
CSMA/CD 含义: 载波监听,多点接入 / 碰撞检测 (Carrier Sense Multiple Access with Collision Detection)
- 多点接入指总线型网络,表示许多计算机以多点接入的方式连接在一根总线上。(计算机之间相互竞争)
- 载波监听是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。(先听后说,有礼貌)
- 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。
- 碰撞检测就是计算机边发送数据边检测信道上的信号电压大小。
- 当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。
- 当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
- 所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”
检测到碰撞后
在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。
每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送
每个站点都是在监听到信道空闲时才发送数据的,为什么还会发生碰撞?根本原因是因为电磁波在媒体上的传播速度总是有限的。
为什么要进行碰撞检测?
由于电磁波在总线上的传播速率是有限的, 当某个站监听到总线是空闲时,也可能总线并非真正是空闲的
A 向 B 发出的信息,要经过一定的时间后才能传送到 B
B 若在 A 发送的信息到达 B 之前发送自己的帧(因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。
碰撞的结果是两个帧都变得无用。
所以需要在发送期间进行碰撞检测,以检测冲突。
CSMA/CD 的重要特性
使用 CSMA/CD 协议的以太网不能进行全双工通信,只能进行双向交替通信(半双工通信)。
每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。
这种 发送的不确定性 使整个以太网的平均通信量远小于以太网的最高数据率。
两个重要问题
最迟多久才能知道自己发送的数据没和别人发生碰撞(争用期)
检测到碰撞后,等待多长时间再重试(退避算法)
争用期
最先发送数据帧的站,在发送数据帧后至多经过时间 2$$\tau$$(两倍端到端单程传播时延)就可知道发送的数据帧是否遭受了碰撞。
以太网的端到端往返时延 2$$\tau$$ 称为争用期,或碰撞窗口。
经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
二进制指数类型退避算法
(truncated binary exponential)
发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。
基本退避时间取为争用期 2$$\tau$$
从整数集合 [0, 1, 2, 3, 4, … , (2^k^ - 1)] 中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。
参数 k 按公式计算:$$k = Min[重传次数, 10]$$
当 $$k\leq 10$$ 时,参数 k 等于重传次数。
当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
最短帧长
A站发了一个很短的帧,不幸发生了碰撞,但是帧在发送完毕后才检测到发生碰撞,没法停止发送,因为发完了。。。
帧的发送时延至少持续一个争用期的时间(即 2 倍的传播时延)
以太网的最短帧长
$$10 Mbit/s$$ 的以太网取 $$51.2\mu s$$ 为争用期的长度,它在争用期内可以发送 512bit,即 64 字节(最短有效帧长)
这意味着
- 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突 。
- 如果发生冲突,就一定是在发送的前 64 字节之内。
- 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于 64 字节。
以太网规定了最短有效帧长为 64 字节,凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧
强化碰撞
当发送数据的站一旦发现发生了碰撞时
- 立即停止发送数据;
- 再继续发送若干比特的人为干扰信号 (jamming signal),以便让所有用户都知道现在已经发生了碰撞。
要点
- 准备发送,但没有完全发。在发送之前,必须先检测信道。
- 检测信道 。 若检测到信道忙,则应不停地检测,一直等待信道转为空闲。 若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔 9.6 μs),就发送这个帧。
- 检查碰撞。 在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里有两种可能性
- 发送成功: 在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 1
- 发送失败: 在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间 后,返回到步骤 2,继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错。
先听后发,边听边发,冲突停止,延迟重发
以太网
(Ethernet)
- 两个标准
- DIX Ethernet V2 是 DEC、Intel、Xerox 公司联合提出的世界上第一个局域网产品(以太网)的规约——10M/s 的以太网规约。
- IEEE 802.3 是 第一个 IEEE 802 委员会制定的局域网标准
- 两者差别很小,因此可以将 802.3 局域网简称为“以太网”
- 数据链路层的两个子层
- 逻辑链路控制 LLC (Logical Link Control) 子层
- 媒体接入控制 MAC (Medium Access Control) 子层
传统以太网
传统以太网 10Mbits/s 速率 最初是使用粗同轴电缆,后来演进到使用比较便宜的细同轴电缆 ,最后发展为使用更便宜和更灵活的双绞线 。
采用双绞线的以太网采用星形拓扑,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)
集线器本身不解决冲突问题
星形以太网 10BASE-T
1990 年 IEEE 制定出星形以太网 10BASE-T 的标准 802.3i 。
- 特点
- 使用无屏蔽双绞线,采用星形拓扑。
- 每个站需要用两对双绞线,分别用于发送和接收。
- 双绞线的两端使用 RJ 45 插头 。
- 集线器使用了大规模集成电路芯片,因此 集线器的可靠性提高 。
- 10BASE T 的通信距离稍短,每个站到集线器的距离不超过 100 m
10BASE T 双绞线以太网 的出现,是局域网发展史上的一个非常重要的里程碑,它为以太网在局域网中的统治地位奠定了牢固的基础。
信道利用率
多个站在以太网上同时工作就可能会发生碰撞。
设帧长为 L (bits),数据发送速率为 C (bit/ s),则帧的发送时间为 T~0~ = L / C (s) 。
以太网信道被占用的情况
参数 α 与利用率
要提高以太网的信道利用率,就必须减小 $$\tau$$ 与 T0 之比。
在以太网中定义了参数 α,它是以太网单程端到端时延 $$\tau$$ 与帧的发送时间 T0 之比: $$ a=\frac{\tau}{T_0} $$
- 对以太网参数 α 的要求是
- α 要尽可能小
- 当数据率一定时, 以太网的连线的长度要受到限制,否则 $$\tau$$ 的数值会太大
- 以太网的帧长不能太短,否则 T~0~ 的值会太小,使 α 值太大
信道利用率的最大值S~max~
在理想化的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是CSMA/CD,而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。
发送一帧占用线路的时间是 $$T_0+\tau$$,而帧本身的发送时间是 T~0~。于是我们可计算出理想情况下的极限信道利用率 S~max~ 为: $$ S_{max}=\frac{T_0}{T_0+\tau}=\frac{1}{1+a} $$
以太网的层次结构
数据链路层的两个子层
- 逻辑链路控制 LLC (Logical Link Control) 子层
- 屏蔽对各种不同物理网络的访问方法的差异,向上提供数据传输服务的统一的逻辑接口
- 媒体接入控制 MAC (Media Access Control) 子层
- 控制对传输介质的访问,并在物理层的基础上实现无差错通信。该子层随不同的物理网络差异较大
TCP/IP 一般不考虑 LLC 子层
以太网的 MAC 层
计算机要连接到局域网需要依靠网络接口板。
网络接口板又称为适配器 (adapter) 或网络接口卡 NIC (Network Interface Card) Card),或网卡
适配器的重要功能:
- 进行串行 / 并行转换
- 对数据进行缓存
- 在计算机的操作系统安装设备驱动程序
- 实现以太网协议
MAC 层的硬件地址
硬件地址又称为物理地址,或 MAC 地址
标准所说的 “地址” 严格地讲应当是每一个站的 “名字” 或标识符,采用 6 字节 ( 48 位 ) ,是固化在网卡 ROM 中的
MAC 帧格式
常用的以太网 MAC 帧格式有两种标准
- DIX Ethernet V2 标准
- IEEE 的 802.3 标准
最常用的 MAC 帧是 以太网 V2 的格式
以太网 V2 的 MAC 帧
由五个字段组成。
前两个字段分别为 6 字节长的目的地址和源地址字段。
第三个字段是 2 字节的类型字段,用来标志上一层使用的是什么协议
第四个字段是数据字段,其长度在 46 到 1500 字节之间
最后一个字段是 4 字节的帧检验序列 FCS (使用 CRC 检验)
总帧长 64 - 1518
对于检查出的无效 MAC 帧就简单地丢弃,以太网不负责重传丢弃的帧。
IEEE 802.3 MAC 帧格式(了解)
与以太网 V2 MAC 帧格式 相似, 区别 在于:
- IEEE 802.3 规定的 MAC 帧的第三个字段是“ 长度 / 类型 ”。
- 当这个字段值大于 0x0600 时(相当于十进制的 1536 ),就表示“类型”。这样的帧和以太网 V2 MAC 帧完全一样。
- 当这个字段值小于 0x0600 时才表示“长度” 。
- 当 “长度 / 类型” 字段值小于 0x0600 时,数据字段必须装入上面的逻辑链路控制 LLC 子层的 LLC 帧。
帧最小间隔
帧间最小间隔为 9.6 μs ,相当于 96 bit 的发送时间。
一个站在检测到总线开始空闲后,还要等待 9.6 μs 才能再次发送数据。
这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。
扩展以太网
在物理层扩展以太网
使用光纤扩展
使用集线器扩展
连接成更大的多级星形结构的以太网
相当于一个转发器,增大碰撞域,实现跨碰撞域的通信
在数据链路层扩展以太网
扩展以太网更常用的方法是在数据链路层进行。
早期使用网桥,现在使用以太网交换机。
网桥
根据 MAC 帧的目的地址对收到的帧进行转发和过滤
一般两个端口
工作原理
- 网桥从端口接收网段上传送的各种帧;
- 每当收到一个帧时,先暂存在缓存中。
- 若此帧未出错,且欲发送的目的站的 MAC 地址属于另外一个网段,则通过查找 “转发表”,将收到的帧送往对应的端口转发。
- 若此帧出错,则丢弃该帧。
- 同一个网段内的帧,不会被网桥转发,不会增加网络负担
网桥使各网段成为隔离开的碰撞域
- 内部结构
- 优点
- 过滤通信量、扩大了物理范围、提高了可靠性。
- 可互连不同物理层、不同 MAC 子层和不同速率的局域网。
- 缺点
- 存储转发增加了时延。
- 在 MAC 子层并没有流量控制功能。
- 具有不同 MAC 子层的网段桥接在一起时时延更大。
- 只适合用户数不太多(不超过几百个)和通信量不太大的局域网,否则有时还会因传播过多的广播信息而产生网络拥塞(所谓广播风暴)
- 网桥与集线器的不同
- 集线器在转发帧时,不对传输媒体进行检测。
- 网桥在转发帧之前必须执行 CSMA/CD 算法
- 由于网桥没有网卡,因此网桥并不改变它转发的帧的源地址。
- 类型(如何生成路由)
- 固定路由网桥
- 人为建转发表
- 透明网桥
- 网桥确定路由
- 能生成和修改自己路由表的网桥
- 用的最多
- 源路由网桥
- 站点确定路由
- 发送站点确定到达目的地的路由,并将它存储在所发送的帧中;网桥接收帧后按其指示的路由将它转发到下一个局域网上。
- 固定路由网桥
交换机
即多端口网桥(有更多接口的网桥)
- 特点
- 每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式。
- 并行性
- 能同时连通多对接口, 使每一对相互通信的主机都能像独占通信媒体那样,进行无碰撞地传输数据。
- 相互通信的主机都是独占传输媒体,无碰撞地传输数据。
- 以太网交换机的接口有存储器, 能在输出端口繁忙时把到来的帧进行缓存 。
- 即插即用,其内部的帧交换表是通过自学习算法自动地逐渐建立起来
- 以太网交换机使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
- 优点
- 用户独享带宽,增加了总容量。
- 用以太网交换机扩展局域网
- 交换方式
- 存储转发方式
- 把整个数据帧先缓存后再进行处理 。
- 直通 (cut through) 方式
- 接收数据帧的同时就立即按数据帧的目的 MAC 地址决定该帧的转发接口,因而提高了帧的转发速度
- 缺点 是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站
- 存储转发方式
在某些情况下,仍需要采用基于软件的存储转发方式进行交换,例如,当需要进行线路速率匹配、协议转换或差错检测时
自学习算法(重要)
- 以太网交换机运行自学习算法自动维护交换表。
- 步骤
- 开始时,以太网交换机里面的交换表是空的
- A 先向 B 发送一帧,从接口 1 进入到交换机。
- 交换机收到帧后, 先查找交换表, 没有查到应从哪个接口转发这个帧。
- 交换机把这个帧的 源地址 A 和 接口 1 写入交换表 中,并向(除接口 1 以外的)所有接口广播这个帧。
- C 和 D 将丢弃这个帧,因为目的地址不对。只 B 才收下这个目的地址正确的帧,称为过滤
- 从新写入交换表的项目 (A, 1) 可以看出,以后不管从哪一个接口收到帧,只要其目的地址是 A ,就应当把收到的帧从接口 1 转发出去。
- B 通过接口 3 向 A 发送一帧。(一般作为答复)
- 交换机查找交换表, 发现交换表中的 MAC 地址有 A 。表明要发送给 A 的帧(即目的地址为 A 的帧)应从接口 1 转发。 于是就把这个帧传送到接口 1 转发给 A 。 显然,现在已经没有必要再广播收到的帧。
- 交换表这时新增加的项目 (B, 3),表明今后如有发送给 B 的帧,就应当从接口 3 转发出去。
- 经过一段时间后, 只要主机 C 和 D 也向其他主机发送帧, 以太网交换机中的交换表就会把转发到 C 或 D 应当经过的接口号( 2 或 4 )写入到交换表中
- 以太网交换机的这种自学习方法使得以太网交换机能够即插即用,不必人工进行配置,因此非常方便。
交换机自学习和转发帧的步骤归纳
- 交换机收到一帧后先查找交换表中与收到帧的源地址有无相匹配的项目。
- 如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间)。
- 如有,则把原有的项目进行更新(进入的接口或有效时间)。
- 转发帧。 查找交换表中与收到帧的 目的地址有无相匹配 的项目。
- 如没有,则向所有其他接口(进入的接口除外)转发。(泛洪帧)
- 如有,则按交换表中给出的接口进行转发。
- 若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧(因为这时不需要经过交换机进行转发)
- 交换机收到一帧后先查找交换表中与收到帧的源地址有无相匹配的项目。
生成树协议
为了增加网络的可靠性,会增加冗余链路。自学习的过程就可能导致以太网帧在网络的某个环路中无限制地兜圈子
如图,假定开始时,交换机 #1 和 #2 的交换表都是空的,主机 A 通过接口交换机 #1 向主机 B 发送一帧。
按交换机自学习和转发方法,该帧的某个走向如下
离开交换机#1 的接口3 → 交换机#2 的接口1 → 接口2 → 交换机#1 的接口4 → 接口3 → 交换机#2 的接口1 → ……
这样就无限制地循环兜圈子下去,白白消耗了网络资源
IEEE 802.1D 标准制定了一个生成树协议 STP (Spanning Tree)为了消除广播风暴
其要点是不改变网络的实际拓扑,但在逻辑上则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构,从而消除了兜圈子现象。
例
虚拟局域网
冲突域:连接在同一个网桥或交换机端口的计算机只能有一台计算机发送数据
广播域:网络中所有能接收到同样广播消息的设备的集合
定义
利用以太网交换机可以很方便地实现虚拟局域网 VLAN (Virtual LAN) 。
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组,这些网段具有某些共同的需求 。
每一个 VLAN 的帧都有一个明确的标识符 ,指明发送这个帧的计算机是属于哪一个 VLAN 。
虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网
图注:当 B1 向 VLAN2 工作组内成员发送数据时,工作站 B2 和 B3 将会收到广播的信息,而工作站 A1,A2 和 C1都不会收到 B1 发出的广播信息。虚拟局域网限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化
优点:安全性好、网络按照逻辑分段、灵活性好
有效控制广播域范围
增强网络安全性
灵活构建虚拟工作组
提高网络的可管理性
高速以太网
高速以太网:100BASE-T 以太网,全双工模式下工作不使用 CSMA/CD 协议,争用期、帧间时间间隔更短
吉比特以太网:允许在 1Gbit /s 下以 全双工 和 半双工 两种方式工作。
功能
载波延伸:最短帧长 64 字节,但争用时间增大为 512 字节,填充特殊字符
分组突发:多短帧发送时,第一个载波延伸,其余指留有必要间隔连续发送
网络层
网络层提供的两种服务
电信网:面向连接(真实连接,电话设计简单)
互联网:无连接(计算机有很强的差错处理能力)
网络层向上只提供简单灵活的、无连接的、尽最大努力交付的数据包服务,不提供服务质量保证。降低了网络造价。
- 网络层提供的两种服务
- 虚电路服务:不需要包含目的地址,分组信息比特数较少,差错可以由网络负责控制
- 数据报服务:网络上报文长度相对较短,主机负责差错、流量控制
网际协议 IP
(Internet Protocol)
网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一
与 IP 协议配套使用的三个协议
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control MessageProtocol)
- 网际组管理协议 IGMP (Internet Group ManagementProtocol)
虚拟互连网络
将网络互相连接起来要使用一些中间设备。
中间设备又称为中间系统或中继 (Relay) 系统
有以下五种不同的中继系统:
- 物理层 :转发器 (Repeater)
- 数据链路层:网桥或桥接器 (Bridge)
- 网络层:路由器 (Router)
- 网桥和路由器的混合物:桥路器 (brouter)
- 网络层以上:网关 (Gateway)
网络互连使用路由器
将使用路由器连接起来的网络看成同一个虚拟的IP网络(互连网)
意义
使用 IP 协议的虚拟互连网络可简称为 IP 网
互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络
使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节(如编址方案、路由选择协议等)。
如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)
分类的 IP 地址
定义
IP 地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是 唯一的 32 位的标识符(4 字节)
IP 地址现在由 互联网名字和数字分配机构ICAN (Internet Corporatiofor Assigned Names and Numbers) 进行分配。
分类的 IP 地址将 32 位地址进行了划分
格式
将 IP 地址划分为若干个固定类( A-E 类)
每一类地址都由两个固定长度的字段组成
- 其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络
- 另一个字段则是主机号 host-id ,它标志该主机(或路由器)。
主机号在它前面的网络号所指明的网络范围内必须是唯一的。
由此可见, 一个 IP 地址在整个互联网范围内是唯一的。
分类
- A类:8-24,0 开始,最大可指派网络数 27−227−2 ,每个网络最大主机数 224−2224−2
- B类:16-16,10开始,最大可指派网络数 214−1214−1 ,每个网络最大主机数 216−2216−2
- C类:24-8,110开始,最大可指派网络数 221−1221−1 ,每个网络最大主机数 28−228−2
- D类:1110开始,多播地址
- E类:1111开始,保留今后使用
分类的好处
- 划分成不同类别的考虑
- 各种网络差异很大,有的网络拥有很多主机,而有的网络拥有的主机数目很少。
- 将 IP 地址划分成不同类别 A 、 B 、 C 可以满足不同用户的需求。
- 当一个单位申请到一个 IP 地址时,只是申请了一个网络号 Net id ,具体的主机号由各个单位自行分配。
- D 类和 E 类使用较少
- D 类的多播地址主要留给 IAB (因特网体系结构委员会)使用。
点分十进制记法
常用的三种类别的 IP 地址
三个类别的 IP 地址中, 2 个特殊的 Host id 含义:
- 全 0 的 Host id 表示该 IP 地址是 “本主机” 所连接的单个网络地址。
- 如 IP 地址为 5.6.7.8 ,则网络地址为 5.0.0.0
- 全 1 的 Host id 表示所有 (all),即该网络上的所有主机
一般不使用的 IP 地址
重要特点
- IP 地址是一种分等级的地址结构
- 单位分配主机号,方便单位管理
- 路由器只根据网络号转发分组,减少了路由表所需存储空间
- 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net id
- 所有分配到网络号 net id 的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
IP 地址与硬件地址
IP 地址与硬件地址是不同的地址。
从层次的角度看
- 硬件地址(或物理地址) 是数据链路层和物理层使用的地址 。
- IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)
主机 H1 与 H2 通信中使用的 IP 地址与硬件地址 HA
地址解析协议 ARP
(Address Resolution Protocol)
通信时使用了两个地址:
IP 地址 (网络层地址)
MAC 地址 (数据链路层地址)
已经知道了一个机器(主机或路由器)的 IP 地址,如何找出其相应的硬件地址?
地址解析协议 ARP 就是用来解决这样的问题的
ARP 解决了同一个局域网上主机或路由器IP和MAC地址映射问题
要点
每个主机都设有一个 ARP 高速缓存,里面有所在局域网上的主机和路由器 IP 到硬件地址的映射表,并且能动态更新(设有 TTL)
- 如有,则通过局域网将 MAC 帧发送到硬件地址
- 如没有,发送 ARP 请求分组,等待 ARP 响应分组,写入 ARP 高速缓存
ARP 请求/响应分组的内容
- 发送方硬件地址
- 发送方 IP 地址
- 目标方硬件地址(未知填0)
- 目标方IP地址
请求分组广播,响应分组单播
不直接使用硬件地址通信的原因:硬件地址形式不统一
注意
如果所要找的主机和源主机不在同一个局域网上,那么 就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做
从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。
只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信, ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。
使用 ARP 的四种典型情况
- 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
- 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
- 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成
IP 数据报的格式
一个 IP 数据报由首部和数据两部分组成。
首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
在首部的固定部分的后面是一些可选字段,其长度是可变的
- 版本:占 4 位,指 IP 协议的版本
- 首部长度:占 4 位,可表示的最大数值是15 个单位,一个单位为 4 字节。因此最大值是 60 字节
- 区分服务:占 8 位,不常用
- 总长度:占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。
- 标识:占 16 位,计数器,用来产生 IP 数据报的标识
- 标志:占 3 位,目前只有前两位有意义
- 最低位 MF (more fragment)
- MF = 1 表示后面还有分片;MF = 0 表示最后一个分片。
- 中间位 DF(don’t fragment)
- 只有当 DF = 0 时才允许分片。
- 最低位 MF (more fragment)
- 片偏移:占 13 位,以 8 个字节为偏移单位。
- 指出:较长的分组在分片后某片在原分组中的相对位置
- (以下了解即可)
- 生存时间:占 8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
- 协议:记录上层协议(TCP 等)
- 占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
- 首部检验和:反码运算求和(高位溢出加低位)
- 占 16 位, 只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。
- 源地址和目的地址:都各占 4 字节
- 可选字段:不常用,不足1字节需要填充
例
IP 层转发分组的流程
按主机所在的网络地址制作路由表
根据目的网络地址就能确定下一跳路由器,这样做的结果是:
- IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付 )
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付。
默认路由
路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。
如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的。
这种转发方式在一个网络只有很少的对外连接时是很有用的。
默认路由在主机发送 IP 数据报时往往更能显示出它的好处。
划分子网和构造超网
划分子网
(subnetting)
格式
三级 IP 地址:网络号::子网号::主机号
转发数据报时,仍然先找到本网络上的路由器,路由器根据网络号和子网号找到子网,最后直接交付目的主机
优点
- 减少 IP 地址的浪费
- 使网络组织更加灵活
- 便于维护管理
划分子网对外部网络透明,对外表现仍然是一个网络
子网掩码
从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。
使用子网掩码 (subnet mask) 可以找出 IP 地址中的子网部分
全 0 或全 1 的子网号是不使用的
- 规则
- 长度 32 位
- 某位 1:IP 地址中的对应位为网络号和子网号
- 某位 0:IP 地址中的对应位为主机号
子网划分方法
有固定长度子网和变长子网两种子网划分方法。
在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的 。
若使用较少位数的子网号,则每一个子网上可连接的主机数就较多。
划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。
例
使用子网时分组的转发
- 用各网络子网掩码和目的IP地址相与,结果一致直接交付
- 检查是否有特定主机路由
- 与路由表各项子网掩码相与,寻找匹配目的网络
- 由默认路由转发
无分类编址 CIDR
无分类域间路由选择 CIDR (Classless Inter Domain Routing)
CIDR 消除了传统的 A 类 、 B 类和 C 类地址以及划分子网的概念,因而可以更加有效地分配 IPv4 的地址空间
格式
使用网络前缀(network prefix)代替分类地址中的网络号和子网号
斜线记法(CIDR 记法)
- 即在 IP 地址面加上一个斜线
/
,然后写上网络前缀所占的位数。 这个数值对应于三级编址中子网掩码中 1 的个数 - 例如: 220.78.168.0/24
- 主机号全 0 全 1 一般不使用
CIDR 地址块
将有相同网络前缀的连续 IP 地址组成 CIDR 地址块
路由聚合
也称构成超网(supernetting)
一个 CIDR 地址块表示很多地址,称为路由聚合
可以减少路由信息交换
CIDR 虽然不使用子网了 但仍然使用掩码这一名词,但不叫子网掩码 。
对于 20 地址块,它的掩码是 20 个连续的 1。斜线记法中的数字就是掩码中 1 的个数
最长前缀匹配
使用 CIDR 时,路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果。
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配 (longest prefix matching)。
网络前缀越长,其地址块就越小,因而路由就越具体 (more specific) 。
最长前缀匹配又称为最长匹配或最佳匹配
举例
使用二叉线索存储(字典树)
网际控制报文协议 ICMP
(Internet Control Message)
ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告
ICMP 报文封装在 IP 数据包中,是 IP 层的协议
种类
格式:类型、代码、校验和
种类:ICMP 差错报告报文和ICMP 询问报文
差错报告报文
向源站点报告错误信息,不需要应答
类型
- 终点不可达
- 时间超过:收到 TTL 为 0 的数据报时
- 参数问题:收到的数据报首部有字段不正确时。
- 改变路由(重定向)
方法
报文的数据部分包含 ICMP 差错报告报文的前 8 个字节,再加上引起错误的 IP 数据报的首部和数据字段的前 8 个字节。
询问报文
采用请求应答方式进行交互用来请求一些消息
分类
- 回答请求和回答报文
- 时间戳请求和回答报文
应用举例
PING (Packet InterNet Groper) 分组网间探测
tranceroute 用来跟踪一个分组从源点到终点的路径。
互联网的路由选择协议
有关路由选择协议的几个基本概念
不存在绝对的最佳路由算法
从路由算法的自适应性考虑
静态路由选择:非自适应路由选择。简单开销小,但不能适应网络动态和变化
动态路由选择:自适应路由选择。适应网络状态的变化,但实现复杂,开销
自治系统 AS
分层次路由选择协议的原因:互联网规模大;许多单位不愿意外接了解内部网络细节
定义: 在单一的技术管理下的一组路由器,而这些路由器使用一种 AS 内部的路由选择协议和共同的度量 。
一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
两大类路由选择协议
这里网关 == 路由器
域间路由选择和域内路由选择
- 内部网关协议 IGP ( Interior Gateway Protocol )
- 在一个自治系统内部使用的路由选择协议。
- 目前这类路由选择协议使用得最多,如 RIP(距离向量) 和 OSPF(链路状态) 协议。
- 外部网关协议 EGP ( External Gateway Protocol )
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。 这样的协议就是外部网关协议 EGP 。
- 在外部网关协议中目前使用最多的是 BGP-4
内部网关协议 RIP
RIP (Routing Information Protocol)
定义
RIP 是一种分布式的、基于距离向量的动态路由选择协议
- 分布式:每个路由器独立决定自己的路由表
- 距离、向量:到达目的网络所需费用;一组距离的记录
- 动态:根据拓扑结构、通信量的变化来改变其路由选择
RIP 协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的唯一最佳距离记录
与相邻路由器交换全部路由表
距离
RIP 协议中的 “距离” 也称为 “跳数” (hop count),因为每经过一个路由器,跳数就加 1。这里的 “距离” 实际上指的是 “最短距离”
RIP 认为一个好的路由就是它通过的路由器的数目少即距离短
RIP 允许一条路径最多只能包含 15 个路由器 。
距离的最大值为 16 时即相当于不可达。 可见 RIP 只适用于小型互联网
RIP 不能在两个网络之间同时使用多条路由
- RIP 选择一个具有最少路由器的路由,即最短路由。
- 哪怕还存在另一条高速低时延但路由器较多的路由 。
特点
- 和哪些路由器交换信息?
- 仅和相邻路由器交换信息。
- 交换什么信息?
- 交换的信息是当前本路由器所知道的全部信息,即自己的路由表。
- 在什么时候交换信息?
- 按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。若超过 180s 没收到邻居通告,则判定邻居没了并更新路由表。
RIP 路由表的信息
- 路由表的主要信息
- 到某个网络的距离(即最短距离)
- 应经过的下一跳地址
路由表的更新原则是找出到每个目的网络的最短距离
RIP 使用的更新算法称为距离向量算法
路由表的建立
例
距离加一
- 下一跳不同,选择最优路径
- 下一跳相同,覆盖
RIP2 协议的报文格式
应用层协议,使用 UDP 协议传输
RIP2 是 1998 年公布的较新的 RIP 版本。
RIP2 报文由 首部 和 路由部分 组成。
优缺点
- 优点
- 实现简单,开销较小。
- 缺点
- 限制了网络的规模,它能使用的最大距离为 15
- 路由器之间交换的路由信息是路由器中的完整路由表,开销大
- 好消息传播得快,坏消息传播得慢。
内部网关协议 OSPF
OSPF (Open Shortest Path First)(开放最短路径优先协议),是为克服 RIP 的缺点在 1989 年开发出来的。
最短路径的计算使用了迪杰斯特拉算法
特点
- 和哪些路由器交换信息?
- 向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法。
- 交换什么信息?
- 发送的信息就是与本路由器相邻的所有路由器的链路状态 ,但这只是路由器所知道的部分信息。
- “链路状态” 就是说明本路由器都和哪些路由器相邻,以及该链路的 “度量” ( metric):费用、距离、时延、带宽等。
- 最终目标是构建一个全网的拓扑结构图
- 在什么时候交换信息?
- 只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
链路状态数据库
所有的路由器最终都能建立一个链路状态数据库
这个数据库实际上就是全网的拓扑结构图,它在全网范围内是一致的 (这称为链路状态数据库的同步)。
每个路由器都知道全网有多少路由器,哪些路由器是相连的,代价是多少等。
每个路由器根据数据状态数据库,构造出自己的路由表。
OSPF 的链路状态数据库能较快地进行更新, 使各个路由器能及时更新其路由表。OSPF 的更新过程收敛得快是其重要优点。
分类
- 问候 (Hello) 分组
- 用来发现和维持邻站的可达性。
- 数据库描述 (Database Description) 分组
- 向邻站给出自己的链路状态数据库所有项目的摘要信息。
- 链路状态请求 (Link State Request) 分组
- 向对方请求发送某些链路状态项目的详细信息。
- 链路状态更新 (Link State Update) 分组
- 用洪泛法对全网更新链路状态。 OSPF 协议最核心的部分
- 链路状态确认 (Link State) 分组
- 对链路更新分组的确认。
区域
为了使 OSPF 能用于规模很大的网络, OSPF 将一个自治系统再划分为若干个更小的范围,叫做 区域。
每一个区域都有一个 32 位的区域标识符 (用点分十进制表示)。
区域也不能太大,在一个区域内的路由器最好不超过 200 个。
区域划分的好处
- 将洪泛的范围缩小,减少网络通信量
- 在一个区域内部的路由器只知道本区域的完整网络拓扑,而不知道其他区域的网络拓扑情况
重要的路由器
- 主干路由器(backbone router):主干区域的路由器
- 区域边界路由器(area border router):连接两个区域的路由器
- 自治系统边界路由器:与其他自治系统交换信息的路由器,也是一种边界路由器
报文格式
OSPF 直接用 IP 数据包报传送,其首部的协议字段值为 89
OSPF 构成的数据报很短
- 可减少路由信息的通信量。
- 不必将长的数据报分片传送。
- 分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传。
OSPF 分组使用 24 字节的固定长度首部
RIP 与 OSPF 的比较
RIP
- 节点告诉相邻节点它所知道的所有路由信息
- 节点根据来自相邻节点的路由信息更新自己的路由表
- 定期交换信息
- 可扩展性差
OSPF
- 节点告诉所有节点它的相邻节点的状态信息
- 每个节点都有一个全局的拓扑结构,并以此计算路由表
- 链路状态变化时才交换信息
- 可扩展性好,可靠
- 与整个互联网的规模无直接联系。没有“坏消息传播得慢”的问题
外部网关协议 BGP
BGP (Border Gateway Protocol) ( 边界网关协议 ) 是不同自治系统的路由器之间交换路由信息的协议,目前使用最多的版本是 BGP-4
为什么不能使用内部网关协议?
- 互联网的规模太大,使得自治系统之间路由选择非常困难。
- 主干网路由器的项目表已超过了 5 万个网络前缀。对于自治系统之间的路由选择,要寻找最佳路由是很不现实的 。
- 当一条路径通过几个不同 AS 时,要想对这样的路径 计算出有意义的代价是不太可能的 。
- 比较合理的做法是在 AS 之间交换“ 可达性 ”信息。例 “到达目的网络 N 可经过自治系统 AS x ”。
- 自治系统之间的路由选择必须考虑有关策略。
- 包括政治、安全或经济方面的考虑。
BGP 致力于寻找一条比较好的路由(并非最佳),采用了路径向量路由选择协议
特点
- 和谁交换信息?
- 与其他 AS 的邻站 BGP 发言人交换信息。
- 每一个自治系统的管理员要选择至少一个 路由器 作为该自治系统的 “BGP 发言人” (BGP speaker)
- 通常,两个 BGP 发言人都是通过一个共享网络连接在一起的,而 BGP 发言人往往就是 BGP 边界路由器 ,但也不一定
- 与其他 AS 的邻站 BGP 发言人交换信息。
- 交换什么信息?
- 路径向量。也就是网络可达性的信息,即到达某个网络所要经过的一系列 AS
- 在什么时候交换信息?
- 发生变化时更新有变化的部分
连通图
也就是网络可达性信息
报文格式
封装在 TCP 报文中
路由器
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组
结构
路由选择部分
- 根据所选定的路由选择协议构造出路由表
- 相邻路由器交换路由信息,更新和维护路由表。
分组转发部分
- 一组输入端口
- 交换结构:根据转发表对分组进行处理
- 一组输出端口
核心功能
- 控制层:运行各种路由协议
- 数据层:将收到的 IP 分组转发
交换结构
交换结构是路由器的关键构件
交换方法
- 通过存储器
- 通过总线
- 通过纵横交换结构
IP 多播
基本概念
多播 (multicast ,以前曾译为组播 ) 是一种一对多通信: 一个源点发送到许多个终点
能够运行多播协议的路由器称为多播路由器 (multicast router)
在互联网上进行多播就叫做 IP 多播
IP 多播分为两种
- 一种是只在本局域网上进行硬件多播
- 另一种是在互联网的范围内进行多播
多播 IP 地址
IP 多播所传送的分组需要使用多播 IP 地址。
在多播数据报的目的地址写入多播组的标识符 。
多播组的标识符就是 IP 地址中的D 类地址(多播地址)
D 类 IP 地址的前四位是 1110 ,因此范围是 224.0.0.0 到 239.255.255.255 。
每一个 D 类地址标志一个多播组。
多播地址只能用于目的地址, 不能用于源地址
多播数据报
多播数据报和一般 IP 数据报的区别就是它使用 D 类 IP 地址为目的地址,并且首部中的协议字段值是 2,表明使用网际组管理协议 IGMP
多播数据报也是“ 尽最大努力交付 ”,不保证一定能够交付多播组内的所有成员。
对多播数据报不产生 ICMP 差错报文。因此,若在 PING 命令后面键入多播地址,将永远不会收到响应。
在局域网上进行硬件多播
MAC 地址开头:01-00-5E,表明其为多播地址
网际组管理协议 IGMP 和多播路由选择协议
这是 IP 多播需要的两种协议
网际组管理协议 IGMP
IGMP 使多播路由器知晓多播组成员信息
多播路由选择协议
大概不考
运输层
运输层协议概述
进程之间的通信
概念
运输层属于面向通信部分的最高层,也是用户功能中的最底层
网络层提供了主机间的逻辑通信,运输层为应用进程间提供了逻辑通信(端到端)
作用
基于端口的复用和分用
- 复用 :发送方的不同应用进程使用同一个运输层协议
- 分用 :接收方的运输层把数据正确交付给目的进程
根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP
可靠信道的含义:无差错、按序(接收和发送的顺序)、无丢失、无重复
不可靠的含义:不保证交付。接收时不按序、可能出现丢失和重复
运输层的两个主要协议
- 用户数据报协议 UDP (User Datagram Protocol)
- 传输控制协议 TCP (Transmission Control Protocol)
运输层的端口
为了使不同操作系统的进程能够相互通信,必须用统一的方法对应用进程进行标志
端口就是运输层服务访问点 TSAP,运输层的复用和分用功能依赖端口来完成。
端口号(Protocol port number):16 位二进制数,只具有本地意义
如何找进程?IP 地址 + 端口号
服务器端使用的端口号
熟知端口:0-1023,所有用户进程都知道
登记端口号:1024-49151,需要在 IANA 登记,以防重复
客户端使用的端口号
- 短暂端口号:49152-65535,,留给客户进程选择暂时使用
常用的熟知端口
用户数据报协议 UDP
概述
定义
UDP 只在 IP 的数据报服务之上增加了很少一点的功能
- 复用和分用的功能
- 差错检测的功能
主要特点
- 无连接,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
- 尽最大努力交付, 即不保证可靠交付, 因此主机不需要维持复杂的连接状态表。
- 面向报文。 UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。
- 没有拥塞控制, 因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用 IP 电话、视频会议是很重要的。
- 支持一对一、一对多、多对一和多对多的交互通信。
- 首部开销小, 只有 8 个字节,比 TCP 的 20 个字节的首部要短
首部格式
UDP 有两个字段 :数据字段和首部字段。首部字段很简单,只有 8 个字节
首部字段 4 个字段组成,每个字段都是 2 个字节:源端口、目的端口、长度、校验和
在计算检验和时,临时把 “伪首部” 和 UDP 用户数据报连接在一起。伪首部仅仅是为了计算检验和。
校验和
IP 的校验和只校验了 IP 数据报的首部;
UDP 的校验和,检查了:
- UDP 数据报的源端口、目的端口;
- UDP 数据报的数据部分;
- IP 数据报的源地址和目的地址。
校验方法:与伪首部、数据一起计算二进制反码校验和,循环进位,最后取反。(不要求)
队列工作原理
传输控制协议 TCP
最主要的特点
- 面向连接
- 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
- 提供可靠交付的服务。数据无差错、不丢失、不重复,并且按序到达。
- 全双工通信
- 面向字节流
- TCP 中的 “流 ”(stream)指的是流入或流出进程的字节序列。
- “面向字节流” 的含义是:虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流
- TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系 。但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
首部格式
见 5.5
连接
TCP 把连接作为最基本的抽象。每一条 TCP 连接有两个 点。
TCP 连接的端点不是主机,不是主机的 IP 地址,不是应用进程,也不是运输层的协议端口。
TCP 连接的端点叫做套接字 (socket) 或插口
端口号拼接到 (contatenated with) IP 地址即构成了套接字。
套接字
TCP 连接就是由协议软件所提供的一种抽象。
TCP 连接的端点是个很抽象的套接字,即( IP 地址:端口号)
同一个 IP 地址可以有多个不同的 TCP 连接
同一个端口号也可以出现在多个不同的 TCP 连接中
可靠传输的工作原理
停止等待协议
发送完一个分组就停止发送等待确认,一旦出现传输差错(检测差错被丢弃或丢失),则超时重传
出现差错的情况
确认丢失、确认迟到
确认丢失:B 向 A 发送的确认丢失了
A (在超时计时器到期后)重传,B 丢弃这个重传的分组,并向 A 再次发送确认
确认迟到:B 向 A 发送的确认迟到了
A (在超时计时器到期后)重传后收到迟到的确认,将其丢弃,B 丢弃这个重传的分组,并再次确认
注意
在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
分组和确认分组都必须进行编号。
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
自动重传请求 ARQ
(Automatic Repeat reQuest)
重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组
使用这样的确认和重传机制,就可以在不可靠的传输网络上实现可靠通信
信道利用率
信道利用率 $$U=\frac{T_D}{T_D+RTT+T_A}$$
流水线运输
发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送
由于信道上一直有数据不间断地传送,这种传输方式可获得很高的信道利用率。
连续 ARQ 协议
发送方维持一个发送窗口
- 位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了 。
- 连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置
上图没有用到累计确认
累计确认
接收方一般采用累计确认的方式,即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,表示这个分组之前的所有分组都已正确收到了
- 优点:容易实现,即使确认丢失也不必重传(因为后续确认已经发送)
- 缺点:不能向发送方反映所有正确收到的分组(回退),序号位数多,重传代价高
Go back N (回退 N)
如果发送方发送了前 5 个分组,而中间的第 3 个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
这就是回退 N,表示需要再退回来重传已发送过的 N 个分组
可见当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
不缓存失序的分组
步骤
发送端:
- 在发送完一个分组后,不是停下来等待确认分组,而是可以连续再发送若干个分组。
- 如果这时收到了接收端发来的确认,那么还可以接着发送分组。
- 如果在超时时间到时,仍然没有收到相应分组的确认,则重新从这个分组开始传起 (Go back N) 。
接收端:只按序接收分组
- 当接收到一个有差错的分组时,丢弃该分组和它以后的所有分组,让它们在发送端超时,然后重复发送已发送过的最后一个确认分组。
发送窗口的最大值
当用 n 比特进行分组的编号时,接收窗口 W~R~ = 1;只有在发送窗口 $$W_T \le 2^n - 1$$ 时,连续 ARQ 协议才能正确运行
例:当 n = 3 时,发送窗口的最大值是 7 而不是 8
用反例证明:
若发送窗口大小为 8 ,则分组编号为 0 - 7
- 状态 1: 所有确认分组都到达了发送端,此时发送端又发送 8 个新分组,编号为 0~7 ,接收端认为是新分组
- 状态 2: 所有确认分组丢失,发送端超时后重发 0~7 号分组,接收端同样将其当作新分组接收(实际是重传的旧分组)。
小窗口 ARQ 信道利用率 $$U=\frac{n\times T_D}{T_D+RTT+T_A}$$ ,大窗口信道利用率为 1
通常连续 ARQ 的接收窗口大小 Wr 为1
选择重传 ARQ 协议
连续 ARQ 协议的问题 :当线路的出错率高时,将出错帧之后的所有帧都丢弃掉,重传这些帧会带来效率上的大幅度降低。
加大接收窗口 ,使得 W~R~ > 1 。先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机。这就是选择重传 ARQ 协议 。
接收窗口的尺寸不能超过 2^n-1^ (即序号范围的 1/2 ),否则可能造成帧的重叠。发送窗口的尺寸一般和接收窗口的尺寸相同。
优点 :避免重复传送那些本来已经正确到达接收端的数据帧。
TCP 报文段的首部格式
前 20 位固定字节 + 4n 字节可选项
- 源端口和目的端口字段
- 各占 2 字节。
- 端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
- 序号字段 seq
- 占 4 字节。
- TCP 连接中传送的数据流中的每一个字节都编上一个序号。
- 序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
- 确认号字段 ack
- 占 4 字节
- 是期望收到对方的下一个报文段的数据的第一个字节的序号。
- 若确认号 = N,表明:到序号 N - 1 为止的所有数据都已正确收到
以下字段了解即可
- 数据偏移(即首部长度)
- 占 4 位
- 它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。
- “数据偏移”的单位是 32 位字(以 4 字节为计算单位)
- 保留字段
- 占 6 位,保留为今后使用,但目前应置为 0
- 紧急 URG
- 当 URG = 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送 相当于高优先级的数据
- 确认 ACK
- 只有当 ACK = 1 时确认号字段才有效。
- 当ACK = 0 时,确认号无效。
- 推送 PSH (PuSH)
- 接收 TCP 收到 PSH = 1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。
- 复位 RST ( ReSeT )
- 当 RST = 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。
- 同步 SYN
- 同步 SYN = 1 表示这是一个连接请求或连接接受报文。
- 终止 FIN ( FINish )
- 用来释放一个连接。 FIN = 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。
- 窗口字段
- 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。
- 检验和
- 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。
- 紧急指针字段
- 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
- 选项字段
- 长度可变。 TCP 最初只规定了一种选项,即 最大报文段长度 MSS 。 MSS 告诉对方 TCP :“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”
- 填充字段
- 这是为了使整个首部长度是 4 字节的整数倍。
TCP 的运输连接管理
TCP 是面向连接的协议
运输连接有三个阶段:
- 连接建立
- 数据传送
- 连接释放
运输连接有三个问题
- 每一方要能够确知对方存在
- 允许协商参数
- 能够对运输实体资源进行分配
采用方式:客户-服务器方式
运输连接的管理就是使运输连接的建立和释放都能正常地进行
TCP连接的建立
三报文握手
- 客户:同步 SYN=1,seq=x
- 服务器:SYN=1,ACK=1,seq=y,ack=x+1
- 客户:ACK=1,seq=x+1,ack=y+1
作用:防止已经失效的连接请求报文突然又传送到了
TCP 的连接释放
四报文握手
- 客户:FIN=1,seq=u
- 服务器:ACK=1,seq=v,ack=u+1
服务器单向数据传送
- 服务器:FIN=1,ACK=1,seq=w,ack=u+1
- 客户:ACK=1,seq=u+1,ack=w+1
TCP连接必须经过两倍**最长报文段寿命(MSL)**后才真正释放
为了保证A的ACK报文到达B,并防止已失效的连接请求已经消失
TCP 可靠传输的实现
TCP 在不可靠的 IP 服务上建立可靠的数据传输
接收方
- 累计确认,仅在正确按序收到报文段后,跟新确认序号;其余情况,重复前一次的确认序号
- 失序报文处理:缓存失序的报文段
发送方
- 发送策略:流水线
- 定时器:仅对最早那个未确认报文段使用重传计时器
- 重发策略:仅在超时后重发最早未确认的报文段
以字节为单位的滑动窗口
步骤
发送缓存与接收缓存的作用
发送缓存用来暂时存放:
- 发送应用程序传送给发送方 TCP 准备发送的数据;
- TCP 已发送出但尚未收到确认的数据。
接收缓存用来暂时存放:
- 按序到达的、但尚未被接收应用程序读取的数据;
- 不按序到达的数据。
超时重传时间的选择
不考
选择确认 SACK
不考
快速重传?
总结
GBN、SR、TCP 的区别
GBN:回退 N (go back N),如果某个报文段没有被正确的接收,那么从这个报文段到后面的报文段都要重新发送,返回的ACK采用剋及确认的机制,也就是说如果GBN返回的ACK=3,也就是说3报文段和3 之前的报文段都被正确地接收了
SR:接收方设置缓冲区,为每个报文段设置计时器,如果某个报文段没有被正确接收但是后面的报文段被正确接收了,那么就只需要重发这一个报文段,在接收方整理排序之后就?了,返回的ACK就是当前接收成功的报文段序号
TCP:和 SR 类似,但是 TCP 有快速重传机制,不需要等待某个报文段的计时器超时才能重传,返回的ACK编号是期待接收到的下一个报文的序号
TCP 的流量控制
利用滑动窗口实现流量控制
接收方通过控制窗口大小来间接地控制发送速率
流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。
接收方动态地调整自己的窗口大小,通过 rwnd 字段通知发送方。
举例
死锁
了解
B 向 A 发送了零窗口的报文段后不久, B 的接收缓存又有了一些存储空间 。于是 B 向 A 发送了 rwnd = 400 的 报文段 。
但这个报文段在传送过程中丢失了,A 一直等待收到 B 发送 的非零窗口的通知, 而 B 也一直等待 A 发送的数据
如果没有其他措施,这种互相等待的死锁局面将一直延续下去 。
为了解决这个问题, TCP 为每一个连接设有一个持续计时器(persistence)
TCP 的拥塞控制
拥塞控制的一般原理
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞(congestion) 。
若网络中有许多资源同时产生拥塞,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降 。
出现拥塞的原因:∑ 对资源需求 > 可用资源
拥塞常常趋于恶化,并使网络性能变坏。
拥塞控制设计全部主机路由器,而流量控制只关注某一条链路
拥塞控制的常用方法
- 网络辅助的拥塞控制
- 路由器
- 端到端拥塞控制
- TCP 采用的方式,端系统自行推断拥塞的产生
TCP 的拥塞控制方法
发送方如何感知拥塞
拥塞造成丢包和分组延迟增大,发送方丢过丢包时间来判断拥塞
- 重传定时器超时
- 收到三个相同(重复)的 ACK
发送方采用什么机制限制发送速率?
发送方维持一个拥塞窗口 cwnd 来限制发送窗口,从而间接控制发送速度
拥塞窗口动态变化,取决于网络的拥塞程度
调节策略:AIMD 拥塞避免
- 乘法减小
- 发送包检测到丢包后,cwnd 大小减半
- 加法增大
- 若无丢包,每经过一个 RTT,将 cwnd 增大一个 MSS,直到检测到丢包
慢开始/慢启动
在新建连接上指数增大 cwnd,直到检测到丢包
设置慢开始门限状态变量 ssthresh
当 cwnd < ssthresh 时,使用慢开始算法。
当 cwnd > ssthresh 时,停止使用慢开始算法而改用拥塞避免算法。
当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法
当遇到丢包时,ssthresh 变为当前 cwnd 的一半
区分不同的丢包事件
超时:网络交付能力差
- cwnd 直接降到初始值,然后指数增大
收到重复三个 ACK:网络仍有一定交付能力
- cwnd 减半,然后加法增大,是为快重传、快恢复