文章目录
第一章 计算机网络概述
1.1互联网概述
计算机网络:由若干个节点和链接这些节点的链路组成。
互联网:多个网络通过路由器相互连接形成,亦称“网络的网络”
主机:与网络相连的计算机称为主机
(网络把计算机连接一起,互连网则把许多网络通过一些路由器连接一起)
internet:通用名称,泛指多个网络互连成的互连网,通信协议任意选
Internet:专有名词,指全球最大最开放的特定互连网,采用TCP/IP协议族,前身为美国ARPANET
互联网的基本特点:
- 连通性
- 资源共享
1.2互联网的组成
边缘部分:由所有连接在互联网上的主机组成。由用户直接使用(通信和资源共享)
核心部分:由大量网络和连接网络的路由器组成。为边缘提供服务(提供连通性和交换)
边缘部分:用户直接使用(通信和资源共享)
端到端通信:主机A的某个进程和主机B上的某个进程进行通信
- 客户服务器方式C/S:服务端被动等待客户进行请求,建立联系后可双向通信
- 对等方式P2P:每一个主机即使客户端又是服务器
核心部分:为边缘部分提供服务(提供连通性和交换)
分组交换技术:
- 采用存储转发技术
- 关键构建:路由器(转发收到的分组)
- 分组:在互联网传送的数据单元,也成为“包”
- 根据首部包含目的地址、源地址等信息进行转发
电路交换技术:
- 两两连接n部电话需要n(n-1)/2对电线
- 三步走:建立连接–>通话–>释放连接
- 通话时间始终占用端到端的通信资源
- 传输效率低
1.3网络类别
按范围分类:
- 广域网WAN
- 城域网MAN
- 局域网LAN
- 个人区域网PAN
按使用者分类:
- 公用网
- 专用网
1.4网络性能
速率:数据传送速率
带宽:时域概念:单位时间内网络中信道能通过的“最高数据率”
吞吐量:单位时间通过接口的实际数据量
网络时延:从链路一端到另一端所需要的时间(发送+传播+处理+排队时延)
- 发送时延:数据长度/发送速率
- 传播时延:信道长度/传播速率
- 处理时延
- 排队时延
往返时间RTT:发送方发完数据到收到确认总历经时间
时延带宽积:传播时延*带宽
信道利用率:信道有百分之几的时间是被利用的。时延会随着利用率增加而增加
网络利用率:全网络的信道利用率的加权平均值。
1.5网络体系结构
网络协议:为进行网络中数据交换而建立的规则、标准或约定
OSI协议(七层)由于实现复杂、周期长,划分不合理而没有进入市场;市场广泛应用为TCP/IP协议(四层)
五层协议体系结构
- 应用层
- 任务:通过应用进程间的交互来完成特定网络应用。
- 协议:应用进程间通信和交互的规则,如:DNS,HTTP,SMTP
- 数据单元:报文
- 运输层
- 任务:负责向两台主机中进程之间的通信提供通用的数据传输服务。
- 协议:传输控制协议 TCP 、用户数据报协议 UDP
- 功能:复用、分用
- 网络层
- 任务:为分组交换网上的不同主机提供通信服务。(路由选择和转发)
- 协议:网际协议 IP
- 分组:IP数据报或数据报
- 数据链路层
- 任务:实现两个相邻节点之间的可靠通信。
- 传送帧,丢弃出错帧
- 物理层
- 任务:实现比特(0 或 1)的传输。
实体 (entity) :表示任何可发送或接收信息的硬件或软件进程。
协议:控制两个对等实体进行通信的规则的集合。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。
要实现本层协议,还需要使用下层所提供的服务。
协议与服务的区别
TCP/IP协议族
设计理念:网络核心部分越简单越好
第二章 物理层
2.1基本概念
- 物理层考虑的是怎样才能在连接各种计算机的传输媒体上传输数据比特流,而不是指具体的传输媒体。
- 作用: 尽可能屏蔽掉不同传输媒体和通信手段的差异
- 用于物理层的协议也常称为物理层规程(procedure)
- 确定与传输媒体的接口的一些特性。4 个特性
机械特性: 指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等
电气特性: 指明在接口电缆的各条线上出现的电压的范围
功能特性: 指明某条线上出现的某一电平的电压的意义
过程特性: 指明对于不同功能的各种可能事件的出现顺序
2.2数据通信的基础知识
数据通信系统模型
三大部分:源系统(或发送端、发送方)、传输系统(或传输网络)、目的系统 (或接收端、接收方)
-
消息(message): 如话音、文字、图像、视频等
-
数据(data):运送消息的实体。有意义的符号序列
-
信号(signal): 数据的电气的或电磁的表现
模拟信号(analogous signal): 代表消息的参数的取值是连续的
数字信号(digital signal): 代表消息的参数的取值是离散的。
-
码元:在使用时间域(简称为时域) 的波形表示数字信号时,代表不同离散数值的基本波形使用二进制编码时,只有两种不同的码元:0 状态,1 状态
信道的基本概念
信道:一般用来表示向某一个方向传送信息的媒体
三种通信交互方式:
-
单向通信(单工通信):
只能有一个方向
的通信,没有反方向的交互。 -
双向交替通信(半双工通信):通信的双方都可以发送信息,但双方
不能同时
发送(当然也就不能同时接收) -
双向同时通信(全双工通信):通信的双方可以
同时发送和接收
信息。
日常中“单工”也可以表示“双向交替通信”,比如“单工电台”并不是只能单向通信
- 基带信号:来自信源的信号。包含有较多的低频成分,甚至有直流成分。
- 调制(modulation):许多信道并不能传输这种低频分量或直流分量,必须对基带信号进行调制
基带调制:仅对基带信号的波形进行变换,把数字信号转换为另一种形式的数字信号。把这种过程称为编码 (coding)。
带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号。经过载波调制后的信号称为带通信号(即仅在一段频率范围内能够通过信道)。
基本带通调制方法:
- 调幅(AM):载波的振幅随基带数字信号而变化。
- 调频(FM):载波的频率随基带数字信号而变化。
- 调相(PM) :载波的初始相位随基带数字信号而变化。
正交振幅调制 QAM :一种多元制的振幅相位混合调制方法,以达到更高的信息传输速率。
常用的编码方式:
- 不归零制:正电平代表 1,负电平代表 0。
- 归零制:正脉冲代表 1,负脉冲代表 0。
- 曼彻斯特编码:位周期中心的向上跳变代表 0,
位周期中心
的向下跳变代表 1。但也可反过来定义。 - 差分曼彻斯特编码:在每一位的中心处始终都有跳变。
位开始边界
有跳变代表 0,而位开始边界没有跳变代表 1。
曼彻斯特编码和差分曼彻斯特编码产生的信号频率比不归零制高。
不归零制不能从信号波形本身中提取信号时钟频率
(这叫做没有自同步能力)。
曼彻斯特编码和差分曼彻斯特编码具有自同步能力
。
信道的极限容量
任何实际的信道都不是理想的,都不可能以任意高的速率进行传送。
码元传输的速率越高,或信号传输的距离越远,或噪声干扰越大,或传输媒体质量越差,在接收端的波形的失真就越严重。
限制码元传输速率的两因素:
- 信道能够通过的频率范围
- 信噪比
奈氏准则::在带宽为 W (Hz) 的低通信道中,若不考虑噪声影响,则码元传输的最高速率是 2W (码元/秒)。传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
码间串扰:接收端收到的信号波形失去了码元之间的清晰界限。
码元传输的最高速率 = 2W (码元/秒)W为带宽
信噪比就是信号的平均功率和噪声的平均功率之比。常记为 S/N,并用分贝 (dB) 作为度量单位。
信噪比(dB) = 10 log10(S/N ) (dB)
信道的极限信息传输速率(香农公式): C= W log2(1+S/N) (bit/s)
其中:W 信道的带宽 (Hz);S 为信道内所传信号的平均功率;N 为信道内部的高斯噪声功率。
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
只要信息传输速率低于信道的极限信息传输速率
,就一定
可以找到某种办法来实现无差错
的传输。
2.3传输媒体
传输媒体是数据传输系统中在发送器和接收器之间的物理通路。
- 导引型传输媒体:电磁波被导引沿着固体媒体(铜线或光纤)传播。
- 双绞线
- 同轴电缆
- 光缆
- 非导引型传输媒体:指自由空间。非导引型传输媒体中电磁波的传输常称为无线传输。
- 无线电微波通信
- 卫星通信
2.4 信道复用技术
复用 (multiplexing) :允许用户使用一个共享信道进行通信。
-
频分复用(FDM)
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
- 所有用户在同样的时间占用不同的带宽(即频带)资源。
-
时分复用(TDM)
- 将时间划分为一段段等长的时分复用帧(TDM帧)。
- 每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。
- 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧的长度)的。
- TDM 信号也称为等时 (isochronous) 信号。
- 所有用户在不同的时间占用同样的频带宽度。
-
统计时分复用
- 解决时分复用会导致信道利用率不高的问题
- STDM 帧不是固定分配时隙,而是
按需动态地分配时隙
,因此可以提高线路的利用率。
-
波分复用(WDM)
- 光的频分复用。使用一根光纤来同时传输多个光载波信号。
- 光的频分复用。使用一根光纤来同时传输多个光载波信号。
-
码分复用(CDM)
- 每一个用户可以在
同样的时间
使用同样的频带
进行通信。 - 将每一个比特时间划分为 m 个短的间隔,称为
码片 (chip)
。 - 为每个站指派一个
唯一
的 m bit 码片序列,因此不会造成干扰。 - 每个站分配的码片序列:各不相同,且必须
互相正交
(S 和 T 的规格化内积 等于 0)。 - 当码分复用 CDM (Code Division Multiplexing) 信道为多个不同地址的用户所共享时,就称为码分多址 CDMA (Code Division Multiple Access)。
- 发送信息的数据率 = b bit/s,实际发送的数据率 = mb bit/s,同时,所占用频带宽度也提高到原来的 m 倍。(
扩频m倍
)
- 每一个用户可以在
2.5数字传输系统
早期,电话网长途干线采用频分复用 FDM 的模拟传输方式。
目前,大都采用时分复用 PCM
的数字传输方式。
在数字化的同时,光纤
开始成为长途干线最主要的传输媒体。
同步光纤网 SONET:传输速率以 51.84 Mbit/s 为基础。
同步数字系列 SDH :SDH 的基本速率为 155.52 Mbit/s,称为第 1 级同步传递模块 (Synchronous Transfer Module),即 STM-1,相当于 SONET 体系中的 OC-3 速率。
SONET / SDH 标准的意义
- 定义了标准光信号,规定了波长为 1310 nm 和 1550 nm 的激光源。
- 在物理层定义了帧结构。
- 使北美、日本和欧洲这三个地区三种不同的数字传输体制在 STM-1 等级上获得了统一。
- 已成为公认的新一代理想的传输网体制。
- SDH 标准也适合于微波和卫星传输的技术体制。
2.6宽带接入技术
ADSL技术
- 非对称数字用户线 ADSL (Asymmetric Digital Subscriber Line) 技术:用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。
- ADSL 技术把 0~4 kHz 低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用。
ADSL 的 ITU 的标准
:G.992.1(或称 G.dmt)。- 非对称:下行(从 ISP 到用户)带宽远大于上行(从用户到 ISP)带宽。
光纤同轴混合网(HFC 网)
- 把原有线电视网中的同轴电缆主干部分改换为光纤
- HFC 网具有
双向传输功能
,扩展了传输频带
光配线网 ODN
- 光配线网 ODN (Optical Distribution Network):位于光纤干线和广大用户之间。
- 无源的光配线网常称为无源光网络 PON (Passive Optical Network)。
- 采用波分复用 WDM,上行和下行分别使用不同的波长。
- 2 种最流行的无源光网络 PON (Passive Optical Network):以太网无源光网络 EPON (Ethernet PON)、吉比特无源光网络 GPON
第三章 数据链路层
信道类型:
- 点对点信道:使用一对一的
点对点
通信方式。遵守PPP协议 - 广播信道:使用一对多的
广播通信
方式。必须使用专用的共享信道协议
来协调这些主机的数据发送。遵守CSMA/CD协议
3.1使用点对点信道的数据链路层
- 链路 (物理链路) :一条无源的点到点的物理线路段,中间没有任何其他的交换结点。只是一条通路的一个组成部分。
- 数据链路 (逻辑链路):把实现控制数据传输的协议的硬件和软件加到链路上,就构成了数据链路。典型实现:适配器(即网卡)
- 帧:数据链路层协议数据单元
封装成帧
封装成帧 (framing)
:在一段数据的前后分别添加首部和尾部,构成一个帧。
首部和尾部的一个重要作用就是进行帧定界
(即确定帧的界限)。
透明传输
透明传输问题
:如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”,导致错误。
用“字节填充”或“字符填充”法解决透明传输的问题
差错控制
在传输过程中可能会产生比特差错:1 -> 0, 0 -> 1。在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)
。
- 循环冗余检验 CRC (Cyclic Redundancy Check) :每组原始数据后面再添加供差错检测用的 n 位冗余码,然后构成一个帧发送出去。
- 这种为了进行检错而添加的冗余码常称为
帧检验序列 FCS (Frame Check Sequence)
。 - 仅用循环冗余检验 CRC 差错检测技术只能做到
无差错接受 (accept)
。 - “凡是接收端数据链路层接受的帧均无差错”。
- 这种为了进行检错而添加的冗余码常称为
- 可靠传输:数据链路层的发送端发送什么,在接收端就收到什么。
- 传输差错可分为两大类:
- 比特差错;
- 传输差错:帧丢失、帧重复或帧失序等。
在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还
不是可靠传输
。
要做到可靠传输,还必须再加上帧编号、确认和重传等机制。
3.2点对点协议PPP
对于点对点的链路,目前使用得
最广泛
的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。PPP 协议在1994
年就已成为互联网的正式标准
三个组成部分:
- 一个将 IP 数据报封装到串行链路的方法。
- 一个链路控制协议 LCP (Link Control Protocol)。
- 一套网络控制协议 NCP (Network Control Protocol)。
帧格式:
- 标志字段 F: 0x7E 。连续两帧之间只需要用一个标志字段。
- 地址字段 A:只置为 0xFF。实际上不起作用。
- 控制字段 C:通常置为 0x03。
- 协议字段。
透明传输问题: 异步
传输时,使用字节填充法
。同步
传输链路时,采用零比特填充法
。
PPP链路初始化:
- 用户拨号接入 ISP 后,就建立了一条从用户个人电脑到 ISP 的物理连接。
- 用户个人电脑向 ISP 发送一系列的链路控制协议 LCP 分组(封装成多个 PPP 帧),以便建立LCP连接。
- 之后进行网络层配置。网络控制协议 NCP 给新接入的用户个人电脑分配一个临时的 IP 地址。
- 当用户通信完毕时,NCP 释放网络层连接,收回原来分配出去的IP地址。LCP 释放数据链路层连接。最后释放的是物理层的连接。
3.3使用广播信道的数据链路层
局域网的数据链路层
局域网最主要的特点
:
- 网络为一个单位所拥有;
- 地理范围和站点数目均有限。
局域网具有如下主要优点
:
- 具有广播功能,从一个站点可很方便地访问全网。
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和生存性。
局域网数据链路层分为 2 个子层
- 逻辑链路控制 LLC (Logical Link Control) 子层:与传输媒体无关。
- 媒体接入控制 MAC (Medium Access Control) 子层:与传输媒体有关。
适配器的作用 - 进行
串行/并行转换
。 - 对数据进行
缓存
。 - 在计算机的操作系统
安装设备驱动程序
。 - 实现
以太网协议
。 - 计算机通过适配器和
局域网进行通信
CSMA/CD协议
最早的以太网:将许多计算机都连接到一根总线上。
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中。仅当数据帧中的目的地址与适配器硬件地址一致时,才能接收这个数据帧。
总线优点:易于实现广播通信,简单,可靠。
总线缺点:多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败。
以太网采取的 2 种重要措施
- 采用较为灵活的
无连接
的工作方式。
- 不必先建立连接就可以直接发送数据。
- 对发送的数据帧不进行编号,也不要求对方发回确认。
- 发送的数据都使用
曼彻斯特 (Manchester) 编码
。
- 缺点:所占的频带宽度比原始的基带信号增加了一倍。
CSMA/CD (Carrier Sense Multiple Access with Collision Detection):载波监听/多点接入 / 碰撞检测。
- 多点接入:说明这是总线型网络。许多计算机以多点接入的方式连接在一根总线上。
- 载波监听:即“边发送边监听”。不管在想要发送数据之前,还是在发送数据之中,每个站都必须不停地检测信道。
- 碰撞检测:适配器边发送数据,边检测信道上的信号电压的变化情况。电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞(或冲突)。
- 检测到碰撞后:适配器立即停止发送。等待一段随机时间后再次发送。
争用期:512比特时间
信号传播时延对载波监听产生了影响
A 需要单程传播时延的 2 倍的时间,才能检测到与 B 的发送产生了冲突。
以太网的端到端往返时延 2t 称为争用期
,或碰撞窗口。
具体的争用期时间 = 51.2 μs(对于10Mbit/s以太网)。经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。
对于不同速率的以太网,争用期的实际时间会变,不变的是他们都是512比特时间
缘由:
- 对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节。
- 以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。
- 因此,以太网规定了最短有效帧长为 64 字节。凡长度小于 64 字节的帧都是由于冲突而异常中止的无效帧,应当立即将其丢弃。
- 以太网最大端到端单程时延必须小于争用期的一半 (即 25.6 μs),相当于以太网的最大端到端长度约为5 km。
重传时机(动态退避)
截断二进制指数退避 (truncated binary exponential backoff) :
发生碰撞的站停止发送数据后,要退避一个随机时间后再发送数据。
- 基本退避时间 = 2t
- 从整数集合 [0, 1, … , (2k - 1)] 中随机地取出一个数,记为 r。
重传所需的时延 = r ⅹ 基本退避时间。 - 参数 k = Min[重传次数, 10]
第 1 次冲突重传时:
k = 1,r 为 {0,1} 集合中的任何一个数。
第 2 次冲突重传时:
k = 2,r 为 {0,1,2,3} 集合中的任何一个数。
第 3 次冲突重传时:
k = 3,r 为 {0,1,2,3,4,5,6,7} 集合中的任何一个数。 - 当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。
若连续多次发生冲突,表明可能有较多的站参与争用信道。
上述退避算法可使重传需要推迟的平均时间随重传次数而增大(称为动态退避),因而减小发生碰撞的概率,有利于整个系统的稳定。
使用集线器的星型拓扑
传统以太网传输媒体:粗同轴电缆 ->细同轴电缆 -> 双绞线。
传统以太网使用同轴电缆,采用总线形拓扑结构
采用双绞线的以太网采用星形拓扑
,在星形的中心则增加了一种可靠性非常高的设备,叫做集线器 (hub)
- 使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个
传统的以太网
那样运行。 - 使用集线器的以太网
在逻辑上仍是一个总线网
,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。 - 很像一个多接口的转发器,
工作在物理层
。 - 采用了
专门芯片
,进行自适应串音回波抵消,减少了近端串音。
以太网信道利用率
多个站在以太网上同时工作就可能会发生碰撞。当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%
。
假设:单程端到端传播时延 = τ,则争用期长度 = 2 τ。检测到碰撞后不发送干扰信号。
设:帧长 = L (bit),数据发送速率 = C (bit/s),则帧的发送时间 T0 = L/C (s)。
成功发送一个帧需要占用信道的时间是 T0 + τ
,比帧的发送时间要多一个单程端到端时延 τ
。
要提高以太网的信道利用率,就必须减小 τ 与 T0 之比。
在以太网中定义了参数 a = τ/T0
以太网单程端到端时延 τ 与帧的发送时间 T0 之比.
- a → 0,表示一发生碰撞就立即可以检测出来, 并立即停止发送,因而信道利用率很高。
- a 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。
信道利用率的最大值 Smax=T0/(T0+τ) = 1/(1+a)
以太网的MAC层
MAC 层的硬件地址
硬件地址
又称为物理地址,或 MAC 地址。
IEEE 802 标准为局域网规定了一种 48 位的全球地址(简称为地址)是指局域网上的每一台计算机中固化在适配器的 ROM 中的地址
。
如果连接在局域网上的主机或路由器安装有多个适配器,这样的主机或路由器就有多个“地址”。更准确些说,这种 48 位“地址”应当是某个
接口的标识符
。
- IEEE 注册管理机构 RA 负责向厂家分配前 3 个字节 (即高 24 位),称为
组织唯一标识符
OUI (Organizationally Unique Identifier)。 - 厂家自行指派后 3 个字节 (即低 24 位),称为
扩展标识符
(extended identifier)。 - 必须保证生产出的适配器
没有重复地址
。 - 地址被
固化
在适配器的 ROM 中。
MAC 帧的格式
常用的以太网 MAC 帧格式有 2 种标准:
- DIX Ethernet V2 标准
- IEEE 的 802.3 标准
最常用的 MAC 帧是以太网 V2 的格式
。
- 由硬件在帧的前面插入 8 字节。第一个字段共 7 个字节,是前同步码,用来迅速
实现 MAC 帧的比特同步
。第二个字段 1 个字节是帧开始定界符,表示后面的信息就是 MAC 帧。 - 类型字段:用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。
- 数据字段的正式名称是 MAC 客户数据字段。最小长度 64 字节 - 18 字节的首部和尾部 =
数据字段的最小长度(46字节)
- 当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的
MAC 帧长不小于 64
字节。
无效的MAC帧:
- 数据字段的长度与长度字段的值不一致;
- 帧的长度不是整数个字节;
- 用收到的帧检验序列 FCS 查出有差错;
- 数据字段的长度不在 46 ~ 1500 字节之间。
对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。
IEEE 802.3 MAC 与以太网 V2 MAC 帧格式的区别:
当“长度/类型”字段值大于 0x0600 时,表示“类型”;小于 0x0600 时,表示“长度”且数据字段必须装入逻辑链路控制 LLC 子层的 LLC 帧。
现在市场上流行的都是以太网 V2 的 MAC 帧,但大家也常常把它称为 IEEE 802.3 标准的 MAC 帧。
3.4扩展的以太网
在物理层扩展以太网
- 使用光纤扩展:主机使用光纤和一对光纤调制解调器连接到集线器
- 使用集线器扩展:用多个集线器连成更大的以太网
- 优点
- 使原来属于不同碰撞域(冲突域)的计算机能够
跨碰撞域通信
。 - 扩大了以太网覆盖的地理范围。
- 缺点
- 碰撞域增大了,总的吞吐量未提高。
- 如果使用不同的以太网技术(如数据率不同),那么就不能用集线器将它们互连起来。
碰撞域(collision domain)又称为冲突域,指网络中一个站点发出的帧会与其他站点发出的帧产生碰撞或冲突的那部分网络。碰撞域越大
,发生碰撞的概率越高
。
在数据链路层扩展以太网
- 使用网桥扩展:主机使用光纤和一对光纤调制解调器连接到集线器
- 根据 MAC 帧的目的地址对收到的帧进行转发和过滤。或者转发,或者丢弃。
- 使用交换机扩展:用多个集线器连成更大的以太网
- 多端口的网桥。
交换机特点
- 实质上是一个
多接口网桥
。
通常有十几个或更多的接口。 - 每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在
全双工
方式。 - 以太网交换机具有
并行性
。
能同时连通多对接口,使多对主机能同时通信。
相互通信的主机都独占传输媒体,无碰撞地传输数据。
每一个端口和连接到端口的主机构成了一个碰撞域。 - 接口有
存储器
。 即插即用
。其内部的帧交换表
(又称为地址表)是通过自学习算法自动地逐渐建立起来的。这种交换表就是一个内容可寻址存储器CAM (Content addressable Memory)。- 使用专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多。
- 以太网交换机的性能远远超过普通的集线器,而且价格并不贵。
- 每个用户独享带宽,增加了总容量
交换机的自学习功能
生成树协议 STP (Spanning Tree Protocol) 要点:不改变网络的实际拓扑,但在逻辑上
则切断某些链路,使得从一台主机到所有其他主机的路径是无环路的树状结构
,从而消除了兜圈子现象
从总线以太网到星形以太网
虚拟局域网
由于以太网存在广播风暴
、安全问题、管理困难等问题,因此需要用到虚拟局域网的服务。
虚拟局域网 VLAN 是由一些局域网网段构成的与物理位置无关的逻辑组
,而这些网段具有某些共同的需求。每一个 VLAN 的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个 VLAN。
优点:
- 改善了性能
- 简化了管理
- 降低了成本
- 改善了安全性
虚拟局域网其实只是局域网给用户提供的一种服务,并不是一种新型局域网。
虚拟局域网使用的以太网帧格式:802.1Q 帧(带标记的以太网帧)
3.5高速以太网
100BASE-T 以太网
- 可在
全双工
方式下工作而无冲突发生。 - 在全双工方式下工作时,不使用 CSMA/CD 协议。
- 使用 IEEE 802.3 协议规定的 MAC 帧格式。
- 保持最短帧长不变,但将一个网段的最大电缆长度减小到 100 米。
- 帧间时间间隔从原来的 9.6 s 改为现在的 0.96 us。
吉比特以太网
特点:
- 允许在 1 Gbit/s 下以全双工和半双工 2 种方式工作。
- 使用 IEEE 802.3 协议规定的 MAC 帧格式。
- 在
半双工
方式下使用 CSMA/CD 协议,而在全双工方式不使用 CSMA/CD 协议。 - 与 10BASE-T 和 100BASE-T 技术向后兼容。
10 吉比特以太网(10GE)主要特点:
- 万兆比特。
- 与 10、100 Mbit/s 和 1 Gbit/s 以太网的
帧格式完全相同
。 - 保留了 IEEE 802.3 标准规定的以太网最小和最大帧长。
只使用光纤
作为传输媒体。- 只工作在全双工方式,没有争用问题,不使用 CSMA/CD 协议。
以太网宽带接入具有以下特点:
- 可以提供
双向
的宽带通信。 - 可以根据用户对带宽的需求灵活地进行带宽升级。
- 可以实现端到端的以太网传输,中间
不需要再进行帧格式的转换
。 - 但
不支持
用户身份鉴别。
第四章 网络层
4.1 两种服务和两个层面
两种服务
- 虚电路服务:可靠通信由网络来保证
虚电路只是一条逻辑上的连接,分组都沿着这条逻辑连接按照存储转发方式传送,并不是真正建立了一条物理连接。
- 数据报服务:可靠通信由用户主机来保证
由于电信网的成功经验,有些人认为计算机应该模仿打电话的通信方式(虚电路服务),但是互联网的先驱者认为,电话是没有智能和差错处理能力的,但计算机却有很强差错处理能力,因此选用数据报服务的思路,从而使路由器工作更简单,降低了路由器的造价成本,使得网络能发展到如今规模。
两个层面
- 数据层面
- 路由器根据本路由器生成的转发表,把收到的分组从查找到的对应接口转发出去。
独立
工作。- 采用
硬件
进行转发,快。
- 控制层面
- 根据路由选择协议所用的路由算法计算路由,创建出本路由器的路由表。
- 许多路由器
协同
动作。 - 采用
软件
计算,慢。
软件定义网络SDN
路由器:查找转发表,转发分组。
远程控制器:计算出最佳的路由,在每一个路由器中生成其正确的转发表。
以前是路由器自己计算自己的路由表然后再查表转发,现在由远程控制器总揽全局,为每一个分组计算最佳路由并生成转发表,路由器只需要查表转发
4.2 网际协议IP
与网际协议 IPv4 配套的 3 个协议:
- 地址解析协议 ARP (Address Resolution Protocol)
- 网际控制报文协议 ICMP (Internet Control Message Protocol)
- 网际组管理协议 IGMP (Internet Group Management Protocol)
虚拟互连网络
使用路由器
实现异构网络互连互通
使用转发器或网桥不称为网络互连:转发器、网桥或交换机仅把一个网络扩大了,仍然是一个网络,属于网络内的中间设备。
虚拟互连网络(IP网)
物理网络的异构性客观存在,但是利用IP协议使得在网络层上看起来好像是一个统一的网络,当互联网上的主机进行通信时,就好像在一个网络上通信一样,看不见互连的各具体的网络异构细节。因此称为虚拟互连网络,简称IP网。在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。
IP地址
互联网上的每台主机
(或路由器)的每个接口
分配一个在全世界唯一
的 IP 地址。
由互联网名字和数字分配机构 ICANN (Internet Corporation for Assigned Names and Numbers) 进行分配。
IP 地址采用 2 级结构:网络号
和主机号
IP地址在整个互联网范围内是唯一
的。
IP 地址指明了连接到某个网络上的一个主机
分类的IP地址 :
- 管理简单;
- 使用方便;
- 转发分组迅速;
- 划分子网,灵活地使用。
无分类编址CIDR
CIDR (Classless Inter-Domain Routing) :无分类域间路由选择。
- 消除了传统的 A 类、B 类和 C 类地址以及划分子网的概念,可以更加有效地分配 IPv4 的地址空间,但无法解决 IP 地址枯竭的问题。
- 网络前缀:
- 最大的区别:前缀的位数 n 不固定,可以在 0 ~ 32 之间选取
任意值
。 - CIDR 记法:
斜线记法 (slash notation)
a.b.c.d / n:二进制 IP 地址的前 n 位是网络前缀。
例如:128.14.35.7/20:前 20 位是网络前缀。
- 最大的区别:前缀的位数 n 不固定,可以在 0 ~ 32 之间选取
- 地址块:
网络前缀都相同的所有连续的
IP 地址组成一个 CIDR 地址块- 一个 CIDR 地址块包含的 IP 地址数目,取决于网络前缀的位数。
- 每一个 CIDR 地址块中的地址数一定是 2 的整数次幂
- 地址掩码 (address mask):
- 目的:让机器从 IP 地址迅速
算出网络地址
。 - 由一连串 1 和接着的一连串 0 组成,而 1 的个数就是
网络前缀
的长度。 - 网络地址 = (二进制的 IP 地址) AND (地址掩码)
- 目的:让机器从 IP 地址迅速
- 路由聚合
IP 地址的特点
- 每个 IP 地址都由网络前缀和主机号两部分组成。
- IP 地址是标志一台主机(或路由器)和一条链路的接口。
- 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为
多归属主机 (multihomed host)
。 - 一个路由器至少应当连接到两个网络,因此
一个路由器至少应当有两个不同的 IP 地址
。路由器的每一个接口都有一个不同网络号的 IP 地址。 同一个局域网
上的主机或路由器的IP 地址中的网络号必须一样
。
- 当一台主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号必须是不同的。这种主机称为
- 转发器或交换机连接起来的若干个局域网仍为一个网络
- 按照互联网的观点,一个网络(或子网)是指具有
相同网络前缀
的主机的集合。 - 转发器或交换机连接起来的若干个局域网都具有同样的网络号,它们仍为一个网络。
- 具有不同网络号的局域网必须使用
路由器
进行互连。
- 按照互联网的观点,一个网络(或子网)是指具有
- 在 IP 地址中,所有分配到网络前缀的网络都是平等的。
- 互联网
同等对待
每一个 IP 地址,不管是范围很小的局域网,还是可能覆盖很大地理范围的广域网
- 互联网
两个路由器直接相连的接口处,可指明也可不指明 IP 地址。
如指明 IP 地址,则这一段连线就构成了一种只包含一段线路的特殊“网络” 。这种网络仅需两个 IP 地址,可以使用 /31 地址块。主机号可以是 0 或 1。
IP 地址与 MAC 地址
IP地址
- 虚拟地址、软件地址、逻辑地址。
- 网络层和以上各层使用。
- 放在 IP 数据报的首部。
MAC地址
- 固化在网卡上的 ROM 中。
- 硬件地址、物理地址。
- 数据链路层使用。
- 放在 MAC 帧的首部。
- 在 IP 层抽象的互联网上只能看到 IP 数据报。
- 在局域网的链路层,只能看见 MAC 帧。
- 数据报IP地址一直没变,MAC帧地址每段转发不同
- 尽管互连在一起的网络的 MAC 地址体系各不相同,但 IP 层抽象的互联网却
屏蔽
了下层这些很复杂的细节。
地址解析协议 ARP
作用:从 IP 地址解析出 MAC 地址。
-
ARP 高速缓存 (ARP cache)
- 存放 IP 地址到 MAC 地址的映射表。映射表< IP 地址;MAC 地址;生存时间 (Age);类型等 >
- 映射表动态更新(新增或超时删除)
- 存放最近获得的 IP 地址到 MAC 地址的绑定。减少 ARP 广播的通信量。
- 为进一步减少 ARP 通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到 MAC 地址的映射写入 ARP 请求分组。
- 当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的 IP 地址及其对应的 MAC 地址映射写入主机 B 自己的 ARP 高速缓存中。不必在发送 ARP 请求。
-
ARP 工作
- 当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时:
-
ARP 查找 IP 地址对应的 MAC地址
- 本局域网上广播发送 ARP 请求(路由器不转发 ARP 请求)。
- ARP 请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。
- 单播 ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。
- ARP 分组封装在以太网帧中传输。
使用ARP四种典型情况:
4. 发送方是主机,要把 IP 数据报发送到本网络上的另一个主机。这时用 ARP 找到目的主机的硬件地址。
5. 发送方是主机,要把 IP 数据报发送到另一个网络上的一个主机。这时用 ARP 找到本网络上的一个路由器的硬件地址。剩下的工作由这个路由器来完成。
6. 发送方是路由器,要把 IP 数据报转发到本网络上的一个主机。这时用 ARP 找到目的主机的硬件地址。
7. 发送方是路由器,要把 IP 数据报转发到另一个网络上的一个主机。这时用 ARP 找到本网络上另一个路由器的硬件地址。剩下的工作由这个路由器来完成。
同网络直接广播找,跨网络只找路由的地址,剩下的转发都交给它
IP数据报格式
- 首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。
- 版本——占 4 位,指 IP 协议的版本。目前的 IP 协议版本号为 4 (即 IPv4)。
- 首部长度——占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的
最大值是 60 字节
。 - 区分服务——占 8 位,用来获得更好的服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段
- 总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。
- 标识 (identification) ——占 16 位,它是一个计数器,用来产生 IP 数据报的标识。
- 标志(flag) ——占 3 位,目前只有前两位有意义。标志字段的最低位是 MF (More Fragment)。MF=1 表示后面还有分片,MF=0 表示最后一个分片。标志字段中间的一位是 DF (Don’t Fragment) 。只有当 DF=0 时才允许分片。
- 片偏移——占 13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。
- 生存时间——占 8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。
- 协议——占 8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程
- 首部检验和——占 16 位,只检验数据报的首部,
不检验数据部分
。这里不采用 CRC 检验码而采用简单的计算方法。数据报每经过一个路由器,路由器都要重新计算一下首部检验和. - 源地址和目的地址都各占 32 位。
4.3 IP层转发分组的过程
基于终点的转发
- 分组在互联网中是
逐跳转发
的。 - 基于终点的转发:基于分组首部中的
目的地址
传送和转发。 - 路由器 R1 收到分组后查找转发表。逐条进行前缀匹配
最长前缀匹配
- 使用 CIDR 时,在查找转发表时可能会得到
不止一个匹配结果
。 最长前缀匹配原则 (longest-prefix matching)
:选择前缀最长
的一个作为匹配的前缀。- 网络前缀越长,其地址块就越小,因而路由就越具体。
- 可以把前缀最长的排在转发表的第 1 行,以加快查表
主机路由 (host route)
- 又叫做
特定主机路由
。 - 是对特定目的主机的 IP 地址专门指明的一个路由。
- 网络前缀就是 a.b.c.d/32
- 放在转发表的最前面。
默认路由 (default route)
- 不管分组的最终目的网络在哪里,都由指定的路由器 R 来处理
- 用特殊前缀 0.0.0.0/0 表示。
使用二叉线索查找转发
二叉线索
(binary trie):一种特殊结构的树,可以快速在转发表中找到匹配的叶节点。- 从二叉线索的根节点
自顶向下
的深度最多有32
层,每一层对应于 IP 地址中的一位。 - 为简化二叉线索的结构,可以用
唯一前缀
(unique prefix) 来构造二叉线索。 - 为了提高二叉线索的查找速度,广泛使用了各种
压缩
技术。
4.4 网际控制报文协议ICMP
网际控制报文协议ICMP (Internet Control Message Protocol)
-
允许主机或路由器
报告差错情况
和提供有关异常情况的报告。 -
ICMP 是互联网的
标准协议
。 -
但 ICMP 不是高层协议,而是 IP 层的协议。
-
ICMP报文格式
-
ICMP 报文的种类
-
ICMP 差错报告报文的数据字段的内容
-
不应发送 ICMP 差错报告报文的几种情况
- 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文。
- 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文。
- 对具有多播地址的数据报都不发送 ICMP 差错报告报文。
- 对具有特殊地址(如127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文。
-
PING (Packet InterNet Groper)是ICMP的直接应用之一
- 用来测试两个主机之间的
连通性
。 - 使用了
ICMP 回送请求
与回送回答报文。 - 是应用层直接使用网络层 ICMP 的例子,没有通过运输层的 TCP 或 UDP。
- 用来测试两个主机之间的
4.5 IPv6
解决IPv4 地址耗尽问题的根本措施:采用具有更大地址空间的新版本的 IP,即 IPv6。
IPv6的基本首部
-
IPv6 仍支持
无连接
的传送。 -
将协议数据单元 PDU 称为
分组
(packet) 。 -
主要变化:
- 更大的地址空间。 将地址从 IPv4 的 32 位 增大到了 128 位。
- 扩展的地址层次结构。可以划分为更多的层次。
- 灵活的首部格式。定义了许多可选的扩展首部。
- 改进的选项。允许数据报包含有选项的控制信息,其选项放在有效载荷中。
- 允许协议继续扩充。更好地适应新的应用。
- 支持即插即用(即自动配置)。不需要使用 DHCP。
- 支持资源的预分配。支持实时视像等要求保证一定的带宽和时延的应用。
- IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。
-
IPv6 数据报
-
基本首部 (base header)
-
有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部 (extension header),再后面是数据部分。
-
IPv6的地址
三种基本类型:
单播 (unicast):传统的点对点通信。
多播 (multicast):一点对多点的通信。
任播 (anycast):IPv6 增加的一种类型。任播的终点是一组计算机,但数据报在交付时只交付其中的一个
。通常是按照路由算法得出的距离最近的一个。
IPv6 将实现 IPv6 的主机和路由器均称为节点
。
一个节点可能有多个与链路相连的接口。
IPv6 地址是分配给节点上接口
的。
- 一个具有多个接口的节点可以有多个单播地址。
- 其中的任何一个地址都可以当作到达该节点的目的地址。
- 在 IPv6 中,每个地址占 128 位,地址空间大于 3.4 1038 。
- 使用
冒号十六进制记法
(colon hexadecimal notation, 简写为 colon hex):16 位的值用十六进制值表示,各值之间用冒号分隔 - 零压缩 (zero compression):一串连续的零可以用一对
冒号
取代,FF05:0:0:0:0:0:0:B3可压缩为:FF05::B3
注意:在任一地址中,只能使用一次零压缩
。 - 结合使用点分十进制记法的后缀在 IPv4 向 IPv6 的转换阶段特别有用。
例如:
CIDR 的斜线表示法仍然可用,但取消了子网掩码。
例如:60 位的前缀 12AB00000000CD3 可记为:12AB:0000:0000:CD30:0000:0000:0000:0000/60
或 12AB::CD30:0:0:0:0/60 (零压缩)
或 12AB:0:0:CD30::/60 (零压缩)
从IPv4向IPv6过渡
方法:逐步演进,向后兼容。
向后兼容:IPv6 系统必须能够接收和转发 IPv4 分组,并且能够为 IPv4 分组选择路由。
两种过渡策略:
-
使用双协议栈
-
使用隧道技术
ICMPv6
IPv6 也需要使用 ICMP 来反馈一些差错信息。新的版本称为 ICMPv6
4.6 互联网的路由选择协议
路由选择协议属于
网络层控制层面
的内容
静态路由选择策略:
- 非自适应路由选择;
- 不能及时适应网络状态的变化;
- 简单,开销较小。
动态路由选择策略:
- 自适应路由选择;
- 能较好地适应网络状态的变化;
- 实现较为复杂,开销较大。
分为 2 个层次:
- 自治系统之间的路由选择 或
域间路由选择
(interdomain routing); - 自治系统内部的路由选择 或
域内路由选择
(intradomain routing);
自治系统 AS
:
是在单一技术管理下的许多网络、IP地址以及路由器,而这些路由器使用一种自治系统内部的路由选择协议和共同的度量。每一个 AS 对其他 AS 表现出的是一个单一的和一致的路由选择策略
。
2 大类路由选择协议:
- 内部网关协议 IGP:RIP,OSPF(常用)
- 外部网关协议 EGP
内部网关协议RIP
路由信息协议 RIP (Routing Information Protocol) 是一种分布式
的、基于距离向量
的路由选择协议。
互联网的标准协议。
最大优点:简单。
要求网络中的每个路由器都要维护
从它自己到其他每一个目的网络的距离记录
。
路由器到直接连接的网络的距离 = 1。
路由器到非直接连接的网络的距离 = 所经过的路由器数 + 1。
RIP 协议中的“距离”也称为“跳数”(hop count)
,每经过一个路由器,跳数就加 1。
RIP 协议的三个特点:
- 仅和
相邻
路由器交换信息。 - 交换的信息是当前本路由器所知道的
全部
信息,即自己的路由表。 - 按
固定时间间隔
交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息
路由表主要信息:目标网络、距离、下一跳路由
路由表更新规则: 使用距离向量算法
找出到达每个目的网络的最短距离
。
距离向量算法
算法基础:Bellman-Ford 算法
对每个相邻路由器(假设其地址为 X)发送过来的 RIP 报文,路由器:
(1) 修改 RIP 报文中的所有项目(即路由):把“下一跳”字段中的地址都改为 X,并把所有的“距离”字段的值加 1
。
(2) 对修改后的 RIP 报文中的每一个项目,重复以下步骤:
若路由表中没有
目的网络N,则把该项目添加
到路由表中。
若路由表中网络 N 的下一跳
路由器为 X,则用收到的项目替换
原路由表中的项目。
若收到项目中的距离小于
路由表中的距离,则用收到项目更新
原路由表中的项目。否则什么也不做。
(3) 若 3 分钟还未收到相邻路由器的更新路由表,则把此相邻路由器记为不可达路由器,即将距离置为 16
(表示不可达
)。
(4) 返回。
RIP 协议特点:好消息传播得快,坏消息传播得慢。
当网络出现故障时,要经过比较长的时间才能将此信息(坏消息)传送到所有的路由器。
理解例子:在网1出了故障时
R1 说:“我到网 1 的距离是 16 (表示无法到达),是直接交付。”
但 R2 在收到 R1 的更新报文之前,还发送原来的报文,
因为这时 R2 并不知道 R1 出了故障。
R1 收到 R2 的更新报文后,误认为可经过 R2 到达网 1,于是更新自己的路由表,说:“我到网 1 的距离是 3,下一跳经过 R2”。然后将此更新信息发送给 R2。
R2 以后又更新自己的路由表为“1, 4, R1”,表明 “我到网 1 距离是 4,下一跳经过 R1”。
这样不断更新下去,直到 R1 和 R2 到网 1 的距离都增大到 16 时, R1 和 R2 才知道网 1 是不可达的。
RIP 协议的优缺点
优点:
实现简单
,开销较小。
缺点:
网络规模有限
。最大距离为 15(16 表示不可达)。
交换的路由信息为完整路由表,开销较大
。
坏消息传播得慢
,收敛时间过长。
内部网关协议OSPF
- 开放最短路径优先 OSPF (Open Shortest Path First)是为
克服 RIP 的缺点
在 1989 年开发出来的。 - 原理很简单,但实现很复杂。
- 使用了 Dijkstra 提出的最短路径算法 SPF。
- 采用分布式的链路状态协议 (link state protocol)。
- 现在使用 OSPFv2。
- 采用
洪泛法 (flooding)
,向本自治系统中所有路由器
发送信息。 - 发送的信息是与本路由器
相邻的所有路由器的链路状态
,但这只是路由器所知道的部分信息。- 链路状态:说明本路由器都和哪些路由器
相邻
,以及该链路的度量
(metric)。
- 链路状态:说明本路由器都和哪些路由器
- 当链路状态发生变化或每隔一段时间(如30分钟),路由器才用洪泛法向所有路由器发送此信息。
- OSPF 更新过程收敛速度快。
OSPF 工作过程
1,确定邻站可达。
相邻路由器每隔 10 秒钟要交换一次问候分组。
若有 40 秒钟没有收到某个相邻路由器发来的问候分组,则可认为该相邻路由器是不可达的。
2,同步链路状态数据库。
同步
:指不同路由器的链路状态数据库的内容是一样的。
两个同步的路由器叫做完全邻接
的 (fully adjacent) 路由器。
3,更新链路状态。
只要链路状态发生变化,路由器就使用链路状态更新分组,采用可靠的洪泛法
向全网更新链路状态。
为确保链路状态数据库与全网的状态保持一致,OSPF 还规定:每隔一段时间,如 30 分钟,要刷新一次数据库中的链路状态。
外部网关协议BGP
BGP 是不同自治系统的路由器之间
交换路由信息的协议。
- 用于自治系统 AS 之间的路由选择。
- 只能是力求选择出一条能够到达目的网络且
比较好的路由
(不能兜圈子),而并非要计算出一条最佳路由。- 互联网的规模太大,使得自治系统AS之间路由选择非常困难。
- 自治系统AS之间的路由选择必须考虑有关策略。
- 采用了
路径向量
(path vector) 路由选择协议。
BGP 路由信息 = [ 前缀, BGP属性 ] = [ 前缀,自治系统路径 AS-PATH, 下一跳NEXT-HOP ]
路由器的构成
路由器工作在网络层,用于互连网络。
是互联网中的关键设备。
路由器的主要工作:转发分组
。
把从某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器。
路由器结构
4.7 IP多播
1988 年,Steve Deering 首次提出 IP 多播的概念。
多播 (multicast):以前曾译为组播。
目的:更好地支持一对多通信。多播可大大节约网络资源
一对多通信:一个源点发送到许多个终点
在互联网上进行多播就叫做 IP 多播。
互联网范围的多播要靠路由器来实现。
能够运行多播协议的路由器称为多播路由器 (multicast router)。
多播路由器也可以转发普通的单播 IP 数据报。
从 1992 年起,在互联网上开始试验虚拟的多播主干网 MBONE (Multicast Backbone On the InterNEt)。
在 IP 多播数据报的目的地址需要写入多播组的标识符
。
多播组的标识符就是 IP 地址中的 D 类地址
(多播地址)。
地址范围:224.0.0.0 ~ 239.255.255.255
每一个 D 类地址标志一个多播组。
多播地址只能用于目的地址,不能用于源地址。
转发多播数据报时使用三种方法:
(1) 洪泛与剪除
(2) 隧道技术 (tunneling)
(3) 基于核心的发现技术
4.8 虚拟专用网VPN和网络地址转换NAT
本地地址:仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
全球地址:全球唯一的 IP 地址,必须向互联网的管理机构申请。
专用地址只能用作本地地址,而不能用作全球地址。
互联网中的所有路由器对目的地址是专用地址的数据报一律不进行转发。
采用专用 IP 地址的互连网络称为专用互联网或本地互联网,或更简单些,就叫做专用网。
专用 IP 地址也叫做可重用地址
(reusable address)。
三个专用 IP 地址块
:
A类,从 10.0.0.0 到 10.255.255.255。
B类,从 172.16.0.0 到 172.31.255.255。
C类,从 192.168.0.0 到 192.168.255.255。
VPN
VPN:利用公用互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网 VPN (Virtual Private Network)。
专用网:指这种网络是为本机构的主机用于机构内部的通信
,而不是用于和网络外非本机构的主机通信。
虚拟:表示实际上没有使用通信专线
,只是在效果上和真正的专用网一样。
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密
。
必须为每一个场所购买专门
的硬件和软件,并进行配置,使每一个场所的 VPN 系统都知道其他场所的地址。
内联网 (intranet):同一个机构的内部网络所构成的 VPN。
外联网 (extranet):一个机构和某些外部机构共同建立的 。
远程接入 VPN (remote access VPN):允许外部流动员工通过接入 VPN 建立 VPN 隧道访问公司内部网络,好像就是使用公司内部的本地网络访问一样。
NAT
网络地址转换 NAT (Network Address Translation)
- 1994 年提出。
- 需要在专用网连接到互联网的
路由器上安装 NAT 软件
。 - 装有 NAT 软件的路由器叫做
NAT路由器
,它至少有一个有效的外部全球 IP 地址。 - 所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上
将其本地地址转换成全球 IP 地址
,才能和互联网连接。
在内部主机与外部主机通信时,在 NAT 路由器上发生了两次地址转换:
- 离开专用网时:替换源地址,将内部地址替换为全球地址。
- 进入专用网时:替换目的地址,将全球地址替换为内部地址。
- 当 NAT 路由器具有 n 个全球 IP 地址时,专用网内最多可以
同时
有 n 台主机接入到互联网。 - 可以使专用网内较多数量的主机轮流使用 NAT 路由器有限数量的全球 IP 地址。
- 通过 NAT 路由器的通信必须由
专用网内的主机
发起,因此,专用网内部的主机不能充当服务器
用。
网络地址与端口号转换 NAPT
- NAT 并不能节省 IP 地址。
- NAPT 可以使多台拥有本地地址的主机,
共用一个 全球 IP 地址
,同时和互联网上的不同主机进行通信。 - 使用
运输层端口号
的 NAT 叫做网络地址与端口号转换 NAPT (Network Address and Port Translation),而不使用端口号的 NAT 就叫做传统的 NAT (traditional NAT)。 - NAPT 把专用网内不同的源 IP 地址都转换为
相同的全球 IP 地址
,将 TCP 源端口号转换为新的TCP 端口号(互不相同)
。 - 收到从互联网发来的应答时,从 IP 数据报的数据部分找出运输层端口号,从 NAPT 转换表中找到正确的目的主机。
4.9 多协议标签交换MPLS
MPLS (MultiProtocol Label Switching):互联网建议标准。
多协议:在 MPLS 的上层可以采用多种协议。
标签:MPLS 利用面向连接技术,使每个分组携带一个叫做标签 (label) 的小整数。标签交换路由器用标签值检索转发表,实现分组的快速转发
。
MPLS工作原理
MPLS 并没有取代 IP,而是作为一种 IP 增强技术。
MPLS 域 (MPLS domain) :指该域中有许多彼此相邻的路由器,并且所有的路由器都是支持 MPLS 技术的标记交换路由器 LSR (Label Switching Router)
。
LSR 同时具有标记交换
和路由选择
这两种功能。标记交换功能是为了快速转发,路由选择功能是为了构造转发表。
- 找出标签交换路径 LSP。
各 LSR 使用标签分配协议 LDP (Label Distribution Protocol) 交换报文,找出和标签相对应的标签交换路径 LSP (Label Switched Path)。整个标签交换路径就像一条虚连接一样。 - 打标签,然后转发。
入口节点 (ingress node) 给进入 MPLS 域的 IP 数据报打上标签(实际上是插入一个 MPLS 首部),并按照转发表把它转发给下一个 LSR。以后的所有 LSR 都按照标签进行转发。
给 IP 数据报打标签的过程叫做分类 (classification)。 - 标签对换。
一个标签仅在两个 LSR 之间
才有意义。
LSR 要做两件事:转发,更新标记。
更新标记:把入标记更换成为出标记。称之为标签对换 (label swapping)。 - 去除标签。
当分组离开 MPLS 域时,MPLS 出口节点 (egress node) 把分组的标签去除。
把 IP 数据报交付给非 MPLS 的主机或路由器。
MPLS首部位置与格式
给 IP 数据报打上标记就是在以太网帧首部和 IP 数据报首部之间插入一个 4 字节的 MPLS 首部。
新一代MPLS
新一代的 MPLS:段路由选择协议 SR (Segment Routing)
。
段 (segment):标签,是转发指令的一种标识符。
SR 工作原理:
- 基于标签交换,但不需要使用协议 LDP。
- 由源节点为发送的报文指定路径,并将路径转换成有序的段列表 (Segment List),即 MPLS 标签栈,它被封装在分组首部。
- 网络中的其他节点就执行首部中的指令(即标签)进行转发。
4.10 软件定义网络SDN简介
软件定义网络 SDN(Software Defined Network)由斯坦福大学N. McKeown 于 2009 年首先提出。
SDN 体系结构
SDN 控制器
第五章 运输层
5.1 运输层协议概述
进程之间的通信
- 运输层实现应用进程之间的逻辑通信
- 运输层向高层用户
屏蔽
了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道
。 - 保证数据传输的可靠性
运输层的两个协议
- 用户数据报协议 UDP (User Datagram Protocol)
- 传送数据之前
不需要先建立连接
。 - 收到 UDP 报后,
不需要给出任何确认
。 不提供可靠
交付,但是一种最有效的工作方式。
- 传送数据之前
- 传输控制协议 TCP (Transmission Control Protocol)
- 提供
可靠
的、面向连接
的运输服务。 - 不提供广播或多播服务。
- 开销较多。
- 提供
运输协议数据单元 TPDU (Transport Protocol Data Unit):两个对等运输实体在通信时传送的数据单位。
TCP 报文段 (segment):TCP 传送的数据单位协议。
UDP 报文或用户数据报:UDP 传送的数据单位协议。
运输层的端口
复用(发送):应用进程都可以通过运输层再传送到 IP 层(网络层)。
分用(接收):运输层从 IP 层收到发送给应用进程的数据后,必须分别交付给指明的
各应用进程。
在运输层使用协议端口号 (protocol port number)指明进程,或通常简称为端口 (port)。把端口设为通信的抽象终点
。
- 端口用一个
16 位端口号
进行标志,允许有 65535 个不同的端口号。 - 端口号只具有
本地意义
,只是为了标志
本计算机应用层中的各进程
。 - 在互联网中,不同计算机的相同端口号没有联系。
- 两个计算机中的进程要互相通信,不仅
必须
知道对方的端口号
,而且还要知道对方的IP 地址
。
服务端使用端口号
- 熟知端口(全球通用)
- 登记端口(在 IANA 登记)
客户端使用端口号
- 短暂端口:通信结束后,被系统收回
5.2 用户数据报协议UDP
UDP 只在 IP 的数据报服务之上增加了一些功能:
- 复用和分用
- 差错检测
主要特点:
- 无连接。发送数据之前不需要建立连接。
- 使用尽最大努力交付。即不保证可靠交付。
- 面向报文。UDP 一次传送和交付一个完整的报文。
- 没有拥塞控制。网络出现的拥塞不会使源主机的发送速率降低。很适合多媒体通信的要求。
- 支持一对一、一对多、多对一、多对多等交互通信。
- 首部开销小,只有 8 个字节。
UDP数据报格式
(1) 源端口:源端口号。在需要对方回信时选用。不需要时可用全 0。
(2) 目的端口:目的端口号。终点交付报文时必须使用。
(3) 长度:UDP 用户数据报的长度,其最小值是 8(仅有首部)。
(4) 检验和:检测 UDP 用户数据报在传输中是否有错。有错就丢弃。
5.3 传输控制协议TCP
主要特点:
- TCP 是
面向连接
的运输层协议。 - 每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。
- TCP 提供
可靠交付
的服务。 - TCP 提供
全双工
通信。 - 面向
字节流
TCP 中的“流”(stream) 指的是流入或流出进程的字节序列
。
面向字节流:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流
。 - 接收方应用程序收到的字节流必须和发送方应用程序发出的
字节流完全一样
。 - TCP 根据对方给出的
窗口值
和当前网络拥塞程度
来决定一个报文段应包含多少个字节,形成 TCP 报文段。
套接字socket
TCP 连接的端点:套接字 (socket)
或插口。
每一条 TCP 连接唯一地
被通信两端的两个端点(即两个套接字)所确定
套接字 socket= (IP地址 : 端口号)
TCP 连接 ::= {socket1, socket2} = {(IP1: port1),(IP2: port2)}
TCP 连接就是由协议软件
所提供的一种抽象。
同一个 IP 地址可以有多个不同的 TCP 连接。
同一个端口号也可以出现在多个不同的 TCP 连接中。
5.4 可靠传输的工作原理
停止等待协议
每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
全双工通信的双方既是发送方也是接收方。
差错情况:
- B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。
- M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。
A 如何知道 B 是否正确收到了 M1 呢? 解决方法:超时重传
3. A 为每一个已发送的分组设置一个超时计时器。
4. A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。
5. 若 A 在超时计时器规定时间内没有收到 B 的确认,就认为分组错误或丢失,就重发该分组。
同理,B发送的确认也可能丢失或者迟到,解决方法如下
缺点:信道利用率低
连续ARQ协议
-
流水线传输
-
发送窗口:发送方维持一个发送窗口,位于发送窗口内的分组都可被
连续发送
出去,而不需要等待对方的确认。
发送窗口滑动:发送方每收到一个确认,就把发送窗口向前滑动
一个分组的位置。 -
累积确认:接收方对
按序到达
的最后一个分组
发送确认,表示:到这个分组为止的所有分组都已正确收到了。 -
Go-back-N(回退N):表示需要再退回来重传已发送过的 N 个分组。当通信线路质量不好时,连续 ARQ 协议会带来负面的影响。
5.5 TCP报文段的首部格式
TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段
。
一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。
TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。因此 TCP 首部的最小长度是 20 字节
。
5.6 TCP可靠传输的实现
以字节为单位的滑动窗口
TCP 的滑动窗口是以字节为单位的。
第一,发送窗口是根据接收窗口设置的,但在同一时刻,发送窗口并不总是
和接收窗口一样大(因为有一定的时间滞后)。
第二,TCP 标准没有规定对不按序到达
的数据应如何处理。通常是先临时存放在接收窗口
中,等到字节流中所缺少的字节收到后,再按序交付上层
的应用进程。
第三,TCP 要求接收方必须有累积
确认的功能,以减小传输开销
。接收方可以在合适的时候发送确认,也可以在自己有数据要发送时把确认信息顺便捎带上。但接收方不应过分推迟发送确认,否则会导致发送方不必要的重传,捎带确认实际上并不经常发生。
接收方的应用进程从 TCP 接收缓存中读取尚未被读取的字节。
暂时存放:
(1) 按序到达的、但尚未被接收应用程序读取
的数据;
(2) 未按序到达
的数据。
若不能及时读取,缓存
最终会被填满
,使接收窗口减小
到零。
如果能够及时读取,接收窗口就可以增大,但最大不能超过接收缓存的大小。
超时重传时间的选择
重传时间的选择是 TCP 最复杂的问题之一
TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的时间。
这两个时间之差就是报文段的往返时间 RTT。
加权平均往返时间 RTTS 又称为平滑的往返时间。新的 RTTS = (1 - α) x (旧的 RTTS) + α x (新的 RTT 样本)
- 其中,0≤α<1 。
若 α→0,表示 RTT 值更新较慢。
若 α→1,表示 RTT 值更新较快。
RFC 6298 推荐的 α 值为 1/8,即 0.125。
RTT 偏差的加权平均值RTTD = (1 - β ) x (旧的 RTTD) + β x |RTTS x 新的 RTT 样本|
- 其中:β 是个小于 1 的系数,其推荐值是 1/4,即 0.25
超时重传时间 RTO = RTTS + 4 x RTTD
Karn 算法:解决超时重传导致无法分辨RTT的问题。在计算平均往返时间 RTT 时,只要报文段重传了,就不采用其往返时间样本
缺点:当报文段的时延突然增大很多时,超时重传时间无法更新。
修正的 Karn 算法:报文段每重传一次,就把 RTO 增大一些。新的 RTO = γ x (旧的 RTO)
- 系数 γ 的典型值 = 2
选择确认SACK
问题:若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,那么能否设法只传送缺少的数据而不重传已经正确到达接收方的数据?
选择确认 SACK (Selective ACK) :
- 在建立 TCP 连接时,要在 TCP 首部的选项中
加上允许 SACK 选项
,且双方必须事先商定
好。 - 原来首部中的确认号的用法仍然不变(累积确认)。只是在 TCP 首部中都增加了 SACK 选项,以便报告收到的
不连续的字节块的边界
。 - 左边界 = 第一个字节的序号,右边界 = 最后一个字节序号 + 1。
5.7 TCP的流量控制
利用滑动窗口实现流量控制
流量控制 (flow control) :让发送方的发送速率不要太快,使接收方来得及接收。
流量控制举例以及死锁
情况:
解决死锁:
持续计时器 (persistence timer):只要 TCP 连接的一方收到对方的零窗口通知,就启动该持续计时器。
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),对方在确认这个探测报文段时给出当前窗口值。
- 若窗口仍然是零,收到这个报文段的一方就重新设置持续计时器。
- 若窗口不是零,则死锁的僵局就可以打破了。
TCP的传输效率
控制TCP发送报文段的时机:三种机制
- TCP 维持一个变量,它等于最大报文段长度 MSS。只要缓存中存放的数据达到 MSS 字节时,就组装成一个 TCP 报文段发送出去。
- 由发送方的应用进程指明要求发送报文段,即 TCP 支持的推送 (push) 操作。
- 发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过 MSS)发送出去。
糊涂窗口综合症:每次仅发送一个字节或很少几个字节的数据时,有效数据传输效率变得很低的现象。
解决方法:使用 Nagle 算法。
5.8 TCP的拥塞控制
拥塞控制的原理
拥塞 (congestion):在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分
,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。
拥塞控制与流量控制的区别
拥塞控制
- 防止过多的数据注入到网络中,避免网络中的路由器或链路过载。
- 是一个
全局性
的过程,涉及到所有的主机、路由器,以及与降低网络传输性能有关的所有因素。
流量控制
- 抑制发送端发送数据的速率,以使接收端来得及接收。
- 点对点通信量的控制,是个
端到端
的问题。
拥塞控制的前提:网络能够承受现有的网络负荷。
分组的丢失是网络发生拥塞的征兆
开环控制思路:力争避免发生拥塞
。但一旦整个系统运行起来,就不再中途进行改正了。
闭环控制思路:在发生拥塞后
,采取措施进行控制,消除拥塞
。基于反馈环路的概念,根据网络当前运行状态采取相应控制措施。
闭环控制措施
- 监测:监测网络系统拥塞在何时何处发生
- 传送:将拥塞信息发送到产生分组的
源站
,在路由器留一个比特表示拥塞 - 调整:调整网络系统运行
TCP的拥塞控制方法
- TCP 采用基于
滑动窗口的方法
进行拥塞控制,属于闭环控制方法。 - TCP 发送方维持一个
拥塞窗口 cwnd
(Congestion Window) - 拥塞窗口的大小取决于网络的拥塞程度,并且是
动态变化
的。- 只要网络没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多的分组发送出去,提高网络的利用率。
- 但只要网络出现拥塞或有可能出现拥塞,就必须把拥塞窗口减小一些,以减少注入到网络中的分组数,缓解网络出现的拥塞。
- 发送端利用拥塞窗口根据网络的拥塞情况调整发送的数据量。
- 发送窗口大小不仅取决于接收方窗口,还取决于网络的拥塞状况。
- 真正的发送窗口值:真正的发送窗口值 = Min (接收方通知的窗口值,拥塞窗口值)
判断拥塞的方法:隐式反馈
超时重传计时器超时:网络已经出现了拥塞
收到 3 个重复的确认:预示网络可能会出现拥塞。
四种拥塞控制算法( RFC 5681) :
- 慢开始 (slow-start):由小到大逐渐增大注入到网络中的数据字节,即:由
小到大逐渐增大拥塞窗口数值
。
- 拥塞窗口 cwnd 每次的增加量 = min (N, SMSS)
- 一个传输轮次所经历的时间其实就是往返时间 RTT。
传输轮次强调:把拥塞窗口 cwnd 所允许发送的报文段都连续发送出去,并收到了对已发送的最后一个字节的确认。
例如:拥塞窗口 cwnd = 4,这时的往返时间 RTT 就是发送方连续发送 4 个报文段,并收到这 4 个报文段的确认,总共经历的时间。 - 慢开始门限 ssthresh
- 当 cwnd < ssthresh 时,使用慢开始算法。
- 当 cwnd > ssthresh 时,停止使用慢开始算法,改用拥塞避免算法。
- 当 cwnd = ssthresh 时,既可使用慢开始算法,也可使用拥塞避免算法。
- 拥塞避免 (congestion avoidance):每经过一个往返时间 RTT(不管在此期间收到了多少确认),发送方的拥塞窗口 cwnd = cwnd + 1。
拥塞避免并非完全避免拥塞,而是让拥塞窗口增长得缓慢些,使网络不容易出现拥塞。
当网络出现拥塞时(重传定时器超时):- ssthresh = max (cwnd/2,2)
- cwnd = 1
- 执行慢开始算法
- 目的:迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。
- 快重传 (fast retransmit)
- 目的:让发送方尽早知道发生了个别报文段的丢失。
- 发送方只要连续收到三个重复的确认,就立即进行重传(即“快重传”),这样就不会出现超时
- 快恢复 (fast recovery)
-
当发送端收到
连续三个重复确认
时,不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法:- 慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2 ;
- 乘法减小 MD (Multiplicative Decrease) 拥塞窗口。
新拥塞窗口 cwnd = 慢开始门限 ssthresh
; - 执行拥塞避免算法,使拥塞窗口缓慢地线性增大(加法增大 AI)
-
发送窗口的上限值 = Min [rwnd, cwnd]
当 rwnd < cwnd 时,是接收方的接收能力
限制发送窗口的最大值。
当 cwnd < rwnd 时,是网络拥塞
限制发送窗口的最大值。
主动队列管理AQM
对 TCP 拥塞控制影响最大
的就是路由器的分组丢弃策略
。
路由器的尾部丢弃往往会导致一连串分组的丢失,这就使发送方出现超时重传,使 TCP 进入拥塞控制的慢开始状态,结果使 TCP 连接的发送方突然把数据的发送速率降低到很小的数值。
主动队列管理 AQM (Active Queue Management):
主动:不要等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组,而是在队列长度达到某个值得警惕
的数值时(即当网络拥塞有了某些拥塞征兆时),就主动丢弃
到达的分组。。
AQM实现方法之一:随机早期检测 RED
随机早期检测 RED
路由器队列维持两个参数:队列长度最小门限 THmin 、队列长度最大门限 THmax
RED 对每一个到达的分组都先计算平均队列长度 LAV
当 LAV > Thmin 时,丢弃概率 p = 0。
当 LAV < Thmax 时,丢弃概率 p = 1。
当 Thmin ≤ LAV ≤ Thmax时,丢弃概率 p: 0 < p < 1
5.9 TCP的运输连接管理
TCP 连接的建立采用客户服务器方式。
主动发起连接建立的应用进程叫做客户 (client)。
被动等待连接建立的应用进程叫做服务器 (server)。
TCP连接建立
TCP 建立连接的过程叫做握手
。
采用三报文握手
:在客户和服务器之间交换三个 TCP 报文段,以防止已失效的连接请求报文段突然又传送到了,因而产生 TCP 连接建立错误。
- B 的 TCP 服务器进程先创建传输控制块 TCB,准备接受客户进程的连接请求。
- A 的 TCP 向 B 主动发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。TCP规定,SYN 报文段(即SYN = 1的报文段)
不能携带数据
,但要消耗掉一个序号。 - B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号 ack = x + 1,自己选择的序号 seq = y。
- A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。A 的 TCP 通知上层应用进程,连接已经建立。TCP 标准规定:ACK 报文段可以携带数据。
但如果不携带数据,则不消耗序号。下一个数据报文段的序号仍是 seq = x + 1。 - B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。双方可以开始数据传送。
TCP连接释放
TCP 的连接释放采用四报文握手
数据传输结束后,通信的双方
都可释放连接。
- A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。FIN 报文段即使不携带数据,也消耗掉一个序号。
- B 发出确认,ACK=1,确认号 ack = u+1,这个报文段的序号 seq = v。TCP 服务器进程通知高层应用进程。
从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭 (half-close)
状态。B 若发送数据,A 仍要接收。 - 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。
FIN=1,ACK=1,确认号 ack = u+1。 - A 收到连接释放报文段后,必须发出确认。
ACK=1,确认号 ack=w+1,自己的序号 seq = u + 1 - 此时 TCP 连接还没有释放掉。必须经过时间等待计时器 (TIME-WAIT timer) 设置的时间
2MSL
后,A 才释放 TCP 连接。
TCP有限状态机
第六章 应用层
应用层协议:精确定义不同主机中的多个应用进程之间
的通信规则。
6.1 域名系统DNS
域名系统 DNS (Domain Name System) :
-
互联网使用的命名系统。
-
用来把人们使用的机器名字(
域名
)转换为IP 地址
。 -
为互联网的各种网络应用提供了核心服务。
-
域名采用
层次树状结构
的命名方法:www.myschool.edu。 -
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名 (domain name)。
-
互联网的名字空间是按照机构的组织来划分的,与物理的网络无关,与 IP 地址中的“子网”也没有关系。
-
DNS 是一个联机
分布式数据库系统
,采用客户服务器
方式。
域名到 IP 地址的解析是由若干个域名服务器程序
共同完成。
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器
。
实现域名系统使用分布在各地的域名服务器
(DNS 服务器)。
一个服务器所负责管辖的(或有权限的)范围叫做区
(zone)。
各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通
的。
每一个区设置相应的权限域名服务器
,用来保存该区中的所有主机的域名到 IP 地址的映射。
DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位
。
6.2 文件传送协议
文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。
- 提供
交互式
的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。 屏蔽
了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。- 是
文件共享协议
的一个大类。
文件共享协议
- 文件传送协议:FTP, TFTP 等。
- 复制整个文件。对文件副本进行访问。
- 若要存取一个文件,就必须先获得一个本地文件副本。
- 若要修改文件,只能对文件副本进行修改,然后再将修改后的文件副本传回到原节点。
- 复制整个文件。对文件副本进行访问。
- 联机访问 (on-line access) 协议:NFS 等。
- 允许同时对一个文件进行存取。
- 远地共享文件访问,如同对本地文件的访问一样。
- 透明存取,不需要对该应用程序作明显的改动。
由操作系统负责
。
FTP基本工作原理
- 只提供文件传送的一些基本服务,它使用
TCP
可靠的运输服务。 - 主要功能:减少或消除在不同操作系统下处理文件的
不兼容性
。 - 使用
客户服务器方式
。- 一个 FTP 服务器进程可
同时
为多个客户进程提供服务。 - FTP 的
服务器进程
由两大部分组成:- 一个主进程,负责接受新的请求;
- 若干个从属进程,负责处理单个请求。
- 一个 FTP 服务器进程可
- FTP 客户和服务器之间的两个从属进程和两个 TCP 连接,使用两个
不同的端口号
简单文件传送协议 TFTP
TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。
- 使用
客户服务器方式
和使用UDP
数据报,因此 TFTP 需要有自己的差错改正措施。 - 只支持文件传输,
不支持交互
。 - 没有庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。
- 优点:(1)可用于 UDP 环境;(2)代码所占的内存较小。
- 每次传送的数据报文中有 512 字节的数据,但最后一次可不足 512 字节。
- 数据报文按序编号,从 1 开始。
- 支持 ASCII 码或二进制传送。
- 可对文件进行读或写。
- 使用很简单的首部。
TFTP 的工作过程
- 开始工作时,TFTP 客户进程发送一个读请求或写请求报文给 TFTP 服务器进程,其 UDP 熟知端口号码为 69。
- TFTP 服务器进程选择一个新的端口和 TFTP 客户进程进行通信。
- 若文件长度恰好为 512 字节的整数倍,则在文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报文。
- 若文件长度不是 512 字节的整数倍,则最后传送数据报文的数据字段一定不满 512 字节,作为文件结束的标志。
6.3 远程终端协议Telnet
远程终端协议Telnet:
- 是一个简单的远程终端协议,是互联网的正式标准。
- 允许用户在其所在地
通过 TCP 连接
注册(即登录)到远地的另一个主机上(使用主机名或 IP 地址)。 - 能将用户的击键传到远地主机,同时也能将远地主机的输出通过 TCP
- 连接返回到用户屏幕。
- 服务是
透明
的。 - 又称为
终端仿真协议
。 - TELNET 使用客户 - 服务器方式
- 在本地系统运行 TELNET
客户进程
,而在远地主机则运行 TELNET服务器进程
。 - 服务器中的
主进程
等待新的请求,产生从属进程
来处理每一个连接。
- 在本地系统运行 TELNET
- TELNET 的
选项协商
(Option Negotiation) 使客户和服务器可商定使用更多的终端功能,协商的双方是平等的。
6.4 万维网WWW
万维网WWW(World Wide Web)
并非某种特殊的计算机网络。
-
万维网是一个
大规模的、联机式
的信息储藏所。- 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为
“链接”
。
- 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息。这种访问方式称为
-
万维网是分布式超媒体 (hypermedia) 系统
- 是超文本 (hypertext) 系统的扩充。
超文本
:由多个信息源链接成。是万维网的基础。超媒体与超文本的区别
:文档内容不同。- 超文本文档仅包含文本信息。
- 超媒体文档还包含其他信息,如图形、图像、声音、动画,甚至活动视频图像等。
分布式系统
:信息分布在整个互联网上。每台主机上的文档都独立进行管理
-
以客户服务器方式工作。
客户程序:浏览器
。
服务器程序:在万维网文档所驻留的主机上运行。这个计算机也称为万维网服务器
。
客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
。
在一个客户程序主窗口上显示出的万维网文档称为页面
(page)。
统一资源定位符 URL
- 是对互联网上资源的位置和访问方法的一种
简洁表示
。 - 给资源的位置提供一种抽象的识别方法,并用这种方法给
资源定位
。 - 实际上就是在互联网上的
资源的地址
。 - 互联网上的所有资源,都有一个
唯一
确定的URL。 - 资源:指在互联网上可以被访问的任何对象,包括文件目录、文件、文档、图像、声音等,以及与互联网相连的
任何形式
的数据。 - 使用 HTTP 的 URL格式
超文本传送协议 HTTP
- HTTP 是
面向事务
的 (transaction-oriented) 应用层协议。 - 定义了浏览器与万维网服务器通信的格式和规则。
- 是万维网上能够
可靠地交换文件
(包括文本、声音、图像等各种多媒体文件)的重要基础。 - HTTP 使用了
面向连接的 TCP
作为运输层协议,保证了数据的可靠传输
。 - HTTP 协议本身也是
无连接
的。 - HTTP 是
无状态
的 (stateless),简化了服务器的设计,使服务器更容易支持大量并发的 HTTP 请求。 - HTTP 规定:在 HTTP 客户与 HTTP 服务器之间的每次交互,都由一个 ASCII 码串构成的请求和一个类似的通用互联网扩充,即“类MIME (MIME-like)”的响应组成。
代理服务器 (proxy server)
又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。
使用高速缓存可减少
访问互联网服务器的时延
。
HTTP 的报文结构
两类报文:
- 请求报文:从客户向服务器的请求。
- 响应报文:从服务器到客户的回答。
- 由于 HTTP 是面向正文的 (text-oriented),因此报文中每一个字段的值都是一些 ASCII 码串,每个字段的长度都是不确定的。
三个组成部分:
- 开始行:用于区分是请求报文还是响应报文。
- 首部行:说明浏览器、服务器或报文主体的一些信息。可以有多行,也可以不使用。
- 实体主体:请求报文中一般不用,响应报文中也可能没有该字段。
万维网的文档
在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。
页面制作的标准语言:HTML
。
分为:
- 静态万维网文档。内容不会改变。简单。
- 动态万维网文档。文档的内容由应用程序动态创建。
- 活动万维网文档。由浏览器端改变文档的内容。
超文本标记语言 HTML (HyperText Markup Language) 是一种制作万维网页面的标准语言
,它消除了不同计算机之间信息交流的障碍,是万维网的重要基础
HTML 定义了许多用于排版的命令(即标签)。
HTML 把各种标签嵌入到万维网的页面中,构成了所谓的 HTML 文档。
HTML 文档是一种可以用任何文本编辑器创建的 ASCII 码文件。
HTML 文档的后缀:.html 或 .htm。
HTML
不是应用层的协议
,它只是万维网浏览器使用的一种语言。
通用网关接口 CGI (Common Gateway Interface) :定义动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用的一种标准。
通用:CGI 标准所定义的规则对其他任何语言都是通用的。
网关:CGI 程序的作用像网关。
接口:有一些已定义好的变量和调用等可供其他 CGI 程序使用。
活动文档 (active document) 技术:把屏幕连续更新的工作转移给浏览器端
。
每当浏览器请求一个活动文档时,服务器就返回一段程序副本
在浏览器端运行。
活动文档程序可与用户直接交互
,并可连续地改变屏幕的显示。
由于活动文档技术不需要
服务器的连续更新传送,对网络带宽的要求也不会太高。
搜索引擎
在万维网中用来进行搜索的程序叫做搜索引擎 (search engine)
。
-
全文检索搜索引擎
一种纯技术
型的检索工具。
通过搜索软件(例如一种叫做“蜘蛛”或“网络机器人”的 Spider 程序)到互联网上的各网站收集信息。
按照一定的规则建立一个很大的在线索引数据库。
用户在查询时只要输入关键词,从已经建立的索引数据库里查询(非实时)。
需要定期更新维护数据库 -
分类目录搜索引擎
不采集
网站的任何信息,而是利用各网站向搜索引擎提交的网站信息时填写的关键词和网站描述等信息,经过人工审核编辑后,输入到分类目录的数据库中,供网上用户查询。
分类目录搜索也叫做分类网站搜索。
查询时只需要按照分类,不需要使用关键词,查询的准确性较好
。
查询的结果不是具体的页面,而是被收录网站主页的 URL 地址。 -
垂直搜索引擎 (Vertical Search Engine) :
针对某一特定领域、特定人群或某一特定需求提供搜索服务。
也是提供关键字来进行搜索,但被放到一个行业知识的上下文中,返回的结果更倾向于信息、消息、条目等。
目前热门的垂直搜索行业有:购物、旅游、汽车、求职、房产、交友等。 -
元搜索引擎 (Meta Search Engine) :
把用户提交的检索请求发送到多个独立的搜索引擎上去搜索,并把检索结果集中统一处理,以统一的格式提供给用户,因此是搜索引擎之上的搜索引擎
。
主要精力放在提高搜索速度、智能化处理搜索结果、个性化搜索功能的设置和用户检索界面的友好性上。
其查全率和查准率都比较高。
6.5 电子邮件
电子邮件 (e-mail):指使用电子设备交换的邮件及其方法。
优点:使用方便,传递迅速,费用低廉,可以传送多种类型的信息(包括:文字信息,声音和图像等)。
电子邮件由信封 (envelope) 和内容 (content) 两部分组成。
重要标准:
- 简单邮件
发送
协议:SMTP - 互联网文本报文格式
- 通用互联网邮件扩充 MIME
- 邮件
读取
协议:POP3 和 IMAP
简单邮件传送协议 SMTP
SMTP 规定了在两个相互通信的 SMTP 进程之间交换信息的方法。
SMTP 使用客户服务器方式。
SMTP 基于 TCP 实现客户与服务器的通信。
SMTP 是一个基于文本
的 (即 ASCII 码) 的协议。
SMTP 客户与服务器之间采用命令-响应
方式进行交互。
POP3 协议
POP3 使用客户服务器方式。
POP3 基于 TCP 实现客户与服务器的通信。
POP3 支持用户鉴别
。
POP3 服务器删除
被用户读取了的邮件。
IMAP 协议
IMAP 使用客户服务器方式。
IMAP 基于 TCP 实现客户与服务器的通信。
IMAP 是一个联机
协议。
连接后只下载邮件首部(部分下载)。
用户直接在 IMAP 服务器上创建和管理文件夹。
用户可以搜索邮件内容。
用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
允许收信人只读取
邮件中的某一个部分。
缺点:要想查阅邮件,必须先联网
。
万维网电子邮件
发送、接收电子邮件时使用 HTTP 协议。
两个邮件服务器之间传送邮件时使用 SMTP。
优点:
不需要在计算机中再安装用户代理软件。
计算机能联网,就能非常方便地收发电子邮件。
界面非常友好。
6.6 动态主机配置协议DHCP
在协议软件中,给协议参数赋值的动作叫做协议配置。
一个协议软件在使用之前必须是已正确配置的。具体的配置信息取决于协议栈。
连接到互联网的计算机的协议软件需要正确配置的参数包括:
IP 地址
子网掩码
默认路由器的 IP 地址
域名服务器的 IP 地址
动态主机配置协议 DHCP (Dynamic Host Configuration Protocol) 提供了即插即用连网 (plug-and-play networking) 的机制,允许一台计算机加入网络和获取 IP 地址,而不用手工配置。
DHCP 给运行服务器软件、且位置固定的计算机指派一个永久地址,给运行客户端软件的计算机分配一个临时地址。
6.7 简单网络管理协议SNMP
简单网络管理协议 SNMP (Simple Network Management Protocol) 中的管理程序和代理程序按客户服务器方式工作。
管理程序运行 SNMP 客户程序,向某个代理程序发出请求 (或命令)。
代理程序运行 SNMP 服务器程序,返回响应 (或执行某个动作)。
在网管系统中,往往是一个(或少数几个)客户程序与很多的服务器程序进行交互。
基本功能:
监视网络性能
检测分析网络差错
配置网络设备等。
6.8 应用进程跨越网络的通信
系统调用接口实际上就是应用进程的控制权和操作系统的控制权进行转换的一个接口。
使用系统调用之前要编写一些程序,特别是需要设置系统调用中的许多参数,因此这种系统调用接口又称为应用编程接口 API
(Application Programming Interface) 。
6.9 P2P应用
在 P2P 工作方式下,所有的音频/视频文件都是在普通的互联网用户之间传输
。
第七章 网络安全
7.1 网络安全问题
两大类威胁:被动攻击和主动攻击。
被动攻击
指攻击者从网络上窃听
他人的通信内容。
通常把这类攻击称为截获
。
攻击者只是观察和分析某一个协议数据单元 PDU,以便了解所交换的数据的某种性质,但不干扰信息流
。
这种被动攻击又称为流量分析
(traffic analysis)。
主动攻击
- 篡改:故意篡改网络上传送的报文。这种攻击方式有时也称为
更改报文流
。 - 恶意程序 (rogue program):种类繁多,主要包括:计算机病毒、计算机蠕虫、特洛伊木马、逻辑炸弹、后门入侵、流氓软件等。
- 拒绝服务 DoS (Denial of Service):指攻击者向互联网上的某个服务器不停地
发送大量分组
,使该服务器无法提供正常服务,甚至完全瘫痪。若从互联网上的成百上千的网站集中攻击一个网站,则称为分布式拒绝服务 DDoS (Distributed Denial of Service)。
有时也把这种攻击称为网络带宽攻击或连通性攻击。
7.2 密码学
密码编码学 (cryptography) :密码体制的设计学。
密码分析学 (cryptanalysis) :在未知密钥的情况下从密文推演出明文或密钥的技术。
密码编码学与密码分析学合起来即为密码学 (cryptology)。
数据加密模型
加密和解密用的密钥 K (key) 是一串秘密的字符串(即比特串)。
明文通过加密算法 E 和加密密钥 K 变成密文Y
接收端利用解密算法 D 运算和解密密钥 K 解出明文 X。解密算法是加密算法的逆运算。
加密密钥和解密密钥可以一样,也可以不一样。
密钥通常由密钥中心
提供。
当密钥需要向远地传送时,一定要通过另一个安全信道
。
7.3 防火墙
防火墙 (firewall) :一种访问控制技术,通过严格控制进出网络边界的分组,禁止任何不必要的通信,从而减少潜在入侵的发生,尽可能降低这类安全威胁所带来的安全风险。
防火墙是一种特殊编程的路由器,安装在一个网点和网络的其余部分之间,目的是实施访问控制策略。
访问控制策略
由使用防火墙的单位自行制定。
一般把防火墙里面的网络称为“可信的网络”(trusted network) ,把防火墙外面的网络称为“不可信的网络”(untrusted network)。
两类防火墙技术:
- 分组过滤路由器
具有分组过滤功能的路由器
。根据过滤规则对进出内部网络的分组进行过滤(转发或者丢弃)。
过滤规则:基于分组的网络层或运输层首部信息,例如:源/目的IP地址、源/目的端口、协议类型(TCP 或 UDP),等等。
无状态的:独立地处理每一个分组。
有状态的:跟踪每个连接或会话的通信状态,根据状态信息决定是否转发分组。
优点:简单高效,对用户透明。
缺点:不能对高层数据进行过滤。例如:不能禁止某个用户对某个特定应用进行某个特定的操作,不能支持应用层用户鉴别等。 - 应用网关
也称为代理服务器
(proxy server)
对报文进行中继,实现基于应用层数据
的过滤和高层用户鉴别。
所有进出网络的应用程序报文都必须通过应用网关。
应用网关在应用层
打开报文,查看请求是否合法。
如果合法,应用网关以客户进程的身份将请求报文转发给原始服务器。
如果不合法,则丢弃报文。
缺点:
每种应用都需要一个不同的应用网关
在应用层转发和处理报文,处理负担较重。
对应用程序不透明,需要在应用程序客户端配置应用网关地址。