计算机网络复习资料
前情提要
https://blog.csdn.net/Liu_Xin233/article/details/134773846?fromshare=blogdetail&sharetype=blogdetail&sharerId=134773846&sharerefer=PC&sharesource=Liu_Xin233&sharefrom=from_link第一章 概述
一、计算机网络在信息时代中的作用(三网融合)
1、电信网络
供电话、电报及传真等服务;
2、有线电视网络
向用户传送各种电视节目;
3、计算机网络
使用户能在计算机之间传送数据文件;
二、计算机网络
1、定义
计算机网络主要是由一些通用的、可编程的硬件互连而成的,而这些硬件并非专门用来实现某一特定目的(例如,传送数据或视频信号)。这些可编程的硬件能够用来传送多种不同类型的数据,并能支持广泛的和日益增长的应用。
2、分类
(1)按照网络的作用范围
-
广域网WAN(Wide Area Network):广域网的作用范围通常为几十到几千公里,因而有时也称为远程网(long haul network)。广域网是互联网的核心部分,其任务是通过长距离(例如,跨越不同的国家)运送主机所发送的数据。连接广域网各结点交换机的链路一般都是高速链路,具有较大的通信容量;
-
城域网MAN(Metropolitan Area Network):城域网的作用范围一般是一个城市,可跨越几个街区甚至整个城市,其作用距离约为5~50km。城域网可以为一个或几个单位所拥有,但也可以是一种公用设施,用来将多个局域网进行互连。目前很多城域网采用的是以太网技术,因此有时也常并入局域网的范围进行讨论;
-
局域网LAN(Local Area Network):局域网一般用微型计算机或工作站通过高速通信线路相连(速率通常在10Mbit/s以上),但地理上则局限在较小的范围(如1km左右)。在局域网发展的初期,一个学校或工厂往往只拥有一个局域网,但现在局域网已非常广泛地使用,学校或企业大都拥有许多个互连的局域网(这样的网络常称为校园网或企业网);
-
个人区域网PAN(Personal Area Network):个人区域网就是在个人工作的地方把属于个人使用的电子设备(如便携式电脑等)用无线技术连接起来的网,因此也常称为无线个人区域网WPAN(Wireless PAN),其范围很小,大约在10m左右。
(2)按照网络的使用者
-
公用网(public network):指电信公司(国有或私有)出资建造的大型网络。“公用”的意思就是所有愿意按电信公司的规定交纳费用的人都可以使用这种网络。因此公用网也可称为公众网。
-
专用网(private network):某个部门为满足本单位的特殊业务工作的需要而建造的网络。这种网络不向本单位以外的人提供服务。例如,军队、铁路、银行、电力等系统均有本系统的专用网。
3、特点
(1)连通性(connectivity)
-
使上网用户之间都可以交换信息(数据,以及各种音频视频),好像这些用户的计算机都可以彼此直接连通一样。
-
注意,互联网具有虚拟的特点,无法准确知道对方是谁,也无法知道对方的位置。
(2)共享(Sharing)
-
指资源共享。
-
资源共享的含义是多方面的。可以是信息共享、软件共享,也可以是硬件共享。
-
由于网络的存在,这些资源好像就在用户身边一样,方便使用。
三、互联网的组成
1、边缘部分(资源子网)
(1)定义
由所有连接在因特网上的主机组成(台式电脑、大型服务器、笔记本电脑、平板、智能手机等)。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享。
(2)互联网边缘部分的通信方式
① C/S模式(客户-服务器方式)
-
客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。
-
客户-服务器方式所描述的是进程之间服务和被服务的关系。
-
客户是服务的请求方,服务器是服务的提供方。它们都要使用网络核心部分所提供的服务。
② P2P模式(对等连接方式)
-
对等连接(peer-to-peer,简写为P2P)是指两个主机在通信时并不区分哪一个是服务请求方还是服务提供方。
-
只要两个主机都运行了对等连接软件(P2P软件),它们就可以进行平等的、对等连接通信。
-
对等连接方式从本质上看仍然是使用客户-服务器方式,只是对等连接中的每一台主机既是客户又同时是服务器。
2、核心部分(通信子网)
(1)定义
由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的(提供连通性和交换)。
(2)交换技术
① 电路交换
(i)定义
-
电话交换机接通电话线的方式称为电路交换;
-
从通信资源的分配角度来看,交换(Switching)就是按照某种方式动态地分配传输线路的资源;
(ii)步骤
1、建立连接(分配通信资源)
2、通话(始终占用通信资源)
3、释放连接(归还通信资源)
(iii)特点
整个报文的比特流连续地从源点直达终点,好像在一个管道中传送。其线路的传输效率较低。
② 分组交换
(i)分组(包)
将较长的报文划分成一个个更小的等长数据段,并加上首部(包头),在终端重新按序组装成报文。
(ii)存储转发
分组到达一个路由器后,先暂时存储在缓冲区中,查找转发表,然后从一条合适的链路转发出去。
(iii)路由选择协议
在路由器中运行,自动找到路由器转发分组最合适的路径。
(iv)特点
-
节点暂时存储的是一个个分组,而不是整个数据文件;
-
分组暂时保存在节点的内存中,保证了较高的交换速率;
-
单个分组传送到相邻结点,存储下来后查找转发表,转发到下一个结点。
-
动态分配信道,极大的提高了通信线路的利用率。
(v)优点
优点 | 所采用的手段 |
---|---|
高效 | 在分组传输的过程中动态分配传输带宽,对通信链路是逐段占用 |
灵活 | 为每一个分组独立地选择最合适的转发路由 |
迅速 | 以分组作为传送单位,可以不先建立连接就能向其他主机发送分组 |
可靠 | 保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性 |
(vi)缺点
-
分组在节点转发时因排队而造成一定的延时
-
由于分组交换不像电路交换那样通过建立连接来保证通信时所需的各种资源,因而无法确保通信时端到端所需的带宽
-
分组必须携带一些控制信息(首部)而产生额外开销,整个分组交换网需要专门的管理和控制机制(管理控制比较困难)
-
当分组采用数据报服务时,分组可能出现失序、丢失或重复。
③ 报文交换
整个报文先传送到相邻结点,全部存储下来后查找转发表,转发到下一个结点。
④ 对比
-
若要连续传送大量的数据,且其传送时间远大于连接建立时间,则电路交换的传输速率较快。
-
报文交换和分组交换不需要预先分配传输带宽,在传送突发数据时可提高整个网络的信道利用率。
-
由于一个分组的长度往往远小于整个报文的长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。
四、计算机网络的性能指标
1、速率
(1)定义
计算机中数据量的单位,也是信息论中使用的信息量的单位。
(2)单位
bit/s(b/s或bps),或kbit/s、Mbit/s、Gbit/s等。
(3)单位转换关系
8Gbit/s = 8×103Mbit/s = 8×106kbit/s = 8×109bit/s( = 1×109Byte/s)
(4)数据量和速率的单位
-
数据量:K(210)、M(220)、G(230)、T(240)
-
速率:K(103)、M(106)、G(109)、T(1012)
2、带宽
-
在模拟信号系统中,指信号具有的频带宽度,其单位是Hz(或kHz、MHz、GHz等)。
-
在计算机网络中,带宽用来表示网络中某通道传送数据的能力。表示在单位时间内网络中的某信道所能通过的“最高数据率”。其单位是bit/s(b/s或bps),或kbit/s、Mbit/s、Gbit/s等(与速率一致)。
3、吞吐量
(1)定义
在单位时间内通过某个网络(或信道、接口)的数据量。吞吐量受网络的带宽或网络的额定速率的限制。
(2)举例
带宽1Gb/s的以太网,代表其额定速率是1Gb/s,这个数值也是该以太网的吞吐量的绝对上限值。因此,对于带宽1Gb/s的以太网,可能实际吞吐量只有700Mb/s,甚至更低。
4、时延
(1)定义
时延(延迟、迟延)是指数据从网络(或链路)的一端传送到另一端所需的时间。
(2)公式
总时延 = 发送时延 + 传播时延 + 处理时延 + 排队时延
(3)组成
① 发送时延
(i)定义
主机或路由器发送数据帧所需要的时间。也就是从发送数据帧的第一个比特算起,到该帧的最后一个比特发送完毕所需的时间。
(ii)计算公式
发送时延 = 数据帧长度(bit) / 发送速率(bit/s)
(iii)发生位置
机器内部的发送器(一般为网络适配器)中,与传输信道的长度(或信号的传输距离)没有关系。
② 传播时延
(i)定义
电磁波在信道中需要传播一定的距离而花费的时间。
(ii)计算公式
传播时延 = 信道长度(m) / 电磁波在信道上的传播速率(m/s)
(iii)发生位置
机器外部的传输信道媒体上,与信号的发送速率无关。
③ 处理时延
主机或路由器在收到分组时,为处理分组(例如分析首部、提取数据、差错检验或查找路由)所花费的时间。
④ 排队时延
分组在路由器输入输出队列中排队等待处理所经历的时延。排队时延的长短往往取决于网络中当时的通信量。
5、时延带宽积
时延带宽积 = 传播时延 × 带宽
6、往返时间RTT
(1)定义
往返时间表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间。
(2)组成
在互联网中,往返时间还包括各中间结点的处理时延、排队时延以及转发数据时的发送时延。
(3)注意
当使用卫星通信时,往返时间RTT相对较长,是很重要的一个性能指标。
7、利用率
(1)信道利用率
指出某信道有百分之几的时间是被利用的(有数据通过)。完全空闲的信道的利用率是零。
(2)网络利用率
全网络的信道利用率的加权平均值。
(3)计算公式
若令表示网络空闲时的时延,D表示网络当前的时延,则在适当的假定条件下,可以用下面的简单公式表示D和
之间的关系。
其中U是网络利用率,数值在0到1之间。
(4)注意
信道利用率并非越高越好。当某信道的利用率增大时,该信道引起的时延也就迅速增加。
五、计算机网络的非性能特征
1、费用
网络的价格(包括设计和实现的费用)总是必须考虑的,因为网络的性能与其价格密切相关。一般说来,网络的速率越高,其价格也越高。
2、质量
网络的质量取决于网络中所有构件的质量,以及这些构件是怎样组成网络的。网络的质量影响到很多方面,如网络的可靠性、网络管理的简易性,以及网络的一些性能。但网络的性能与网络的质量并不是一回事。例如,有些性能一般的网络,运行一段时间后就出现了故障,变得无法再继续工作,说明其质量不好。高质量的网络往往价格也较高。
3、标准化
网络的硬件和软件的设计既可以按照通用的国际标准,也可以遵循特定的专用网络标准。最好采用国际标准的设计,这样可以得到更好的互操作性,更易于升级换代和维修,也更容易得到技术上的支持。
4、可靠性
可靠性与网络的质量和性能都有密切关系。高速网络的可靠性不一定很差。但高速网络要可靠地运行,则往往更加困难,同时所需的费用也会较高。
5、可扩展性和可升级性
在构造网络时就应当考虑到今后可能会需要扩展(即规模扩大)和升级(即性能和版本的提高)。网络的性能越高,其扩展费用往往也越高,难度也会相应增加。
6、易于管理和维护
网络如果没有良好的管理和维护,就很难达到和保持所设计的性能。
六、计算机网络体系结构
1、网络协议三要素
-
语法:数据与控制信息的结构或格式。
-
语义:需要发出何种控制信息,完成何种动作以及做出何种响应。
-
同步:事件实现顺序的详细说明。
2、划分层次(分层)
(1)优势
-
各层之间是独立的。某一层并不需要知道它的下一层是如何实现的,而仅仅需要知道该层通过层间的接口(即界面)所提供的服务。由于每一层只实现一种相对独立的功能,因而可将一个难以处理的复杂问题分解为若干个较容易处理的更小一些的问题。这样,整个问题的复杂程度就下降了;
-
灵活性好。当任何一层发生变化时(例如由于技术的变化),只要层间接口关系保持不变,则在这层以上或以下各层均不受影响。此外,对某一层提供的服务还可进行修改。当某层提供的服务不再需要时,甚至可以将这层取消;
-
结构上可分割开。各层都可以采用最合适的技术来实现;
-
易于实现和维护。这种结构使得实现和调试一个庞大而又复杂的系统变得易于处理,因为整个的系统已被分解为若干个相对独立的子系统;
-
能促进标准化工作。因为每一层的功能及其所提供的服务都已有了精确的说明。
(2)缺点
-
降低效率;
-
功能重复出现;
-
产生额外开销。
(3)功能
-
差错控制:使相应层次对等方的通信更加可靠。
-
流量控制:发送端的发送速率必须使接收端来得及接收,不要太快。
-
分段和重装:发送端将要发送的数据块划分为更小的单位,在接收端将其还原。
-
复用和分用:发送端几个高层会话复用一条低层的连接,在接收端再进行分用。
-
连接建立和释放:交换数据前先建立一条逻辑连接,数据传送结束后释放连接。分层当然也有一些缺点,例如,有些功能会在不同的层次中重复出现,因而产生了额外开销
3、分类
分析五层协议如下:
(1)应用层
① 功能
通过应用进程间的交互来完成特定网络应用。
② 协议
定义的是应用进程间通信和交互的规则。如域名系统DNS,支持万维网应用的HTTP协议,支持电子邮件的SMTP协议。
③ 数据单位
报文。
(2)运输层
① 功能
负责向两台主机中进程之间的通信提供通用的数据传输服务(可以保证端到端可靠性[使用TCP])。
② 协议
(i)传输控制协议TCP(Transmission Control Protocol)
提供面向连接的、可靠的数据传输服务,其数据传输的单位是报文段(segment)。
(ii)用户数据报协议UDP(User Datagram Protocol)
提供无连接的、尽最大努力(best-effort)的数据传输服务(不保证数据传输的可靠性),其数据传输的单位是用户数据报。
③ 数据单位
报文段。
(3)网络层
① 功能
为分组交换网上的不同主机提供通信服务(网络层=网际层=IP层,分组=数据报)。
② 协议
IP协议。
③ 数据单位
IP数据报(分组)。
(4)数据链路层
简称链路层。
① 功能
将网络层交下来的IP数据报组装成帧(framing),在两个相邻结点间的链路上传送帧(frame)。每一帧包括数据和必要的控制信息(如同步信息、地址信息、差错控制等)。
② 协议
点对点协议PPP、CSMA/CD等。
③ 数据单位
帧。
(5)物理层
① 功能
为数据链路层提供物理连接。
② 数据单位
比特bit。
※ OSI参考模型
-
协议数据单元PDU(Protocol Data Unit):OSI参考模型把对等层次之间传送的数据单位称为该层的PDU
-
服务数据单元SDU(Service Data Unit):OSI中层与层之间交换的数据的单位
-
服务访问点SAP(Service Access Point):同一系统相邻两层的实体进行交互的地方,它是一个抽象的概念,实际上就是一个逻辑接口。
※ 注意
SDU可以与PDU不一样,例如可以是多个SDU合成为一个PDU,也可以是一个SDU划分为几个PDU。
七、协议与服务
1、协议
(1)定义
网络协议(network protocol),简称为协议,是为进行网络中的数据交换而建立的规则、标准或约定的集合。
(2)三要素
详见上文“网络协议三要素”。
2、协议与服务的区别和联系
-
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下层所提供的服务。
-
协议的实现保证了能够向上一层提供服务。本层的服务用户只能看见服务而无法看见下面的协议。即下面的协议对上面的服务用户是透明的。
-
协议是“水平的”,即协议是控制对等实体之间通信的规则。服务是“垂直的”,即服务是由下层向上层通过层间接口提供的。
-
上层使用服务原语获得下层所提供的服务。
第二章 物理层
一、基本概念
1、规程
用于物理层的协议常称为物理层规程,实际上就是物理层协议。
2、主要任务
(1)机械特性
指明接口所用接线器的形状和尺寸、引线数目和排列、固定和锁定装置等。
(2)电气特性
指明在接口电缆的各条线上出现的电压的范围。
(3)功能特性
指明某条线上出现的某一电平的电压的意义。
(4)过程特性
指明对于不同功能的各种可能事件的出现顺序。
数据在计算机内部多采用并行传输方式。但数据在通信线路(传输媒体)上的传输方式一般都是串行传输(这是出于经济上的考虑),即逐个比特按照时间顺序传输,因此物理层还要完成传输方式的转换。
3、功能
-
在连接各种计算机的传输媒体上传输数据比特流;
-
屏蔽不同传输媒体和通信手段的差异,使数据链路层只需要考虑如何完成本层的协议和服务,而不必考虑网络具体的传输媒体是什么;
-
为数据链路层提供物理连接。
二、数据通信基础知识
1、系统模型
(1)源系统
① 源点(source)
源点设备产生要传输的数据,例如,从计算机的键盘输入汉字,计算机产生输出的数字比特流。源点又称为源站,或信源。
② 发送器
通常源点生成的数字比特流要通过发送器编码后才能够在传输系统中进行传输。典型的发送器就是调制器。现在很多计算机使用内置的调制解调器(包含调制器和解调器),用户在计算机外面看不见调制解调器。
(2)目的系统
① 接收器
接收传输系统传送过来的信号,并把它转换为能够被目的设备处理的信息。典型的接收器就是解调器,它把来自传输线路上的模拟信号进行解调,提取出在发送端置入的消息,还原出发送端产生的数字比特流。
② 终点(destination)
终点设备从接收器获取传送来的数字比特流,然后把信息输出(例如,把汉字在计算机屏幕上显示出来)。终点又称为目的站,或信宿。
(3)传输系统
在源系统和目的系统之间的传输系统可以是简单的传输线,也可以是连接在源系统和目的系统之间的复杂网络系统。
2、常用术语
(1)消息(message)
话音、文字、图像、视频等。
(2)数据(data)
运送消息的实体。
(3)信号(signal)
数据的电气的或电磁的表现,分为以下两大类:
-
模拟信号(analogous signal),或称连续信号,代表消息的参数的取值是连续的。
-
数字信号(digital signal),或称离散信号,代表消息的参数的取值是离散的。
(4)码元
时间域内的波形表示数字信号时,表示不同数值的波形。
(5)通信双方信息交互的主要方式
-
单向通信(单工通信):只能有一个方向的通信而没有反方向的交互。
-
双向交替通信(半双工通信):通信的双方都可以发送信息,但不能双方同时发送和同时接收。
-
双向同时通信(全双工通信):通信的双方可以同时发送和接收信息。
(6)调制
-
基带调制:仅对基带信号的码形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。这种过程称为编码(coding)。
-
带通调制:使用载波进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输(即仅在一段频率范围内能够通过信道)。
(7)基带传输、频带传输、宽带传输、数据报传输的区别
-
基带传输:将经信源直接编码所得到的信号不经过频谱搬移,只经过简单的频谱变换进行传输。
-
频带传输:利用调制解调器对原始数字信号进行频率调制,变换成模拟信号。在接收端,传进来的信号再进行解调恢复变为原始数字信号。
-
宽带传输:通过借助频带传输,将信道分解成两个或更多的子信道,每个信道可以分别携带音频、视频、数据信号等不同的信号。
-
数据报传输:一般指IP数据报、ICMP数据报、TCP数据报、UDP数据报等传输。
(8)常用编码方式
-
不归零制(无自同步能力):正电平代表1,负电平代表0;
-
归零制:正脉冲代表1,负脉冲代表0;
-
曼彻斯特编码:位周期中心的向上跳变代表0,位周期中心的向下跳变代表1,但也可反过来定义;
-
差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,而位开始边界没有跳变代表1。
※ 数据通信技术课件
(9)基本带通调制方法
-
调幅(AM):即载波的振幅随基带数字信号而变化。例如,0或1分别对应于无载波或有载波输出。
-
调频(FM):即载波的频率随基带数字信号而变化。例如,0或1分别对应于频率f1或f2。
-
调相(PM):即载波的初始相位随基带数字信号而变化。例如,0或1分别对应于相位0度或180度。
3、信道的极限容量
(1)限制码元在信道上传输速率的因素
① 信道能够通过的频率范围(奈氏准则)
在任何信道中,码元传输的速率是有上限的,传输速率超过此上限,就会出现严重的码间串扰的问题,使接收端对码元的判决(即识别)成为不可能。
② 信噪比
(i)定义
信号的平均功率和噪声的平均功率之比(S/N),单位为分贝(dB)。
(ii)公式
(2)香农公式
① 定义
香农(Shannon)用信息论的理论推导出了带宽受限且有高斯白噪声干扰的信道的极限、无差错的信息传输速率
② 公式
C为信道的极限信息传输速率,W为信道的带宽(单位:Hz),S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率。
③ 说明
-
信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
-
只要信息传输速率低于信道的极限信息传输速率,就 一定可以找到某种办法来实现无差错的传输。
-
若信道带宽W或信噪比S/N没有上限(当然实际信道不可能是这样的),则信道的极限信息传输速率C也就没有上限。
-
实际信道上能够达到的信息传输速率要比香农的极限传输速率低不少。
④ 例题
假定要用3KHz带宽的电话信道传送64kbit/s的数据(无差错传输),试问这个信道应该具有多高的信噪比?
※ 比特速率和码元速率的关系
其中Nb为比特速率,Nbaud为码元速率(波特率,单位时间内传送的码元符号的个数),M为进制数。
三、物理层下的传输媒体
物理层下的传输媒体不属于物理层,可视为第0层
1、导引型传输媒体
-
在导引型传输媒体中,电磁波被导引沿着固体媒体传播。
-
媒介:同轴电缆、双绞线、光纤
2、非导引型传输媒体
-
非导引型传输媒体就是指自由空间。在非导引型传输媒体中,电磁波的传输常称为无线传输。
-
媒介:无线电波:微波、红外线、激光
四、信道复用技术
1、频分复用FDM(Frequency Division Multiplexing)
(1)原理
-
将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带。
-
频分复用的所有用户在同样的时间占用不同的带宽资源(这里的“带宽”是频率带宽而不是数据的发送速率)。
(2)优缺点
-
优点
信道复用率高,分路方便; -
缺点
各路信号之间存在相互干扰(串扰)。
2、(同步)时分复用TDM(Time Division Multiplexing)
(1)原理
将时间划分为一段段等长的时分复用帧(TDM帧)。每一个时分复用的用户在每一个 TDM 帧中占用固定序号的时隙。每个用户所占用的时隙周期性出现(周期就是TDM帧的长度)。TDM 信号也称为等时 (isochronous) 信号,时分复用的所有用户在不同的时间占用同样的频带宽度。
(2)优缺点
-
优点
简单,易于大规模集成,信号间不串话; -
缺点
时分复用可能会造成线路资源的浪费(如下图),容易产生码间串扰,信道利用率低于统计时分复用。
3、统计时分复用STDM(Statistic Time Division Multiplexing)
(1)原理
又叫异步时分复用,STDM帧不是固定分配时隙,而是按需动态地分配时隙。
(2)优点
可以提高线路的利用率。
4、波分复用WDM(Wavelength Division Multiplexing)
(1)原理
整个波长频带被划分为若干个波长范围,每个用户占用一个波长范围来进行传输。
(2)密集波分复用DWDM(Dense Wavelength Division Multiplexing)
指同一根光纤中传输的光载波路数更多,波长间隔更小、更密集。
(3)优缺点
-
优点
结构小,简单可靠;
充分利用光纤带宽资源;
透明的传输通道;
更灵活地进行光纤通信组网;
-
缺点
存在插入损耗和串光问题。
5、码分复用CDM(Code Division Multiplexing)
又称码分多址CDMA(Code Division Multiple Access)。
(1)原理
每个用户可在同一时间内使用同样的频带进行通信,但使用的是基于码型的分割信道的方法。
(2)优点
抗干扰性能好,彼此之间不干扰;复用系统容量灵活;保密性好(频谱类似白噪声);接收设备易于简化等。
(3)例题
① 共有4个站进行码分多址通信。4个站的码片序列为
A:(-1 -1 -1 +1 +1 -1 +1 +1) B:(-1 -1 +1 -1 +1 +1 +1 -1)
C:(-1 +1 -1 +1 +1 +1 -1 -1) D:(-1 +1 -1 -1 -1 -1 +1 -1)
现收到这样的码片序列S:(-1 +1 -3 +1 -1 -3 +1 +1)。问哪个站发送数据了?发送数据的站发送的是0还是1?
S•A=(+1 -1 +3 +1 -1 +3 +1 +1)/8=1 A发送1
S•B=(+1 -1 -3 -1 -1 -3 +1 -1)/8=-1 B发送0
S•C=(+1 +1 +3 +1 -1 -3 -1 -1)/8=0 C无发送
S•D=(+1 +1 +3 -1 +1 +3 +1 -1)/8=1 D发送1
② 站点1、2、3通过COMA共享链路。站点1、2、3的码片序列分别是
A:(1,1,1,1) B:(1,-1,1,-1) C:(1,1,-1,-1)
若站3从链路上收到的序列S:(2,0,2,0,0,-2,0,-2,0,2,0,2),则站点3收到站点1发送的数据是多少?
S•A=(2+0+2+0)/4=1、(0-2+0-2)/4=-1、(0+2+0+2)/4=1 A发送101
S•B=(2+0+2+0)/4=1、(0+2+0+2)/4=1、(0-2+0-2)/4=-1 B发送110
S•C=(2+0-2+0)/4=0、(0-2+0+2)/4=0、(0+2+0-2)/4=0 C无发送
五、宽带接入技术
1、非对称数字用户线ADSL(Asymmetric Digital Subscriber Line)
用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务。
2、光纤同轴混合网HFC(Hybrid Fiber Coax)
在目前覆盖面很广的有线电视网CATV的基础上开发的一种居民宽带接入网。
3、FTTx(Fiber To The x)
是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式。
-
光纤到户FTTH(Fiber To The Home):光纤一直铺设到用户家庭,可能是居民接入网最后的解决方法。
-
光纤到大楼FTTB(Fiber To The Building):光纤进入大楼后就转换为电信号,然后用电缆或双绞线分配到各用户。
-
光纤到路边FTTC(Fiber To The Curb):光纤铺到路边,从路边到各用户可使用星形结构双绞线作为传输媒体。
第三章 数据链路层
从数据链路层来看,H1到H2的通信可以看成由四段不同的链路层通信组成,即
H1→R1、R1→R2、R2→R3、R3→H2
这四段不同的链路层可能采用不同的数据链路层协议。
※ 信道分为点对点信道和广播信道两种,对应的协议分别为PPP和CSMA/CD。
一、数据链路层的三个基本问题
1、链路与数据链路
(1)链路
所谓链路就是从一个结点到相邻结点的一段物理线路(有线或无线),而中间没有任何其他的交换结点。在进行数据通信时,两台计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
(2)数据链路
把实现控制数据传输的必要通信协议的硬件和软件(如网络适配器)加到链路上,就构成了数据链路。
2、帧——点对点信道的数据链路层的协议数据单元
数据链路层把网络层交下来的数据构成帧发送到链路上,以及把接收到的帧中的数据取出并上交给网络层。在互联网中,网络层协议数据单元就是IP数据报(或简称为数据报、分组或包)。
点对点信道的数据链路层在进行通信时的主要步骤如下:
(1)结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧。
(2)结点A把封装好的帧发送给结点B的数据链路层。
(3)若结点B的数据链路层收到的帧无差错,则从收到的帧中提取出IP数据报交给上面的网络层;否则丢弃这个帧。
数据链路层不必考虑物理层如何实现比特传输的细节。
3、三个基本问题
(1)封装成帧
① 定义
在一段数据的前后分别添加首部和尾部,这样就构成了一个帧。接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
※ 最大传送单元MTU(Maximum Transfer Unit):数据部分长度上限
※ 控制字符SOH(Start Of Header)放在一帧的最前面,表示帧的首部开始。另一个控制字符EOT(End Of Transmission)表示帧的结束。SOH和EOT都是控制字符的名称。它们的十六进制编码分别是01(二进制是00000001)和04(二进制是00000100)。
② 作用
-
识别帧的开始与结束(首部和尾部用于帧定界)
-
便于计算机识别和处理比特流
-
向上层提供比特丢失、比特错误等服务
-
方便传输
③ 为什么必须加以解决
用于定界,识别帧的开始与结束。
(2)透明传输
① “透明”的定义
某一个实际存在的事物看起来却好像不存在一样。
② 为什么必须加以解决
避免消息符号与帧定界符号相混淆。
③ 解决方案
发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”。而在接收端的数据链路层在把数据送往网络层之前删除这个插入的转义字符。这种方法称为字节填充(Byte stuffing)或字符填充(character stuffing)。如果转义字符也出现在数据当中,那么解决方法仍然是在转义字符的前面插入一个转义字符。因此,当接收端收到连续的两个转义字符时,就删除其中前面的一个。
※ 如果是面向比特的物理链路则使用比特填充。
(3)差错检测
① 误码率BER
在一段时间内,传输错误的比特占所传输比特总数的比率,与信噪比有很大的关系(正相关)。
② 为什么必须加以解决
防止差错的无效数据帧,浪费网络资源。
③ 解决方案
循环冗余检验CRC(Cyclic Redundancy Check)
(i)步骤
1、收发双方约定好一个生成多项式G(x);
2、发送方基于待发送的数据和生成多项式计算出差错检测码(冗余码),将其添加到待传输数据的后面一起传输;
3、接收方通过生成多项式来计算收到的数据是否产生了误码。
若得出的余数R=0,则判定这个帧没有差错,就接受(accept);
若余数R≠0,则判定这个帧有差错(但无法定位),就丢弃。
(ii)计算
1、用二进制的模2运算(进行加法时不进位)进行2n乘M的运算,这相当于在M后面添加n个0;
2、得到的(k+n)位的数除以事先选定好的长度为(n+1)位的除数P,得出商是Q而余数是R,余数R比除数P少1位,即R是n位;
3、将余数R作为冗余码拼接在数据M后面发送出去。
(iii)例题
待传输的数据M=101001(即k=6),生成多项式,即除数P=1101(即n=3)。经模2除法运算后的结果是商Q=110101,余数R=001。这个余数R就为冗余码拼接在数据M的后面发送出去。
为了进行检错而添加的冗余码常称为帧检验序列FCS(Frame Check Sequence)。因此加上FCS后发送的帧是101001001(即),共有(k+n)位。
二、点对点协议PPP
在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法。因此,能实现可靠传输的高级数据链路控制HDLC(High-level Data Link Control)就成为当时比较流行的数据链路层协议。但现在HDLC已很少使用了。对于点对点的链路,简单得多的点对点协议PPP(Point-to-Point Protocol)则是目前使用得最广泛的数据链路层协议。
1、组成
-
一个将IP数据报封装到串行链路的方法;
-
一个用来建立、配置和测试数据链路连接的链路控制协议LCP;
-
一套网络控制协议NCP ,其中的每一个协议支持不同的网络层协议,如IP、OSI的网络层、DECnet,以及AppleTalk等。
2、帧格式(封装成帧)
(1)各字段的意义
-
首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E(符号“0x”表示它后面的字符是用十六进制表示的。十六进制的7E的二进制表示是01111110)。标志字段表示一个帧的开始或结束。因此标志字段就是PPP帧的定界符。连续两帧之间只需要用一个标志字段。如果出现连续两个标志字段,就表示这是一个空帧,应当丢弃。
-
首部中的地址字段A规定为0xFF(即11111111),控制字段C规定为0x03(即00000011)。这两个字段实际上并没有携带PPP帧的信息。
-
PPP首部的第四个字段是2字节的协议字段:
若为0x0021,则信息字段就是IP数据报;
若为0xC021,则信息字段是PPP链路控制协议LCP的数据;
若为0x8021,则信息字段是网络层的控制数据;
若为0xC023,则信息字段是鉴别数据。
-
信息字段的长度是可变的,不超过1500字节。
-
尾部中的第一个字段(2字节)是使用CRC的帧检验序列FCS。
(2)字节填充(用于PPP异步传输)
当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一样的比特组合不出现在信息字段中。
当PPP使用异步传输时,它把转义符定义为0x7D(即01111101),并使用字节填充,RFC 1662规定了如下所述的填充方法:
-
把信息字段中出现的每一个0x7E字节转变成为2字节序列(0x7D,0x5E);
-
若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把0x7D转变成为2字节序列(0x7D,0x5D);
-
若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列(0x7D,0x23)。
(3)零比特填充(用于PPP同步传输)
※ 同步传输与异步传输
-
同步传输:必须建立准确的时钟信号,各信号码元之间的相对位置都是固定的。
-
异步传输:在每一个字符的开始和结束的地方加上标志,即加上起始码和停止码。
3、差错检测
PPP帧尾包含有1个2字节的FCS检验序列字段,可使用循环冗余校验CRC计算该字段的取值,生成多项式如下
4、PPP协议的工作状态
三、使用广播信道的数据链路层
1、局域网的数据链路层
局域网最主要的特点:网络为一个单位所拥有,且地理范围和站点数目均有限。
(1)按网络拓扑分类
(2)以太网
① 定义
符合DIX Ethernet V2标准的局域网。
② 功能
以太网提供的服务是无连接不可靠的交付,即尽最大努力的交付。当目的站收到有差错的数据帧时就丢弃此帧,其他什么也不做。差错的纠正由高层来决定。如果高层发现丢失了一些数据而进行重传,但以太网并不知道这是一个重传的帧,而是当作一个新的数据帧来发送。对发送的帧不进行编号,也不要求接收方发回确认帧。这样做的理由是局域网的信道质量非常好,产生的错误的概率非常小。
③ 以太网的两个标准
-
IEEE 802.3
-
DIX Ethernet V2
※ 与接入到传输媒体有关的内容都放在媒体接入控制MAC (Medium Access Control)子层,而逻辑链路控制LLC(Logical Link Control)子层则与传输媒体无关,不管采用何种传输媒体和MAC子层的局域网对LLC子层来说都是透明的。而由于现在广泛使用的局域网只有以太网,因此LLC帧已经失去了原来的意义。
※ 计算机与外界局域网的连接是通过通信适配器(adapter)进行的。适配器本来是在主机箱内插入的一块网络接口板(或者是在笔记本电脑中插入一块PCMCIA卡一个人计算机存储器卡接口适配器)。这种接口板又称为网络接口卡NIC (Network Interface Card)或简称为“网卡”。其功能如下
-
进行串行/并行转换;
-
对数据进行缓存;
-
在计算机的操作系统安装设备驱动程序;
-
实现以太网协议。
2、CSMA/CD协议
(1)含义
CSMA/CD:载波监听多点接入/碰撞检测 (Carrier Sense Multiple Access with Collision Detection)。
-
“载波监听”是指每一个站在发送数据之前先要检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞;
-
“多点接入”表示许多计算机以多点接入的方式连接在一根总线上;
-
“碰撞检测”(“冲突检测”)就是计算机边发送数据边检测信道上的信号电压大小:
当几个站同时在总线上发送数据时,总线上的信号电压摆动值将会增大(互相叠加);
当一个站检测到的信号电压摆动值超过一定的门限值时,就认为总线上至少有两个站同时在发送数据,表明产生了碰撞。
(2)原理
在使用CSMA/CD协议时,一个站不可能同时进行发送和接收(但必须边发送边监听信道)。因此使用CSMA/CD协议的以太网不可能进行全双工通信而只能进行双向交替通信(半双工通信)。
-
t=0时,A发送数据,B检测到信道为空闲。
-
t=τ-δ时(x>δ>0),A发送的数据还没有到达B时,由于B检测到信道是空闲的,因此B发送数据。
-
经过时间δ/2后,即在t=τ-δ/2时,A发送的数据和B发送的数据发生了碰撞。但这时A和B都不知道发生了碰撞。
-
t=τ时,B检测到发生了碰撞,于是停止发送数据。
-
t=2τ-δ时,A也检测到发生了碰撞,因而也停止发送数据。
A和B发送数据均失败,它们都要推迟一段时间再重新发送。 由此可见,每一个站在自己发送数据之后的一小段时间内,存在着遭遇碰撞的可能性。这一小段时间是不确定的,它取决于另一个发送数据的站到本站的距离。因此,以太网不能保证某一时间之内一定能够把自己的数据帧成功地发送出去(因为存在产生碰撞的可能)。以太网的这一特点称为发送的不确定性。如果希望在以太网上发生碰撞的机会很小,必须使整个以太网的平均通信量远小于以太网的最高数据率。
最先发送数据帧的A站,在发送数据帧后至多经过时间2τ就可知道所发送的数据帧是否遭受了碰撞。这就是δ→0的情况。因此以太网的端到端往返时间2τ称为争用期(contention period),又称为碰撞窗口(collision window)。一个站在发送完数据后,只有经过争用期这段时间还没有检测到碰撞,才能肯定这次发送不会发生碰撞(意义/作用)。这时可以把这一帧数据顺利发送完毕。
(3)二进制指数类型退避算法
① 内容
-
协议规定基本退避时间为争用期2τ,具体的争用期时间是51.2μs。对于10Mbit/s以太网,在争用期内可发送512bit(64Byte)。可以说争用期是512比特时间。这种时间单位与数据率密切相关。为了方便,也可以直接使用比特作为争用期的单位。争用期是512bit,即争用期是发送512bit所需的时间。
-
从离散的整数集合[0,1,...,(
)]中随机取出一个数,记为r。重传应推后的时间就是r倍的争用期。上面的参数k按下面的公式计算
x为重传次数。可见当重传次数不超过10时,参数k等于重传次数;但当重传次数超过10时,k就不再增大而一直等于10。
-
当重传达16次仍不能成功时(这表明同时打算发送数据的站太多,以致连续发生冲突),则丢弃该帧,并向高层报告。
② 意义
让发生碰撞的站在停止发送数据后推迟一段随机的时间才能再发送数据,减少重传时发生冲突的概率。
③ 总结(发前检测、边发边测、停发保留、延后重传)
-
准备发送:适配器从网络层获得一个分组,加上以太网的首部和尾部,组成以太网帧,放入适配器的缓存中。但在发送之前,必须先检测信道。
-
检测信道:若检测到信道忙,则应不停地检测,一直等待信道转为空闲。若检测到信道空闲,并在96比特时间内信道保持空闲(保证了帧间最小间隔),就发送这个帧。
-
在发送过程中仍不停地检测信道,即网络适配器要边发送边监听。这里只有两种可能性:
发送成功:在争用期内一直未检测到碰撞。这个帧肯定能够发送成功。发送完毕后,其他什么也不做。然后回到(1);
发送失败:在争用期内检测到碰撞。这时立即停止发送数据,并按规定发送人为干扰信号。适配器接着就执行指数退避算法,等待r倍512比特时间后,返回到步骤(2),继续检测信道。但若重传达16次仍不能成功,则停止重传而向上报错。
-
以太网每发送完一帧,一定要把已发送的帧暂时保留一下。如果在争用期内检测出发生了碰撞,那么还要在推迟一段时间后再把这个暂时保留的帧重传一次。
3、以太网的信息利用率
当a→0时,表示只要一发生碰撞,就立即可以检测出来,并立即停止发送,因而信道资源被浪费的时间非常非常少。反之,参数a越大,表明争用期所占的比例越大,这就使得每发生一次碰撞就浪费了不少的信道资源,使得信道利用率明显降低。因此,以太网的参数a的值应当尽可能小些。从上式可看出,这就要求分子τ的数值要小些,而分母的数值要大些。这就是说,当数据率一定时,以太网的连线的长度受到限制(否则的数值会太大),同时以太网的帧长不能太短(否则
的值会太小,使a值太大)。
现在考虑一种理想化的情况。假定以太网上的各站发送数据都不会产生碰撞(这显然已经不是CSMA/CD,而是需要使用一种特殊的调度方法),并且能够非常有效地利用网络的传输资源,即总线一旦空闲就有某一个站立即发送数据。这样,发送一帧占用线路的时间是+τ,而帧本身的发送时间是
。于是我们可计算出极限信道利用率Smax为:
只有当参数a远小于1才能得到尽可能高的极限信道利用率。反之,若参数a远大于1(即每发生一次碰撞,就要浪费相对较多的传输数据的时间),则极限信道利用率就远小于1,而这时实际的信道利用率就更小了。
4、以太网的MAC层
(1)MAC层的硬件地址
① 定义
在局域网中又称硬件地址、物理地址、MAC地址,共48bits,一般用16进制表示。
-
地址字段6个字节中的前三个字节(即高24位),称为组织唯一标识符,由IEEE注册管理机构RA向厂家分配;
-
地址字段6个字节中的后三个字节(即低24位),称为扩展唯一标识符,由厂家自行指派,保证生产出的适配器没有重复地址。
一个地址块可以生成个不同的地址。这种48位地址称为MAC-48,它的通用名称是EUI-48。生产适配器时,6字节的MAC地址已被固化在适配器的ROM,因此,MAC地址也叫做硬件地址(hardware address)或物理地址,实际上就是适配器地址或适配器标识符EUI-48。
② 单站地址、组地址和广播地址
IEEE规定地址字段的第一字节的最低位为I/G位,表示Individual Group。
-
当I/G位=0时,地址字段表示一个单站地址;
-
当I/G位=1时,表示组地址,用来进行多播(以前曾译为组播)。此时IEEE只分配地址字段前三个字节中的23位;
-
当I/G位分别为0和1时,一个地址块可分别生成
个单个站地址和
个组地址;
-
-
当所有48位都为1时,为广播地址。只能作为目的地址使用。
③ 全球管理与本地管理
IEEE把地址字段第一字节的最低第2位规定为G/L位,表示Global/Local。
-
当G/L位=0时,是全球管理(保证在全球没有相同的地址),厂商向IEEE购买的OUI都属于全球管理。
-
当G/L位=1时,是本地管理,这时用户可任意分配网络上的地址。
④ “发往本站的帧”
适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。
-
如果是发往本站的帧则收下,然后再进行其他的处理。
-
否则就将此帧丢弃,不再进行其他的处理。
“发往本站的帧”包括以下三种帧:
-
单播(unicast)帧(一对一)
-
广播(broadcast)帧(一对全体)
-
多播(multicast))帧(一对多)
(2)以太网V2的MAC帧格式
① 字段含义
-
前同步码:7个字节的前同步码,1和0交替,作用是用来使接收端的适配器在接收MAC帧时能够迅速调整时钟频率,使它和发送端的频率相同。
-
帧开始定界符:1个字节的帧开始定界符,前六位1和0交替,最后的两个连续1表示告诉接收端适配器帧信息要来了,准备接收。
-
MAC目的地址:6字节(占48位),发送方的网卡(MAC)地址,当网卡接收到数据帧时,首先会检查该帧的目的地址是否与当前适配器的物理地址相同,如果相同则进一步处理,不同则直接丢弃。
-
源MAC地址:发送端的MAC地址同样占6个字节。
-
类型:考虑当PDU(协议数据单元)来到某一层时,它需要将PDU交付给上层,而上层协议众多,所以在处理数据的时候,必须要一个字段标识这个交付给谁。
-
数据(字段):数据也叫有效载荷,除过当前层协议需要使用的字段外,即需要交付给上层的数据,以太网帧数据长度规定最小为46字节(最小长度64字节减去18字节的首部和尾部就得出数据字段的最小长度),最大为1500字节,如果有不到46字节时,会用填充字节填充到最小长度。最大值也叫最大传输单元(MTU)。
-
帧检验序列FCS(使用CRC校验法):检测该帧是否出现差错。
② 透明传输
-
MAC帧的开始有7个字节的前同步码和帧开始定界符(10101011)
-
MAC帧的结束不需要帧结束定界符
在以太网上传送数据时是以帧为单位传送。传送帧时各帧之间还必须有一定的间隙,并且物理层采用的是曼彻斯特编码,重要特点就是在曼彻斯特编码的每个码元(不管码元是1或0)的正中间一定有一次电压的转换(从高到低或从低到高)。当发送方把一个以太网帧发送完毕后,就不再发送其他码元了(既不发送1,也不发送0)。因此发送方网络适配器的接口上的电压也就不再变化了。这样接收方就可以很容易地找到以太网帧的结束位置。在这个位置往前数4字节(FCS字段长度是4字节)就能确定数据字段的结束位置。因此接收端只要找到帧开始定界符,其后面的连续到达的比特流就都视作属于同一个 MAC帧,同时也可以计算出帧长度。可见以太网不需要使用帧结束定界符、字节插入等来保证透明传输。
③ 差错检测
MAC帧中FCS字段采用CRC检验,检验的内容不包括前同步码和帧开始定界符。
5、扩展的以太网
(1)在物理层扩展以太网(集线器)
※ 冲突域/碰撞域:在任意时刻,在每个碰撞域中只能有一个站在发送数据。
① 优点
-
使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信。
-
扩大了以太网覆盖的地理范围。
② 缺点
-
碰撞域增大了,但总的吞吐量并未提高。
-
单个用户的带宽减少:对于普通10Mbit/s的共享式以太网,若共有N个用户,则每个用户占有的平均带宽只有总带宽 (10Mbit/s)的N分之一。
-
如果不同的碰撞域使用不同的数据率,那么就不能用集线器将它们互连起来。
(2)在数据链路层扩展以太网(网桥→交换机)
① 网桥
根据MAC帧的目的地址对收到的帧进行转发和过滤。
-
当网桥收到一个帧时,并不是向所有的接口转发此帧,而是先检查此帧的目的 MAC 地址
-
再确定将该帧转发到哪一个接口,或把它丢弃。
② 交换机
(i)定义(特点)
-
实质上是一个多接口网桥,每个接口都直接与一个单台主机或另一个交换机相连。
-
具有并行性,一般都工作在全双工方式,能同时连通多对接口,使多对主机能同时通信(网桥只能一次分析和转发一个帧)。
-
相互通信的主机都是独占传输媒体,无碰撞地传输数据(隔离冲突域)。
-
接口还有存储器,能在输出端口繁忙时把到来的帧进行缓存。
-
即插即用的设备,其内部的帧交换表(又称为地址表)是通过自学习算法自动地逐渐建立起来的。
-
由于使用了专用的交换结构芯片,用硬件转发,其转发速率要比使用软件转发的网桥快很多,性能远远超过普通的集线器,而且价格并不贵。
(ii)优点
-
用户独享带宽,增加了总容量。使用以太网交换机时,虽然在每个接口到主机的带宽还是10Mbit/s,但由于一个用户在通信时是独占,因此对于拥有N个接口的交换机的总带宽为N×10Mbit/s。
-
从共享总线以太网转到交换式以太网时,所有接入设备的软件和硬件、适配器等都不需要做任何改动。
-
以太网交换机一般都具有多种速率的接口,方便了各 种不同情况的用户。
(iii)交换方式
-
存储转发模式:把整个数据帧先缓存后再进行处理。
-
直通模式:接收数据帧的同时就立即按数据帧的目的MAC地址决定该帧的转发接口,因而提高了帧的转发速度。缺点是它不检查差错就直接将帧转发出去,因此有可能也将一些无效帧转发给其他的站。
(iv)自学习功能
-
假定在以太网交换机有4个接口,各连接一台计算机,其MAC地址分别是A,B,C和D。在一开始,以太网交换机里面的交换表是空的。
-
A先向B发送一帧,从接口1进入到交换机。交换机收到帧后,先查找交换表,没有查到应从哪个接口转发这个帧(在MAC地址这一列中,找不到目的地址为B的项目)。接着交换机把这个帧的源地址A和接口1写入交换表中,并向除接口1以外的所有接口广播这个帧(这个帧就是从接口1进来的,当然不应当把它再从接口1转发出去)。
-
C和D将丢弃这个帧,因为目的地址不对。只有B才收下这个目的地址正确的帧。这也称为过滤。
-
从新写入交换表的项目(A,1)可以看出,以后不管从哪一个接口收到帧,只要其目的地址是A,就应当把收到的帧从接口1转发出去。这样做的依据是:既然A发出的帧是从接口1进入到交换机的,那么从交换机的接口1转发出的帧也应当可以到达A。
-
假定接下来B通过接口3向A发送一帧。交换机查找交换表,发现交换表中的MAC地址有A。表明要发送给A的帧(即目的地址为A的帧)应从接口1转发。于是把这个帧传送到接口1转发给A。显然现在已经没有必要再广播收到的帧。交换表这时新增加的项目(B,3)表明今后如有发送给B的帧,就应当从接口3转发出去。
-
经过一段时间后,只要主机C和D也向其他主机发送帧,以太网交换机中的交换表就会把转发到C或D应当经过的接口号(2或4)写入到交换表中。这样交换表中的项目就齐全了。要转发给任何一台主机的帧,都能够很快地在交换表中找到相应的转发接口。
-
考虑到有时可能要在交换机的接口更换主机,或者主机要更换其网络适配器,这就需要更改交换表中的项目。为此,在交换表中每个项目都设有一定的有效时间。过期的项目就自动被删除。用这样的方法保证交换表中的数据都符合当前网络的实际状况。
※ 总结:
-
交换机收到一帧后先进行自学习。查找交换表中与收到帧的源地址有无相匹配的项目。
如没有,就在交换表中增加一个项目(源地址、进入的接口和有效时间);
如有,则把原有的项目进行更新(进入的接口或有效时间)。
-
转发帧。查找交换表中与收到帧的目的地址有无相匹配的项目。
如没有,则向所有其他接口(进入的接口除外)转发;
如有,则按交换表中给出的接口进行转发;
若交换表中给出的接口就是该帧进入交换机的接口,则应丢弃这个帧。
(3)虚拟局域网VLAN(Virtual LAN)
① 定义
由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。 每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个VLAN。
※ 虚拟局域网其实只是局域网给用户提供的一种服务, 而并不是一种新型局域网。
② 示例
-
LAN1:(A1,A2,B1,C1)、LAN2:A3,B2,C2)、LAN3:(A4,B3,C3)
-
VLAN1:(A1,A2,A3,A4)、VLAN2:(B1,B2,B3)、VLAN3:(C1,C2,C3)
-
若B1向VLAN2工作组内成员发送数据,工作站B2和B3将会收到广播的信息,而工作站A1,A2和C1都不会收到B1发出的广播信息。
③ 优点
-
VLAN是用户和网络资源的逻辑组合,因此可按照需要将有关设备和资源非常方便地重新组合, 使用户从不同的服务器或数据库中存取所需的资源。
-
VLAN限制了接收广播信息的工作站数,使得网络不会因传播过多的广播信息(即“广播风暴”)而引起性能恶化。
④ 帧格式
-
VLAN标记字段的长度是4字节,插入在以太网MAC帧的源地址字段和类型字段之间。VLAN标记的前两个字节总是设置为0x8100(1000000100000000),称为IEEE802.1Q标记类型。
-
当数据链路层检测到MAC帧的源地址字段后面的两个字节的值是0x8100时,就知道现在插入了4字节的VLAN标记。于是就接着检查后面两个字节的内容。在后面的两个字节中,前3位是用户优先级字段,接着的一位是规范格式指示符CFI(Canonical Format Indicator),最后的12位是该虚拟局域网VLAN标识符VID(VLAN ID),它唯一地标志了这个以太网帧属于哪一个VLAN。
-
由于用于VLAN的以太网帧的首部增加了4个字节,因此以太网的最大帧长从原来的1518字节(1500字节的数据加上18字节的首部)变为1522字节。
6、高速以太网
(1)定义
速率不小于100Mbit/s的以太网称为高速以太网,又称为快速以太网(Fast Ethernet)。
(2)特点
-
可在全双工方式下工作而无冲突发生。在全双工方式下工作时,不使用 CSMA/CD 协议。
-
MAC 帧格式仍然是802.3标准规定的。
-
保持最短帧长不变,但将一个网段的最大电缆长度减小到100m。
-
帧间时间间隔从原来的9.6μs改为现在的0.96μs。
(3)使用以太网进行宽带接入
-
可以提供双向的宽带通信。
-
可以根据用户对带宽的需求灵活地进行带宽升级。
-
可以实现端到端的以太网传输,中间不需要再进行帧格式的转换。这就提高了数据的传输效率且降低了传输的成本。
-
不支持用户身份鉴别。
第四章 网络层
实现网络互连,完成分组在计算机网络核心部分的传输,为主机之间提供逻辑通信(提供不可靠的尽最大努力的服务,即不可靠的服务)。
一、相关概念
1、两种服务
(1)虚电路服务
-
面向连接,虚电路是逻辑连接,整个数据传输过程中独占虚电路
-
在通信之前先建立虚电路(Virtual Circuit),以保证双方通信所需的一切网络资源
-
可实现可靠传输,数据能够无差错、不重复、 不丢失、按照正确顺序地进行传输。
-
当通信的链路过多时,需要很大的物理资源投入,且每条链路的资源利用率不高。
(2)数据报服务
-
网络在发送分组时不需要先建立连接。每一个分组(即 IP 数据报)独立发送,与其前后的分组无关(不进行编号)。
-
网络层不提供服务质量的承诺,只尽最大努力交付。即所传送的分组可能出错、丢失、重复和失序(不按序到达终点),当然也不保证分组传送的时限。使网络中的(与电信网的交换机相比较)路由器可以做得比较简单,而且价格低廉。
-
如果主机(即端系统)中的进程之间的通信需要是可靠的,那么就由网络的主机中的运输层负责可靠交付(包括差错处理、流量控制等)。
-
导致网络的造价大大降低, 运行方式灵活,能够适应多种应用。
※ 虚电路服务与数据报服务的对比
对比的方面 | 虚电路服务 | 数据报服务 |
---|---|---|
思路 | 可靠通信应当由网络来保证 | 可靠通信应当由用户主机来保证 |
连接的建立 | 必须有 | 不需要 |
终点地址 | 仅在连接建立阶段使用,每个分组使用短的虚电路号 | 每个分组都有终点的完整地址 |
分组的转发 | 属于同一条虚电路的分组均按照同一路由进行转发 | 每个分组独立选择路由进行转发 |
当结点出故障时 | 所有通过出故障的结点的虚电路均不能工作 | 出故障的结点可能会丢失分组,一些路由可能会发生变化 |
分组的顺序 | 总是按发送顺序到达终点 | 到达终点时不一定按发送顺序 |
端到端的差错处理和流量控制 | 可以由网络负责,也可以由用户主机负责 | 由用户主机负责 |
2、两个层面
二、网际协议IP
1、IP地址与MAC地址
(1)区别
-
IP地址放在IP数据报的首部,而MAC地址则放在MAC帧的首部。
-
在网络层和网络层以上使用的是IP地址,而数据链路层及以下使用的是MAC地址。
-
当IP数据报插入到数据链路层的MAC帧以后,整个的IP数据报就成为MAC帧的数据,因而在数据链路层看不见数据报的IP地址。
(2)转发过程
-
在IP层抽象的互联网上只能看到IP数据报。
-
虽然在IP数据报首部有源站P地址,但路由器只根据目的站的IP地址进行转发
-
在局域网的链路层,只能看见MAC帧。
-
IP层抽象的互联网屏蔽了下层这些很复杂的细节。只要在网络层上讨论问题,就能够使用统一的、抽象的IP地址研究主机和主机或路由器之间的通信。
2、地址解析协议ARP
(1)功能
从网络层使用的IP地址中解析出在数据链路层使用的硬件地址。
(2)原理
在主机ARP高速缓存中存放一个从IP地址到硬件地址的映射表,并且这个映射表还经常动态更新(新增或超时删除)。每一台主机都设有一个ARP高速缓存(ARP cache),里面有本局域网上的各主机和路由器的IP地址到硬件地址的映射表,这些都是该主机目前知道的一些地址。
(3)步骤
主机A向本局域网上的某个主机B发送IP数据报,先在其ARP高速缓存中查看有无主机B的IP地址。
- 如有,就可查出主机B对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址(减少了ARP广播的数量)。
- 如没有,就将主机A的IP地址到硬件地址的映射写入ARP请求分组,ARP进程在本局域网上广播发送一个ARP请求分组。主机A收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP高速缓存。
※ 注意
ARP是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题。如果所要找的主机和源主机不在同一个局域网上,那么就要通过ARP找到一个位于本局域网上的某个路由器的硬件地址,然后把分组发送给这个路由器,让这个路由器把分组转发给下一个网络,剩下的工作就由下一个网络来做。
(4)使用ARP的四种情况
-
发送方是主机(H1),要把IP数据报发送到本网络上的另一个主机(H2)。用ARP找到目的主机的硬件地址。
-
发送方是主机(H1),要把IP数据报发送到另一个网络上的一个主机(H3)。用ARP找到本网络上的另一个路由器(R1)的硬件地址。剩下的工作由这个路由器完成。
-
发送方是路由器(R1),要把IP数据报转发到本网络上的一个主机(H3)。用ARP找到目的主机的硬件地址。
-
发送方是路由器(R1),要把IP数据报转发到另一个网络上的一个主机(H4)。用ARP找到本网络上另一个路由器(R2)的硬件地址。剩下的工作由这个路由器完成。
3、网际控制报文协议ICMP
(1)功能
更有效地转发IP数据报和提高交付成功的机会,允许主机或路由器报告差错情况和提供有关异常情况的报告。
※ ICMP不是IP的高层协议(看起来好像是高层协议,因为ICMP报文是装在IP数据报中,作为其中的数据部分),而是IP层的协议。
(2)格式
(3)种类
① ICMP差错报告报文
(i)功能
只报告错误,不能纠错。
(ii)分类
-
终点不可达:当路由器或主机不能交付数据报时就向源点发送终点不可达报文。
-
时间超过:当路由器收到生存时间为零的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把已收到的数据报片都丢弃,并向源点发送时间超过报文。
-
参数问题:当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
-
改变路由(重定向,Redirect):路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。
(iii)格式
把收到的需要进行差错报告的IP数据报的首部和数据字段的前8个字节提取出来,作为ICMP报文的数据字段,再加上相应的ICMP差错报告报文的前8个字节。提取收到的数据报的数据字段前8个字节是为了得到运输层的端口号(对于TCP和 UDP)以及运输层报文的发送序号(对于TCP)。这些对源点通知高层协议是有用的。
(iv)不发送的情况
-
对ICMP差错报告报文,不再发送ICMP差错报告报文。
-
对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文。
-
对具有多播地址的数据报,都不发送ICMP差错报告报文。
-
对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发送ICMP差错报告报文。
② ICMP询问报文
常用的ICMP询问报文有两种,即:
-
回送请求和回答:ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问。收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。这种询问报文用来测试目的站是否可达以及了解其有关状态。
-
时间戳请求和回答:ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间。在ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900年1月1日起到当前时刻一共有多少秒。时间戳请求与回答可用于时钟同步和时间测量。
(4)应用
① PING(Packet InterNet Groper)
-
用来测试两个主机之间的连通性。
-
使用ICMP回送请求与回送回答报文。
-
是应用层直接使用网络层ICMP的例子,没有通过运输层的TCP或UDP。
② 追踪路由Traceroute
(i)定义
用来跟踪一个分组从源点到终点的路径。
(ii)原理
Traceroute从源主机向目的主机发送一连串的IP数据报,数据报中封装的是无法交付的UDP用户数据报。第一个数据报P1的生存时间TTL=1。当P1到达路径上的第一个路由器R1时,路由器R1先收下它,接着TTL-=1。由于TTL=0了,R1就把P1丢弃了,并向源主机发送一个ICMP时间超过差错报告报文。
源主机接着发送第二个数据报P2,并设置TTL=2。P2先到达路由器R1,R1收下后把TTL-=1再转发给路由器R2。R2收到P2时TTL=1,但TTL-=1后TTL=0了。R2就丢弃P2,并向源主机发送一个ICMP时间超过差错报告报文。
这样一直继续下去。当最后一个数据报刚刚到达目的主机时,数据报的TTL=1。主机不转发数据报,也不把TTL-=1。但因IP数据报中封装的是无法交付的运输层的UDP用户数据报,因此目的主机要向源主机发送ICMP终点不可达差错报告报文。
(iii)功能
源主机可以获得这些路由器和最后目的主机发来的ICMP报文给出的路由信息、到达目的主机所经过的路由器的IP地址,以及到达其中的每一个路由器的往返时间。
4、虚拟互连网络
(1)定义
又称逻辑互连网络,虽然互连起来的各种物理网络的异构性客观存在的,但是我们利用IP协议就可以使这些性能各异的网络在网络层上看起来好像是一个统一的网络。这种使用IP协议的虚拟互连网络可简称为IP网。
(2)中间设备
-
转发器(repeater):物理层使用的中间设备。
-
网桥或桥接器(bridge):数据链路层使用的中间设备。
-
路由器(router):网络层使用的中间设备(可以隔离广播域)。
-
网关(gateway):在网络层以上使用的中间设备。用网关连接两个不兼容的系统需要在高层进行协议的转换。
(3)优点
当互联网上的主机进行通信时,就好像在一个网络上通信一样,而看不见互连的各具体的网络异构细节。
(4)分组在互联网中的传送
互联网中的源主机H1要把一个IP数据报发送给目的主机H2,主机H1先要查找自己的路由表,看目的主机是否在本网络上。
① 直接交付
如是,则不需要经过任何路由器而是直接交付。
② 间接交付
如不是,则必须把IP数据报发送给某个路由器(图中的R1),R1在查找了自己的路由表后,知道应当把数据报转发给R2进行间接交付。这样一直转发下去,最后由路由器R5知道自己是和H2连接在同一个网络上,不需要再使用别的路由器转发了,于是就把数据报直接交付给目的主机H2。
※ 互联网可以由多种异构网络互连组成。
5、IP地址
(1)格式
-
分类的IP地址是将IP地址划分为若干个固定类,每一类地址都由两个固定长度的字段组成:
网络号(net-id),标志主机(或路由器)连接到的网络,
主机号(host-id),标志该主机(或路由器)。
-
主机号在它前面的网络号所指明的网络范围内必须是唯一的,一个IP地址在整个互联网范围内是唯一的。
(2)特点
-
IP地址是一种分等级的地址结构:
IP地址管理机构在分配IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配,方便了IP地址的管理。
路由器仅根据目的主机所连接的网络号来转发分组(不考虑目的主机号),这样可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
-
实际上IP地址是标志一个主机(或路由器)和一条链路的接口:
当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的IP地址,其网络号必须是不同的。这种主机称为多归属主机。
由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络), 因此一个路由器至少应当有两个不同的 IP 地址。
-
用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号。
-
所有分配到网络号的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
(3)点分十进制记法
(4)类别
-
A类、B类和C类地址的网络号字段长度分别为1Byte、2Byte和3Byte,而在网络号字段的最前面有1~3位的类别位,其数值分别规定为0,10和110。
-
A类、B类和C类地址的主机号字段长度分别为3Byte、2Byte和1Byte。
-
D类地址(前4位是1110)用于多播。
-
E类地址(前4位是1111)保留为以后用。
① A类地址
-
最小网络号:0(保留不指派)
-
最大网络号:127(本地环回测试地址,不指派)
-
最小本地环回测试地址:127.0.0.1
-
最大本地环回测试地址:127.255.255.254
-
-
第一个可指派的网络号:1,网络地址:1.0.0.0
-
最后一个可指派的网络号:126,网络地址:126.0.0.0
-
可指派网络数量:
(除去最值网络号0和127)=126
-
每个网络可分配IP地址数量:
(除去主机号全0的网络地址和全1的广播地址)=16777214
② B类地址
-
最小网络号、第一个可指派的网络号:128.0,网络地址:128.0.0.0
-
最大网络号、最后一个可指派的网络号:191.255,网络地址:191.255.0.0
-
可指派网络数量:
=16384
-
每个网络可分配IP地址数量:
(除去主机号全0的网络地址和全1的广播地址)=65534
③ C类地址
-
最小网络号、第一个可指派的网络号:192.0.0,网络地址:192.0.0.0
-
最大网络号、最后一个可指派的网络号:223.255.255,网络地址:223.255.255.0
-
可指派网络数量:
=2097152
-
每个网络可分配IP地址数量:
(除去主机号全0的网络地址和全1的广播地址)=254
④ D类地址
多播地址。
⑤ E类地址
保留地址。
※ IP地址的指派范围
网络类别 | 最大可指派网络数 | 第一个可指派网络号 | 最后一个可指派网络号 | 每个网络中的最大主机数 |
---|---|---|---|---|
A | 1 | 126 | ||
B | 128.0 | 191.255 | ||
C | 192.0.0 | 223.255.255 |
※ 一般不使用的特殊IP地址
网络号 | 主机号 | 源地址使用 | 目的地址使用 | 代表的意思 |
---|---|---|---|---|
0 | 0 | √ | × | 本网络上的本主机 |
0 | host-id | √ | × | 本网络上的某主机 |
全1 | 全1 | × | √ | 只在本网络上广播(各路由器均不转发) |
net-id | 全1 | × | √ | 对net-id上的所有主机进行广播 |
127 | 非全0或全1 | √ | √ | 用作本地软件换回测试 |
(5)例题
※ 答题技巧
-
根据地址左起第一个十进制数的值,可以判断出网络类别(小于127的为A类,128-191的为B类,192-223的为C类):
-
根据网络类别,可找出网络号部分和主机号部分(A类地址网络号为左起第1个字节,B类地址网络号为左起前2个字节,C类地址网络号为左起前3个字节);
-
以下三种情况的地址不能指派给主机或路由器接口:
A类网络号0和127
主机号为“全0”(网络地址)
主机号为“全1”(广播地址)
6、IP数据报的格式
-
版本号(4位):指定IP协议的版本(IPv4/IPv6);
-
首部长度(4位):表示IP报头的长度,以4字节为单位;
-
区分服务(8位):一般情况不使用;
-
总长度(16位):IP报文的总长度(首部和数据之和的长度),用于将各个IP报文进行分离;
-
标识(16位):唯一的标识主机发送的报文,如果数据在IP层进行了分片,那么每一个分片对应的ID都相同;
-
标志(3位):
第一位保留,表示暂时没有规定该字段的意义。
第二位表示不能分片,只有DF=0时允许分片。
第三位MF=1时表示还有分片,MF=0时表示已经是数据报片的最后一个;
-
片偏移(13位):分片相对原始数据开始处的偏移,表示当前分片在原数据中的偏移位置。除了最后一个报文,其他报文长度必须是8的整数倍;
-
生存时间(8位):数据报到达目的地的最大报文跳数,一般是64,每经过一个路由,TTL-=1,减到0还没到达就丢弃,主要是用来防止出现路由循环;
-
协议(8位):表示上层协议的类型,以便目的主机的IP层将数据部分上交给对应的协议进行处理;
-
首部检验和(16位):使用CRC进行校验,来鉴别数据报的首部是否损坏,但不检验数据部分(采用简单的16位二进制反码求和算法);
-
源IP地址(32位):表示发送端所对应的IP地址;
-
目的IP地址(32位):表示接收端所对应的IP地址;
-
选项字段:不定长,最多40字节;
(2)例题
一数据报的总长度为3820字节,其数据部分为3800字节长(使用固定首部),需要分片为长度不超过1420字节的数据报片。因固定首部长度为20字节,因此每个数据报片的数据部分长度不能超过1400字节。于是分为3个数据报片,其数据部分的长度分别为1400,1400和1000字节。原始数据报首部被复制为各数据报片的首部,但必须修改有关字段的值。下图给出分片后得出的结果(请注意片偏移的数值)。
7、划分子网
(1)定义
在IP地址中又增加了一个“子网号字段”,使两级的IP地址变成为三级的IP地址。
※ 两级IP地址的不合理之处
-
IP地址空间的利用率有时很低。
-
给每一个物理网络分配一个网络号会使路由表变得太大因而使网络性能变坏。
-
两级的IP地址不够灵活。
(2)基本思路
-
从主机号借用若干个位作为子网号subnet-id,而主机号host-id也就相应减少了若干个位。
-
划分子网纯属一个单位内部的事情。单位对外仍然表现为没有划分子网的网络。
-
凡是从其他网络发送给本单位某个主机的IP数据报,仍然是根据IP数据报的目的网络号net-id。
-
先找到连接在本单位网络上的路由器
-
路由器在收到IP数据报后,再按目的网络号net-id和子网号subnet-id找到目的子网
-
最后将IP数据报直接交付目的主机
-
(3)格式
(4)优缺点
-
优点
减少了IP地址的浪费
使网络的组织更加灵活
更便于维护和管理
-
缺点
减少了能够连接在网络上的主机总数。
(5)子网掩码
使用子网掩码可以找出IP地址中的子网部分。
① 规则
-
子网掩码长度=32位
-
某位=1:IP地址中的对应位为网络号和子网号
-
某位=0:IP地址中的对应位为主机号
② 默认子网掩码
③ 例题
(i)已知IP地址是141.14.72.24,子网掩码是 255.255.192.0,试求网络地址。
(ii)若将(i)中子网掩码改为255.255.224.0,试求网络地址,讨论所得结果。
※ 不同子网掩码可能得出相同的网络地址,但不同掩码的效果是不同的。
(6)使用子网时的分组转发
① 规则
(i)从收到的分组的首部提取目的IP地址D
(ii)先用各网络的子网掩码和D逐位相“与”,看是否和相应的网络地址匹配。若匹配,则将分组直接交付。否则就是间接交付,执行(iii)
(iii)若路由表中有目的地址为D的特定主机路由,则将分组传送给指明的下一跳路由器;否则,执行(iv)
(iv)对路由表中的每一行,将子网掩码和D逐位相“与”。若结果与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行(v)
(v)若路由表中有一个默认路由,则将分组传送给路由表中所指明的默认路由器;否则,执行(vi)
(vi)报告转发分组出错
② 例题
源主机H1向目的主机H2发送分组。试讨论R1收到H1向H2发送的分组后查找路由表的过程。
【解】源主机H1向目的主机H2发送的分组的目的地址是H2的IP地址128.30.33.138。
-
源主机H1首先要判断:发送的这个分组是在本子网上进行直接交付还是要通过本子网上的路由器进行间接交付?
-
源主机H1把本子网的“子网掩码255.255.255.128”与目的主机H2的“IP地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出128.30.33.128,不等于H1的网络地址(128.30.33.0),说明H2与H1不在同一个子网上,因此H1不能把分组直接交付H2,而必须交给子网上的默认路由器R1来转发。
-
路由器R1在收到一个分组后,就在其路由表中逐行寻找有无匹配的网络地址。
-
先看R1路由表中的第一行。用这一行的“子网掩码255.255.255.128”和收到的分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),得出结果128.30.33.128,然后和这一行给出的目的网络地址128.30.33.0进行比较,但比较的结果不一致(即不匹配)。
-
用同样方法继续往下找第二行。用第二行的“子网掩码255.255.255.128”和该分组的“目的地址128.30.33.138”逐位相“与”(即逐位进行AND操作),结果也是128.30.33.128,这个结果和第二行的目的网络地址128.30.33.128相匹配,说明这个网络(子网2)就是收到的分组所要寻找的目的网络。于是不需要再继续查找下去,R1把分组从接口1直接交付主机H2(它们都在一个子网上)。
8、无分类编址CIDR(构造超网)
(1)特点
-
CIDR消除了传统的A类、B类和C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间[优点]。
-
CIDR使用各种长度的“网络前缀”(network prefix)来代替分类地址中的网络号和子网号。
-
IP 地址从三级编址(使用子网掩码)又回到了两级编址。
-
CIDR把网络前缀都相同的连续的IP地址组成一个“CIDR地址块”。只要知道CIDR地址块中的任何一个地址,就可以知道这个地址块的起始地址(即最小地址)和最大地址,以及地址块中的地址数。
-
CIDR地址块中的地址数一定是2的整数次幂。
(2)网络前缀
CIDR使用“斜线记法”(slash notation),又称为CIDR记法,即在IP地址面加上一个斜线“/“,然后写上网络前缀所占的位数(这个数值对应于三级编址中子网掩码中1的个数)。例如CIDR表示的一个IP地址128.14.35.7/20,则二进制IP地址的前20位是网络前缀(相当于原来的网络号),剩下的后12位是主机号。
(3)地址块
CIDR把网络前缀都相同的连续的IP地址组成“CDR地址块”。例如已知IP地址128.14.35.7/20是某CIDR地址块中的一个地址,现在把它写成二进制表示形式,其中的前20位是网络前缀,而前缀后面的12位是主机号
可以很方便地得出这个地址所在的地址块中的最小地址和最大地址
最小地址 | 128.14.32.0 | 10000000 00001110 00100000 00000000 |
---|---|---|
最大地址 | 128.14.47.255 | 10000000 00001110 00101111 11111111 |
这个地址块的IP地址共有个,扣除主机号为全0和全1的地址(最小地址和最大地址)后,可指派的地址数是
个。常使用地址块中的最小地址和网络前缀的位数指明一个地址块(不必每次都减2算出可指派的地址数,这样做太麻烦)。显然,上面导出的最小地址并不是该地址块128.14.32.0/20的网络地址。
也可以用二进制代码简要地表示此地址块:10000000 00001110 0010*。这里的星号*代表了主机号字段的所有的0。星号前的二进制代码的个数,就是网络前缀的位数。
在不需要指明网络地址时,也可把这样的地址块简称为“/20 地址块”。
(4)地址掩码
地址掩码(掩码)由一连串1和接着的一连串0组成,而1的个数就是网络前缀的长度。地址掩码又称为子网掩码。在CIDR记法中,斜线后面的数字就是地址掩码中1的个数。例如,/20 地址块的地址掩码是:11111111 11111111 11110000 00000000(20个连续的1和接着的12个连续的0)。这个掩码用CIDR记法表示就是255.255.240.0/20。
对于早期使用的分类IP地址,其地址掩码是固定的,常常不用专门指出。例如:
-
A类网络,地址掩码为255.0.0.0或255.0.0.0/8
-
B类网络,地址掩码为255.255.0.0或255.255.0.0/16
-
C类网络,地址掩码为255.255.255.0或255.255.255.0/24
把二进制的IP地址和地址掩码进行按位AND运算,即可得出网络地址。点分十进制的IP地址是128.14.35.7/20,前缀长度是20。请注意,从点分十进制的IP地址并不容易看出其网络地址。要使用二进制地址来运算。把二进制IP地址的前20位保留不变,剩下的12位全写为0,即可得出网络地址:
即:IP地址128.14.35.7/20所在的网络地址是128.14.32.0/20。
CIDR地址中还有三个特殊地址块,即:
-
前缀n=32,即32位IP地址都是前缀,没有主机号。这其实就是一个IP地址,用于主机路由。
-
前缀n=31,这个地址块中只有两个IP地址,其主机号分别为0和1,用于点对点链路。
-
前缀n=0,同时IP地址也是全0,即0.0.0.0/0,用于默认路由。
(5)路由聚合
-
一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由。
-
路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
-
路由聚合也称为构成超网。
三、IP层转发分组的过程
1、最长前缀匹配
-
使用CIDR时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。
-
应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配
-
网络前缀越长,其地址块就越小,因而路由就越具体
-
最长前缀匹配又称为最长匹配或最佳匹配。
2、路由匹配举例
选择两个匹配的地址中更具体的一个,即选择最长前缀的地址。
3、例题
(1)一个自治系统分配到的IP地址块为30.138.118/23,并包含有5个局域网,其连接图如下图所示,每个局域网上的主机数分别标注在图上。试给出每一个局域网的地址块(包括前缀)。
解:分配网络前缀时应先分配地址多较多的前缀。
地址块30.138.118/23可写成30.138.118.0/23,写为二进制为:
00011110.10001010.01110110.00000000
-
LAN1有3个路由器地址,共3个地址,所以主机位至少为3(n≤29);
-
LAN2有91个主机加1个路由器地址,共92个地址,所以主机位至少为7(n≤25);
-
LAN3有150个主机加1个路由器地址,共151个地址,所以主机位至少为8(n≤24);
-
LAN4有3个主机加1个路由器地址,共4个地址,所以主机位至少为3(n≤29);
-
LAN5有15个主机加1个路由器地址,共16个地址,所以主机位至少为5(n≤27);
局域网 | 地址块 |
---|---|
LAN1 | 30.138.01110111.11000000=30.138.119.192/29 |
LAN2 | 30.138.01110111.00000000=30.138.119.0/25 |
LAN3 | 30.138.01110110.00000000=30.138.118.0/24 |
LAN4 | 30.138.01110111.11001000=30.138.119.200/29 |
LAN5 | 30.138.01110111.10000000=30.138.119.128/26 |
(2)某单位分配到一个地址块136.23.12.64/26。现在需要进一步划分为4个一样大的子网。试问:
① 每一个子网的网络前缀有多长?
28位。
② 每一个子网中有多少个地址?
=16个。
③ 每一个子网的地址是什么?
136.23.12.64/26=10001000 00010111 00001100 01000000,则有
-
136.23.12.64/28=10001000 00010111 00001100 01000000
-
136.23.12.80/28=10001000 00010111 00001100 01010000
-
136.23.12.96/28=10001000 00010111 00001100 01100000
-
136.23.12.112/28=10001000 00010111 00001100 01110000
④ 每一个子网可分配给主机使用的最小地址和最大地址是什么?
-
第一个地址块136.23.12.64/28,可分配给主机使用的
最小地址:136.23.12.01000001=136.23.12.65/28
最大地址:136.23.12.01001110=136.23.12.78/28
-
第二个地址块136.23.12.80/28,可分配给主机使用的
最小地址:136.23.12.01010001=136.23.12.81/28
最大地址:136.23.12.01011110=136.23.12.94/28
-
第三个地址块136.23.12.96/28,可分配给主机使用的
最小地址:136.23.12.01100001=136.23.12.97/28
最大地址:136.23.12.01101110=136.23.12.110/28
-
第四个地址块136.23.12.112/28,可分配给主机使用的
最小地址:136.23.12.01110001=136.23.12.113/28
最大地址:136.23.12.01111110=136.23.12.126/28
四、IPv6
1、IPv4
把整个Internet看成为一个单一的、抽象的网络。IPv4地址就是给每个连接在互联网上的主机(或路由器)分配一个在全世界范围是唯一的32位的标识符,是一种逻辑地址。
2、IPv6的出现原因
互联网经过几十年的飞速发展,IPv4地址已经全部耗尽。解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6。
3、与IPv4的区别
-
更大的地址空间。IPv6将地址从IPv4的32位增大到了128位。
-
扩展的地址层次结构。
-
灵活的首部格式。IPv6定义了许多可选的扩展首部。
-
改进的选项。IPv6允许数据报包含有选项的控制信息,其选项放在有效载荷中。
-
允许协议继续扩充。
-
支持即插即用。自动配置,不需要DHCP。
-
支持资源预分配
-
首部改为8字节对齐。首部长度必须是8字节的整数倍。
4、格式
(1)组成
IPv6数据报由两大部分组成,即基本首部(base header)和有效载荷(payload)。有效载荷也称为净负荷。有效载荷允许有零个或多个扩展首部(extension header),后面是数据部分。但所有的扩展首部并不属于IPv6数据报的基本首部。
※ 与IPv4的字段变化
-
取消了首部长度字段,因为它的首部长度是固定的(40字节)。
-
取消了服务类型字段,因为优先级和流标号字段实现了服务类型字段的功能。
-
取消了总长度字段,改用有效载荷长度字段。
-
取消了标识、标志和片偏移字段,因为这些功能已包含在分片扩展首部中。
-
把TTL字段改称为跳数限制字段,但作用是一样的(名称与作用更加一致)。
-
取消了协议字段,改用下一个首部字段。
-
取消了检验和字段,这样就加快了路由器处理数据报的速度。
-
取消了选项字段,而用扩展首部来实现选项功能。
(2)基本首部
-
版本:占4位。它指明了协议的版本,对IPv6该字段是6。
-
通信量类:占8位。这是为了区分不同的Pv6数据报的类别或优先级。
-
流标号:占20位。“流”就是互联网络上从特定源点到特定终点(单播或多播)的一系列数据报(如实时音频或视频传输),而在这个“流”所经过的路径上的路由器都保证指明的服务质量。所有属于同一个流的数据报都具有同样的流标号。
-
有效载荷长度:占16位。它指明Pv6数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷之内)。这个字段的最大值是64KB(65535字节)。
-
下一个首部:占8位。它相当于IPv4的协议字段或可选字段。
当IPv6数据报没有扩展首部时,下一个首部字段的作用和Pv4的协议字段一样,它的值指出了基本首部后面的数据应交付P层上面的哪一个高层协议
当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型
-
跳数限制:占8位。用来防止数据报在网络中无限期地存在。源点在每个数据报发出时即设定某个跳数限制(最大为255跳)。每个路由器在转发数据报时,要先把跳数限制字段中的值减1。当跳数限制的值为零时,就要把这个数据报丢弃。
-
源地址:占128位。是数据报的发送端的IP地址。
-
目的地址:占128位。是数据报的接收端的IP地址。
5、地址
(1)目的地址分类
-
单播:传统的点对点通信。
-
多播:一点对多点的通信,数据报发送到一组计算机中的每一个。IPv6没有采用广播的术语,而是将广播看作多播的一个特例。
-
任播:IPv6增加的一种类型。任播的终点是一组计算机,但数据报只交付其中的一个,通常是按照路由算法得出的距离最近的一个。
(2)冒号十六进制记法
若一个用点分十进制记法的128位的地址为
则对应的冒号十六进制记法的地址为
冒号十六进制记法可以允许零压缩,即一连串连续的零可以为一对冒号所取代(但在任一地址中只能使用一次零压缩),例如
冒号十六进制记法可结合使用点分十进制记法的后缀(在IPv4向IPv6的转换阶段特别有用)
(3)CIDR斜线表示法
如60位的前缀12AB00000000CD3(十六进制表示的15个字符,每个字符代表4位二进制数字)可记为
但不允许记为
IPv6取消了子网掩码,斜线的意思和IPv4的情况相似,如CIDR记法为
表示对应IPv6的地址为
其子网号是
(5)IPv6的地址分类
地址类型 | 二进制前缀 |
---|---|
未指明地址 | 000(128位),可记为::/128 |
环回地址 | 001(128位),可记为::/128 |
多播地址 | 11111111(8位),可记为FF00::/8 |
本地链路单播地址 | 1111111010(10位),可记为E80::/10 |
全球单播地址 | 除上述四种外,所有其他的二进制前缀 |
6、IPv4向IPv6过渡
(1)双协议栈
① 定义
双协议栈是指在完全过渡到lPv6之前,使一部分主机(或路由器)同时装有IPv4和IPv6这两种协议栈。因此双协议栈主机(或路由器)既能够和IPv6的系统通信,又能够和IPv4的系统通信。双协议栈的主机(或路由器)记为IPv6/IPv4,表明它同时具有IPv6地址和Pv4地址。
② 策略
双协议栈的主机在和IPv6主机通信时采用IPv6地址,而和IPv4主机通信时则采用IPν4地址。双协议栈使用域名系统DNS来查询目的主机采用的地址,若DNS返回的是IPv4地址,则双协议栈的源主机就使用IPv4地址,而当DNS返回的是IPv6地址,源主机就使用IPv6地址。
③ 例题
下图所示的情况是源主机A和目的主机F都使用IPv6,所以A向F发送IPv6数据报,路径是A→B→C→D→E→F。中间B到E这段路径是IPv4网络,路由器B不能向C转发IPv6数据报,因为C只使用IPv4协议。B是IPv6/IPv4路由器,它把IPv6数据报首部转换为IPv4数据报首部后发送给C,C再转发到D。当D转发到IPv4网络的出口路由器E时(E也是IPv6/IPv4路由器),再恢复成原来的IPv6数据报。
需要注意的是:IPv6首部中的某些字段却无法恢复。例如,原来IPv6首部中的流标号X在最后恢复出的IPv6数据报中只能变为空缺。这种信息的损失是使用首部转换方法所不可避免的。
(2)隧道技术
① 策略
在IPv6数据报要进入IPv4网络时,把IPv6数据报封装成为IPv4数据报,整个的IPv6数据报变成了IPv4数据报的数据部分。
※ 要使双协议栈的主机知道IPv4数据报里面封装的数据是一个IPv6数据报,就必须把IPv4首部的协议字段的值设置为41(41表示数据报的数据部分是IPv6数据报)。
② 例题
下图所示的IPv4数据报从路由器B经过路由器C和D传送到E,而原来的IPv6数据报就好像在IPv4网络的隧道中传输,什么都没有变化。当IPv4数据报离开IPv4网络中的隧道时,再把数据部分(即原来的IPv6数据报)交给主机的IPv6协议栈。
图中的粗线表示在IPv4网络中好像有一个从B到E的“IPv6隧道”,路由器B是隧道的入口而E是出口,而在隧道中传送的数据报的源地址是B,目的地址是E。
7、ICMPv6
ICMPv6是面向报文的协议,它利用报文来报告差错,获取信息,探测邻站或管理多播通信。ICMPv6还增加了几个定义报文功能及含义的其他协议。
五、互联网的路由选择协议
1、自治系统AS
将整个互联网划分为许多较小的自治系统(Autonomous System,AS)。
-
一个自治系统是一个互联网,其最重要的特点是自治系统有权自主地决定在本系统内采用何种路由选择协议。
-
一个自治系统内的所有网络都属于一个行政单位来管辖。
-
一个自治系统的所有路由器在本自治系统内必须是连通的。
-
自治系统之间的路由选择也叫做域间路由选择,在自治系统内部的路由选择叫做域内路由选择。
2、内部网关协议IGP
在一个自治系统内部使用的路由选择协议,而这与在互联网中的其他自治系统选用什么路由选择协议无关。
(1)路由信息协议RIP
① 定义
RIP(Routing Information Protocol)是内部网关协议IGP中最先得到广泛使用的协议。RIP是一种分布式的基于距离向量的路由选择协议,是互联网的标准协议,其最大优点就是简单。RIP要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录。
-
RIP协议认为好的路由就是通过的网络数目少。
-
RIP协议只适用于小型互联网,只允许一条路径最多包含15个网络,“距离”等于16时相当于不可达。
-
RIP不能在两个网络之间同时使用多条路由,而选择一个具有最少路由器的路由(即最短路由)。
② “距离”的定义
-
从一个路由器到直接连接的网络的距离定义为1。
-
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数加1。
-
RIP协议中的“距离” 也称为“跳数”,因为每经过一个路由器,跳数就加1。
③ 要点
-
与谁交换信息(who)?
仅和相邻路由器交换信息。
-
交互什么信息(what)?
交换的信息是当前本路由器所知道的全部信息, 即自己的路由表。
-
什么时候交互信息(when)?
按固定的时间间隔交换路由信息,例如,每隔 30 秒。当网络拓扑发生变化时,路由器也及时向相邻路由器通告拓扑变化后的路由信息。
④ 优缺点
-
优点
实现简单,开销较小,“好消息传播得快”。
-
缺点
限制了网络的规模。
随着网络规模的扩大,开销也就增加。
“坏消息传播得慢”,使更新过程的收敛时间过长(当网络出现故障时,要经过比较长的时间才能将此信息传送到所有的路由器)。
⑤ 距离向量算法
对每一个相邻路由器发送过来的RIP报文,进行以下步骤:
(i)对地址为X的相邻路由器发来的RIP报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为X,并把所有的“距离”字段的值加1(便于进行本路由表的更新)。每一个项目都有三个关键数据(到目的网络N,距离是d,下一跳路由器是X)。
(ii)对修改后的RIP报文中的每一个项目,进行以下步骤:
-
若原来的路由表中没有目的网络N,则把该项目添加到路由表中(表明这是新的目的网络,应当加入到路由表中)
-
否则(原来的路由表中有目的网络N)
若下一跳路由器地址是X,则把收到的项目替换原路由表中的项目(到目的网络的距离有可能增大、减小或不变,以最新的消息为准)
否则(原来的路由表中有目的网络N,下一跳路由器地址不是X)
- 若收到的项目中的距离d小于路由表中的距离,则进行更新
- 否则(原来的路由表中有目的网络N,下一跳路由器地址不是X,距离d不小于路由表中的距离)什么也不做。
(iii)若3分钟还没有收到相邻路由器的更新路由表,则把此相邻路由器记为不可达的路由器,即把距离置为16(距离为16表示不可达)。
(iv)返回。
距离向量算法的基础就是Bellman-Ford算法(或Ford-Fulkerson算法),算法的要点如下:
设X是结点A到B的最短路径上的一个结点。若把路径A→B拆成路径A→X和X一B,则每一段路径A→X和X→B也都分别是结点A到X和结点X到B的最短路径。
※ 例题
已知路由器R6有表4-9(a)所示的路由表。现在收到相邻路由器R4发来的路由更新信息,如表4-9(b)所示。试更新路由器R6的路由表。
⑥ 报文格式
(2)开放最短路径优先OSPF
① 定义
OSPF是为克服RIP的缺点而开发出来的分布式的链路状态协议。
-
“开放”表明OSPF协议不是受某一家厂商控制,而是公开发表的
-
“最短路径优先”是因为使用了Dijkstra提出的最短路径算法SPF(这里不表示其他的路由选择协议不是“最短路径优先”)
※ OSPF最主要的特征就是使用链路状态协议,而不是像RIP那样的距离向量协议。
② 要点(与RIP的区别)
-
与谁交互信息(who)?
向本自治系统中所有路由器发送信息,这里使用的方法是洪泛法(路由器通过所有输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再将此信息发往其所有的相邻路由器(但不再发送给刚刚发来信息的那个路由器)。
RIP协议仅仅向自己相邻的几个路由器发送信息
-
交互什么信息(what)?
发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器的相邻关系和该链路的“度量”),但这只是路由器所知道的部分信息。
对于RIP协议,发送的信息是“到所有网络的距离和下一跳路由器”
-
什么时候交互信息(when)?
只有当链路状态发生变化时,路由器才用洪泛法向所有路由器发送此信息。
RIP不管网络拓扑有无发生变化,路由器之间都要定期交换路由表的信息
③ 区域
为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点分十进制表示),区域在一个区域内的路由器最好不超过200个。
④ 分组类型
-
类型1,问候(Hello)分组,用来发现和维持邻站的可达性。
-
类型2,数据库描述(Database Description)分组,向邻站给出自己的链路状态数据库中的所有链路状态项目的摘要信息。
-
类型3,链路状态请求(Link State Request)分组,向对方请求发送某些链路状态项目的详细信息。
-
类型4,链路状态更新(Link State Update)分组,用洪泛法对全网更新链路状态。这种分组是最复杂的,也是OSPF协议最核心的部分。路由器使用这种分组将其链路状态通知给邻站。链路状态更新分组共有五种不同的链路状态。
-
类型5,链路状态确认(Link State Acknowledgment)分组,对链路更新分组的确认。
⑤ 报文格式
3、外部网关协议EGP
源主机和目的主机处在不同的自治系统中(可能使用不同的内部网关协议),那么在不同自治系统之间的路由选择就需要使用外部网关协议EGP。
※ BGP采用了路径向量路由选择协议,与距离向量协议(如RIP)和链路状态协议(如OSPF)都有很大的区别。
(1)BGP定义
边界网关协议(Border Gateway Protocol)是不同自治系统的路由器之间交换路由信息的协议。
(2)BGP要点
-
与谁交换信息(who)?
仅和相邻BGP发言人交换信息。
-
交互什么信息(what)?
交换的信息是当前本BGP发言人所知道的全部路径信息。
-
什么时候交互信息(when)?
按固定的时间间隔交换信息(30s)。
(3)BGP报文种类
-
打开(OPEN)报文,用来与相邻的另一个BGP发言人建立关系。
-
更新(UPDATE)报文,用来发送某一路由的信息,以及列出要撤消的多条路由。
-
保活(KEEPALIVE)报文,用来确认打开报文和周期性地证实邻站关系。
-
通知(NOTIFICATION)报文,用来发送检测到的差错。
(4)报文格式
(5)BGP发言人和自治系统AS的关系
4、路由器的构成
(1)定义
路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。也就是说,将路由器某个输入端口收到的分组,按照分组要去的目的地(即目的网络),把该分组从路由器的某个合适的输出端口转发给下一跳路由器下一跳路由器也按照这种方法处理分组,直到该分组到达终点为止。
(2)路由选择部分
又称控制部分,其核心构件是路由选择处理机。
路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
(3)分组转发部分
由三部分组成:
-
交换结构,又称为交换组织,其作用是根据转发表对分组进行处理
-
一组输入端口(硬件接口)
-
一组输出端口(硬件接口)
六、IP多播
1、定义
IP多播(也称多址广播或组播)技术,是一种允许一台或多台主机(多播源)发送单一数据包到多台主机(一次的,同时的)的TCP/IP网络技术。多播作为一点对多点的通信,是节省网络带宽的有效方法之一。
2、单播与多播的比较
-
采用单播方式向90台主机传送同样的视频节目需要发送90个单播
-
采用多播方式只需发送一次到多播组,由路由器复制分组。局域网具有硬件多播功能不需要复制分组。
※ 当多播组的主机数很大时,采用多播方式就可明显地减轻网络中各种资源的消耗。
3、多播IP地址
-
IP多播所传送的分组需要使用多播IP地址
-
在多播数据报的目的地址写入的是多播组的标识符
-
多播组的标识符就是IP地址中的D类地址(多播地址)
-
每一个D类地址标志一个多播组
-
多播地址只能用于目的地址,不能用于源地址
4、硬件多播
(1)地址范围
01-00-5E-00-00-00 到 01-00-5E-7F-FF-FF,只有23位能用作多播地址。
(2)映射规则
由于多播IP地址与以太网硬件地址的映射关系不是唯一的(228:223=32:1),因此收到多播数据报的主机还要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
例如IP多播地址224.128.64.32(E0-80-40-20)和另一个IP多播地址224.0.64.32(E0-00-40-20)转换成以太网的硬件多播地址都是01-00-5E-00-40-20,仍需要目的主机在IP层根据IP地址进行过滤。
5、网际组管理协议IGMP
(1)功能
让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组。
(2)原理
-
在主机和多播路由器之间的所有通信都是使用IP多播。只要有可能,携带IGMP报文的数据报都用硬件多播来传送。因此在支持硬件多播的网络上,没有参加P多播的主机不会收到IGMP报文。
-
多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文(虽然也允许对一个特定组发送询问报文)。默认的询问速率是每125秒发送一次(通信量并不太大)。
-
当同一个网络上连接有几个多播路由器时,它们能够迅速和有效地选择其中的一个来探询主机的成员关系。因此,网络上多个多播路由器并不会引起IGMP通信量的增大。
-
在IGMP的询问报文中有一个数值N,它指明一个最长响应时间(默认值为10秒)。当收到询问时,主机在0到N之间随机选择发送响应所需经过的时延。因此,若一台主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送。
-
同一个组内的每一台主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了。这样就抑制了不必要的通信量。
6、多播路由选择协议
(1)原理
找出以源主机为根节点的多播转发树。
-
在多播转发树上,每一个多播路由器向树的叶节点方向转发收到的多播数据报,但在多播转发树上的路由器不会收到重复的多播数据报(即多播数据报不应在互联网中兜圈子)。
-
对不同的多播组对应于不同的多播转发树。同一个多播组,对不同的源点也会有不同的多播转发树。
(2)转发数据报方法
① 泛洪与剪除
采用反向路径广播RPB的策略,要点如下:
-
每一个路由器在收到一个多播数据报时,先检查数据报是否是从源点经最短路径传送来的。从本路由器寻找到源点的最短路径上(之所以叫作反向路径,因为在计算最短路径时是把源点当作终点的)的第一个路由器是否就是刚才把多播数据报送来的路由器。
若是,就向所有其他方向转发刚才收到的多播数据报(但进入的方向除外)
否则就丢弃而不转发。
-
如果本路由器有好几个相邻路由器都处在到源点的最短路径上(存在几条同样长度的最短路径),那么只能选择一条最短路径,选择的准则就是看这几条最短路径中的相邻路由器谁的IP地址最小。
假定各路由器之间的距离都是1。
-
路由器R1收到源点发来的多播数据报后,向R2和R3转发。
R2发现R1就在自己到源点的最短路径上,因此向R3和R4转发收到的数据报。
R3发现R2不在自己到源点的最短路径上,因此丢弃R2发来的数据报。其他路由器也这样转发。
-
R7到源点有两条最短路径:
R7→R4→R2→R1→源点
R7→R5→R3→R1→源点
-
再假定R4的IP地址比R5的IP地址小,所以只使用前一条最短路径。因此R7只转发R4传过来的数据报,而丢弃R5传过来的数据报。
-
最后就得出了用来转发多播数据报的多播转发树(图中用粗线表示),以后就按这个多播转发树来转发多播数据报。
这样就避免了多播数据报兜圈子,同时每一个路由器也不会接收重复的多播数据报。
如果在多播转发树上的某个路由器发现它的下游树枝(即叶节点方向)己没有该多播组的成员,就应把它和下游的树枝一起剪除。
例如图中虚线椭圆表示剪除的部分。当某个树枝有新增加的组成员时,可以再接入到多播转发树上。
② 隧道技术
隧道技术适用于多播组的位置在地理上很分散的情况。
③ 基于核心的发现技术
此方法对于多播组的大小在较大范围内变化时都适合。对每一个多播组G指定一个核心路由器(创建出对应于多播组G的转发树),给出它的IP单播地址。
七、虚拟专用网VPN
1、本地地址与全球地址
-
本地地址:仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向互联网的管理机构申请。
-
全球地址:全球唯一的IP地址,必须向互联网的管理机构申请。
※ 问题:在内部使用的本地地址就有可能和互联网中某个IP地址重合,这样就会出现地址的二义性问题。
※ 解决:RFC 1918指明了一些专用地址(可重用地址)。
2、专用地址
(1)定义
专用地址只能用作本地地址而不能用作全球地址。在互联网中的所有路由器,对目的地址是专用地址的数据报一律不进行转发。
(2)专用IP地址块
-
A类:10.0.0.0到10.255.255.255,或记为10.0.0.0/8,它又称为24位块
-
B类:172.16.0.0到172.31.255.255,或记为172.16.0.0/12,它又称为20位块
-
C类:192.168.0.0到192.168.255.255,或记为192.168.0.0/16,它又称为16位块
(3)专用网
采用专用IP地址的互连网络称为专用互联网、本地互联网或专用网。
3、定义
利用公用的互联网作为本机构各专用网之间的通信载体。
-
“专用网”是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信
-
“虚拟”表示“好像是”,但实际上并不是, 因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样
4、构建要求
-
如果专用网不同网点之间的通信必须经过公用的互联网,但又有保密的要求,那么所有通过互联网传送的数据都必须加密。
-
必须为每个场所购买专门的硬件和软件,并进行配置, 使每个场所的VPN系统都知道其他场所的地址。
5、技术实现
-
要求:VPN连接的每一个场所至少要有一个路由器具有合法的全球IP地址。
-
举例:路由器R1和R2和互联网的接口地址必须是合法的全球IP地址,路由器R1和R2在专用网内部网络的接口地址则是专用网的本地地址。
八、网络地址转换NAT
1、功能
解决在专用网上使用专用地址的主机如何与互联网上的主机通信(并不需要加密)问题。
2、要求
-
在专用网连接到互联网的路由器上安装NAT软件。装有NAT软件的路由器叫做NAT路由器,它至少有一个有效的外部全球IP地址。
-
所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换成全球IP地址,才能和互联网连接。
3、原理
-
内部主机A用本地地址IPA和互联网上主机B通信所发送的数据报必须经过NAT路由器。
-
NAT路由器将数据报的源地址IPA转换成全球地址IPG,并把转换结果记录到NAT地址转换表中,目的地址IPB保持不变,然后发送到互联网。
-
NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是IPB而目的地址是IPG
-
根据NAT转换表,NAT路由器将目的地址IPG转换为IPA转发给最终的内部主机A。
可以看出在内部主机与外部主机通信时,NAT路由器上发生了两次地址转换:
-
离开专用网时:替换源地址,将内部地址替换为全球地址;
-
进入专用网时:替换目的地址,将全球地址替换为内部地址;
※ NAT地址转换表
方向 | 字段 | 旧的IP地址 | 新的IP地址 |
---|---|---|---|
出 | 源IP地址 | 192.168.0.3 | 172.38.1.5 |
入 | 目的IP地址 | 172.38.1.5 | 192.168.0.3 |
4、网络地址与端口号转换NAPT
NAPT地址转换表举例
方向 | 字段 | 旧IP地址和端口号 | 新IP地址和端口号 |
---|---|---|---|
出 | 源IP地址:TCP源端口 | 192.168.0.3:30000 | 172.38.1.5:40001 |
出 | 源IP地址:TCP源端口 | 192.168.0.4:30000 | 172.38.1.5:40002 |
入 | 目的IP地址:TCP目的端口 | 172.38.1.5:40001 | 192.168.0.3:30000 |
入 | 目的IP地址:TCP目的端口 | 172.38.1.5:40002 | 192.168.0.4:30000 |
九、多协议标记交换MPLS
1、定义
-
“多协议"表示在MPLS的上层可以采用多种协议(例如:IP,IPX)和多种数据链路层协议(例如:PPP、以太网、ATM)。
-
“标记“是指每个分组被打上一个标记,根据该标记对分组进行转发。
2、特点
-
支持面向连接的服务质量。
-
支持流量工程,平衡网络负载。
-
有效地支持虚拟专用网VPN。
3、原理
4、转发等价类FEC
“转发等价类”就是路由器按照同样方式(从同样接口转发到同样的下一跳地址,并且具有同样服务类别和同样丢弃优先级等)对待的P数据报的集合。
FEC的例子是:
-
目的IP地址与某一个特定IP地址的前缀匹配的IP数据报(这就相当于普通的IP路由器):
-
所有源地址与目的地址都相同的IP数据报;
-
具有某种服务质量需求的IP数据报。
FEC可用于负载平衡。
5、格式
6、优点
每个分组携带一个叫做标记的小整数。当分组到达交换机(即标记交换路由器)时,交换机读取分组的标记,并用标记值来检索分组转发表。这样比查找路由表来转发分组要快得多。
十、软件定义网络SDN
1、特点
-
基于流的转发
-
数据层面与控制层面分离
-
位于数据层面交换机之外的网络控制功能
-
可编程的网络
2、两个层面
3、三个层次
第五章 运输层
一、概述
1、与网络层的区别
-
网络层为主机之间提供逻辑通信,主机的身份标志是IP地址
-
运输层为应用进程之间提供端到端的逻辑通信,进程的身份标志是端口
2、进程之间的通信
-
从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。
-
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到三层(到网络层)的功能。
3、功能
-
向上面的应用层提供逻辑通信服务(为应用进程之间提供端到端的逻辑通信)。
-
端口复用(multiplexing)和分用(demultiplexing)。
-
复用:各个应用进程可以通过运输层将数据传送到网络IP层
-
分用:运输层从网络IP层收到应用进程数据后,必须交付给指定的用户进程
-
-
向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。
4、端口
(1)定义
协议端口号 (protocol port number),简称端口 (port),也称为进程标识。
(2)作用
-
标志主机中的进程。
-
充当通信的终点。把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)由TCP来完成。
-
应用层的各种协议进程与运输实体进行层间交互的地址。
(3)规则
两个计算机中的进程要互相通信,不仅必须知道对方的IP地址(为了找到对方的计算机),而且还要知道对方的端口号(为了找到对方计算机中的应用进程)。
-
端口用一个16位端口号进行标志。
-
端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。
-
在互联网中,不同计算机的相同端口号是没有联系的。
(4)分类
-
服务器端使用的端口号
熟知端口号,数值一般为0~1023。
登记端口号,数值为1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在IANA登记,以防止重复。
应用程序 | FTP | TELNET | SMTP | DNS | TFTP | HTTP | SNMP | SNMP(trap) | HTTPS |
---|---|---|---|---|---|---|---|---|---|
熟知端口号 | 21 | 23 | 25 | 53 | 69 | 80 | 161 | 162 | 443 |
-
客户端使用的端口号
又称为短暂端口号,数值为49152~65535,留给客户进程选择暂时使用。
当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。
5、UDP/TCP
指标 | UDP | TCP |
---|---|---|
提供的服务 | 无连接 | 面向连接(逻辑连接) |
交付 | 不可靠 | 可靠 |
数据单位协议 | UDP报文/用户数据报 | TCP报文段 |
处理上层数据 | 基于报文 | 基于字节流 |
首部、资源开销 | 小 | 大 |
信息交互方式 | 半双工 | 全双工 |
接收到差错的PDU | 直接丢弃 | 接收方丢弃,发送方重传 |
多播和广播 | 支持 | 不支持 |
二、用户数据报协议UDP(User Datagram Protocol)
UDP只在IP的数据报服务之上增加了很少一点的功能:复用和分用、差错检测。
1、特点
-
无连接。发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延。
-
尽最大努力交付。不保证可靠交付,因此主机不需要维持复杂的连接状态表。
-
面向报文。UDP对应用层交下来的报文既不合并也不拆分,而是保留这些报文的边界,一次交付一个完整的报文。应用程序必须选择合适大小的报文。
若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,也降低IP层的效率。
若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,降低IP层的效率。
-
没有拥塞控制。因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。 很适合多媒体通信的要求。
-
支持一对一、一对多、多对一和多对多的交互通信(半双工)。
-
首部开销小。只有8个字节,比TCP的20个字节的首部要短。
2、格式
-
源端口:源端口号在需要对方回信时选用。不需要时可用全0。
-
目的端口:目的端口号在终点交付报文时必须使用。
-
长度:UDP用户数据报的长度,其最小值是8(仅有首部)。
-
检验和:检测UDP用户数据报在传输中是否有错,有错就丢弃。、
※ 伪首部:在计算检验和时,临时把“伪首部”和UDP用户数据报连接在一起。
3、例题
(1)假定用户数据报的长度是15字节,因此要添加一个全0的字节。
(2)下面是以十六进制格式存储的一个UDP首部:CB84 000D 001C 001C,试问:
① 源端口号是什么? 12×+11×
+8×16+4=52100
② 目的端口号是什么? 13
③ 这个用户数据报的总长度是什么? 16+12=28Byte
④ 数据长度是多少? 28-8=20Byte
⑤ 这个分组是从客户到服务器还是从服务器到客户? 客户到服务器,因为目的端口号是熟知端口
⑥ 客户进程是什么? 从RFC 867可知这个客户进程是Daytime。当Daytime服务器收到客户发送的UDP用户数据报后,就把现在的日期和时间以ASCII码字符串的形式返回给客户
三、传输控制协议TCP(Transmission Control Protocol)
1、特点
-
面向连接
-
每条TCP连接只能有两个端点,只能是点对点(一对一)的。
-
提供可靠交付的服务。
-
提供全双工通信。
-
面向字节流
流(stream):流入或流出进程的字节序列。
含义:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流。TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系,但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样。
TCP不关心应用进程一次把多长的报文发送到TCP缓存,对连续的字节流进行分段,形成TCP报文段。
-
TCP连接是一条虚连接而不是一条真正的物理连接。
-
TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的。
-
TCP根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)。
-
TCP可把太长的数据块划分短一些再传送,也可等待积累有足够多的字节后再构成报文段发送出去。
-
同一个IP地址可以有多个不同的TCP连接,而同一个端口号也可以出现在多个不同的TCP连接中。
2、报文格式
-
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段。
-
TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项(n是整数)。 因此TCP首部的最小长度是20字节。
-
源端口和目的端口
各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
-
序号
占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。
-
确认号
占4字节,是期望收到对方的下一个报文段的数据的第一个字节的序号。
※ 若确认号为N,则表明到N-1为止的所有数据都已正确收到。
-
数据偏移(首部长度)
占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字(以4字节为计算单位)。固定首部的数值为5。
-
保留字段
占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位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。
3、TCP的连接
(1)定义
TCP把连接作为最基本的抽象,每一条TCP连接有两个端点,每一条TCP连接唯一地被通信两端的两个端点(即两个套接字)所确定。
(2)套接字
① 定义
又称插口,是TCP连接的端点。端口号拼接到IP地址即构成了套接字。
② 格式
(3)连接格式
四、可靠传输
TCP发送的报文段是交给IP层传送的,但IP层只能提供尽最大努力服务,也就是说TCP下面的网络所提供的是不可靠的传输。因此TCP必须采用适当的措施才能使得两个运输层之间的通信变得可靠。
1、停止等待协议
(1)定义
-
每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组。
-
可以看作是连续ARQ协议的特殊情况:发送窗口和接收窗口都为1的情况,且只需要1比特给报文段编号即可。
(2)作用
使用确认和重传机制,可以在不可靠的传输网络上实现可靠的通信。
(3)无差错情况
① 过程
A发送分组M1,发完就暂停发送,等待B的确认(ACK)。B收到了M1就向A发送ACK。A在收到了对M1的确认后,再发送下一个分组M2,以此类推。
② 优缺点
优点是简单,缺点是信道利用率太低。
(4)出现差错
① 差错情况
-
B接收M1时检测出了差错,就丢弃M1,其他什么也不做(不通知A收到有差错的分组)。
-
M1在传输过程中丢失了,这时B什么都不知道,也什么都不做。
② 解决方法(超时重传)
A为每一个已发送的分组都设置了一个超时计时器,只要在超时计时器到期之前收到了相应的确认,就撤销该超时计时器,继续发送下一个分组M2 。
(5)确认丢失和确认迟到
① 确认丢失
(i)出现背景
若B所发送的对M1的确认丢失了,那么A在设定的超时重传时间内不能收到确认,但A并无法知道是自己发送的分组出错、丢失,或者是B发送的确认丢失。
(ii)A方措施
在超时计时器到期后重传M1。
(iii)B方措施
-
丢弃这个重复的分组M1,不向上层交付
-
向A发送确认。不能认为已经发送过确认就不再发送, 因为A之所以重传M1就表示A没有收到对M1的确认(丢失了)。
② 确认迟到
(i)出现背景
传输过程中没有出现差错,但B对分组M1的确认迟到了。
(ii)A方措施
-
在超时计时器到期后重传M1
-
A会收到重复的确认,收下后就丢弃。
(iii)B方措施
-
丢弃这个重复的分组M1,不向上层交付
-
向A发送确认。不能认为已经发送过确认就不再发送, 因为A之所以重传M1就表示A没有收到对M1的确认(迟到了)。
③ 注意
-
在发送完一个分组后,必须暂时保留已发送的分组的副本,以备重发。
-
分组和确认分组都必须进行编号。
-
超时计时器的重传时间应当比数据在分组传输的平均往返时间更长一些。
④ 例题
假定在运输层使用停止等待协议。发送方在发送报文段M0后在设定的时间内未收到确认,于是重传M0,但M0又迟迟不能到达接收方。不久后发送方收到了迟到的对M0的确认,于是发送下一个报文段M1,不久就收到了对M1的确认。接着发送方发送新的报文段M0,但这个新的M0在传送过程中丢失了。而一开始就滞留在网络中的M0现在到达接收方。接收方无法分辨M0是旧的,于是收下M0并发送确认。显然接收方后来收到的M0是重复的,协议失败了。试画出双方交换报文段的过程。
(6)信道利用率
:A发送分组所需要的时间(
=分组长度/数据率)
:B发送确认分组所需要的时间
- RTT:往返时间
※ 流水线传输:发送方连续发送多个分组,不每次停下等待对方确认(提高信道利用率)。
2、连续ARQ协议
(1)自动重传请求ARQ
重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组。
(2)滑动窗口
-
发送方维持发送窗口
-
可连续发送位于发送窗口内的分组,而不需要等待对方的确认。提高信道利用率。
-
每收到一个确认, 就把发送窗口向前滑动一个分组的位置。
-
-
接收方对分组采用累积确认
-
不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认。表示到这个分组为止的所有分组都已正确收到了。
-
(3)Go-back-N
表示需要再退回来重传已发送过的N个分组。
(4)优缺点
-
优点
-
容易实现,即使确认丢失也不必重传。
-
-
缺点
-
不能向发送方反映出接收方已经正确收到的所有分组的信息。
-
当通信线路质量不好时,连续ARQ协议由于需要Go-back-N会带来负面的影响。
-
3、以字节为单位的滑动窗口
发送窗口里面的序号表示允许发送的序号。在没有收到B的确认的情况下,A可以连续把窗口内的数据都发送出去。
-
根据接收方 B 给出的窗口值,发送方 A 构造出自己的发送窗口。
假定A收到了B发来的确认报文段,其中(接收)窗口是20字节,而确认号是31(这表明B期望收到的下一个序号是31,而序号30为止的数据已经收到了)。根据这两个数据,A就构造出自己的发送窗口(不能超过接收窗口大小)。
-
A发送数据
假定A发送了序号为31~41共11个字节的数据,发送窗口位置并未改变,但发送窗口内靠后面有11个字节(灰色小方框表示)表示已发送但未收到确认,而发送窗口内靠前面的9个字节(42~50)是允许发送但尚未发送的。
P3-P1=A的发送窗口
P2-P1=已发送但尚未收到确认的字节数
P3-P2=允许发送但当前尚未发送的字节数(可用窗口或有效窗口)
-
B接收数据并发送确认报文
数据未按序到达
- 假定B收到了序号为32和33的数据,先存下。这些数据没有按序到达,因为序号为31的数据没有收到(也许丢失了,也许滞留在网络中的某处)。
- B只能对按序收到的数据中的最高序号给出确认,因此B发送的确认报文段中的确认号仍然是31(即期望收到的序号),而不能是32或33。
部分已发送数据按序到达
- 假定B收到了序号为31的数据,并把序号为31~33的数据交付主机,然后B删除这些数据。
- 接着把接收窗口向前移动3个序号,同时给A发送确认,其中窗口值仍为20,但确认号是34,这表明B已经收到了到序号33为止的数据。
- A收到B的确认后,就可以把发送窗口向前滑动3个序号,但指针P2不动。可以看出,现在A的可用窗口增大了,可发送的序号范围是42~53。
-
A 的发送窗口内的序号都已用完, 但还没有再收到确认,必须停止发送。
A在经过一段时间后(由超时计时器控制)重传这部分数据,重新设置超时计时器,直到收到B的确认为止。
如果A收到确认号落在发送窗口内,那么A就可以使发送窗口继续向前滑动,并发送新的数据。
4、TCP的缓存和窗口的关系
-
发送缓存用来暂时存放:
发送窗口通常只是发送缓存的一部分。已被确认的数据应当从发送缓存中删除,因此发送缓存和发送窗口的后沿是重合的。发送应用程序最后写入发送缓存的字节减去最后被确认的字节,就是还保留在发送缓存中的被写入的字节数。发送应用程序必须控制写入缓存的速率,不能太快,否则发送缓存就会没有存放数据的空间。
发送应用程序传送给发送方TCP准备发送的数据;
TCP已发送出但尚未收到确认的数据。
-
接收缓存用来暂时存放:
如果收到的分组被检测出有差错,则要丢弃。如果接收应用程序来不及读取收到的数据,接收缓存最终就会被填满,使接收窗口减小到零。反之,如果接收应用程序能够及时从接收缓存中读取收到的数据,接收窗口就可以增大,但最大不能超过接收缓存的大小。图中还指出了下一个期望收到的字节号。这个字节号也就是接收方给发送方的报文段的首部中的确认号。
按序到达的、但尚未被接收应用程序读取的数据;
未按序到达的数据。
5、超时重传时间的选择
-
加权平均往返时间/平滑的往返时间RTTS
第一次测量到RTT样本时,RTTS值就取为所测量到的RTT样本值,以后每测量到一个新的RTT样本,就按下式重新计算一次RTTS:
0≤α≤1。若α很接近于零,表示RTT值更新较慢。若选择α接近于1,则表示RTT值更新较快。RFC 2988推荐的α值为1/8,即0.125。
-
RTT的偏差的加权平均值RTTD
第一次测量时,RTTD值取为测量到的RTT样本值的一半,在以后的测量中,则使用下式计算加权平均的RTTD:
β是个小于1的系数,其推荐值是1/4,即0.25
-
超时重传时间RTO
应略大于上面得出的加权平均往返时间RTTS 。
6、选择确认SACK
(1)定义
若收到的报文段无差错,只是未按序号,中间还缺少一些序号的数据,则可只传送缺少的数据而不重传已经正确到达接收方的数据。
(2)规定
-
要在TCP首部的选项中加上“允许 SACK”的选项
-
由于首部选项的长度最多只有40字节,而指明一个边界就要用掉4字节,因此在选项中最多只能指明4个字节块的边界信息。
4个字节块共有8个边界,因而需要用32个字节来描述。
另外还需要2个字节。一个字节用来指明SACK选项,另一个字节是指明这个选项要占用多少字节。
如果要报告5个字节块的边界信息,那么至少需要42个字节。
五、TCP的流量控制
1、定义
让发送方的发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞。
2、滑动窗口实现
TCP为每一个连接设有一个持续计时器,只要TCP连接的一方收到对方的零窗口通知,就启动该持续计时器。
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段(仅携带1字节的数据),而对方就在确认这个探测报文段时给出现在的窗口值。
若窗口仍然是零,则收到这个报文段的一方就重新设置持续计时器。
若窗口不是零,则死锁的僵局就可以打破了。
- 死锁:A 一直等待收到B发送的非零窗口的通知,而B也一直等待A发送的数据。
3、TCP的传输效率
(1)发送分组时机
- TCP维持一个变量,它等于最大报文段长度MSS。只要缓存中存放的数据达到MSS字节时,就组装成一个TCP报文段发送出去。
- 由发送方的应用进程指明要求发送报文段,即TCP支持的推送操作。
- 发送方的一个计时器期限到了,这时就把当前已有的缓存数据装入报文段(但长度不能超过MSS)发送出去。
(2)发送确认报文时机
- 让接收方等待一段时间,使得接收缓存已有足够空间容纳一个最长的报文段,
- 等到接收缓存已有一半空闲的空间。
只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小。
六、TCP的拥塞控制
1、拥塞的定义、原因和表现
-
在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。
-
原因:∑对资源的需求>可用资源
-
以下指标上升都标志着拥塞增长
负载增加,吞吐量反而降低
由于缺少缓存空间而被丢弃的分组的百分数
平均队列长度
超时重传的分组数
平均分组时延
分组时延的标准差
2、与流量控制的联系
(1)相同点
需抑制发送端发送数据的速率(某些拥塞控制算法向发送端发送控制报文,并告诉发送端,网络已出现麻烦,必须放慢发送速率)。
(2)不同点
流量控制 | 拥塞控制 | |
---|---|---|
问题侧重点 | 端到端 | 全局性 |
作用 | 控制点对点通信量 | 防止过多数据注入网络中 |
问题产生原因 | 发送端发送数据的速率过快, 接收端来不及接收。 | 不明确 |
3、方法
此处的拥塞控制算法并未考虑流量控制,认为接收方和发送方的缓存是无限大的。
(1)拥塞判断
-
重传定时器超时
现在通信线路的传输质量一般都很好,因传输出差错而丢弃分组的概率是很小的(远小于1%),只要出现了超时,就可以猜想网络可能出现了拥塞。
-
收到三个相同(重复)的ACK
个别报文段会在网络中丢失,预示可能会出现拥塞(实际未发生拥塞),因此可以尽快采取控制措施, 避免拥塞。
(2)慢开始、拥塞避免、快重传与快恢复
① 步骤
-
首先执行慢开始算法,当TCP连接进行初始化时,拥塞窗口cwnd=1。
图中的窗口单位不使用字节而使用报文段。慢开始门限的初始值设置为16个报文段,即ssthresh=16。
-
发送方每收到一个对新报文段的确认ACK, 就把拥塞窗口值加1倍,然后开始下一轮的传输。拥塞窗口cwnd随着传输轮次按指数规律增长。
-
当拥塞窗口cwnd增长到慢开始门限值ssthresh时(①,此时拥塞窗口cwnd=16),就改为执行拥塞避免算法,拥塞窗口按线性规律增长(AI,加法增大)。
-
当拥塞窗口cwnd>16时,进入拥塞避免,拥塞窗口每一轮次只加1。
-
假设当拥塞窗口cwnd=24时,网络出现了超时(②),发送方判断为网络拥塞。于是调整门限值ssthresh=cwnd/2=12,同时设置拥塞窗口cwnd=1,进入慢开始阶段(MD,乘法减小)。
加法增大AI与乘法减小MD合在一起就是AIMD算法。
-
当拥塞窗口cwnd=ssthresh=12时(③),改为执行拥塞避免算法,拥塞窗口按线性规律增大(AI,加法增大)。
-
当拥塞窗口cwnd=16时(④),发送方一连收到3个对同一个报文段的重复确认(3-ACK),于是发送方知道只是丢失了个别报文段,因此不启动慢开始,而是执行快重传算法。
原因:防止出现因为少数几个分组超时,导致发送方误认为出现了网络拥塞的情况。
-
之后执行快恢复算法,发送方调整门限值ssthresh=cwnd/2=8,同时设置拥塞窗口cwnd=ssthresh=8(⑤),开始执行拥塞避免算法。
原因:慢开始算法使每次拥塞窗口都从1开始,下降速度太快,网络性能波动太大。
② 流程图
4、发送窗口的上限值
-
当rwnd<cwnd时,是接收方的接收能力限制发送窗口的最大值。
-
当cwnd<rwnd时,则是网络的拥塞限制发送窗口的最大值。
5、主动队列管理AQM
(1)定义
在队列长度达到某个值得警惕的数值时(即当网络拥塞有了某些拥塞征兆时),就主动丢弃到达的分组。
※ 主动意为不应等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组。
(2)随机早期检测RED(Random Early Detection)
实现RED时需要使路由器维持两个参数,即队列长度最小门限和最大门限。当每一个分组到达时,RED就按照规定的算法先计算当前的平均队列长度。
-
若平均队列长度小于最小门限,则把新到达的分组放入队列进行排队。
-
若平均队列长度超过最大门限,则把新到达的分组丢弃。
-
若平均队列长度在最小门限和最大门限之间,则按照某一丢弃概率p把新到达的分组丢弃(这就体现了丢弃分组的随机性)。
6、例题
TCP的拥塞窗口cwnd大小与传输轮次n的关系如表所示:
n | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
cwnd | 1 | 2 | 4 | 8 | 16 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 |
n | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 |
cwnd | 40 | 41 | 42 | 21 | 22 | 23 | 24 | 25 | 26 | 1 | 2 | 4 | 8 |
(1)试画出拥塞窗口与传输轮次的关系曲线。
(2)指明 TCP 工作在慢开始阶段的时间间隔。
[1, 6]和[23, 26]。
(3)指明 TCP 工作在拥塞避免阶段的时间间隔。
[6, 16]和[17, 22]。
(4)在第16轮次和第22轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
-
在第16轮次之后发送方通过收到三个重复的确认,检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口减半了。
-
在第22轮次之后发送方通过超时,检测到丢失了报文段,因为题目给出,下一个轮次的拥塞窗口下降到1了。
(5)在第1轮次,第18轮次和第24轮次发送时,门限ssthresh分别被设置为多大?
-
在第1轮次发送时,门限ssthresh被设置为32,因为从第6轮次起就进入了拥塞避免状态,拥塞窗口每个轮次加1。
-
在第18轮次发送时,门限ssthresh被设置为发生拥塞时拥塞窗口42的一半,即21。
-
在第24轮次发送时,门限ssthresh被设置为发生拥塞时拥塞窗口26的一半,即13。
(6)在第几轮次发送出第70个报文段?
第70报文段在第7轮次发送出。
-
第1轮次发送报文段1(cwnd=1)
-
第2轮次发送报文段2,3(cwnd=2)
-
第3轮次发送报文段4~7(cwnd=4)
-
第4轮次发送报文段8~15(cwnd=8)
-
第5轮次发送报文段16~31(cwnd=16)
-
第6轮次发送报文段32~63(cwnd=32)
-
第7轮次发送报文段64~96(cwnd=33)
(7)假定在第26轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd和门限ssthresh应设置为多大?
-
门限ssthresh=cwnd/2=8/2=4
-
拥塞窗口cwnd=ssthresh=4
七、TCP的运输连接管理
1、连接管理的阶段
-
连接建立
-
数据传送
超时重传
流量控制
拥塞控制
-
连接释放
2、连接建立
TCP建立连接的过程叫做握手。握手需要在客户和服务器之间交换三个TCP报文段。称之为三报文握手(三次握手)。
-
A的TCP向B发出连接请求报文段,其首部中的同步位SYN=1,并选择序号seq=x,表明传送数据时的第一个数据字节的序号是x。
-
B的TCP收到连接请求报文段后,如同意,则发回确认,确认报文段中SYN=1,ACK=1,确认号ack=x+1,选择的序号seq=y。
-
A收到此报文段后向B给出确认,其ACK=1,确认号ack=y+1。
-
A的TCP通知上层应用进程“TCP连接已经建立”。
-
B的TCP收到主机A的确认(为了防止已失效的连接请求报文段突然又传送到了B,产生错误)后,也通知其上层应用进程"TCP连接已经建立"。
3、连接释放
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释放连接。在确认报文段中FIN=1,ACK=1,序号seq=w,确认号ack=u+1。
-
A 收到连接释放报文段后,必须发出确认。在确认报文段中ACK=1,确认号ack=w+1,序号seq=u+1。
-
TCP连接必须经过时间等待计时器设置的时间2MSL(时间MSL,最长报文段寿命)后才真正释放掉。
※ 主动关闭连接方需要等待2MSL才释放连接的原因
-
保证A发送的最后一个ACK报文段能够到达B
-
防止已失效的连接请求报文段出现在本连接中
4、有限状态机
(1)格式说明
-
方框:TCP可能具有的状态
-
方框中的大写英文字符串:TCP标准所使用的TCP连接状态名
-
状态之间的箭头:可能发生的状态变迁
粗实线箭头:表示对客户进程的正常变迁
粗虚线箭头:表示对服务器进程的正常变迁
细线箭头:表示异常变迁
(2)优点
可以更清晰地看出TCP 连接各种状态之间的关系。
5、例题
用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送端和接收端的起始序号分别选为100和200,试画出工作示意图(从连接建立阶段到连接释放都要画上)。
要传送的512B的数据必须划分为6个报文段传送,前5个报文段各100B,最后一个报文段传送12B。
-
三报文握手
报文段#1:A发起主动打开。
- 报文段#1发送SYN报文段,除以SYN-SENT状态,并选择初始序号seq=100,B处于LISTEN状态。
报文段#2:B确认A的SYN报文段。
- SYN报文段的ack=101(A的初始序号加1),初始序号seq=200,B进入到SYN-RCVD状态。
报文段#3:A发送ACK报文段来确认报文段#2。
- ACK报文段的ack=201(B的初始序号加1),A没有在这个报文段中放入数据。
- 因为SYN报文段#1消耗了一个序号,所以报文段#3的序号是seq=101,A和B都进入了ESTABLISHED状态。
-
数据传送
报文段#4:A发送100字节的数据。
- 报文段#3是确认报文段,没有数据发送,报文段#3并不消耗序号,因此报文段#4的序号仍然是seq=101。
- A在发送数据的同时,还确认B的报文段#2,因此ack=201。
报文段#5:B确认A的报文段#4。
- 由于收到了从序号101到200共100字节的数据,因此在报文段#5中,ack=201(所期望收到的下一个数据字节的序号)。
- B发送的SYN报文段#2消耗了一个序号,因此报文段#5的序号是seq=201,比报文段#2的序号多了一个序号。
- 在这个报文段中,B给出了接收窗口rwnd=100。
从报文段#6到报文段#13都按类似方式处理,到此为止A已经发送了500字节的数据。
报文段#14:A发送最后12字节的数据。
- 报文段#14的序号是seq=601。
报文段#15:B 发送对报文段 #14 的确认。
- B 收到从序号 601到602共12字节的数据。因此报文段#15的确认号是ack=613(所期望收到的下一个数据字节的序号)。
- 从报文段#5一直到报文段#15,B一共发送了6个不消耗序号的确认,因此B发送的确认报文段#15的序号仍然和报文段#5的序号一样(seq=201)。
-
四报文挥手
报文段#16:A发送FIN报文段。
- 数据报文段#14已经用掉了序号601到612,因此报文段#16序号是seq=613,确认号ack=202,A进入FIN-WAIT-1状态。
报文段#17:B发送确认报文段。
- 报文段#17的确认号为 614,B进入CLOSE-WAIT状态。
- 由于确认报文段不消耗序号,因此报文段#17的序号仍然和报文段#15的一样(seq=201)
报文段#18:B 没有数据要发送,就发送FIN报文段#18,
- 报文段#18的序号仍然是seq=201,同时消耗一个报文。
报文段#19:A 发送最后的确认报文段。
- 报文段#16的序号是613,已经消耗掉了。因此现在的序号是seq=614,但这个确认报文段并不消耗序号。
第六章 应用层
一、定义
精确定义应用进程之间的通信规则,即应用层协议(application layer protocol),以提供网络与用户应用软件之间的接口服务。
二、域名系统DNS
1、功能
域名系统DNS(Domain Name System)用于实现域名到IP地址的解析。
-
名字到IP地址的解析是由若干个域名服务器程序完成的。
-
域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
2、互联网的域名结构
(1)域名
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名。
(2)结构
-
域名采用了层次树状结构的命名方法。
-
域名的结构由标号序列组成,各标号之间用点隔开:… .三级域名.二级域名.顶级域名
-
各标号分别代表不同级别的域名。
(3)顶级域名TLD的分类
-
国家顶级域名nTLD
.cn(中国)
.us(美国)
.uk(英国)
-
通用顶级域名gTLD
.com(公司和企业)
.net(网络服务机构)
.org(非赢利性组织)
.edu(美国专用的教育机构)
.gov(美国专用的政府部门)
.mil(美国专用的军事部门)
.int(国际组织)
-
基础结构域名 (infrastructure domain)
arpa,唯一,用于反向域名解析,因此又称为反向域名。
3、域名服务器
(1)区
① 定义
一个域名服务器所负责管辖的(或有权限的)范围。
② 规则
-
各单位根据具体情况来划分自己管辖范围的区,但在一个区中的所有节点必须是能够连通的。
-
每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射。
-
DNS服务器的管辖范围不是以“域”为单位,而是以“区”为单位。
(2)DNS划分区
假定abc公司有下属部门x、y,部门x下面又分三个分部门u、v和w,而y下面还有其下属部门t。
-
左图表示abc公司只设一个区abc.com
区abc.com等价于域abc.com
-
右图表示abc公司划分了两个区(大公司可能要划分多个区):abc.com和 y.abc.com
都隶属于域abc.com
都各设置了相应的权限域名服务器
区是“域”的子集
(3)树状结构的DNS域名服务器
以上以右图中公司abc划分的两个区为例,给出DNS域名服务器树状结构图。
-
这种DNS域名服务器树状结构图可以更准确地反映出DNS的分布式结构。
-
图中的每一个域名服务器都能够进行部分域名到IP地址的解析。
-
当某个DNS服务器不能进行域名到IP地址的转换时,它就设法找互联网上别的域名服务器进行解析。
(4)分类
-
根域名服务器
根域名服务器是最高层次的域名服务器,也是最重要的域名服务器
所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
根域名服务器并不直接把域名直接转换成IP地址
根域名服务器把下一步应当找的顶级域名服务器的IP地址告诉本地域名服务器
-
顶级域名服务器
负责管理在该顶级域名服务器注册的所有二级域名
当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)
-
权限域名服务器
负责一个区的域名服务器
当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器
-
本地域名服务器
每一个互联网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器,这种域名服务器有时也称为默认域名服务器
当一个主机发出DNS查询请求时,这个查询请求报文首先发送给本地域名服务器
(5)DNS查询
-
迭代查询:如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文。
-
递归查询:当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出所要查询的IP地址,要么告诉本地域名服务器:“你下一步应当向哪一个域名服务器进行查询”。然后让本地域名服务器进行后续的查询
三、文件传输协议FTP
文件传送协议FTP(File Transfer Protocol)是互联网上使用得最广泛的文件传送协议。
1、功能
-
FTP提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限。
-
FTP屏蔽了各计算机系统的细节,减少或消除在不同操作系统下处理文件的不兼容性,因而适合于在异构网络中任意计算机之间传送文件。
-
FTP只提供文件传送的一些基本的服务,它使用TCP可靠的运输服务。
2、基本工作原理
-
FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务。
-
FTP的服务器进程由两大部分组成:一个主进程,负责接受新的请求(21号端口);另外有若干个从属进程,负责处理单个请求。
-
在进行文件传输时,FTP的客户和服务器之间要建立两个并行的TCP连接:“控制连接”和“数据连接”。
控制连接在整个会话期间一直保持打开,FTP客户所发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件。
实际用于传输文件的是“数据连接”。服务器端的控制进程在接收到FTP客户发送来的文件传输请求后就创建“数据传送进程”和“数据连接”,用来连接客户端和服务器端的数据传送进程(服务器端21号端口)。
数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行(服务器端20号端口)。
由于FTP使用了一个分离的控制连接,因此FTP的控制信息是带外(out of band)传送的。
(1)主进程的工作步骤
① 打开熟知端口(端口号为21),使客户进程能够连接上。
② 等待客户进程发出连接请求。
③ 启动从属进程来处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建其他一些子进程。
④ 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发地进行。
(2)使用两个不同端口号的好处
-
使协议更加简单和更容易实现。
-
在传输文件时还可以利用控制连接(例如客户发送请求终止传输)。
-
数据连接与控制连接不会发生混乱。
(3)网络文件系统NFS
NFS允许应用进程打开一个远地文件,并能在该文件的某一个特定的位置上开始读写数据,在网络上传送的只是少量的修改数据。
3、简单文件传输协议TFTP
(1)定义
TFTP(Trivial File Transfer Protocol)是一个很小且易于实现的文件传送协议。服务器端熟知端口号69。
-
TFTP使用客户服务器方式和使用UDP数据报, 因此TFTP需要有自己的差错改正措施。
-
TFTP只支持文件传输而不支持交互。
-
TFTP没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别
(2)特点
-
每次传送的数据PDU中有512字节的数据,但最后一次可不足512字节。
-
数据PDU也称为文件块(block),每个块按序编号,从1开始。
-
支持ASCII码或二进制传送。
-
可对文件进行读或写。
-
使用很简单的首部。
(3)可靠机制
TFTP的工作很像停止等待协议。
-
发送完一个文件块后就等待对方的确认,确认时应指明所确认的块编号。
-
发完数据后在规定时间内收不到确认就要重发数据 PDU。
-
发送确认PDU的一方若在规定时间内收不到下一个文件块,也要重发确认PDU。这样可保证文件的传送不致因某一个数据报的丢失而告失败。
四、远程终端协议TELNET
远程终端协议/终端仿真协议TELNET是一个简单的远程终端协议,也是互联网的正式标准。
1、功能
-
用户用TELNET就可在其所在地通过TCP连接注册(即登录)到远地的另一个主机上(使用主机名或IP地址)。
-
TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上。
-
TELNET又称为终端仿真协议。
2、网络虚拟终端NVT格式
(1)目的
适应计算机和操作系统的差异
(2)流程
-
客户软件发送数据
把用户的击键和命令转换成NVT格式,并送交服务器。
服务器软件把收到的数据和命令,从NVT格式转换成远地系统所需的格式。
-
向用户返回数据
服务器把远地系统的格式转换为NVT格式
本地客户软件再从NVT格式转换到本地系统所需的格式。
五、万维网WWW
1、概述
(1)定义
简称web,是一个大规模的、联机式的信息储藏所。是分布式超媒体系统,是超文本系统的扩充。
(2)功能
万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息,提供分布式服务。
(3)要解决的四个问题
-
怎样标志分布在整个互联网上的万维网文档?URL
-
用什么协议实现万维网上的各种链接?HTTP
-
怎样使不同作者创作的不同风格的万维网文档,都能在互联网上的各种主机上显示出来,同时使用户清楚地知道在什么地方存在着链接?HTML
-
怎样使用户能够很方便地找到所需的信息?搜索引擎
2、统一资源定位符URL
(1)定义
标志万维网上的各种文档,使每一个文档在整个互联网的范围内具有唯一的标识符 URL。
(2)格式
由以冒号隔开的两大部分组成,并且在URL中的字符对大写或小写没有要求。
-
<协议>:指出使用什么协议来获取该万维网文档。现在最常用的协议就是http(超文本传送协议HTTP),其次是 ftp(文件传送协议FTP)。
-
“://”:规定的格式。
-
<主机>:指出这个万维网文档是在哪一台主机上,这里指该主机在互联网上的域名。
-
<端口>和<路径>:有时可省略。
(3)使用HTML的URL
HTTP的默认端口号是80,通常可省略。若再省略文件的<路径>项,则URL就指到互联网上的某个主页。
主页是个很重要的概念,它可以是以下几种情况之一:
-
一个WWW服务器的最高级别的页面。
-
某一个组织或部门的一个定制的页面或目录。从这样的页面可链接到互联网上的与本组织或部门有关的其他站点。
-
由某一个人自己设计的描述他本人情况的WWW页面。
3、超文本传送协议HTTP
(1)定义
-
在万维网客户程序与万维网服务器程序之间进行请求和响应的交互所使用的协议,使用TCP连接进行可靠的传送。
-
从层次的角度看,HTTP是面向事务的应用层协议,它是万维网上能够可靠地交换文件(包括文本、声音、 图像等各种多媒体文件)的重要基础。
(2)工作过程
① 每个万维网网点都有一个服务器进程不断地监听TCP的端口80,以便发现是否有浏览器 向它发出连接建立请求。
② 一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。
③ 释放TCP连接。
(3)特点
-
HTTP使用了面向连接的TCP作为运输层协议, 保证了数据的可靠传输。
-
HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务。
-
HTTP是面向事务的客户服务器协议。
-
HTTP1.0 协议是无状态的。
(4)代理服务器
① 定义
-
代理服务器是一种网络实体,又称为万维网高速缓存。
-
代理服务器把最近的一些请求和响应暂存在本地磁盘中。当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按URL的地址再次去互联网访问该资源。
-
代理服务器可在客户端或服务器端工作,也可在中间系统上工作。
② 作用
作为二传手,减小访问互联网的时延。
(5)报文结构
① 组成
-
开始行
用于区分是请求报文还是响应报文。 在请求报文中的开始行叫做请求行; 在响应报文中的开始行叫做状态行。
在开始行的三个字段之间都以空格分隔开,最后的“CR”和“LF”分别代表“回车”和“换行”。
-
首部行
用来说明浏览器、服务器或报文主体的一些信息。首部可以有好几行,但也可以不使用。
在每一个首部行中都有首部字段名和它的值,每一行在结束的地方都要有“回车”和“换行”。
整个首部行结束时,还有一空行将首部行和后面的实体主体分开。
-
实体主体
在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段。
② 分类
(i)请求报文
方法(操作) | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由URL所标志的信息 |
HEAD | 请求读取由URL所标志的信息的首部 |
POST | 给服务器添加信息(例如注释) |
PUT | 在指明的URL下存储一个文档 |
DELETE | 删除指明的URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
※ 完整HTTP请求报文示例
(ii)响应报文
状态码 | 含义 | 举例 |
---|---|---|
1xx | 通知信息 | 请求收到了或正在进行处理 |
2xx | 成功 | 接受或知道了 |
3xx | 重定向 | 要完成请求还必须采取进一步的行动 |
4xx | 客户的差错 | 请求中有错误的语法或不能完成 |
5xx | 服务器的差错 | 服务器失效无法完成请求 |
※ 若请求的网页从http:www.ee.xyz.edu/index.html转移到了一个新的地址,则响应报文的状态行和一个首部行的形式如下:
4、万维网的文档
(1)超文本标记语言HTML
-
超文本标记语言HTML中的Markup的意思就是“设置标记“
-
HTML定义了许多用于排版的命令(即标签)
-
HTML把各种标签嵌入到万维网的页面中。这样就构成了所谓的HTML文档。HTML文档是一种可以用任何文本编辑器创建的ASCII码文件。
-
仅当HTML文档是以.html或.htm为后缀时,浏览器才对此文档的各种标签进行解释
-
如HTML文档改换以.txt为其后缀,则HTML解释程序就不对标签进行解释,而浏览器只能看见原来的文本文件
-
当浏览器从服务器读取HTML文档后,就按照HTML文档中的各种标签,根据浏览器所使用的显示器尺寸和分辨率大小,重新进行排版并恢复出所读取的页面
(2)分类
-
静态万维网文档
-
动态万维网文档
-
活动万维网文档
5、搜索引擎
(1)定义
在万维网中用来进行搜索的工具。
(2)分类
-
全文检索搜索
-
分类目录搜索
六、电子邮件E-mail
1、定义
电子邮件/电子信箱(e-mail)是互联网上使用最多的和最受用户欢迎的一种应用。电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱(mail box)中,收件人可在自己方便时上网到自己使用的邮件服务器进行读取。
2、收发电子邮件的步骤
-
发件人调用PC中的用户代理撰写和编辑要发送的邮件。
-
发件人的用户代理把邮件用SMTP协议发给发送方邮件服务器。
-
SMTP服务器把邮件临时存放在邮件缓存队列中,等待发送。
-
发送方邮件服务器的SMTP客户与接收方邮件服务器的SMTP服务器建立TCP连接,然后就把邮件缓存队列中的邮件依次发送出去。
-
运行在接收方邮件服务器中的SMTP服务器进程收到邮件后,把邮件放入收件人的用户邮箱中,等待收件人进行读取。
-
收件人在打算收信时,就运行PC机中的用户代理,使用POP3(或IMAP)协议读取发送给自己的邮件。
※ POP3服务器和POP3客户之间的通信是由POP3客户发起的。
3、用户代理
(1)定义
-
用户代理UA(User Agent)/电子邮件客户端软件:用户与电子邮件系统的接口,在大多数情况下它就是运行在用户电脑中的一个程序。
-
用户代理向用户提供一个很友好的接口(目前主要是窗口界面)来发送和接收邮件。
(2)功能
撰写、显示、处理和通信。
4、邮件服务器
(1)功能
发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。
(2)工作方式
邮件服务器按照C/S方式工作。邮件服务器需要使用发送和读取两个不同的协议。
5、简单邮件传送协议SMTP
(1)定义
-
SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。
-
由于SMTP使用客户服务器方式,因此负责发送邮件的SMTP进程就是 SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。
-
服务器端熟知端口号25。
-
SMTP只能传送可打印的7位ASCII码邮件
(2)过程
-
连接建立:连接是在发送主机的SMTP客户和接收主机的SMTP服务器之间建立的,不使用中间的邮件服务器。
-
邮件传送。
-
连接释放:邮件发送完毕后,SMTP应释放TCP连接。
6、邮件读取协议POP3和IMAP
-
POP3
邮局协议POP是一个非常简单、但功能有限的邮件读取协议,现在使用的是它的第三个版本POP3。服务器端熟知端口号110。
POP使用C/S的工作方式。在接收邮件的用户PC机中必须运行POP客户程序,而在用户所连接的ISP的邮件服务器中则运行POP服务器程序。
-
IMAP
目前较新版本为IMAP4。服务器端熟知端口号143。
IMAP允许用户可以在不同的地方使用不同的计算机随时上网阅读和处理自己的邮件。
IMAP允许收件人只读取邮件中的某一个部分。
IMAP的缺点是如果用户没有将邮件复制到自己的PC上,则邮件一直是存放在IMAP服务器上,因此用户需要经常与IMAP服务器建立连接。
7、通用互联网邮件扩充MIME
(1)定义
-
互联网邮件扩充MIME(Multipurpose Internet Mail Extensions)在其邮件首部中说明了邮件的数据类型(如文本、声音、图像、视像等)。
-
在MIME邮件中可同时传送多种类型的数据。这在多媒体通信的环境下是非常有用的。
(2)组成
-
5个新的邮件首部字段,它们可包含在[RFC822]首部中。这些字段提供了有关邮件主体的信息。
-
定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行了标准化。
-
定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
(3)与SMTP的联系
七、动态主机配置协议DHCP
1、定义
动态主机配置协议DHCP提供了即插即用连网的机制,允许一台计算机加入新的网络和获取IP地址而不用手工参与。
2、流程
① DHCP服务器被动打开UDP端口67,等待客户端发来的报文。
② DHCP客户从UDP端口68发送DHCP发现报文。
③ 凡收到 DHCP 发现报文的 DHCP 服务器都发出 DHCP 提供报文,因此DHCP客户可能收到多个 DHCP 提供报文。
④ DHCP客户从几个DHCP服务器中选择其中的一个,并向所选择的DHCP服务器发送DHCP请求报文。
⑤ 被选择的DHCP服务器发送确认报文DHCPACK。
-
从这时起,DHCP客户就可以使用这个IP地址了。这种状态叫作已绑定状态,因为在DHCP客户端的IP地址和MAC地址已经完成绑定,并且可以开始使用得到的临时IP地址了。
-
DHCP客户现在要根据服务器提供的租用期T设置两个计时器T1和T2,它们的超时时间分别是0.5T和0.875T,当超时时间到了就要请求更新租用期。
⑥ 租用期过了一半(T1时间到),DHCP客户发送请求报文DHCPREQUEST要求更新租用期。
⑦ DHCP服务器若同意,则发回确认报文DHCPACK.DHCP客户得到了新的租用期,重新设置计时器。
⑧ DHCP服务器若不同意,则发回否认报文DHCPNACK。
-
这时DHCP客户必须立即停止使用原来的IP地址,而必须重新申请IP地址(回到②)。
-
若DHCP服务器不响应⑥的请求报文DHCPREQUEST,则在租用期过了87.5%时(T2时间到),DHCP客户必须重新发送请求报文DHCPREQUEST(重复⑥),然后又继续后面的步骤。
⑨ DHCP客户可以随时提前终止服务器所提供的租用期,这时只需向DHCP服务器发送释放报文DHCPRELEASE即可。
八、简单网络协议管理SNMP
1、定义
网络管理包括对硬件、软件和人力的使用、综合与协调,以便对网络资源进行监视、测试、 配置、分析、评价和控制,这样就能以合理的价格满足网络的一些需求,如实时运行性能, 服务质量等。网络管理常简称为网管。
2、网络管理
-
管理者/管理器
管理站(硬件)也常称为网络运行中心NOC,是网络管理系统的核心。
管理程序(软件)在运行时就成为管理进程。
-
网络管理员指的是人。
大型网络往往实行多级管理,因而有多个管理者,而一个管理者一般只管理本地网络的设备。
-
被管设备/网络元素/网元
网络的每一个被管设备中可能有多个被管对象
在被管设备中也会有一些不能被管的对象。
代理
- 在每一个被管设备中都要运行一个程序以便和管理站中的管理程序进行通信。这些运行着的程序叫做网络管理代理程序,或简称为代理。
- 代理程序在管理程序的命令和控制下在被管设备上采取本地的行动。
-
网络管理协议,简称为网管协议。
是管理程序和代理程序之间进行通信的规则,网络管理员利用网管协议通过管理站对网络中的被管设备进行管理。
3、工作方式
SNMP中的管理程序和代理程序按客户服务器方式工作。管理程序运行SNMP客户程序,而代理程序运行SNMP服务器程序。
4、组成
-
SNMP(定义管理站和代理之间所交换的分组格式,负责读取和改变所交换的分组中包含的各代理中的对象(变量)名及其状态(值))
-
管理信息结构SMI
-
管理信息库MIB
5、管理信息结构SMI(功能)
-
定义命名被管对象的规则
-
定义被管对象数据类型(包括范围和长度)的通用规则
-
定义在网络上传送的管理数据编码的规则,确保网络管理数据的语法和语义的无二义性。
6、管理信息库MIB(功能)
-
包含被管对象必须维持的可供管理程序读写的若干控制和状态信息。
-
在被管理的实体中创建了命名对象,并规定了其类型。
-
管理程序使用MIB中这些信息的值对网络进行管理(如读取或重新设置这些值)。
7、功能
-
“读”操作,用Get报文来检测各被管对象的状况
-
“写”操作,用Set报文来改变各被管对象的状况
8、报文格式
-
请求标识符:由管理进程设置的4字节整数值。代理进程在发送响应报文时也要返回此请求标识符。由于管理进程可同时向许多代理发出请求读取变量值的报文,因此设置了请求标识符可使管理进程能够识别返回的响应是对应于哪一个请求报文。
-
差错状态:在请求报文中,这个字段是零。当代理进程响应时,就填入0~18中的一个数字。
-
差错索引:在请求报文中,这个字段是零。当代理进程响应时,若出现差错,代理进程就设置一个整数,指明有差错的变量在变量列表中的偏移。
-
变量绑定:指明一个或多个变量的名和对应的值。在请求报文中,变量的值应忽略(类型是NULL)。
九、网络编程
1、系统调用
(1)定义
大多数操作系统使用系统调用的机制在应用程序和操作系统之间传递控制权。对程序员来说,每一个系统调用和一般程序设计中的函数调用非常相似,只是系统调用是将控制权传递给了操作系统。
(2)机制
-
当某个应用进程启动系统调用时,控制权就从应用进程传递给了系统调用接口。
-
此接口再把控制权传递给计算机的操作系统。操作系统把这个调用转给某个内部过程,并执行所请求的操作。
-
内部过程一旦执行完毕,控制权就又通过系统调用接口返回给应用进程。
2、套接字
应用进程与运输层协议的接口。
-
当应用进程需要使用网络进行通信时就发出系统调用请求操作系统为其创建“套接字”,以便把网络通信所需要的系统资源分配给该应用进程
-
操作系统为这些资源的总和用一个叫做套接字描述符的号码来表示,并把此号码返回给应用进程。应用进程所进行的网络操作都必须使用这个号码。
-
通信完毕后,应用进程通过一个关闭套接字的系统调用通知操作系统回收与该“号码”相关的所有资源。
3、常用系统调用
(1)连接建立阶段
-
服务器端
创建套接字,此时它的端口号和IP地址都是空的。
调用bind(绑定):把本地地址绑定到套接字:把熟知端口号和本地IP地址填写到已创建的套接字中。
调用listen(收听):把套接字设置为被动方式,以便随时接受客户的服务请求。
- UDP 服务器由于只提供无连接服务,不使用listen系统调用。
调用accept(接受):把远地客户进程发来的连接请求提取出来。
- 系统调用 accept 的一个变量就是要指明从哪一个套接字发起的连接。
-
客户端
调用socket创建了套接字。
客户端调用bind
- 调用:进程使用指定的端口号
- 不调用:由操作系统内核自动分配一个动态端口号(通信结束后由系统收回)
客户进程调用connect,以便和远地服务器建立连接(这就是主动打开,相当于客户发出的连接请求)
- 在connect系统调用中,客户必须指明远地端点(即远地服务器的IP地址和端口号)
(2)传送阶段
-
客户和服务器都在TCP连接上使用send系统调用传送数据。
客户使用send发送请求
服务器使用send发送回答
-
服务器使用recv接收客户用send调用发送的请求。
-
客户在发完请求后用recv接收回答。
(3)连接释放阶段
一旦客户或服务器结束使用套接字,就调用close释放连接和撤销套接字。
4、应用编程接口API
(1)定义
是应用进程的控制权和操作系统的控制权进行转换的一个接口。
(2)功能
API从程序设计的角度定义了许多标准的系统调用函数,应用进程只要使用标准的系统调用函数就可得到操作系统的服务。
(3)分类
-
Berkeley UNIX操作系统定义了一种API,称为套接字接口
-
微软公司在其操作系统中采用了套接字接口API,形成了一个稍有不同的API,称为Windows Socket
-
AT&T为其UNIX系统V定义了一种API,简写为TLl。
十、对等连接P2P
1、定义
所有的音频/视频文件都是在普通的互联网用户之间传输,相当于有很多分散在各地的媒体服务器向其他用户提供所要下载的音频/视频文件。
2、优点
-
P2P方式的最突出特性之一就是它的可扩展性。因为系统每增加一个对等方,不仅增加的是服务的请求者,同时也增加了服务的提供者,系统性能不会因规模的增大而降低。
-
当对等方的数量很大时,采用P2P方式下载大文件,要比传统的C/S方式快得多。
-
P2P文件分发方式解决了集中式媒体服务器可能出现的瓶颈问题。
-
P2P方式具有成本上的优势,因为它通常不需要庞大的服务器设施和服务器带宽。