计算机通信网络汇编

第一章

核心部分和边缘部分

互联网的核心部分是由许多网络和把它们互连起来的路由器组成,而主机处在互联网的边缘部分。

主机的用途是为用户进行信息处理的,并且可以和其他主机通过网络交换信息。

路由器的用途则是用来转发分组的,即进行分组交换的。

分组交换:

在发送端,先把较长的报文划分成较短的、固定长度的数据段。

每一个数据段前面添加上首部构成分组(packet) 分组交换网以“分组”作为数据传输单元。

依次把各分组发送到接收端(假定接收端在左边)。

每一个分组的首部都含有地址(诸如目的地址和源地址)等控制信息。

分组交换网中的结点交换机根据收到的分组首部中的地址信息,把分组转发到下一个结点交换机。每个分组在互联网中独立地选择传输路径。

接收:接收端收到分组后剥去首部还原成报文

这里我们假定分组在传输过程中没有出现差错,在转发时也没有被丢弃。

路由器处理分组的过程

把收到的分组先放入缓存(暂时存储);

查找转发表,找出到某个目的地址应从哪个端口转发;

把分组送到适当的端口转发出去。

分组交换的优点

高效:在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用。

灵活:为每一个分组独立地选择最合适的转发路由。

迅速:以分组作为传送单位,可以不先建立连接就能向其他主机发送分组。

可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性。

网络作用范围分类

广域网 WAN (Wide Area Network):作用范围通常为几十到几千公里。

局域网 LAN (Local Area Network) :作用距离约为5 ~ 50 公里。

城域网 MAN (Metropolitan Area Network):局限在较小的范围(如 1 公里左右)。

个人区域网 PAN (Personal Area Network) :范围很小,大约在10 米左右

若中央处理机之间的距离非常近(如仅1米的数量级甚至更小些),则一般就称之为多处理机系统,而不称它为计算机网络。

从网络的使用者进行分类

公用网 (public network)

按规定交纳费用的人都可以使用的网络。因此也可称为公众网。

专用网 (private network)

为特殊业务工作的需要而建造的网络。

计算机网络的性能指标

速率:也称为数据率 (data rate)或比特率 (bit rate),单位是 bit/s,或 kbit/s、Mbit/s、 Gbit/s 等,速率往往是指额定速率或标称速率,非实际运行速率

带宽:表示在单位时间内网络中的某信道所能通过的“最高数据率”。单位是 bit/s

吞吐率:表示在单位时间内通过某个网络(或信道、接口)的数据量。受网络的带宽或网络的额定速率的限制。

时延:也称为延迟或迟延指数据(一个报文或分组,甚至比特)从网络(或链路)的一端传送到另一端所需的时间。:

(1) 发送时延:也称为传输时延,从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。

(2) 传播时延:电磁波在信道中需要传播一定的距离而花费的时间

(3) 处理时延:主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间。

(4) 排队时延:分组在路由器输入输出队列中排队等待处理所经历的时延。

排队时延的长短往往取决于网络中当时的通信量。

时延带宽积:链路的时延带宽积又称为以比特为单位的链路长度。

时延带宽积 = 传播时延 ´ 带宽

往返时间 RTT:表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。包括各中间结点的处理时延、排队时延以及转发数据时的发送时延

利用率: 分为信道利用率和网络利用率。信道利用率指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。

网络利用率则是全网络的信道利用率的加权平均值。

网络协议的组成要素

语法:数据与控制信息的结构或格式 。

语义:需要发出何种控制信息,完成何种动作以及做出何种响应。

同步:事件实现顺序的详细说明。

开放系统互连基本参考模型 OSI/RM (七层协议)

应用层 表示层 会话层 运输层 网络层 数据链路层 物理层

OSI 只获得了一些理论研究的成果,在市场化方面却失败了。原因包括:

OSI 的专家们在完成 OSI 标准时没有商业驱动力;

OSI 的协议实现起来过分复杂,且运行效率很低;

OSI 标准的制定周期太长,因而使得按 OSI 标准生产的设备无法及时进入市场;

OSI 的层次划分也不太合理,有些功能在多个层次中重复出现。

TCP/IP体系结构

应用层:DNS, HTTP, SMTP 等

运输层:TCP 或 UDP

网际层:IP

网络接口层

实体 (entity) 表示任何可发送或接收信息的硬件或软件进程。

协议是控制两个对等实体进行通信的规则的集合。

在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。

要实现本层协议,还需要使用下层所提供的服务。 同一系统相邻两层的实体进行交互的地方,称为服务访问点 SAP (Service Access Point)。

服务访问点SAP是一个抽象的概念,它实际上就是一个逻辑接口。

OSI把层与层之间交换的数据的单位称为服务数据单元 SDU (Service Data Unit)。

SDU 可以与 PDU 不一样,例如,可以是多个 SDU 合成为一个 PDU,也可以是一个 SDU 划分为几个 PDU。

第二章:物理层

物理层

主要任务:确定与传输媒体的接口的一些特性

机械特性 :指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。

电气特性:指明在接口电缆的各条线上出现的电压的范围。

功能特性:指明某条线上出现的某一电平的电压表示何种意义。

过程特性 :指明对于不同功能的各种可能事件的出现顺序。

信道 —— 一般用来表示向某一个方向传送信息的媒体。

单向通信(单工通信)——只能有一个方向的通信而没有反方向的交互。

双向交替通信(半双工通信)——通信的双方都可以发送信息,但不能双方同时发送(当然也就不能同时接收)。

双向同时通信(全双工通信)——通信的双方可以同时发送和接收信息。

基带信号(即基本频带信号)—— 来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号。

基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制 (modulation)。

调制分为两大类:

基带调制:仅对基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码 (coding)。

带通调制:使用载波 (carrier)进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道) 。

(带通信号 :经过载波调制后的信号。)

常用编码方式

不归零制:正电平代表 1,负电平代表 0。

归零制:正脉冲代表 1,负脉冲代表 0。

曼彻斯特编码:位周期中心的向上跳变代表 0,位周期中心的向下跳变代表 1。但也可反过来定义。

差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表 0,而位开始边界没有跳变代表 1。

从信号波形中可以看出,曼彻斯特 (Manchester) 编码和差分曼彻斯特编码产生的信号频率比不归零制高。

从自同步能力来看,不归零制不能从信号波形本身中提取信号时钟频率(这叫作没有自同步能力),而曼彻斯特编码和差分曼彻斯特编码具有自同步能力。

基本的带通调制方法

基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。为了解决这一问题,就必须对基带信号进行调制 (modulation)。

最基本的二元制调制方法有以下几种:

调幅(AM):载波的振幅随基带数字信号而变化。

调频(FM):载波的频率随基带数字信号而变化。

调相(PM) :载波的初始相位随基带数字信号而变化

信噪比

1984年,香农 (Shannon) 用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率(香农公式)。

信道的极限信息传输速率 C 可表达为:

C = W log2(1+S/N) (bit/s)

其中: W 为信道的带宽(以 Hz 为单位);

S 为信道内所传信号的平均功率;

N 为信道内部的高斯噪声功率

信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。

只要信息传输速率低于信道的极限信息传输速率,就一定可以找到某种办法来实现无差错的传输。

若信道带宽 W 或信噪比 S/N 没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率 C 也就没有上限。

实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。

物理层下面的传输媒体

传输媒体也称为传输介质或传输媒介,它就是数据传输系统中在发送器和接收器之间的物理通路。

传输媒体可分为两大类: 即导引型传输媒体和非导引型传输媒体。

导引型传输媒体:电磁波被导引沿着固体媒体(铜线或光纤)传播。

非导引型传输媒体:指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。

双绞线

最常用的传输媒体。

模拟传输和数字传输都可以使用双绞线,其通信距离一般为几到十几公里。

屏蔽双绞线 STP (Shielded Twisted Pair)

带金属屏蔽层

无屏蔽双绞线 UTP (Unshielded Twisted Pair)

1991年,美国电子工业协会 EIA 和电信行业协会联合发布了一个用于室内传送数据的无屏蔽双绞线和屏蔽双绞线的标准 EIA/TIA-568。

1995年将布线标准更新为 EIA/TIA-568-A。

此标准规定了 5 个种类的 UTP 标准(从 1 类线到 5 类线)。

对传送数据来说,现在最常用的 UTP 是5类线(Category 5 或 CAT5)。

同轴电缆

同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据。

同轴电缆的带宽取决于电缆的质量。

50 W 同轴电缆 —— LAN / 数字传输常用

75 W 同轴电缆 —— 有线电视 / 模拟传输常用

光缆

光纤是光纤通信的传输媒体。

由于可见光的频率非常高,约为 108 MHz 的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽。

常用的三个波段的中心分别位于 850 nm, 1300 nm 和 1550 nm。

所有这三个波段都具有 25000~30000 GHz 的带宽,可见光纤的通信容量非常大。

优点:(1) 通信容量非常大。(2) 传输损耗小,中继距离长。(2) 抗雷电和电磁干扰性能好。

(3) 无串音干扰,保密性好。(4) 体积小,重量轻。

非导引型

将自由空间称为“非导引型传输媒体”。无线传输所使用的频段很广。

短波通信(即高频通信)主要是靠电离层的反射,但短波信道的通信质量较差,传输速率低。

微波在空间主要是直线传播。传统微波通信有两种方式: 地面微波接力通信卫星通信

要使用某一段无线电频谱进行通信,通常必须得到本国政府有关无线电频谱管理机构的许可证。但是,也有一些无线电频段是可以自由使用的。例如:ISM。各国的 ISM 标准有可能略有差别。

频分复用 FDM(Frequency Division Multiplexing)

将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。

频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的“带宽”是频率带宽而不是数据的发送速率)。

时分复用TDM(Time Division Multiplexing)

时分复用则是将时间划分为一段段等长的时分复用帧(TDM 帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。每一个用户所占用的时隙是周期性地出现(其周期就是 TDM 帧的长度)。TDM 信号也称为等时(isochronous)信号。

时分复用的所有用户是在不同的时间占用同样的频带宽度。

时分复用可能会造成线路资源的浪费

波分复用 WDM (Wavelength Division Multiplexing)

波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号。

码分复用 CDM(Code Division Multiplexing)

常用的名词是码分多址 CDMA (Code Division Multiple Access)。 各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰。这种系统发送的信号有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现。

同步光纤网 SONET (Synchronous Optical Network)

各级时钟都来自一个非常精确的主时钟。 SONET 为光纤传输系统定义了同步传输的线路速率等级结构。对电信信号称为第 1 级同步传送信号 STS-1 (Synchronous Transport Signal),其传输速率是 51.84 Mbit/s。对光信号则称为第 1 级光载波 OC-1 (OC 表示Optical Carrier)。现已定义了从 51.84 Mbit/s (即OC-1) 一直到 9953.280 Mbit/s (即 OC-192/STS-192) 的标准。

ITU-T 以美国标准 SONET 为基础,制订出国际标准同步数字系列 SDH (Synchronous Digital Hierarchy)。一般可认为 SDH 与 SONET 是同义词。其主要不同点是:SDH 的基本速率为 155.52 Mbit/s,称为第 1 级同步传递模块 (Synchronous Transfer Module),即 STM-1,相当于 SONET 体系中的 OC-3 速率。

SONET / SDH 标准的意义

使不同的数字传输体制在 STM-1 等级上获得了统一。

第一次真正实现了数字传输体制上的世界性标准。

已成为公认的新一代理想的传输网体制。

SDH 标准也适合于微波和卫星传输的技术体制。

第三章:数据链路层

数据链路层

数据链路层传送的是帧

信道

使用的信道主要有以下两种类型:

点对点信道。这种信道使用一对一的点对点通信方式。

广播信道。这种信道使用一对多的广播通信方式,因此过程比较复杂。广播信道上连接的主机很多,因此必须使用专用的共享信道协议来协调这些主机的数据发送。

链路 (link) 是一条无源的点到点的物理线路段,中间没有任何其他的交换结点。

一条链路只是一条通路的一个组成部分。

数据链路 (data link) 除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用适配器(即网卡)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。

物理链路就是上面所说的链路。

逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。

早期的数据通信协议曾叫作通信规程 (procedure)。因此在数据链路层,规程和协议是同义语。

数据链路层协议共同的三个问题

(1) 封装成帧

封装成帧 (framing) 就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧。确定帧的界限。首部和尾部的一个重要作用就是进行帧定界。

用控制字符进行帧定界:当数据是由可打印的 ASCII 码组成的文本文件时,帧定界可以使用特殊的帧定界符。

控制字符 SOH (Start Of Header) 放在一帧的最前面,表示帧的首部开始。另一个控制字符 EOT (End Of Transmission) 表示帧的结束。

(2) 透明传输

如果数据中的某个字节的二进制代码恰好和 SOH 或 EOT 一样,数据链路层就会错误地“找到帧的边界”。

解决方法:字节填充 (byte stuffing) 或字符填充 (character stuffing)。

发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC” (其十六进制编码是 1B)。

接收端的数据链路层在将数据送往网络层之前删除插入的转义字符。

如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符 ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。

(3) 差错控制

在传输过程中可能会产生比特差错:1 可能会变成 0 而 0 也可能变成 1。

在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率 BER (Bit Error Rate)。

误码率与信噪比有很大的关系。

为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施。

循环冗余检验CRC

在数据链路层传送的帧中,广泛使用了循环冗余检验 CRC 的检错技术。

在发送端,先把数据划分为组。假定每组 k 个比特。

假设待传送的一组数据 M = 101001(现在 k = 6)。我们在 M 的后面再添加供差错检测用的 n 位冗余码一起发送。

冗余码的计算:

用二进制的模 2 运算进行 2n 乘 M 的运算,这相当于在 M 后面添加 n 个 0。

得到的 (k + n) 位的数除以事先选定好的长度为 (n + 1) 位的除数 P,得出商是 Q 而余数是 R,余数 R 比除数 P 少 1 位,即 R 是 n 位。

将余数 R 作为冗余码拼接在数据 M 后面发送出去。

举例: k = 6, M = 101001。设 n = 3, 除数 P = 1101,被除数是 2nM = 101001000。

模 2 运算的结果是:商 Q = 110101,余数 R = 001。把余数 R 作为冗余码添加在数据 M 的后面发送出去。发送的数据是:2nM + R 即:101001001,共 (k + n) 位。

(1) 若得出的余数 R = 0,则判定这个帧没有差错,就接受 (accept)。

(2) 若余数 R ¹ 0,则判定这个帧有差错,就丢弃。

但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错。

只要经过严格的挑选,并使用位数足够多的除数 P,那么出现检测不到的差错的概率就很小很小。

帧检验序列 FCS

在数据后面添加上的冗余码称为帧检验序列 FCS (Frame Check Sequence)。

循环冗余检验 CRC 和帧检验序列 FCS 并不等同。

CRC 是一种常用的检错方法,而 FCS 是添加在数据后面的冗余码。

FCS 可以用 CRC 这种方法得出,但 CRC 并非用来获得 FCS 的唯一方法。

仅用循环冗余检验 CRC 差错检测技术只能做到无差错接受 (accept)。

“无差错接受”是指:“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于 1 的概率认为这些帧在传输过程中没有产生差错”。

也就是说:“凡是接收端数据链路层接受的帧都没有传输差错”(有差错的帧就丢弃而不接受)。

要做到“可靠传输”(即发送什么就收到什么)就必须再加上确认和重传机制。

“无比特差错”与“无传输差错”是不同的概念。在数据链路层使用 CRC 检验,能够实现无比特差错的传输,但这还不是可靠传输。

点对点协议 PPP

对于点对点的链路,目前使用得最广泛的数据链路层协议是点对点协议 PPP (Point-to-Point Protocol)。用户使用拨号电话线接入互联网时, 用户计算机和 ISP 进行通信时所使用的数据链路层协议就是 PPP 协议。PPP 协议在1994年就已成为互联网的正式标准

应满足的需求:

简单 —— 这是首要的要求。

封装成帧 —— 必须规定特殊的字符作为帧定界符。

透明性 —— 必须保证数据传输的透明性。

多种网络层协议 —— 能够在同一条物理链路上同时支持多种网络层协议。

多种类型链路 —— 能够在多种类型的链路上运行。

差错检测 —— 能够对接收端收到的帧进行检测,并立即丢弃有差错的帧。

检测连接状态 —— 能够及时自动检测出链路是否处于正常工作状态。

最大传送单元 —— 必须对每一种类型的点对点链路设置最大传送单元 MTU 的标准默认值,促进各种实现之间的互操作性。

网络层地址协商 —— 必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址。

数据压缩协商 —— 必须提供一种方法来协商使用数据压缩算法。

不需要的功能:

纠错 流量控制 序号 多点线路 半双工或单工链路

PPP 协议有三个组成部分:

(1) 一个将 IP 数据报封装到串行链路的方法。

(2) 链路控制协议 LCP (Link Control Protocol)。

(3) 网络控制协议 NCP (Network Control Protocol)。

帧格式

PPP 帧的首部和尾部分别为 4 个字段和 2 个字段。

标志字段 F = 0x7E (符号“0x”表示后面的字符是用十六进制表示。十六进制的 7E 的二进制表示是 01111110)。

地址字段 A 只置为 0xFF。地址字段实际上并不起作用。

控制字段 C 通常置为 0x03。

PPP 是面向字节的,所有的 PPP 帧的长度都是整数字节。

透明传输问题:当 PPP 用在同步传输链路时,协议规定采用硬件来完成比特填充(和 HDLC 的做法一样)。

当 PPP 用在异步传输时,就使用一种特殊的字符填充法。

将信息字段中出现的每一个 0x7E 字节转变成为 2 字节序列 (0x7D, 0x5E)。

若信息字段中出现一个 0x7D 的字节, 则将其转变成为 2 字节序列 (0x7D, 0x5D)。

若信息字段中出现 ASCII 码的控制字符(即数值小于 0x20 的字符),则在该字符前面要加入一个 0x7D 字节,同时将该字符的编码加以改变。

PPP 协议用在 SONET/SDH 链路时,使用同步传输(一连串的比特连续传送)。这时 PPP 协议采用零比特填充方法来实现透明传输。

在发送端,只要发现有 5 个连续 1,则立即填入一个 0。

接收端先找到F字段确定帧的边界,再扫描,每发现5个连续的1就删除其后的一个0

PPP 协议之所以不使用序号和确认机制是出于以下的考虑:

在数据链路层出现差错的概率不大时,使用比较简单的 PPP 协议较为合理。

在因特网环境下,PPP 的信息字段放入的数据是 IP 数据报。数据链路层的可靠传输并不能够保证网络层的传输也是可靠的。

帧检验序列 FCS 字段可保证无差错接受。

工作状态

当用户拨号接入 ISP 时,路由器的调制解调器对拨号做出确认,并建立一条物理连接。

PC 机向路由器发送一系列的 LCP 分组(封装成多个 PPP 帧)。

这些分组及其响应选择一些 PPP 参数,并进行网络层配置,NCP 给新接入的 PC 机分配一个临时的 IP 地址,使 PC 机成为因特网上的一个主机。

通信完毕时,NCP 释放网络层连接,收回原来分配出去的 IP 地址。接着,LCP 释放数据链路层连接。最后释放的是物理层的连接。

可见,PPP 协议已不是纯粹的数据链路层的协议,它还包含了物理层和网络层的内容。

数据链路层两个子层

为了使数据链路层能更好地适应多种局域网标准,IEEE 802 委员会就将局域网的数据链路层拆成两个子层:

逻辑链路控制 LLC (Logical Link Control)子层;

媒体接入控制 MAC (Medium Access Control)子层。

与接入到传输媒体有关的内容都放在 MAC子层,而 LLC 子层则与传输媒体无关。

不管采用何种协议的局域网,对 LLC 子层来说都是透明的。

以太网是应用最普遍的局域网技术

网络接口板又称为通信适配器 (adapter) 或网络接口卡 NIC (Network Interface Card),或“网卡”。 计算机通过适配器和局域网进行通信

适配器的重要功能:

进行串行/并行转换。

对数据进行缓存。

在计算机的操作系统安装设备驱动程序。

实现以太网协议。

为了通信的简便,以太网采取了两种重要的措施:

(1) 采用较为灵活的无连接的工作方式

不必先建立连接就可以直接发送数据。

对发送的数据帧不进行编号,也不要求对方发回确认。

这样做的理由是局域网信道的质量很好,因信道质量产生差错的概率是很小的。

以太网提供的服务是不可靠的交付,即尽最大努力的交付。

当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。

如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。

以太网发送的数据都使用曼彻斯特 (Manchester) 编码

曼彻斯特编码缺点是:它所占的频带宽度比原始的基带信号增加了一倍。

CSMA/CD:载波监听多点接入 / 碰撞检测

“多点接入”表示许多计算机以多点接入的方式连接在一根总线上。

“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞。 总线上并没有什么“载波”。因此, “载波监听”就是用电子技术检测总线上有没有其他计算机发送的数据信号。

碰撞检测”就是计算机边发送数据边检测信道上的信号电压大小。

当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加)。

当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。

所谓“碰撞”就是发生了冲突。因此“碰撞检测”也称为“冲突检测”。

在发生碰撞时,总线上传输的信号产生了严重的失真,无法从中恢复出有用的信息来。

每一个正在发送数据的站,一旦发现总线上出现了碰撞,就要立即停止发送,免得继续浪费网络资源,然后等待一段随机时间后再次发送

为什么要碰撞检测?

由于电磁波在总线上的传播速率是有限的,当某个站监听到总线是空闲时,也可能总线并非真正是空闲的。

A 向 B 发出的信息,要经过一定的时间后才能传送到 B。

B 若在 A 发送的信息到达 B 之前发送自己的帧 (因为这时 B 的载波监听检测不到 A 所发送的信息),则必然要在某个时间和 A 发送的帧发生碰撞。

碰撞的结果是两个帧都变得无用。

所以需要在发送期间进行碰撞检测,以检测冲突。

争用期 最先发送数据帧的站,在发送数据帧后至多经过时间 2t (两倍的端到端往返时延)就可知道发送的数据帧是否遭受了碰撞。

以太网的端到端往返时延 2t 称为争用期,或碰撞窗口。

经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞。

二进制指数类型退避算法

发生碰撞的站在停止发送数据后,要推迟(退避)一个随机时间才能再发送数据。

基本退避时间取为争用期 2t

从整数集合[0,1,…, (2k -1)]中随机地取出一个数,记为 r。重传所需的时延就是 r 倍的基本退避时间。

参数 k 按下面的公式计算:

​ k = Min[重传次数, 10]

当 k £ 10 时,参数 k 等于重传次数。

当重传达 16 次仍不能成功时即丢弃该帧,并向高层报告。

征用期长度:

10 Mbit/s 以太网取 51.2 ms 为争用期的长度。

对于 10 Mbit/s 以太网,在争用期内可发送 512 bit,即 64 字节

这意味着:以太网在发送数据时,若前 64 字节没有发生冲突,则后续的数据就不会发生冲突。

CSMA/CD协议的要点

(1) 准备发送。但在发送之前,必须先检测信道。

(2) 检测信道。若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在 96 比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。

(3) 检查碰撞。在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:

①发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到 (1)。

②发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待 r 倍 512 比特时间后,返回到步骤 (2),继续检测信道。但若重传达 16 次仍不能成功,则停止重传而向上报错。

集线器

(1) 集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行。

(2) 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是 CSMA/CD 协议,并共享逻辑上的总线。

(3) 集线器很像一个多接口的转发器,工作在物理层。

(4) 集线器采用了专门的芯片,进行自适应串音回波抵消,减少了近端串音。

以太网的信道利用率

多个站在以太网上同时工作就可能会发生碰撞。

当发生碰撞时,信道资源实际上是被浪费了。因此,当扣除碰撞所造成的信道损失后,以太网总的信道利用率并不能达到 100%。

假设 t 是以太网单程端到端传播时延。则争用期长度为 2t,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。

设帧长为 L (bit),数据发送速率为 C (bit/s),则帧的发送时间为 T0 = L/C (s)。

一个站在发送帧时出现了碰撞。经过一个争用期 2t 后,可能又出现了碰撞。

要提高以太网的信道利用率,就必须减小 tT0 之比。

在以太网中定义了参数 α,它是以太网单程端到端时延 t 与帧的发送时间 T0 之比:

α →0,表示一发生碰撞就立即可以检测出来, 并立即停止发送,因而信道利用率很高。

α 越大,表明争用期所占的比例增大,每发生一次碰撞就浪费许多信道资源,使得信道利用率明显降低。

为提高利用率,以太网的参数a的值应当尽可能小些。

对以太网参数 α 的要求是:

当数据率一定时,以太网的连线的长度受到限制,否则 t 的数值会太大。

以太网的帧长不能太短,否则 T0 的值会太小,使 α 值太大。

在理想化的情况下,以太网上的各站发送数据都不会产生碰撞(这显然已经不是 CSMA/CD,而是需要使用一种特殊的调度方法),即总线一旦空闲就有某一个站立即发送数据。

发送一帧占用线路的时间是 T0 + t,而帧本身的发送时间是 T0。于是我们可计算出理想情况下的极限信道利用率 Smax 为:

以太网的 MAC 层

在局域网中,硬件地址又称为物理地址,或 MAC 地址。

802 标准所说的“地址”严格地讲应当是每一个站的“名字”或标识符。

IEEE 802 标准规定 MAC 地址字段可采用 6 字节 ( 48位) 或 2字节 (16位) 这两种中的一种。IEEE 的注册管理机构 RA 负责向厂家分配地址字段 6 个字节中的前三个字节 (即高位 24 位),称为组织唯一标识符。

地址字段 6 个字节中的后三个字节 (即低位 24 位) 由厂家自行指派,称为扩展唯一标识符,必须保证生产出的适配器没有重复地址

适配器从网络上每收到一个 MAC 帧就首先用硬件检查 MAC 帧中的 MAC 地址。

如果是发往本站的帧则收下,然后再进行其他的处理。

否则就将此帧丢弃,不再进行其他的处理。

“发往本站的帧”包括以下三种帧:

单播 (unicast) 帧(一对一)

广播 (broadcast) 帧(一对全体)

多播 (multicast) 帧(一对多)

所有的适配器都至少能够识别前两种帧,即能够识别单播地址和广播地址。

有的适配器可用编程方法识别多播地址。

只有目的地址才能使用广播地址和多播地址。

以混杂方式 (promiscuous mode) 工作的以太网适配器只要“听到”有帧在以太网上传输就都接收下来。

常用的以太网 MAC 帧格式有两种标准 :DIX Ethernet V2 标准,IEEE 的 802.3 标准,

最常用的 MAC 帧是以太网 V2 的格式

帧间最小间隔为 9.6 ms,相当于 96 bit 的发送时间。

一个站在检测到总线开始空闲后,还要等待 9.6 ms 才能再次发送数据。

这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备。

第四章:网络层

网络层

网际协议 IP 是 TCP/IP 体系中两个最主要的协议之一。

与 IP 协议配套使用的还有三个协议:

地址解析协议 ARP

(Address Resolution Protocol)

网际控制报文协议 ICMP

(Internet Control Message Protocol)

网际组管理协议 IGMP

(Internet Group Management Protocol)

中间设备又称为中间系统或中继 (relay)系统。

有以下五种不同的中间设备:

物理层中继系统:转发器 (repeater)。

数据链路层中继系统:网桥 或 桥接器 (bridge)。

网络层中继系统:路由器 (router)。

网桥和路由器的混合物:桥路器 (brouter)。

网络层以上的中继系统:网关 (gateway)。

网络互连都是指用路由器进行网络互连和路由选择。

虚拟互连网络也就是逻辑互连网络,它的意思就是互连起来的各种物理网络的异构性本来是客观存在的,但是我们利用 IP 协议就可以使这些性能各异的网络从用户看起来好像是一个统一的网络。

使用 IP 协议的虚拟互连网络可简称为 IP 网。

使用虚拟互连网络的好处是:当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。

如果在这种覆盖全球的 IP 网的上层使用 TCP 协议,那么就是现在的互联网 (Internet)。

IP 地址现在由互联网名字和数字分配机构ICANN (Internet Corporation for Assigned Names and Numbers)进行分配。

分类的 IP 地址。这是最基本的编址方法,在 1981 年就通过了相应的标准协议。

子网的划分。这是对最基本的编址方法的改进,其标准[RFC 950] 在 1985 年通过。

构成超网。这是比较新的无分类编址方法。1993 年提出后很快就得到推广应用。

每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。

主机号在它前面的网络号所指明的网络范围内必须是唯一的。

由此可见,一个 IP 地址在整个互联网范围内是唯一的。

点分十进制记法

(1) IP 地址是一种分等级的地址结构。分两个等级的好处是:

第一,IP 地址管理机构在分配 IP 地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理

第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。

(2) 实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。

当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号 net-id 必须是不同的。这种主机称为多归属主机 (multihomed host)。

由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。

IP 地址与硬件地址是不同的地址。

从层次的角度看, 硬件地址(或物理地址)是数据链路层和物理层使用的地址。

IP 地址是网络层和以上各层使用的地址,是一种逻辑地址(称 IP 地址是逻辑地址是因为 IP 地址是用软件实现的)

地址解析协议 ARP : 已知IP地址,找出其相应的硬件地址

每一个主机都设有一个 ARP 高速缓存 (ARP cache),里面有所在的局域网上的各主机和路由器的 IP 地址到硬件地址的映射表。TTL (Time To Live):地址映射有效时间 。

当主机 A 欲向本局域网上的某个主机 B 发送 IP 数据报时,就先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址。

如有,就可查出其对应的硬件地址,再将此硬件地址写入 MAC 帧,然后通过局域网将该 MAC 帧发往此硬件地址。

如没有, ARP 进程在本局域网上广播发送一个 ARP 请求分组。收到 ARP 响应分组后,将得到的 IP 地址到硬件地址的映射写入 ARP 高速缓存。

ARP请求分组:包含发送方硬件地址 / 发送方 IP 地址 / 目标方硬件地址(未知时填 0) / 目标方 IP 地址。

本地广播 ARP 请求(路由器不转发ARP请求)。

ARP 响应分组:包含发送方硬件地址 / 发送方 IP地址 / 目标方硬件地址 / 目标方 IP 地址。

ARP 分组封装在物理网络的帧中传输。

ARP缓存的作用:

存放最近获得的 IP 地址到 MAC 地址的绑定,以减少 ARP 广播的数量。

为了减少网络上的通信量,主机 A 在发送其 ARP 请求分组时,就将自己的 IP 地址到硬件地址的映射写入 ARP 请求分组。

当主机 B 收到 A 的 ARP 请求分组时,就将主机 A 的这一地址映射写入主机 B 自己的 ARP 高速缓存中。这对主机 B 以后向 A 发送数据报时就更方便了。

注意:ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题。

如果所要找的主机和源主机不在同一个局域网上,那么就要通过 ARP 找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络。剩下的工作就由下一个网络来做。

从 IP 地址到硬件地址的解析是自动进行的,主机的用户对这种地址解析过程是不知道的。

只要主机或路由器要和本网络上的另一个已知 IP 地址的主机或路由器进行通信,ARP 协议就会自动地将该 IP 地址解析为链路层所需要的硬件地址。

IP 数据报的格式

一个 IP 数据报由首部和数据两部分组成。

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

在首部的固定部分的后面是一些可选字段,其长度是可变的。

首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。

可选字段,其长度是可变的

版本——占 4 位,指 IP 协议的版本。

目前的 IP 协议版本号为 4 (即 IPv4)。

首部长度——占 4 位,可表示的最大数值 是 15 个单位(一个单位为 4 字节),因此 IP 的首部长度的最大值是 60 字节

区分服务——占 8 位,用来获得更好的服务。在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段

总长度——占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。

标识(identification) ——占 16 位,它是一个计数器,用来产生 IP 数据报的标识。

片偏移—— 占13 位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。

生存时间——占8 位,记为 TTL (Time To Live),指示数据报在网络中可通过的路由器数的最大值。

协议——占8 位,指出此数据报携带的数据使用何种协议,以便目的主机的 IP 层将数据部分上交给那个处理过程

首部检验和——占16 位,只检验数据报的首部,不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。

源地址和目的地址都各占 4 字节

IP数据报分片:

一数据报的总长度为 3820 字节,其数据部分的长度为 3800 字节(使用固定首部),需要分片为长度不超过 1420 字节的数据报片。

因固定首部长度为 20 字节,因此每个数据报片的数据部分长度不能超过 1400 字节。

于是分为 3 个数据报片,其数据部分的长度分别为 1400、1400 和 1000 字节。

原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值

查找路由表

根据目的网络地址就能确定下一跳路由器,这样做的结果是:

IP 数据报最终一定可以找到目的主机所在目的网络上的路由器(可能要通过多次的间接交付)。只有到达最后一个路由器时,才试图向目的主机进行直接交付。

特定主机路由

在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由。

采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由。

默认路由

路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间。

路由器分组转发算法:

(1) 从数据报的首部提取目的主机的 IP 地址 D, 得出目的网络地址为 N。

(2) 若网络 N 与此路由器直接相连,则把数据报直接交付目的主机 D;否则是间接交付,执行(3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行(4)。

(4) 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行(5)。

(5) 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行(6)。

(6) 报告转发分组出错。

路由表:

路由表没有给分组指明到某个网络的完整路径。

路由表指出,到某个网络应当先到某个路由器(即下一跳路由器)。

在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器。

这样一步一步地查找下去,直到最后到达目的网络。

划分子网

凡是从其他网络发送给本单位某个主机的 IP 数据报,仍然是根据 IP 数据报的目的网络号 net-id,先找到连接在本单位网络上的路由器。

然后此路由器在收到 IP 数据报后,再按目的网络号 net-id 和子网号 subnet-id 找到目的子网。

最后就将 IP 数据报直接交付目的主机。

当没有划分子网时,IP 地址是两级结构。

划分子网后 IP 地址就变成了三级结构。

划分子网只是把 IP 地址的主机号 host-id 这部分进行再划分,而不改变 IP 地址原来的网络号 net-id。

优点:减少了 IP 地址的浪费,使网络的组织更加灵活,更便于维护和管理

划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现为没有划分子网的一个网络。

子网掩码

从一个 IP 数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分。

使用子网掩码(subnet mask)可以找出 IP 地址中的子网部分。

规则:

子网掩码长度=32位

某位=1:IP地址中的对应位为网络号和子网号

某位=0:IP地址中的对应位为主机号

子网掩码是一个网络或一个子网的重要属性。

路由器在和相邻路由器交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉相邻路由器。路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码。若一个路由器连接在两个子网上就拥有两个网络地址和两个子网掩码。

子网划分方法

有固定长度子网和变长子网两种子网划分方法。

在采用固定长度子网时,所划分的所有子网的子网掩码都是相同的。

虽然根据已成为互联网标准协议的RFC 950文档,子网号不能为全1或全0,但随着无分类域间路由选择CIDR的广泛使用,现在全1和全0的子网号也可以使用了,但一定要谨慎使用,确认你的路由器所用的路由选择软件是否支持全0或全1的子网号这种较新的用法。

划分子网增加了灵活性,但却减少了能够连接在网络上的主机总数。

已知 IP 地址是 141.14.72.24,子网掩码是 255.255.192.0。试求网络地址。

在划分子网情况下路由器转发分组的算法

(1) 从收到的分组的首部提取目的 IP 地址 D。

(2) 先用各网络的子网掩码和 D 逐位相“与”,看是否和相应的网

络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,

执行 (3)。

(3) 若路由表中有目的地址为 D 的特定主机路由,则将分组传送给

指明的下一跳路由器;否则,执行 (4)。

(4) 对路由表中的每一行,将子网掩码和 D 逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行 (5)。

(5) 若路由表中有一个默认路由,则将分组传送给路由表中所指明

的默认路由器;否则,执行 (6)。

(6) 报告转发分组出错。

网际控制报文协议 ICMP

为了更有效地转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP (Internet Control Message Protocol)。

ICMP 是互联网的标准协议。

ICMP 允许主机或路由器报告差错情况和提供有关异常情况的报告。

但 ICMP 不是高层协议(看起来好像是高层协议,因为 ICMP 报文是装在 IP 数据报中,作为其中的数据部分),而是 IP 层的协议。

ICMP 报文的种类有两种,即 ICMP 差错报告报文和 ICMP 询问报文。

ICMP 报文的前 4 个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的 4 个字节的内容与 ICMP 的类型有关

互联网两大类路由选择协议

内部网关协议 IGP (Interior Gateway Protocol)

在一个自治系统内部使用的路由选择协议。

目前这类路由选择协议使用得最多,如 RIP 和 OSPF 协议。

外部网关协议 EGP (External Gateway Protocol)

若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由选择信息传递到另一个自治系统中。这样的协议就是外部网关协议 EGP。

在外部网关协议中目前使用最多的是 BGP-4。

IPv6

IP 是互联网的核心协议。

互联网经过几十年的飞速发展,到2011年2月,IPv4 的 32 位地址已经耗尽。

ISP 已经不能再申请到新的 IP 地址块了。

我国在2014-2015年也逐步停止了向新用户和应用分配 IPv4 地址。

解决 IP 地址耗尽的根本措施就是采用具有更大地址空间的新版本的 IP,即 IPv6。

IPv6 仍支持无连接的传送,但将协议数据单元 PDU 称为分组。为方便起见,本书仍采用数据报这一名词。

所引进的主要变化如下:

更大的地址空间:IPv6 将地址从 IPv4 的 32 位 增大到了 128 位。

扩展的地址层次结构。

灵活的首部格式: IPv6 定义了许多可选的扩展首部。

改进的选项: IPv6 允许数据报包含有选项的控制信息,其选项放在有效载荷中。

允许协议继续扩充。

支持即插即用(即自动配置)。因此 IPv6 不需要使用 DHCP。

支持资源的预分配。 IPv6 支持实时视像等要求,保证一定的带宽和时延的应用。

IPv6 首部改为 8 字节对齐。首部长度必须是 8 字节的整数倍。原来的 IPv4 首部是 4 字节对齐。

一般形式

IPv6数据报由两大部分组成:

基本首部 (base header)

有效载荷 (payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),再后面是数据部分。

IPv6 把原来 IPv4 首部中选项的功能都放在扩展首部中,并将扩展首部留给路径两端的源站和目的站的主机来处理。

数据报途中经过的路由器都不处理这些扩展首部(只有一个首部例外,即逐跳选项扩展首部)。

这样就大大提高了路由器的处理效率。

IPv6 数据报的目的地址可以是以下三种基本类型地址之一:

(1) 单播 (unicast):传统的点对点通信。

(2) 多播 (multicast):一点对多点的通信。

(3) 任播 (anycast):这是 IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中的一个,通常是距离最近的一个。

IPv6 将实现 IPv6 的主机和路由器均称为结点。

一个结点就可能有多个与链路相连的接口。

IPv6 地址是分配给结点上面的接口的。

一个接口可以有多个单播地址。

其中的任何一个地址都可以当作到达该结点的目的地址。即一个结点接口的单播地址可用来唯一地标志该结点。

在IPv6中,每个地址占 128 位,地址空间大于 3.4´1038 。

为了使地址再稍简洁些,IPv6 使用冒号十六进制记法(colon hexadecimal notation, 简写为colon hex)。每个 16 位的值用十六进制值表示,各值之间用冒号分隔。例如:

68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF

在十六进制记法中,允许把数字前面的0省略。例如把0000中的前三个0省略,写成1个0。

地址分类:

双协议栈

双协议栈(dual stack)是指在完全过渡到 IPv6 之前,使一部分主机(或路由器)装有两个协议栈,一个 IPv4 和一个 IPv6。

双协议栈的主机(或路由器)记为 IPv6/IPv4,表明它同时具有两种 IP 地址:一个 IPv6 地址和一个 IPv4 地址。

双协议栈主机在和 IPv6 主机通信时是采用 IPv6 地址,而和 IPv4 主机通信时就采用 IPv4 地址。

根据 DNS 返回的地址类型可以确定使用 IPv4 地址还是 IPv6 地址。

隧道技术

在 IPv6 数据报要进入IPv4网络时,把 IPv6 数据报封装成为 IPv4 数据报,整个的 IPv6 数据报变成了 IPv4 数据报的数据部分。

当 IPv4 数据报离开 IPv4 网络中的隧道时,再把数据部分(即原来的 IPv6 数据报)交给主机的 IPv6 协议栈。

虚拟专用网 VPN

由于 IP 地址的紧缺,一个机构能够申请到的IP地址数往往远小于本机构所拥有的主机数。

考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网。

假定在一个机构内部的计算机通信也是采用 TCP/IP 协议,那么从原则上讲,对于这些仅在机构内部使用的计算机就可以由本机构自行分配其 IP 地址。

本地地址与全球地址

本地地址——仅在机构内部使用的 IP 地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。

全球地址——全球唯一的 IP 地址,必须向互联网的管理机构申请。

问题:在内部使用的本地地址就有可能和互联网中某个 IP 地址重合,这样就会出现地址的二义性问题。

解决:RFC 1918指明了一些专用地址 (private address)。专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发

网络地址转换 NAT

网络地址转换 NAT (Network Address Translation) 方法于1994年提出。

需要在专用网连接到互联网的路由器上安装 NAT 软件。装有 NAT 软件的路由器叫作 NAT路由器,它至少有一个有效的外部全球IP地址。

所有使用本地地址的主机在和外界通信时,都要在 NAT 路由器上将其本地地址转换成全球 IP 地址,才能和互联网连接。

第五章:运输层

运输层

进程之间的通信

从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。

当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。

从运输层的角度看,通信的真正端点并不是主机而是主机中的进程。

网络层是为主机之间提供逻辑通信,

而运输层为应用进程之间提供端到端的逻辑通信。

运输层的作用

在一台主机中经常有多个应用进程同时分别和另一台主机中的多个应用进程通信。

这表明运输层有一个很重要的功能——复用 (multiplexing)和分用 (demultiplexing)。

根据应用程序的不同需求,运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP 。屏蔽作用:运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。

当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。

当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。

端口

运行在计算机中的进程是用进程标识符来标志的。

但运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在互联网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。

为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。

端口用一个 16 位端口号进行标志。

端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。

在互联网中,不同计算机的相同端口号是没有联系的。两个计算机中的进程要互相通信,不仅必须知道对方的 IP 地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)

(1) 服务器端使用的端口号

熟知端口,数值一般为 0~1023。

登记端口号,数值为 1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。

(2) 客户端使用的端口号

又称为短暂端口号,数值为 49152~65535,留给客户进程选择暂时使用。

当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。

常用端口:

用户数据报协议 UDP (User Datagram Protocol)

(1) UDP 是无连接的,发送数据之前不需要建立连接,,因此减少了开销和发送数据之前的时延。

(2) UDP 使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表。

(3) UDP 是面向报文的。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP 一次交付一个完整的报文。

(4) UDP 没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求。

(5) UDP 支持一对一、一对多、多对一和多对多的交互通信。

(6) UDP 的首部开销小,只有 8 个字节,比 TCP 的 20 个字节的首部要短。

发送方 UDP 对应用程序交下来的报文,在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。

应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。

接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。

应用程序必须选择合适大小的报文。

若报文太长,UDP 把它交给 IP 层后,IP 层在传送时可能要进行分片,这会降低 IP 层的效率。

若报文太短,UDP 把它交给 IP 层后,会使 IP 数据报的首部的相对长度太大,这也降低了 IP 层的效率。

用户数据报 UDP 有两个字段:数据字段和首部字段。首部字段有 8 个字节,由 4 个字段组成,每个字段都是 2 个字节。

计算UDP检验和:

传输控制协议 TCP (Transmission Control Protocol)

TCP 是面向连接的运输层协议。

每一条 TCP 连接只能有两个端点 (endpoint),每一条 TCP 连接只能是点对点的(一对一)。

TCP 提供可靠交付的服务。

TCP 提供全双工通信。

面向字节流

TCP 中的“流”(stream)指的是流入或流出进程的字节序列。

“面向字节流”的含义是:虽然应用程序和 TCP 的交互是一次一个数据块,但 TCP 把应用程序交下来的数据看成仅仅是一连串无结构的字节流。

TCP 不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系。

但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。

TCP 把连接作为最基本的抽象。

每一条 TCP 连接有两个端点。

TCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字 (socket) 或插口。

端口号拼接到 (contatenated with) IP 地址即构成了套接字。

停止等待协议

“停止等待”就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。

全双工通信的双方既是发送方也是接收方。

为了讨论问题的方便,我们仅考虑 A 发送数据而 B 接收数据并发送确认。因此 A 叫做发送方,而 B 叫做接收方。

无差错: A 发送分组 M1,发完就暂停发送,等待 B 的确认 (ACK)。B 收到了 M1 向 A 发送 ACK。A 在收到了对 M1 的确认后,就再发送下一个分组 M2。

**出现差错:**在接收方 B 会出现两种情况:

(1)B 接收 M1 时检测出了差错,就丢弃 M1,其他什么也不做(不通知 A 收到有差错的分组)。

(2)M1 在传输过程中丢失了,这时 B 当然什么都不知道,也什么都不做。

在这两种情况下,B 都不会发送任何信息。

如何保证 B 正确收到了 M1 ?

解决方法:超时重传

A 为每一个已发送的分组都设置了一个超时计时器。

A 只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组 M2 。

确认丢失

若 B 所发送的对 M1 的确认丢失了,那么 A 在设定的超时重传时间内不能收到确认,但 A 并无法知道:是自己发送的分组出错、丢失了,或者 是 B 发送的确认丢失了。因此 A 在超时计时器到期后就要重传 M1。

假定 B 又收到了重传的分组 M1。这时 B 应采取两个行动:

第一,丢弃这个重复的分组 M1,不向上层交付。

第二,向 A 发送确认。不能认为已经发送过确认就不再发送,因为 A 之所以重传 M1 就表示 A 没有收到对 M1 的确认。

确认迟到

传输过程中没有出现差错,但 B 对分组 M1 的确认迟到了。

A 会收到重复的确认。对重复的确认的处理很简单:收下后就丢弃。

B 仍然会收到重复的 M1,并且同样要丢弃重复的 M1,并重传确认分组。

注意

在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。

分组和确认分组都必须进行编号。

超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。

自动重传请求 ARQ

通常 A 最终总是可以收到对所有发出的分组的确认。如果 A 不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。

使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信。

像上述的这种可靠传输协议常称为自动重传请求 ARQ (Automatic Repeat reQuest)。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。

为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。

流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一直有数据不间断地传送。

连续 ARQ 协议

滑动窗口协议比较复杂,是 TCP 协议的精髓所在。

发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可连续发送出去,而不需要等待对方的确认。这样,信道利用率就提高了。

连续 ARQ 协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置。

累积确认

接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。

优点:容易实现,即使确认丢失也不必重传。

缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息。

TCP可靠通信具体实现

TCP 连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口。

TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。

TCP 两端的四个窗口经常处于动态变化之中。

TCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。

TCP首部

TCP 虽然是面向字节流的,但 TCP 传送的数据单元却是报文段。

一个 TCP 报文段分为首部和数据两部分,而 TCP 的全部功能都体现在它首部中各字段的作用。 TCP 报文段首部的前 20 个字节是固定的,后面有 4n 字节是根据需要而增加的选项 (n 是整数)。因此 TCP 首部的最小长度是 20 字节。

源端口和目的端口字段——各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。

序号字段:占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。

确认号字段:占 4 字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。

数据偏移(即首部长度)——占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。

保留字段:占 6 位,保留为今后使用,但目前应置为 0

确认 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 个字节。”

MSS (Maximum Segment Size) 是 TCP 报文段中的数据字段的最大长度。

数据字段加上 TCP 首部才等于整个的 TCP 报文段。所以,MSS是“TCP 报文段长度减去 TCP 首部长度”。

为什么需要规定MSS

MSS 与接收窗口值没有关系。

若选择较小的 MSS 长度,网络的利用率就降低。

当 TCP 报文段只含有 1 字节的数据时,在 IP 层传输的数据报的开销至少有 40 字节(包括 TCP 报文段的首部和 IP 数据报的首部)。这样,对网络的利用率就不会超过 1/41。到了数据链路层还要加上一些开销。

若 TCP 报文段非常长,那么在 IP 层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的 TCP 报文段。当传输出错时还要进行重传。这些也都会使开销增大。

因此,MSS 应尽可能大些,只要在 IP 层传输时不需要再分片就行。

由于 IP 数据报所经历的路径是动态变化的,因此在这条路径上确定的不需要分片的 MSS,如果改走另一条路径就可能需要进行分片。

因此最佳的 MSS 是很难确定的。

TCP可靠传输的实现:

1.以字节为单位的滑动窗口

TCP 的滑动窗口是以字节为单位的。

现假定 A 收到了 B 发来的确认报文段,其中窗口是 20 字节,而确认号是 31(这表明 B 期望收到的下一个序号是 31,而序号 30 为止的数据已经收到了)。

根据这两个数据,A 就构造出自己的发送窗口,

根据 B 给出的窗口值,A 构造出自己的发送窗口。

发送窗口表示:在没有收到 B 的确认的情况下,A 可以连续把窗口内的数据都发送出去。

发送窗口里面的序号表示允许发送的序号。

显然,窗口越大,发送方就可以在收到对方确认之前连续发送更多的数据,因而可能获得更高的传输效率。

发送缓存 发送方的应用进程把字节流写入 TCP 的发送缓存。

用来暂时存放发送应用程序传送给发送方 TCP 准备发送的数据;

接收缓存 接收方的应用进程从 TCP 的接收缓存中读取字节流

用来暂时存放TCP 已发送出但尚未收到确认的数据。

按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。

2.超时重传时间的选择

重传机制是 TCP 中最重要和最复杂的问题之一。

TCP 每发送一个报文段,就对这个报文段设置一次计时器。

只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段。

重传时间的选择是 TCP 最复杂的问题之一。

如果把超时重传时间设置得太短,就会引起很多报文段的不必要的重传,使网络负荷增大。

但若把超时重传时间设置得过长,则又使网络的空闲时间增大,降低了传输效率。

TCP 采用了一种自适应算法,它记录一个报文段发出的时间,以及收到相应的确认的时间。这两个时间之差就是报文段的往返时间 RTT。

TCP 的流量控制流量控制

就是让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。

利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。

TCP 为每一个连接设有一个持续计时器 (persistence timer) 。

只要 TCP 连接的一方收到对方的零窗口通知,就启动该持续计时器。

若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带 1 字节的数据),而对方就在确认这个探测报文段时给出了现在的窗口值。

若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。

若窗口不是零,则死锁的僵局就可以打破了。

TCP 的拥塞控制

拥塞控制就是防止过多的数据注入到网络中,使网络中的路由器或链路不致过载。

拥塞控制所要做的都有一个前提,就是网络能够承受现有的网络负荷。

拥塞控制是一个全局性的过程,涉及到所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素。

拥塞控制与流量控制的区别

流量控制往往指点对点通信量的控制,是个端到端的问题(接收端控制发送端)。

流量控制所要做的就是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞的判断

重传定时器超时

现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于 1 %)。只要出现了超时,就可以猜想网络可能出现了拥塞。

收到三个相同(重复)的 ACK

个别报文段会在网络中丢失,预示可能会出现拥塞(实际未发生拥塞),因此可以尽快采取控制措施,避免拥塞。

TCP拥塞控制算法

慢开始 (slow-start)

用来确定网络的负载能力。

算法的思路:由小到大逐渐增大拥塞窗口数值。

初始拥塞窗口 cwnd 设置:

旧的规定:在刚刚开始发送报文段时,先把初始拥塞窗口cwnd 设置为 1 至 2 个发送方的最大报文段 SMSS (Sender Maximum Segment Size) 的数值。

新的 RFC 5681 把初始拥塞窗口 cwnd 设置为不超过2至4个SMSS 的数值。

慢开始门限 ssthresh(状态变量):防止拥塞窗口cwnd 增长过大引起网络拥塞。

拥塞窗口 cwnd 控制方法:在每收到一个对新的报文段的确认后,可以把拥塞窗口增加最多一个 SMSS 的数值。

拥塞窗口cwnd每次的增加量 = min (N, SMSS)

其中 N 是原先未被确认的、但现在被刚收到的确认报文段所确认的字节数。

不难看出,当 N < SMSS 时,拥塞窗口每次的增加量要小于 SMSS。

用这样的方法逐步增大发送方的拥塞窗口 cwnd,可以使分组注入到网络的速率更加合理。

拥塞避免 (congestion avoidance)

思路:让拥塞窗口 cwnd 缓慢地增大,即每经过一个往返时间 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长。

因此在拥塞避免阶段就有“加法增大” (Additive Increase) 的特点。这表明在拥塞避免阶段,拥塞窗口 cwnd 按线性规律缓慢增长,比慢开始算法的拥塞窗口增长速率缓慢得多。

无论在慢开始阶段还是在拥塞避免阶段,只要发送方判断网络出现拥塞(重传定时器超时):

ssthresh = max(cwnd/2,2)

cwnd = 1

执行慢开始算法 这样做的目的就是要迅速减少主机发送到网络中的分组数,使得发生拥塞的路由器有足够时间把队列中积压的分组处理完毕。

“拥塞避免”并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的。

“拥塞避免”是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞。

快重传 (fast retransmit)

采用快重传FR (Fast Retransmission) 算法可以让发送方尽早知道发生了个别报文段的丢失。

快重传 算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认。

发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传(即“快重传”),这样就不会出现超时,发送方也不就会误认为出现了网络拥塞。

使用快重传可以使整个网络的吞吐量提高约20%。

快恢复 (fast recovery)

当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复算法 FR (Fast Recovery) 算法:

​ (1) 慢开始门限 ssthresh = 当前拥塞窗口 cwnd / 2 ;

​ (2) 新拥塞窗口 cwnd = 慢开始门限 ssthresh ;

(3) 开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大**。**

发送窗口的上限值

发送方的发送窗口的上限值应当取为接收方窗口 rwnd 和拥塞窗口 cwnd 这两个变量中较小的一个,即应按以下公式确定:

发送窗口的上限值 = Min [rwnd, cwnd]

当 rwnd < cwnd 时,是接收方的接收能力限制发送窗口的最大值。

当 cwnd < rwnd 时,则是网络的拥塞限制发送窗口的最大值。

“先进先出”FIFO 处理规则

路由器的队列通常都是按照“先进先出”FIFO (First In First Out) 的规则处理到来的分组。

当队列已满时,以后再到达的所有分组(如果能够继续排队,这些分组都将排在队列的尾部)将都被丢弃。这就叫做尾部丢弃策略 (tail-drop policy)。

路由器的尾部丢弃往往会导致一连串分组的丢失,这就使发送方出现超时重传,使 TCP 进入拥塞控制的慢开始状态,结果使 TCP 连接的发送方突然把数据的发送速率降低到很小的数值。

TCP 的运输连接管理

运输连接的管理就是使运输连接的建立和释放都能正常地进行。

TCP连接的建立采用客户服务器方式。

主动发起连接建立的应用进程叫做客户(client),

被动等待连接建立的应用进程叫做服务器(server)。

TCP 建立连接的过程叫做握手。

握手需要在客户和服务器之间交换三个 TCP 报文段。称之为三报文握手。

采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,因而产生错误。

A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN = 1,并选择序号 seq = x,表明传送数据时的第一个数据字节的序号是 x。

B 的 TCP 收到连接请求报文段后,如同意,则发回确认。

B 在确认报文段中应使 SYN = 1,使 ACK = 1,其确认号ack = x + 1,自己选择的序号 seq = y。

A 收到此报文段后向 B 给出确认,其 ACK = 1,确认号 ack = y + 1。

A 的 TCP 通知上层应用进程,连接已经建立。

B 的 TCP 收到主机 A 的确认后,也通知其上层应用进程:TCP 连接已经建立。

TCP 的连接释放采用四报文握手

数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN = 1,其序号seq = u,等待 B 的确认。

B 发出确认,确认号 ack = u + 1,而这个报文段自己的序号 seq = v。TCP 服务器进程通知高层应用进程。

从 A 到 B 这个方向的连接就释放了,TCP 连接处于半关闭状态。B 若发送数据,A 仍要接收。

若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。

A 收到连接释放报文段后,必须发出确认。 在确认报文段中 ACK = 1,确认号 ack = w + 1,自己的序号 seq = u + 1。

TCP 连接必须经过时间 2MSL 后才真正释放掉。

第六章:应用层

应用层

每个应用层协议都是为了解决某一类应用问题,而问题的解决又往往是通过位于不同主机中的多个应用进程之间的通信和协同工作来完成的。应用层的具体内容就是规定应用进程在通信时所遵循的协议。

应用层的许多协议都是基于客户服务器方式。客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。客户服务器方式所描述的是进程之间服务和被服务的关系。客户是服务请求方,服务器是服务提供方。

1.域名系统 DNS

许多应用层软件经常直接使用域名系统 DNS (Domain Name System),但计算机的用户只是间接而不是直接使用域名系统。

互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统 DNS。

名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。

互联网采用了层次树状结构的命名方法。

任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。

域名的结构由标号序列组成,各标号之间用点隔开:

… . 三级域名 . 二级域名 . 顶级域名

顶级域名 TLD(Top Level Domain)

(1) 国家顶级域名 nTLD

​ .cn 表示中国,

​ .us 表示美国,

​ .uk 表示英国,等等。

(2) 通用顶级域名 gTLD

​ 最早的顶级域名是:

​ .com (公司和企业)

​ .net (网络服务机构

​ .org (非赢利性组织)

​ .edu (美国专用的教育机构)

​ .gov (美国专用的政府部门)

​ .mil (美国专用的军事部门)

​ .int (国际组织)

(3) 基础结构域名 (infrastructure domain)

​ 这种顶级域名只有一个,即 arpa,

​ 用于反向域名解析,因此又称为反向域名。

(4)新增通用顶级域名

.aero (航空运输企业)

.biz (公司和企业)

.cat (加泰隆人的语言和文化团体)

.coop (合作团体)

.info (各种情况)

.jobs (人力资源管理者)

.mobi (移动产品与服务的用户和提供者)

.museum (博物馆)

.name (个人)

.pro (有证书的专业人员)

.travel (旅游业)

域名服务器

一个服务器所负责管辖的(或有权限的)范围叫做区 (zone)。

各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的。每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到 IP 地址的映射。DNS 服务器的管辖范围不是以“域”为单位,而是以“区”为单位。

1.根域名服务器

2.顶级域名服务器

3.权限域名服务器

4.本地域名服务器

域名的解析过程

主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向其他根域名服务器继续发出查询请求报文。

本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询。

每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录。

2.文件传送协议FTP

文件传送协议 FTP (File Transfer Protocol) 是互联网上使用得最广泛的文件传送协议。

FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。

FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中任意计算机之间传送文件。

RFC 959 很早就成为了互联网的正式标准。

文件传送协议 FTP 只提供文件传送的一些基本的服务,它使用 TCP 可靠的运输服务。

FTP 的主要功能是减少或消除在不同操作系统下处理文件的不兼容性。

FTP 使用客户服务器方式。一个 FTP 服务器进程可同时为多个客户进程提供服务。FTP 的服务器进程由两大部分组成:一个主进程,负责接受新的请求;另外有若干个从属进程,负责处理单个请求。

FTP 使用的两个 TCP 连接

控制连接在整个会话期间一直保持打开,FTP 客户发出的传送请求通过控制连接发送给服务器端的控制进程,但控制连接不用来传送文件。

实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到 FTP 客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程。

数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行。

当客户进程向服务器进程发出建立连接请求时,要寻找连接服务器进程的熟知端口 (21),同时还要告诉服务器进程自己的另一个端口号码,用于建立数据传送连接。

接着,服务器进程用自己传送数据的熟知端口 (20) 与客户进程所提供的端口号码建立数据传送连接。

由于 FTP 使用了两个不同的端口号,所以数据连接与控制连接不会发生混乱。

**使用两个不同端口号的好处:**使协议更加简单和更容易实现。

在传输文件时还可以利用控制连接(例如,客户发送请求终止传输)

NFS协议 允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据。

NFS 可使用户只复制一个大文件中的一个很小的片段,而不需要复制整个大文件。

例如,计算机 A 的 NFS 客户软件,把要添加的数据和在文件后面写数据的请求一起发送到远地的计算机 B 的 NFS 服务器。NFS 服务器更新文件后返回应答信息。

NFS 在网络上传送的只是少量的修改数据。

简单文件传送协议 TFTP

TFTP (Trivial File Transfer Protocol) 是一个很小且易于实现的文件传送协议。

TFTP 使用客户服务器方式和使用 UDP 数据报,因此 TFTP 需要有自己的差错改正措施。

TFTP 只支持文件传输而不支持交互。

TFTP 没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别。

(1) 每次传送的数据 PDU 中有 512 字节的数据,但最后一次可不足 512 字节。

(2) 数据 PDU 也称为文件块 (block),每个块按序编号,从 1 开始。

(3) 支持 ASCII 码或二进制传送。

(4) 可对文件进行读或写。

(5) 使用很简单的首部。

TELNET 使用网络虚拟终端 NVT 格式

万维网

WWW万维网以客户-服务器方式工作。

浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器。

客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档。

在一个客户程序主窗口上显示出的万维网文档称为页面 (page)。

URL 的一般形式

由以冒号隔开的两大部分组成,并且在 URL 中的字符对大写或小写没有要求。

URL 的一般形式是:

超文本传送协议 HTTP

HTTP 是面向事务的客户服务器协议。

HTTP 1.0 协议是无状态的 (stateless)。

HTTP 协议本身也是无连接的,虽然它使用了面向连接的 TCP 向上提供的服务。

HTTP/1.1 协议使用持续连接 (persistent connection)。

万维网服务器在发送响应后仍然在一段时间内保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求报文和响应报文。

这并不局限于传送同一个页面上链接的文档,而是只要这些文档都在同一个服务器上就行。

目前一些流行的浏览器(例如,IE 6.0)的默认设置就是使用 HTTP/1.1。

代理服务器

代理服务器 (proxy server) 又称为万维网高速缓存 (Web cache),它代表浏览器发出 HTTP 请求。

万维网高速缓存把最近的一些请求和响应暂存在本地磁盘中。

当与暂时存放的请求相同的新请求到达时,万维网高速缓存就把暂存的响应发送出去,而不需要按 URL 的地址再去互联网访问该资源。

使用高速缓存可减少访问互联网服务器的时延

通用网关接口 CGI

CGI (Common Gateway Interface) 是一种标准,它定义了动态文档应如何创建,输入数据应如何提供给应用程序,以及输出结果应如何使用。

万维网服务器与 CGI 的通信遵循 CGI 标准。

“通用”:CGI 标准所定义的规则对其他任何语言都是通用的。

“网关”:CGI 程序的作用像网关。

“接口”:有一些已定义好的变量和调用等可供其他 CGI 程序使用。

  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值