1 概述
1.1 网络的网络
计算机网络(网络)的组成:由若干结点和连接这些结点的链路组成。结点可以是计算机、集线器、交换机、路由器等
三大网络中发展最快并起到核心作用的:计算机网络
计算机网络向用户提供的功能:连通和共享
互连网(网络的网络):网络之间通过路由器连接,构成更大的网络
主机(host):与网络相连的计算机
1.2 互联网的组成
从其工作方式上,分成两大部分:
(1) 边缘部分:由互联网上的主机组成,是用户直接使用的部分,来进行通信和资源共享
(2) 核心部分:由大量网络和连接这些网络的路由器组成,是为边缘部分提供服务的,提供连通性和交换
1.2.1 边缘部分
端系统:主机
计算机之间的通信:主机A上的进程与主机B上的进程进行通信
端系统间通信方式:客户-服务器方式(C/S)和对等方式(P2P)
1.2.2 核心部分
路由器的重要性:路由器是一种专用计算机,是实现分组交换的关键部件,其任务是转发收到的分组,这是网络核心部分最重要的功能
交换:按照某种方式动态分配传输线路的资源
(1) 电路交换
工作方式:在两用户端间建立一条专用的物理通路,保证了双方通信所需的通信资源,而这些资源在双方通信时也不会被其他用户占用
特点:整个报文的比特流连续的从源点直达终点,好像在管道中传送
三个步骤:建立连接->数据通信->释放连接
重要特点:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源
(2) 报文交换
特点:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发给下一个结点
(3) 分组交换
现有的公用数据网大都采用:分组交换
工作方式:采用存储转发技术,把一个报文划分为几个分组后进行传送
特点:单个分组传送到相邻结点,存储下来后查找转发表,转发给下一个结点
优点:高效、灵活、迅速、可靠
1.3 计算机网络的类别
按照网络的作用范围分类: 广域网(WAN)、城域网(MAN)、局域网(LAN)、 个人区域网(PAN)
按照网络的使用者分类:公用网、专用网、接入网
1.4 计算机网络的性能指标(考点)
1.4.1 速率
定义:数据的传送速率 ,常指额定速率或标称速率,并不是实际的速率
单位:bit/s(比特每秒)
1.4.2 时延
定义:数据从网络的一段传送到另一端所需的时间,又称延迟或迟延
组成:发送时延、传播时延、处理时延、排队时延
总时延=发送时延+传播时延+处理时延+排队时延
- 发送时延(传输时延)
定义:发送数据时,数据帧从节点进入到传输媒体所需要的时间
发生位置:在机器内部的发送器中(即网络适配器中),与信道长度无关 - 传播时延
定义:是电磁波在信道中传播一定距离所需要的时间
发生位置:在机器外部的传输信道媒体上,与信号的发送速率无关,只与信号传送的距离有关 - 处理时延:主机或路由器收到分组后处理分组所用的时间
- 排队时延:分组经过路由器时,在路由器中经历输入和输出的排队等待时间
- 时延带宽积:传播时延×带宽
- 往返时间RTT:双向交互一次所需的时间
- 利用率:信道或网络利用率过高会产生非常大的时延
错误:在高速链路(高带宽链路)上,比特会传送的更快
分析:对于高速网络链路,提高的仅仅是数据的发送速率,而不是比特在链路上的传播速率
1.5 计算机网络的体系结构
OSI/RM:开放系统互连参考模型
PDU:协议数据单元
1.5.1 协议与划分层次
网络协议(协议):为进行网络中的数据交换而建立的规则、标准或约定
计算机网络体系结构:计算机网络各层及其协议的集合
计算机网络体系结构:计算机网络及其部件所应该完成功能的精确定义
体系结构是抽象的,实现是具体的,是运行在计算机软件和硬件之上的
网络协议的三要素:
- 语法:数据与控制信息的结构或格式
- 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
- 同步:事件实现顺序的详细说明
1.6 各协议的体系结构
1.6.1 各层功能概述
- 应用层:
直接为用户的应用进程提供服务;常见协议有DNS、HTTP、SMTP等;应用层交互的数据单元为报文 - 运输层:
负责两个主机中进程之间的通信提供数据传输服务;主要协议有TCP(传输控制协议)、UDP(用户数据报协议) - 网络层:
负责为分组交换网上不同主机提供通信服务;主要协议有IP协议、多种路由选择协议 - 数据链路层
负责两主机间链路上的传输 - 物理层
传送比特流,数据单元为比特
1.6.2 主机H1向H2发送数据
1.7 TCP/IP体系结构
课后习题
1-03:试从多个方面比较电路交换、报文交换和分组交换的主要优缺点
(1)电路交换:端对端通信质量因约定了通信资源获得可靠保障,对连续传送大量数据效率高。
(2)报文交换:无须预约传输带宽,动态逐段利用传输带宽对突发式数据通信效率高,通信迅速
(3)分组交换:具有报文交换之高效、迅速的要点,且各分组小,路由灵活,网络生存性能好。
1-10 试在下列条件下比较电路交换和分组交换。要传送的报文共 x(bit)。从源点到终点共经过 k 段链
路,每段链路的传播时延为 d(s),数据率为 b(b/s)。在电路交换时电路的建立时间为 s(s)。在分组
交换时分组长度为 p(bit),且各结点的排队等待时间可忽略不计。问在怎样的条件下,分组交换的时
延比电路交换的要小?(提示:画一下草图观察 k 段链路共有几个结点。)
答:线路交换时延:kd+x/b+s, 分组交换时延:kd+(x/p)(p/b)+ (k-1)(p/b),其中(k-1)(p/b)表示 K
段传输中,有(k-1)次的储存转发延迟,当 s>(k-1)(p/b)时,电路交换的时延比分组交换的时延大,当 x>>p,相反。
1-19 长度为 100 字节的应用层数据交给运输层传送,需加上20 字节的TCP 首部。再交给网络层传送,需加上20 字节的IP 首部。最后交给数据链路层的以太网传送,加上首部和尾部共18 字节。试求数据的传输效率。数据的传输效率是指发送的应用层数据除以所发送的总数据(即应用数据加上各种首部和尾部的额外开销)。若应用层数据长度为1000 字节,数据的传输效率是多少?
数据长度为100 B C B 表示字节)时,以太网的帧长: 100 B+ 20 B+20 B +18 B= 158 B 数据传输效率=
100 B / (158 B) = 63.29%≈63.3% 数据长度为1000 B 时,以太网的帧长: 1000 B+ 20 B + 20
B + 18 B= 1058 B 传输效率= 1000 B / (1058 B) = 94.52% ≈ 94.5% 。传输效率明显提高了。
1-20 网络体系结构为什么要采用分层次的结构?试举出一些与分层体系结构的思想相似的日常生活的例子。
网络体系结构采用分层次的结构,是因为“分层”可以把庞大而复杂的问题转化为若干较小的局部问题,而这些较小的局部问题比较易千研究和处理。举例如快递的运输过程。
1-21 协议与服务有何区别?有何关系?
为进行网络中的数据交换而建立的规则、标准或约定称为网络协议,或者简称为协议。网络协议是计算机网络中不可或缺的部分。
协议是控制两个对等实体(或多个实体)进行通信的规则的集合。协议的语法方面的规则定义了所交换的信息的格式,而协议的语义方面的规则定义了发送者或接收者所要完成的操作。
在协议的控制下,两个对等实体间的通信使得本层能够向上一层提供服务。要实现本层协议,还需要使用下面一层所提供的服务。
协议和服务在概念上是很不一样的。
首先,协议的实现保证了能够向上一层提供服务。使用本层服务的实体只能看见服务而无法看见下面的协议。下面的协议对上面的实体是透明的。
其次,协议是“水平的",即协议是控制对等实体之间通信的规则。但服务是"垂直的",
即服务是由下层向上层通过层间接口提供的。另外,并非在一个层内完成
1-22 网络协议的三个要素是什么?各有什么含义?
网络协议主要由以下三个要素组成:
(1)语法,即数据与控制信息的结构或格式。
(2)语义,即需要发出何种控制信息、完成何种动作以及做出何种响应。
(3) 同步,即事件实现顺序的详细说明。
1-24 论述具有五层协议的网络体系结构的要点,包括各层的主要功能。
答:综合 OSI 和 TCP/IP 的优点,采用一种原理体系结构。各层的主要功能:物理层 物理层的任务就是
透明地传送比特流。(注意:传递信息的物理媒体,如双绞线、同轴电缆、光缆等,是在物理层的下面, 当做第 0 层。)
物理层还要确定连接电缆插头的定义及连接法。数据链路层 数据链路层的任务是在两个
相邻结点间的线路上无差错地传送以帧(frame)为单位的数据。每一帧包括数据和必要的控制信息。网 络层 网络层的任务就是要选择合适的路由,使
发送站的运输层所传下来的分组能够 正确无误地按照地址找到目的站,并交付给目的站的运输层。运输层 运输层的任务是向上一层的进行通
信的两个进程之间提供一个可靠的端到端服务,使它们看不见运输层以下的数据通信的细节。应用层 应 用层直接为用户的应用进程提供服务。
2 物理层
2.1 物理层的基本概念
物理层的功能:怎样在连接各种计算机的传输媒体上传输数据比特流,以屏蔽不同传输媒体和通信手段的差异
物理层:不是指具体的传输媒体,能规定与传输媒体有关的各种特性
2.2 数据通信的基础知识
2.2.1 数据通信系统的模型
常用术语:
- 消息:通信的目的是传送消息,如语音、文字、图像、视频等
- 数据:是运送消息的实体
- 信号:数据的电气或电磁表现
- 模拟信号(连续信号):代表消息的参数取值是连续的
- 数字信号(离散信号):代表消息的参数的取值是离散的
- 码元:代表不同离散数值的基本波形
2.2.2 有关信道的基本概念
信道:表示向某一个方向传送信息的媒体
信息交互的方式:
-
单向通信(单工通信):只能有一个方向的通信而没有反方向的交互;只需要一条信道
-
双向交替通信(半双工通信):通信的双方都可以发送信息,但不能双方同时发送,而是一方发送另一方接收,一段时间后可以反过来;两条信道
-
双向同时通信(全双工通信):通信双方可以同时发送和接收信息;两条信道;传输效率最高
基带信号:来自信源的信号;如计算机输出的代表文字或图像的数据信号都是基带信号
调制分类:基带调制(编码)、带通调制
2.3 信道的极限容量
限制码元在信道上传输速率的因素:
- 信道能够通过的频率范围:
(1)码间串扰:信号中高频分类受到衰减,在接收端收到的波形前沿和后沿不那么陡峭,每个码元所占时间界限不明确,失去了码元间的清晰界限的现象
(2)奈氏准则:在任何信道,码元传输的速率是有上限的(B = 2W),其中W是频带宽度,超过上限就会出现严重的码间串扰,使接收端对码元无法识别 - 信噪比
(1)定义:信号的平均功率和噪声的平均功率之比,记作S/N,单位为分贝(dB)
(2)香农公式:信道的极限信息传输速率C
香农公式,表明信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高
香农公式,表明信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高 - 数据传输速率
2.4 物理层下面的传输媒体
- 传输媒体:是数据传输系统中在发送器和接收器之间的物理通路
- 传输媒体的分类:
(1)引导型:电磁波被引导沿着固体媒体传播
(2)双绞线:最常用的传输媒体,一对线绕在一起是为了抗干扰
(3)同轴电缆
(4)光纤:传输的方式是不断的全反射,从而实现光波在玻璃间的传播,分为多模光纤和单模光纤(贵)
(5)非引导型:电磁波无线传播
2.5 信道复用技术
2.5.1 频分复用、时分复用和统计时分复用
复用:允许用户使用一个共享的信道进行通信,提高利用率
- 频分复用:
特点:所有用户在同样的时间谵语不同的宽带资源(这里的是带宽是频带宽度) - 时分复用:
原理:将时间划分为一段段等长的时分复用帧(TDM帧),每个时分复用的用户在每一个TDM帧中占用固定序号的时隙
特点:所有用户在不同的时间占用同样的频带宽度
由于计算机数据的突发性质, 可能会造成线路资源的浪费 - 统计时分复用
- 波分复用
- 码分复用(码分多址CDMA)
(1) 原理:各个用户使用经过特殊挑选的不同码型,因此彼此不会互相干扰
(2) 码片:每一个比特时间划分为m个短的间隔,称为码片
(3) 工作方式:
每个站被指派一个唯一的mbit码片
若发送比特1,则发送自己的m bit码片,发送比特0,则发送该码片序列的二进制反码
例如,S站的8 bit码片序列是00011011
1.发送比特1时,就发送序列00011011 ,
2.发送比特0时,就发送序列11100100。
(4) 码片实现扩频:由于一个比特可转换成m个比特的码片,因此实际发送数据率提高了m倍
(5) CDMA的重要特点:每个站的码片必须各不相同,并相互正交
(6) 码片正交关系:不同码片正交,就是向量S和T的规格化内积为0,(规格化内积即对应为相乘)
(7) 正交关系的重要特征:任何码片与自己的规格化内积为1,与自己反码的规格化内积为-1
2.6 宽带接入技术
- 用户要连接互联网,必须线连接到某个ISP
- ADSL技术:非对称数字用户线,将0-4k的低端频谱留给电话使用,把原来没有利用的高端频谱个用户上网使用
- FTTx技术:是一种实现宽带居民接入网的方案,多种宽带光纤接入
课后习题
2-01 物理层要解决哪些问题?物理层的主要特点是什么?
答:物理层要解决的主要问题:
1)物理层要尽可能地屏蔽掉物理设备和传输媒体,通信手段的不同,使数据链路层感觉不到这些差异,只考虑完成本层的协议和服务。
2)给其服务用户(数据链路层)在一条物理的传输媒体上传送和接收比特流(一般为串行按顺序传输的比特流)的能力,为此,物理层应该解决物理连接的建立、维持和释放问题。
3)在两个相邻系统之间唯一地标识数据电路
物理层的主要特点:
1)由于在 OSI之前,许多物理规程或协议已经制定出来了,而且在数据通信领域中,这些物理规程已被许多商品化的设备所采用,加之,物理层协议涉及的范围广泛,所以至今没有按 OSI的抽象模型制定一套新的物理层协议,而是沿用已存在的物理规程,将物理层确定为描述与传输媒体 接口的机械,电气,功能和规程特性。
2)由于物理连接的方式很多,传输媒体的种类也很多,因此,具 体的物理协议相当复杂。
2-06 数据在信道重的传输速率受哪些因素的限制?信噪比能否任意提高?香农公式在数据通信中的意义
是什么?“比特/每秒”和“码元/每秒”有何区别?
答:码元传输速率受奈氏准则的限制,信息传输速率受香农公式的限制 香农公式在数据通信中 的意义是:只要信息传输速率低于信道的极限传信率,就可实现无差传输。比特/s 是信息传输速率的单位 码元传输速率也称为调制速率、波形速率或符号速率。一个码元不一定对应于一个比特。
2-07 假定某信道受奈氏准则限制的最高码元速率为 20000 码元/秒。如果采用振幅调制,把码元的振幅划
分为 16 个不同等级来传送,那么可以获得多高的数据率(b/s)?
如果我们用二进制数字来表示这16 个不同等级的振幅,那么需要使用4 个二进制数字。即0000, 0001, 0010, 0011 , 0100, 0101, 0110, Olli, 1000, 1001, 1010, 1011 , 1100, 1101,1110, 1111 。可见现在用一个码元就可以表示4 个比特。
因此码元速率为20000 码元/秒时,我们得到的数据率就是4 倍的码元速率,即80000bit/s 。
2-08 假定要用 3KHz 带宽的电话信道传送 64kb/s 的数据(无差错传输),试问这个信道应具有多高的信
噪比(分别用比值和分贝来表示?这个结果说明什么问题?)
2-09 用香农公式计算一下,假定信道带宽为为 3100Hz,最大信道传输速率为 35Kb/s,那么若想使最大
信道传输速率增加60%,问信噪比S/N应增大到多少倍?如果在刚才计算出的基础上将信噪比S/N应
增大到多少倍?如果在刚才计算出的基础上将信噪比S/N再增大到十倍,问最大信息速率能否再增加2
0%?
2-16:例如,共有四个站进行码分多址通信,四个站的码片序列分别为:
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)
现收到这样的码片:(-1+1-3+1-1-3+1+1),问哪些站发送了数据,发送的是0还是1?
解:
A站的内积:(-1-1-1+1+1-1+1+1)*(-1+1-3+1-1-3+1+1)/8=(+1-1+3+1-1+3+1+1)/8=1
B站的内积:(-1-1+1-1+1+1+1-1)*(-1+1-3+1-1-3+1+1)/8=(+1-1-3-1-1-3+1-1)/8=-1
C站的内积:(-1+1-1+1+1+1-1-1)*(-1+1-3+1-1-3+1+1)/8=(+1+1+3+1-1-3-1-1)/8=0
D站的内积:(-1+1-1-1-1-1+1-1)*(-1+1-3+1-1-3+1+1)/8=(+1+1+3-1+1+3+1-1)/8=1
所以A、D站发送了1,B站发送了0,C站没有发送
3 数据链路层
网络中的主机和路由器都必须实现网络链路层
数据链路层的作用:加强物理层传输原始比特流的能力,将物理层的可能出错的物理连接改造为逻辑上无差错的数据链路
数据链路层使用的信道:
-
点对点信道:使用一对一的点对点通信方式
-
广播信道:使用一对多的广播通信方式,过程比较复杂,需要专用的协议来协调
3.1 使用点对点信道的数据链路层
3.1.1 数据链路和帧
- 链路(物理链路):从一个结点到相邻结点一段物理线路,中间没有任何其他的交换节点
- 链路是一条路径的一个组成部分
- 网络适配器:既有软件也有硬件,实现了通信协议包括数据链路层和物理层
3.1.2 三个基本问题
- 封装成帧
在一段数据前后分别添加首部和尾部,确定帧的界限,便封装成了一个帧 - 透明传输
解决方法:字节填充,在控制和特殊字符前插入一个转义字符"ESC",而真正的首部和尾部前不加 - 差错检测
误码率:在一段时间,,传输错误的比特占所有传输比特的比率,与信噪比有关
循环冗余校检
3.1.2.1 封装成帧
- 定义:封装成帧(framing)就是在一段数据的前后分别添加 首部和尾部,然后就构成了一个帧。其中首部和尾部的一个重要作用就是进行 帧定界
- 帧开始符为SOH,帧结束符为EOT
3.1.2.2 透明传输
- 解决方法:字节填充、字符填充
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个 转义字符“ESC”(首尾不加)
3.1.2.3 差错检验
-
定义
-
在传输过程中可能会产生比特差错: 1可能会变成0,而0也可能变成1
-
误码率BER (Bit Error Rate):在一段时间内,传输错误的比特占所传输比特总数的比率
-
误码率与信噪比有很大的关系
-
在数据链路层传送的帧中,广泛使用了 循环冗余检验CRC的检错技术
-
循环冗余检验CRC技术
-
原理:在发送端,先把数据划分为组,假定每组k个比特,若传输一组数据M=101001(k=6),在M后添加供差错检测用的n位冗余码后一起发送,共发送(k+n)位,接收方用收到的数据除P,若余数为0则表示没有差错
-
冗余码计算方法:在M后面添加n个0,得到(k+n)位的数除以选定好的除数p,得出商Q,余数R,将余数R作为冗余码,添加到M后
例:k=6,M=101001,设n=3,除数P=1101,被除数是101001000,计算后得到商Q=110100,余数R=001,把余数R作为荣誉吗天剑到M后面发送出去,发送的数据即:101001000+001=101001001
-
帧校验序列(FCS):为差错检验而添加的冗余码;就是计算后得到的余数R
(1) 若得出的余数R= 0,则判定这个帧没有差错,就接受
(2) 若余数R≠0,则判定这个帧有差错,就丢弃 -
生成多项式:一种方便的表示循环冗余校验过程的方法
例:P=1101 -> P(X) = X³+X²+1(最高位对应X³,最低位对应Xº) -
传输差错的分类:
(1) 比特差错:1变0,0变1
(2) 帧丢失:丢失某个帧
(3) 帧重复:某个帧收到多次
(4) 帧失序:后发送的帧反而先到达接收端 -
CRC的局限性:只能实现无比特差错,不能实现无传输差错,只能判断收到的数据是否正确,其余均无法判断,并不是可靠传输
3.2 点对点协议PPP
对于点对点的链路,目前使用最广泛的是PPP协议
3.2.1 PPP协议的特点
- PPP协议应满足的需求:
(1)简单
(2)封装成帧
(3)透明性
(4)多种网络层协议
(5)多种类型链路
(6)差错检验
(7)检测连接状态
(8)最大传送单元
(9)网络层地址协商
(10)数据压缩协商 - PPP协议的组成:
(1) 将IP数据报封装到串行链路的方法;PPP支持异步链路,也支持面向比特的同步链路;IP数据报在PPP帧中数据部分,收到MTU限制
(2) 链路控制协议LCP
(3) 网络控制协议NCP
3.2.2 PPP协议的帧格式
首部和尾部分别为4个字段和2个字段
标志字段F:规定为0x7E,表示一个帧的开始或结束,就是帧的定界符
地址字段A:规定为0xFF
控制字段C:规定为0x03
-
透明传输问题:当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一言的比特组合不出现在信息字段中
-
异步传输—字符填充
当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充
-
同步传输—零比特填充
(1) 在发送端,只要发现有5个连续1,则立即填入一个0
(2) 接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除
(3) 因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1
3.2.3 PPP协议的工作状态
3.3 使用广播信道的数据链路层
3.3.1 局域网的数据链路层
- 局域网的主要优点
(1) 具有光播功能
(2) 便于系统的扩展和逐渐的演变
(3) 提高系统的可靠性 - 共享的广播信道
使用一对多的广播通信方式 - 媒体共享技术
动态媒体接入控制(多点接入):随机接入、受控接入 - 以太网的两个标准:
(1) DIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约
(2) IEEE 802.3 是第一个IEEE以太网标准
(3) “以太网”应当是符合 DIX Ethernet标准的局域网 - 数据链路层的两个子层
IEEE 802将局域网的数据链路层拆成两个子层:逻辑电路控制LLC子层、媒体接入控制MAC子层
3.3.2 适配器的作用
- 定义:网络接口板又称为 通信适配器或网络接口卡,简称“网卡”
适配器功能:
- 进行串行/并行转换
- 对数据进行缓存
- 在计算机的操作系统安装设备驱动程序
- 实现以太网协议(数据链路层)
CSMA/CD协议:
- 原理:为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中,一致时才能能接受数据帧
- CSMA/CD含义:载波监听多点接入 / 碰撞检测(边监听边检测)
- CSMA/CD工作流程
以太网采取的两种重要措施:
- 采用较为灵活的无连接的工作方式
- 以太网发送的数据都使用曼彻斯特编码
缺点:所占的频带宽度比原始的基带信号增加了一倍
碰撞检测,是因为信号传播时延对载波监听产生了影响
-
最先发送数据帧的站,在发送数据帧后至多2τ(2倍的端到端往返时延),就可以知道发送数据帧是否遭受了碰撞
-
以太网的端到端的往返时延2τ称为争用期或碰撞窗口
-
经过争用期还没有检测碰撞,才能肯定这次发送不会发生碰撞
二进制指数类型退避算法:
- 第1次冲突重传时:k=1,r为{0,1}集合中的任何一个数
第2次冲突重传时:k=2,r为{0,1,2,3}集合中的任何一个数
第3次冲突重传时:k=3,r为{0,1,2,3,4,5,6,7}集合中的任何一个数 - 发生碰撞的站在停止发送数据后,要推迟一个随机时间才能在发送数据
10Mbit/s 以太网争用期的长度
- 10Mbit/s 以太网取51.2μs 为争用期的长度
- 对于10 Mbit/s以太网,在争用期内可发送512bit,即10Mbit/s 64字节(最短有效帧长)
- 这意味着:以太网在发送数据时,若前64字节没有发生冲突,则后续的数据就不会发生冲突·
CSMA/CD协议的重要特性
- 使用CSMA/CD协议的以太网不能进行全双工通信而只能双向交替通信(半双工通信)。
- 每个站在发送数据之后的一小段时间内,存在着遭遇碰撞的可能性
- 这种发送的不确定性使整个以太网的平均通信量远小于以太网的最高数据率
CSMA/CD协议的要点
- 如图所示
3.3.3 使用集线器的星星拓扑
-
星形以太网 10BASE-T
(1) 适应无屏蔽的双绞线,采用星形拓扑
(2) 每个站需要两对双绞线,分别用于发送和接收
(3) 集线器使用了大规模集成电路芯片,因此集线器的可靠性提高
(4) 10BASE-T的通信距离稍短,每个站到集线器的距离不超过100m -
集线器的一些特点
(1) 使用集线器的以太网在逻辑上仍然是一个总线网,各工作站使用的还是CSMA/CD协议,并共享逻辑上的总线
(2) 集线器工作在物理层
(3) 集线器采用了专门的芯片,进行自适应串音回波抵消,减少了近端串音。
3.3.4 以太网的信道利用率
原理:多个站在以太网上同时工作就可能会发生碰撞,当发生碰撞时,信道资源实际上是被浪费了,因此以太网总的信道利用率并不能达到100%
- 假设τ是以太网单程端到端传播时延,则争用期长度为 2τ ,即端到端传播时延的两倍。检测到碰撞后不发送干扰信号。
- 设帧长为L (bit),数据发送速率为C (bit/s),则帧的发送时间为T。= L/C (s)
- 以太网信道被占用的情况
(1) 成功发送一个帧需要占用信道的时间是T。+ τ
(2) 帧的发送时间要多一个单程端到端的时延τ,当一个站发送完最后一个比特时,这个比特还在信道上传播
- 参数a与利用率
要提高以太网的信道利用率,就必须减少τ与T。之比
- 对以太网参数a的要求
为提高利用率,以太网的参数a的值应当尽可能小些
- 信道利用率的最大值
3.3.5 以太网的MAC子层
3.3.5.1 MAC层的硬件地址
- 局域网中,硬件地址又称为物理地址,或MAC地址
- 48位的MAC地址
(1) IEEE802规定MAC地址字段采用6字节(48位)或2字节这两种的一种
(1) 地址字段6个字节中的后三个字节,即低位24位,由厂家自行指派扩展唯一字符,保证生产的适配器没有重复地址 - 硬件地址分为:单站地址(I/G位=0)、组地址(I/G位=1)、广播地址(所有48位都为1),其中广播地址只能作为目的地址使用
- 当I/G地址为0和1时,一个地址块可分为223 个单站地址和223 个组地址
- IEEE规定地址字段的第一字节的最低位位I/G位
- 适配器检查MAC地址
(1) 适配器从网络上每收到一个MAC帧就首先用硬件检查MAC帧中的MAC地址。如果是“发往本站的帧”则收下,否则就丢弃
(2) “发往本站的帧”分为:单播帧、广播帧、多播帧
(3) 所有适配器至少能够识别前两种帧,即识别单播地址和广播地址
(4) 只有目的地址才能使用广播地址和多播地址
3.3.5.2 MAC帧的格式
- 以太网V2的MAC帧格式
- 当数据字段的长度小于46字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC帧长不小于64字节。
- 链路层的数据帧是面向字节的(√)
- 无效的MAC帧(选择题)
- 数据字段的长度与长度字段的值不一致
- 帧的长度不是整数字节
- 用收到的帧检验序列FCS查出有差错
- 数据字段的长度不在46–1500字节之间
- 有效的MAC帧长度为64-1518之间
3.4 扩展的以太网
3.4.1 在物理层扩展以太网
- 使用光纤扩展–主机使用光纤调制解调器连接到集线器
- 使用集线器扩展–将多个以太网连成更大的、多级星形结构的以太网
(1) 优点:扩大了以太网覆盖的地理范围;使原来属于不同碰撞域的以太网上的计算机能够进行跨碰撞域的通信
(2) 缺点:碰撞域增大了,但总的吞吐量并未提高;如果不同的碰撞使用不同的数据率,那么就不能利用集线器互联 - 碰撞域(冲突域)越大,发生碰撞的概率越高
3.4.2 在数据链路层扩展以太网(常用方法)
-
早期使用网桥(隔离冲突域),现在使用交换机
-
以太网交换机的特点
(1) 实质:多接口的网桥
(2) 每个接口一般都工作在全双工方式
(3) 以太网交换机具有并行性–能同时连通多对接口,使多对主机能同时通信
(4) 相互通信的主机都是独占传输媒体,无碰撞的传输数据(以太网交换机的每个接口是一个碰撞域)
(5) 以太网交换机使用了即插即用设备,其内部的帧交换表是通过自学习算法自动的逐渐建立起来的 -
以太网交换机的优点
用户独享带宽,增加了总容量 -
以太网的交换方式
(1) 自学习算法:基于源地址的学习,基于目的地址的转发
地址表的形成:收到未知的地址后,存储源地址和接口的对应关系,向除来源端口的其它端口广播,目的地址不符则丢弃,否则接收并回复,收到回复后存储对应关系;地址表有有效时间,超过有效时间则失效
PDU:目的物理地址
-
交换机使用了生成树协议STP
-
从总线以太网到星形以太网
(1) 总线以太网使用CSMA/CD,半双工方式工作
(2) 以太网交换机不使用CMAD/CD协议,以全双工方式工作
3.4.2.1 总线以太网和10Base_T星形以太网
- 所有计算机都处于一个碰撞域(或冲突域) 中和同一个广播域中
- 广播域( broadcast domain):指这样一部分网络,其中任何一台设备发出的广播通信都能被该部分网络中的所有其他设备所接收
- 采用以太网交换机的星形以太网
3.4.3虚拟局域网
3.4.3.1 基本原理
原理:利用以太网交换机可以很方便地实现虚拟局域网VLAN
- IEEE 802.1Q对虚拟局域网VLAN的定义:
虚拟局域网VLAN是由一些局域网网段构成的与物理位置无关的逻辑组,而这些网段具有某些共同的需求。每一个VLAN的帧都有一个明确的标识符,指明发送这个帧的计算机是属于哪一个VLAN - 虚拟局域网其实只是局域网给用户提供的一种服务,而并不是一种新型局域网
- 工作原理
(1) 10台计算机划分为三个虚拟局域网:VLAN1, VLAN,和VLAN3
(2) 每个虚拟局域网是一个广播域。
VLAN1,VLAN2和VLAN3是三个不同的广播域
(3) 如下图,B1发送数据时,VLAN1和VLAN3中的工作站A1, A2和C1,等都不会收到B1发出的广播信息
3.4.3.2 划分虚拟局域网的方法
- 基于交换机端口的方法
- 最简单、最常用的方法
- 属于在第一层划分虚拟局域网的方法
- 缺点:不允许用户移动
- 基于计算机网卡的MAC地址的方法
- 根据用户计算机的MAC地址划分虚拟局域网
- 属于在第二层划分虚拟局域网的方法
- 允许用户移动
- 缺点:需要输入和管理大量的MAC地址,如果用户的MAC地址改变了,则需要管理员重新配置VLAN
- 基于协议类型的方法
- 根据以太网帧的第三个字段“类型”字段确定该类型的协议属于哪一个虚拟局域网
- 属于在第二层划分虚拟局域网的方法
- 基于P子网地址的方法
- 根据以太网帧的第三个字段“类型”字段和IP分组首部中的源IP地址字段确定该I分组属于哪一个虚拟局域网
- 属于在第三层划分虚拟局域网的方法
- 基于高层应用或服务的方法
- 根据高层应用或服务,或者它们的组合划分虚拟局域网
- 更加灵活,但更复杂
3.4.3.3 虚拟局域网使用的以太网帧格式
- 虚拟局域网使用的以太网帧格式
课后习题
3-01 数据链路(即逻辑链路)与链路(即物理链路)有何区别?“电路接通了”与“数据链路接通了” 的区别何在?
所谓链路就是从一个结点到相邻结点的一段物理线路,而中间没有任何其他的交换结点。在进行数据通信时,两个计算机之间的通信路径往往要经过许多段这样的链路。可见链路只是一条路径的组成部分。
数据链路则是另一个概念。这是因为当需要在一条线路上传送数据时,除了必须有一条物理线路外,还必须有一些必要的通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路。现在最常用的方法是使用网络适配器(如拨号上网使用拨号适配器,以及通过以太网上网使用局域网适配器)来实现这些协议的硬件和软件。一般的适配器都包括了数据链路层和物理层这两层的功能。
也有人采用另外的术语。这就是把链路分为物理链路和逻辑链路。物理链路就是上面所说的链路,而逻辑链路就是上面的数据链路,是物理链路加上必要的通信协议。
3-03 网络适配器的作用是什么?网络适配器工作在哪一层?
适配器又称为网络接口卡或简称为“网卡"。在适配器上面装有处理器和存储器(包括RAM 和ROM) 。适配器和局域网之间的通信是通过电缆或双绞线以串行传输方式进行的,而适配器和计算机之间的通信则是通过计算机主板上的I/O总线以并行传输方式进行的。因此,适配器的一个重要功能就是要进行数据串行传输和并行传输的转换。由千网络上的数据率和计算机总线上的数据率并不相同,因此在适配器中必须装有对数据进行缓存的存储芯片。若在主板上插入适配器时,还必须把管理该适配器的设备驱动程序安装在计算机的操作系统中。这个驱动程序以后就会告诉适配器,应当从存储器的什么位置上把多长的数据块发送到局域网,或 者应当在存储器的什么位置上把局域网传送过来的数据块存储下来。适配器还要能够实现以太网协议。
适配器接收和发送各种帧时不使用计算机的CPU。这时CPU 可以处理其他任务。当适器收到有差错的帧时, 就把这个帧丢弃而不必通知计算机。当适配器收到正确的帧时, 它就使用中断来通知该计算机并交付协议栈中的网络层。当计算机要发送 IP数据报时,就由协议栈把IP 数据报向下交给适配器, 组装成帧后发送到局域网。
3-04 数据链路层的三个基本问题(封装成帧、透明传输和差错检测)为什么都必须加以解决?
封装成帧是指一段数据的前后分别添加首部和尾部,这样就构成了一个帧,接收端在收到物理层上交的比特流后,就能根据首部和尾部的标记,从收到的比特流中识别帧的开始和结束。
透明传输就是上层交下来的数据都要能够正确传输,所以,当出现和帧定界符冲突的数据时,需要去转义消除歧义。
差错检测可以将有错误的帧丢弃,避免浪费网络资源。
3-06 PPP协议的主要特点是什么?为什么PPP不使用帧的编号?PPP使用与什么情况?为什么PPP不能使数据链路层实现可靠传输?
- PPP具有如下特点
简单、 封装成帧、 透明性、 支持多种网络层协议 、支持多种类型链路
PPP不使用帧的编号,原因是帧的编号是为了出错时可以有效地重传,而PPP并不需要实现可靠传输
PPP适用于线路质量不太差的情况下,这样不使用可靠传输的话就能大幅提高传输效率
3-07要发送的数据为1101011011, 采用CRC的生成多项式是P ( X ) = X 4 + X + 1
1)试求应添加在数据后面的余数。
2)数据在传输过程中最后一个1变成0,问接收端是否能发现?
3)若数据在传输过程中最后两个1都变成0,问接收端能够发现?
4)采用CRC检验后,数据链路层的传输是否就变成了可靠的传输?
3-08 要发送的数据为101110。采用CRC 的生成多项式是P(X) = X 3+1 ,试求应添加在数据后面的余数。
3-10 PPP 协议使用同步传输技术传送比特串0110111111111100。试问经过零比特填充后变成怎样的比特串?若接收端收到的PPP 帧的数据部分是0001110111110111110110,问删除发送端加入的零比特后变成怎样的比特串?
第一个比特串0110111111111100:
零比特填充就是在一连5 个1 之后必须插入一个0 。
经过零比特填充后变成011011111011111000 (加下划线的0 是填充的)
另一个比特串0001110111110111110110: 删除发送端加入的零比特,就是把一连5 个1 后面的0
删除。因此,删除发送端加入的 零比特后就得出:000111011111-11111-110 (连字符表示删除了0) 。
3-18 试说明 10BASE-T 中的“10”、“BASE”和“T”所代表的意思。
“10” 代表这种以太网具有10 Mbit/s 的数据率, BASE 表示连接线上的信号是基带信号, T
代表双绞线(Twisted-pair) 。
3-20 假定 1 km 长的CSMA/CD 网络的数据率为1 Gbit/s。设信号在网络上的传播速率为200 000 km/s。求能够使用此协议的最短帧长。
1km长的CSMA/CD网络的端到端传播时延τ=1/200000=5×10-6s=5µs,往返传播时延为:2τ=10µs。
故为了能按照CSMA/CD工作,最短帧的发送时延不能小于10us。
以1Gb/s速率工作,10us可以发送的比特数为:1Gbit/s×10µs=1×109bit×10×10-6=10000bit。
所以,最短帧长为10000bit或10000bit/8bit=1250byte
3-22 假定在使用 CSMA/CD 协议的10 Mbit/s 以太网中某个站在发送数据时检测到碰撞,执行退避算法时选择了随机数r = 100。试问这个站需要等待多长时间后才能再次发送数据?如果是100 Mbit/s 的以太网呢?
以太网最小帧长度为64字节,也就是64*8=512bit。
1)当以太网为10Mbit时,争用期为 :
512/(10*1000000)=0.0000512秒=51.2us
现在碰撞算法R=100,则退后100个争用期,等待时间:
51.2us*100=5120us=5.12ms
2)100M以太网,争用期为:
512/(100*1000000)=0.00000512秒=5.12us
现在碰撞算法R=100,则退后100个争用期,等待时间:
5.12us*100=512us
3-24 假定站点 A 和B 在同一个10 Mbit/s 以太网网段上。这两个站点之间的传播时延为225 比特时间。现假定A 开始发送一帧,并且在A 发送结束之前B 也发送一帧。如果A 发送的是以太网所容许的最短的帧,那么A 在检测到和B 发生碰撞之前能否把自己的数据发送完毕?换言之,如果A 在发送完毕之前并没有检测到碰撞,那么能否肯定A 所发送的帧不会和B 发送的帧发生碰撞?(提示:在计算时应当考虑到每一个以太网帧在发送到信道上时,在MAC 帧前面还要增加若干字节的前同步码和帧定界符。)
设在t=0时A开始发送。在t=576比特时间,A应当发送完毕。
t=225比特时间,B就检测出A的信号。只要B在t=224比特时间之前发送数据,A在发送完毕之前就一定检测到碰撞。就能够肯定以后也不会再发送碰撞了。如果A在发送完毕之前并没有检测到碰撞,那么就能够肯定A所发送到帧不会和B发送的帧发生碰撞(当然也不会和其他的站点发送碰撞)。
3-33 在图 3-31 中,以太网交换机有6 个接口,分别接到5 台主机和一个路由器。
在下面表中的“动作”一栏中,表示先后发送了4 个帧。假定在开始时,以太网交换机的交换表是空的。试把该表中其他的栏目都填写完。
答案如下:
动作 | 交换表的状态 | 向哪些接口转发帧 | 说明 |
---|---|---|---|
A发送帧给D | 写入(A,1) | 2,3,4,5,6 | 表是空的,第一次进行广播,向所有接口转发帧 |
D发送帧给A | 写入(D,4) | 1 | A存在了,将D存入 |
E发送帧给A | 写入(E,5) | 1 | A存在,将E存入 |
A发送帧给E | 刷新(A,1) | 5 | A,E信息都已存在 |
4 网络层
4.1 网络层提供的两种服务
- 面向连接(虚电路服务):打固定电话,在计算机通信中,可靠的交付是由网络来完成的。在通信前先建立虚电路,只是建立了逻辑连接,而不是物理连接。路由器是采取的分组交换
- 无连接(数据报服务):提供的传输是不可靠的端到端的通信,计算机通信中,端系统来负责可靠的交付
- 网络层使得不同类型的局域网由路由器连接,使得夸局域网通信
- 使用一些中间设备进行互连(要考试)
- 物理层中继系统:转发器或集线器
- 数据链路层中继系统:网桥或桥接器(bridge)或交换机
- 网络层中继系统:路由器(router)
- 网桥和路由器的混合物:桥路器(brouter)
- 网络层以上/font>的中继系统:网关(gateway)。
网络互联都是指:用路由器进行网络互联和路由选择
有关虚电路和数据报:虚电路在建立连接后,分组后只需要携带连接标识(✓)
4.2 IP地址
- IP地址是分配在全世界范围内的唯一标识符
- 分类IP地址:网络号+主机号
- 各类IP地址的网络号字段和主机号字段,ABC前三位最好记住(A、B、C类地址都是单播地址,D类地址用于多播)
- 点分十进制记法
4.2.1 常用的三类IP地址(IPv4地址):
-
IP地址的指派范围那个图可以给一个IP地址分析出网络的类别(abc),从而了解网络上能容纳的主机数
-
-
A类:
(1)最大可指派网络数:126(2^7-2) 8位除去1个固定位剩7位,减2因为要除去全0和全1位
(2)每个网络中最大主机数:16777214(2^24-2(网络地址+广播地址)) -
B类:
(1)最大可指派网络数:16383(2^14-1) 16位除去2个固定位,减1因为有两个固定位为10,所以不存在全0或全1,但规定128.0.0.0不使用,所以减去 -
C类:
(1)最大可指派网络数:2097151(2^21-1) 24位除去3个固定位,减1同B类,192.0.0.0规定不使用
-
-
网络号取0表示本网络,主机号为1只在本网络进行广播,主机号为0是本网络的本主机,127是本地网络环回测试
- IP地址是205.140.36.88哪一部分表示主机号? C类地址,前三个是网络号,最后一个是主机号
- IP地址特点:
(1)分等级的地址结构(每一个IP地址都由网络号和主机号两部分组成),可以减少路由器的路由表的行数
(2)IP地址标识的是一个主机(或路由器)和一条链路的接口
(3)用转发器或网桥连接的若干个局域网仍为一个局域网,都具有同样的网络号
(4)所有分配到网络号的网络都是平等的
4.2.2 IP地址与硬件地址
- 层次:硬件地址或物理地址是在数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址
4.2.3 IP数据报格式
- 版本:占4位,说明该IP数据报使用的IP协议的版本(IPv4/IPv6?),通信双方必须使用同一个IP协议版本
-
首部长度:
- 占4位(可以表示16个十进制数,从0000—1111,1即0—15)
- 以4字节为单位 ,不是4的整倍数时要填充至整倍数
假设4位是1111,化为10进制即15,那么首部长度=15X4B=60B,可变部分为60B-20B=40B
- 那么首部长度可以0000吗?不能!!!固定长度为20B,所以首部长度至少为20B,20B/4=5,5化为二进制为0101,即20~60字节
- 因为IPv4中首部存在可变部分,所以需要指出首部的长度以划分首部与数据部分
-
区分服务:占8位,只在区分服务时这个字段才起作用,一般不用
-
总长度:
- 占16位,可以用16个二进制数表示,总长度的最大值,216-1=65535 B,即IP数据报最大长度
- IP数据报的总长度(首部+数据)。IP数据报封装为MAC帧时受限于MAC帧的长度上限,所以IP数据报还存在“分片”操作,即将IP数据报分为多片,封装进多个MAC帧。
-
标识:占16位,IP数据报若存在分片,则接收方需要将各分片组合出原IP数据报,相同标识号的IP数据报就说明它们其实是同一个源IP数据报。
-
标志:占3位,目前只有前两位有意义,最低位为MF(More Fragment),若MF=1则说明该数据报后面“还有分片”。中间一位为DF(Don’t Fragment),若DF=1则不能分片,只有DF=0才可以分片
-
片偏移:占13位,用于说明该IP数据报(已分片)在源IP数据报中的相对位置(相对于数据字段的起点),
单位是8字节
,每个分片一定是8字节的整倍数 -
生存时间:IP分组在网络中传递时有可能出现“兜圈子”的情况,所以需要对IP数据报进行一定的限制,生存时间的单位是“跳数”,最大值为255,每经过一个路由器,路由器便将IP数据报的生存时间-1,当IP数据报中的生存时间为0时,路由器丢弃该分组。
-
协议:
- 占8位,数据部分所使用的协议
- 说明该IP数据报的上层协议类型,如IP对应4(字段值),TCP对应6,UDP对应17,
TCP是面向连接,很6,UDP容易发生丢包现象,被遗弃17
-
首部校验和:验证首部是否存在传输错误,只检验首部,不包括数据部分
-
源地址:长度占32位
-
目的地址:长度占32位
-
可选字段:可有可无,长度为1~40字节,IP地址中的可变部分可用于支持很多操作,但很多情况都用不上,而且会增加路由器处理分组的开销,所以IPv6中的数据报首部做成了固定长度
-
填充:全0,把首部补成4B的整数倍
4.2.4 IP数据报分片
最大传送单元MTU:链路层数据帧可封装的数据的上限。IP分组的时候要进行封装,形成链路层的数据帧,那么就要在分组的前面加头加尾,中间部分即数据部分,即MTU不能超过上限,以太网的MTU是1500字节
那么如果所传送的数据报长度超过某链路的MTU值呢?——分片(前提是IP分组要同意进行分片)
-
标识:同一数据报的分片使用同一标识
一个原来的数据报长度超过链路层的MTU,就要进行分片,每分的一个小片就要和原来的数据报使用同一个标识
-
标志:只有两位有意义x–
- 中间位DF(Dont’t Fragment):
DF=1,禁止分片;DF=0,允许分片 - 最低位MF(More Fragment):
只有DF=0的时候,MF才有意义
MF=1,后面“还有分片”
MF=0,代表最后一片/没分片
- 中间位DF(Dont’t Fragment):
-
片偏移:指出较长分组分片后,某片在原分组中的相对位置。以8B为单位
除了最后一个分片,每个分片的长度一定是8B的整数倍。
- 作用:对于MF=0或者MF=1的情况,我们只知道这一片是不是最后一个,如果不是最后一个那是原来数据报的哪一个位置呢?
- 长度为:16-3(标志位)=13bit
假如一个数据报的片偏移字段为000……1(十进制为1),那么在原来数据报的位置为1X8B=8B,从8B字节开始的位置
-
例题:片偏移=开头的首字节/8B
-
小总结:
1种8片的首饰4
- 总长度单位为1B
- 片偏移单位是8B
- 首部长度单位是4B
4.2.5 地址解析协议ARP
-
IP地址(逻辑地址)与MAC地址(物理地址):源IP地址和目的IP地址始终不变;而源MAC地址和目的MAC地址在每条链路上都要变化
-
作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址
-
工作方式:每个主机里都设有一个ARP高速缓存,里面有所在局域网上各主机和路由器的IP地址到硬件地址的映射表,且这个映射表经常动态更新
(1)ARP请求分组:在局域网广播一个ARP请求分组,包含发送方硬件地址,发送方IP地址,目的方硬件地址(未知时填0),目的方IP地址 (2)本地广播ARP请求,路由器不转发ARP请求 (3)ARP响应分组:某主机收到广播,发现本机IP与查询IP一致,就回复ARP响应分组,包含发送方硬件地址,发送方IP地址;同时将请求分组中IP与硬件地址对应关系保存 (4)收到回复的ARP响应分组后,将对应IP和硬件地址存入ARP高速缓存中,方便下次使用
生存时间:ARP高速缓存中每条映射都只存在一段时间,超过时间后就被删除
-
特点:
ARP协议只解决同一局域网上IP地址和硬件地址映射问题,不在同一局域网则无法解决
ARP工作过程对用户来说是透明的
-
例题:主机发送IP数据报给主机B,经过了5个路由器,请问此过程总共使用了几次ARP协议?
4.2.6 路由算法与路由协议概述
-
最佳路由:“最佳”只能是相对于某一种特定要求下得出的较为合理的选择而已 解
决下一跳跳到哪里的问题
-
路由算法的分类
-
静态路由算法(非自适应路由算法):管理员手工配置路由信息—广泛适应于高度安全性的军事化网络和较小的商业网络,路由更新慢,不适用大型网络
-
动态路由算法(自适应路由算法):路由器间彼此交换信息,按照路由算法优化出路由表项,路由更新快,适用大型网络,及时响应链路费用(路由器的跳数)罗网络拓扑变化,但是算法复杂,增加了网络负担
- 动态路由算法
- 全局性—链路状态路由算法 OSPF:所有路由器掌握完整的网络拓扑和链路费用信息
- 分散性—距离向量路由算法 RIP:路由器只能掌握物理相连的邻居及链路费用
- 动态路由算法
-
-
分层次的路由选择协议
- 原因:(1)因特网规模大(2)许多单位不想让外界知道自己的路由选择协议,但还想炼乳因特网
- 自治系统AS:在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。一个AS内的所有网络都属于一个行政单位来管辖,一个自治系统的所有路由器在本自治系统内都必须连通
自治系统内使用的协议,外部是不知道的
- 分类:
(1)内部网关(路由器
)协议IGP:一个AS内使用的RIP、OSPF
(2)外部网关协议EGP:AS之间使用的 BGP
4.3 划分子网和构造超网
4.3.1 划分子网
- 两级IP地址的问题:
-
IP地址空间利用率有时很低
-
给每个屋里网络分配一个网络号会使路由表变得很大,因此是网络性能变坏
-
两级IP地址不够灵活
-
划分子网的基本思路:借用主机号若干位作为子网地址
- 划分子网后的IP地址:| 网络号 | (子网) | 主机号 |
子网号能否全0或全1要看情况,主机号是不能全0或全1的主机号全0表示本网络,全1表示广播分组,都是不能指派的。
- 只要是目的地址为145.13.x.x的数据报都会经过这个路由器,在进入单位中,这一个单位被划分成了3个子网。外部不知道内部的子网划分。
假如有目的地址为145.13.3.0的数据报,只知道要经过该路由器,怎么传给下面的主机呢?
-
子网掩码:
-
作用:用来找出IP地址中的子网部分,长度为32位,原IP中网络号和子网部分置为1,主机号部分置为0
-
(IP地址)and(子网掩码)=网络地址
-
默认子网掩码:在不进行子网划分时,也要给出子网掩码,就用默认子网掩码
-
子网掩码:网络部分所对应位数全1,主机部分所对应位数全0
-
-
IP地址和子网掩码逐位相与得到子网网络地址:
-
把三级IP地址写成2进制,如果对应位都是1,结果为1,否则就是0
-
子网数:2^k-2,k表示子网号的位数,减去全0和全1,就是可用子网数,虽然现在全0和全1地址也可以使用,但不推荐
-
-
常见的二进制与十进制的转换
-
例题1:已知IP地址为141.14.72.24,子网掩码是255.255.192.0,求网络地址。
我们只需要看后两个即可,即24和0相与(肯定为0),72和192即可
72 化为2进制为:01001000
192化为2进制为:11000000
逐步相与操作为: 01000000,对应十进制为64
网络地址为:141.14.64.24
- 例题2:某主机的IP地址为180.80.77.55,子网掩码为255.255.252.0.若改主机向其所在子网发送广播分组,则目的地址可以是()
A 180.80.76.0 B 180.80.76.255 C 180.80.77.255 D 180.80.79.255
广播分组:提示我们目的地址是广播地址,主机号是全1,排除A
子网掩码第三个字节是:252,化为2进制:11111100
子网掩码:255.255.252.0,8B+8B+6B+(主机号:2B+8B)
IP地址180开头,属于B类地址,前面16位是作为网络号的
网络号(16位)+子网号(6)位+主机号(10)位
某主机IP地址第三个字节化为2进制:01001101
子网掩码第三个字节,化为2进制: 11111111
网络号占6位,只取前六位,广播地址,主机号是全1,所以取010011|11化为十进制:79
答案为:180.80.79.255
4.3.2 使用子网时的转发
子网划分后的路由表:包含目的网络地址、子网掩码、下一跳地址
- 子网划分后的路由器转发分组算法:
1)从收到的数据报首部提取目的IP地址D
2)先判断是否为直接交付。对路由器直接相连的网络进行逐个检查:用各网络的子网掩码和D逐位相与,看结果是否和相对应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束。否则就是间接交付,执行3
3)若路由表中有目的地址为D的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由:否则执行4
4)对路由表的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器;否则执行5
5)若路由表中有一个默认路由(IP地址为0.0.0.0),则把数据报传送给路由表中所指明的默认路由器;否则执行6
6)报告转发分组出错。
4.3.3 无分类编址CIDR
- CIDR的主要特点:
- 消除了A,B,C类地址和划分子网的概念.它重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.
- 把网络前缀相同的连续IP地址组成一个CIDR地址块,只要知道任一个地址,就可以知道这个地址块的起始地址和最大地址以及地址数
- 例题:192.199.170.82/27
- 这个地址块包括多少个IP地址?25 =32
- 该地址块的最小地址min和最大地址max?
令主机号全0和全1即可
前27位是网络前缀,前三个字节全是1,82化为2进制:010 | 10010,只需要取前三位,令后面的5位主机号全0和全1即可
min:192.199.64.0
max:192.199.95.255 - CIDR地址块是多少?
只需要用主机号为全0即可,表示本网络
192.199.64.0/27 - 这个地址所在的CIDR地址块的子网掩码?
令前面27位全1,后面的5位全0即可
- 消除了A,B,C类地址和划分子网的概念.它重新将IP地址划分为两个部分即,”网络前缀”和”主机号”.注意这里的网络前缀再也没有位数的限制,即没有A,B,C类之分.
- 构成超网
- 定义:将多个子网聚合成一个较大的子网,叫作构成超网,或路由聚合
- 方法:将网络前缀缩短(所有网路地址取交集)
-
例题:某路由表中有转发接口相同的4条路由表项,其目的网络地址分别为35.230.32.0/21、35.230.40.0/21、35.230.48.0/21、35.230.56.0/21,将该4条路由聚合后的目的网络地址为()
A 35.230.0.0/19 B 35.230.0.0/20 C 35.230.32.0/19 D 35.230.32.0/2035.230.32.0/21 0 0 1 | 0 0 0 0 0 35.230.40.0/21 0 0 1 | 0 1 0 0 0 35.230.48.0/21 0 0 1 | 1 0 0 0 0 35.230.56.0/21 0 0 1 | 1 1 0 0 0 共同点:21位的网络前缀,第三个字节就占用了5位,所以把上面第三个字节写成2进制形式 取交集,是前三位,因此合并后网络前缀为19位,前三位后面主机号全0 D:35.230.32.0/19
-
CIDR地址块的划分:
该ISP由64个C类地址,若不采用CIDR技术,则在与该ISP的路由器交换路由信息的每一个路由器的路由表中,就需要由64个项目,采用地址聚合后,只需用路由聚合后的一个项目206.0.64.0/18就能找到该ISP
该大学需要800的主机地址,因2^10-2>800,所以主机位应取10位,前22位作为网络前缀,由于子网全0默认不可用,故从206.0.68.0/22开始
-
最长前缀匹配:
-
用收到的目的地址与路由表中的每条掩码依次相与,取最长前缀匹配项的地址作为下一跳
-
因为前缀越长,其地址块就越小,因而路由就越具体
(C不可以匹配,C相与之后是206.0.71.128/25,不可匹配,所以这一点写错啦)
-
4.3.4 DHCP协议
- 主机如何获得IP地址?
- 静态配置:配置的有IP地址、子网掩码、默认网关(通常指的是路由器的一个接口的IP地址)
- 动态配置:DHCP服务器、交换机、主机
- DHCP协议
- 定义:动态主机配置协议DHCP是应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP
- DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址
- 允许地址重用,支持移动用户加入网络,支持在用地址续租。
- 工作流程
- 主机广播DHCP发现报文—
主机问“有没有DHCP服务器呀?”
试图找到网络中的服务器,服务器获得一个IP地址 - DHCP服务器广播DHCP提供报文—
“有!”
服务器拟分配给主机一个IP地址及相关配置,先到先得先发过来的IP地址,主机才会决定用
- 主机广播DHCP请求报文—
和DHCP服务器说“我用你给我的IP地址啦?”
- DHCP服务器广播DHCP确认报文—
“用吧!”
正式将IP地址分配给主机
- 主机广播DHCP发现报文—
4.3.5 网络控制报文协议ICMP
作用:ICMP允许主机或路由器报告差错和提供有关异常情况的报告
报文格式:
4.4.1 ICMP报文种类
- 报文种类:差错报告报文,询问报文
常见差错报告报文:终点不可达、时间超过、参数问题、改变路由(重定向)
ICMP差错报告报文封装过程:
- 不发送ICMP差错报告报文的情况:
(1)对ICMP差错报告报文,不再发送ICMP差错报告报文
(2)对第一个分片的数据报片的所有后续数据报片,都不发送ICMP差错报告报文
(3)对具有多播地址的数据报,都不发送ICMP差错报告报文
(4)对具有特殊地址(如127.0.0.0或0.0.0.0)的数据报,不发生ICMP差错报告报文
- 常用的ICMP询问报文:
(1)回送请求和回答:
ICMP回送请求报文是由主机或路由器向一个特定的目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文,这种询问报文用来测试目的站是否可达以及了解其状态
(2)时间戳请求和回答:
ICMP时间戳请求报文是请某台主机或路由器回答当前的日期和时间,再ICMP时间戳回答报文中有一个32位的字段,其中写入的整数代表从1900.1.1到当前时刻一共多少秒,用于时钟同步和时间测量
4.4.2 ICMP的应用
PING: PING即Packet InterNet Groper,用于探测两台主机间是否连通,源主机向目标主机发送ICMP的回送请求报文(封装在IP数据报中),目标主机若接收到该报文则返回回送回答报文
路由探测: 路由探测即源主机向目标主机发送无法交付的UDP数据报(封装于IP数据报,若目标主机接收到该数据报,则会返回ICMP终点不可达报文),第一次发送时将IP数据报的生存时间设为1,这样一来第一个路由器接收到后将生存时间-1就会直接判断该IP分组需要丢弃,并返回ICMP时间超过报文,源主机接下来发送第二个IP数据报(依然为不可交付UDP数据报),此次将生存时间设为2……以此类推,直至接收到ICMP终点不可达报文,或生存时间达到上限为止。
4.5 互联网的路由选择协议
4.5.1 路由选择协议分类回顾
4.5.2 内部网关协议RIP
-
概述:是一种分布式,基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单
-
距离:直连网络距离为1,每过一个非直连网络距离加1,距离也称为跳数,每经过一个路由器跳数就加1,距离实际上指最短距离
RIP允许一个路径最多包含15个路由器,也就是距离最大值为16,距离为16表示网络不可达,故RIP适合小型互联网使用;RIP不能在两个网络之间同时使用多条路由
工作流程:每个路由器每隔一段时间向外广播,每个路由器收到广播后更新自己的路由表
-
RIP协议的特点:
(1)仅和相邻路由器交换信息,不相邻的路由器不交换信息
(2)交换的信息是当前本路由器所知道的全部信息,即其自己的路由表
(3)按固定时间间隔每30s交换信息
刚开始时只知道直连网络的距离,路由表为空,以后,每个路由器只和数目有限的相邻路由器交互并更新路由信息,经过若干次更新后,所有路由器最终会知道到达本自治系统其他路由器的最短距离和下一跳地址,此时称该网络收敛
-
距离向量算法:
-
路由器收到地址为X的相邻路由器的一个RIP报文,修改报文中所有项目,把下一跳地址改为X,把距离字段值都+1
-
对修改后的RIP报文中的每个项目重复以下步骤
(1) R1路由表中若没有Net3,则把该项目填入R1路由表
(2) R1路由表中若有Net3,则查看下一跳路由器地址:
若下一跳是x,则用收到的项目替换源路由表中的项目;
若下一跳不是x,原来距离比从x走的距离远则更新,否则不作处理。 -
若超过3分钟未收到相邻路由信息,则将其标记为不可达,即把距离置为16
-
返回
-
-
例题1:已知路由器R6的路由表,现收到相邻路由器R4发来的路由更新信息,试更新路由器R1的路由表:
解: 先将收到的路由表进行修改:
将修改后的表与路由表对比:net1:原路由表中没有,故加入 net2:原表中有,且下一跳相同,替换原有 net3:原表中有,但下一跳不同,比较距离,选择较小的
- 例题2:B
- RIP协议报文格式:
- 首部+路由部分,塞到了UDP数据报中
- 路由信息(20字节/路由,可重复出现最多25个):一个RIP报文最多可包括25个路由,如超过,必须再用一个RIP报文传送(多发几个RIP报文)
- RIP报文最大长度:4+20*25=504字节
-
RIP2改动:支持变长子网掩码和无分类域间路由选择CIDR;提供简单的鉴别过程支持多播
-
RIP协议特点:
-
好消息传播快,坏消息传播慢,网络出故障的传播时间需要较长时间
-
优点:实现简单,开销较小;
-
缺点:限制了网络的规模,出故障时传播时间较长
-
4.5.3 内部网关协议OSPF
开放最短路径优先OSPF协议:“开放”标明OSPF协议不是受某一家厂商控制,而是公开发表的;“最短路径优先”是因为使用了Diikstra提出的最短路径算法SPF。
OSPF最主要特征:采用分布式链路状态协议
-
三个要点:
- 和谁交换:向本自治系统中所有路由器发送信息,使用的方法是洪泛法(有点类似—广播),最终整个区域所有路由器都得到了这个信息的一个副本
- 交换什么:发送的信息就是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息—费用、距离、实验、带宽等。
“链路状态”就是说明本路由器都和哪些路由器相邻,以及该链路的“度量”(metric)。 - 多久交换:只有当链路状态发生变化,路由器才用洪泛法向所有路由器发送此信息。
最终所有路由器都能建立一个链路状态数据库,即全网拓扑图
-
链路状态路由算法
-
了解:为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干各更小的范围,叫做区域;必须要有一个主干区域,其它区域一般都和主干区域直接相连;每个区域都有一个32位的区域标识符;区域不能太大,一个区域路由器数量不超过200个
-
OSPF分组
-
OSPF其他特点
- 每隔30min,要刷新一次数据库中的链路状态。
- 当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多
- OSPF不存在坏消息传的慢的问题,它的收敛速度很快
4.5.4 外部网关协议BGP
BGP是不同自治系统AS之间使用的协议,合理做法是“交换可达性信息”
边界网关协议BGP只是力求一条能够到达目的的网络比较好的路由(不要出现环路,兜圈子),而并非要寻找一条最佳路由
每一个自治系统选至少一个路由器作为BGP发言人(跑两套协议:BGP协议和内部网关协议)
- 三个要点
- 和谁交换:与其他AS的邻站BGP发言人交换信息
- 交换什么:交换网络可达性信息,即要到达某个网络所要经过的一系列AS
- 多久交换:发生变化时更新有变化的部分
- BGP协议特点:
- BGP协议交换路由信息的结点数量级是自治系统的量级,这要比这些自治系统中的网络数少很多
- 每一个自治系统中的BGP发言人的数量很少,使得自治系统间的路由选择不太复杂
- BGP支持CIDR, 因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列
- 在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。
- BGP-4共使用四种报文
- OPEN(打开)报文,用来与相邻的另一个BGP发言人建立关系
- UPDATE(更新)报文,用来发送某一路由的信息,以及要列出要撤消的多条路由
- KEEPALIVE(保活)报文,用来确认OPEN打开报文和周期性地整式邻站的关系
- NOTIFICATION(通知)报文,用来发送检测到的差错
-
BGP协议报文格式
BGP协议在交换路由信息之前,两个路由器要先建立路由器TCP连接,通过BGP报文建立BGP会话,建立之后的BGP发言人也被称为对等站
BGP是应用层协议,借助TCP传送
-
三种协议比较
-
例题
BGP协议,TCP协议分组
4.5.5 路由器的构成
路由器是一种典型的网路层设备
-
路由器的主要作用:
- 连通不同的网络(网络号不同的网络,网络号相同的网络用交换机就可以)
-
结构:
- 路由器是一种具有多个输入输出端口的专业计算机,任务是转发分组
- 分组转发部分由三部分组成
分组丢弃:路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因
最简单的策略就是队尾丢弃
交换结构(了解):是路由器的关键构建
4.6 IPv6
IPv6支持无连接的传送
- 主要变化:
- 更大的地址空间,从32位增大到了128位(16B)
- 扩展的地址层次结构
- 灵活的首部格式。IPv6定义了许多可选的扩展首部
- 改进的选项,允许数据报有选项的数据信息
- 支持即插即用,因此IPv6不需要DHCP协议
- 支持资源的预分配
- IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
- IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
- ICMPv6:附加报文类型“分组过大”
IPv6的扩展首部,放到了有效载荷中
- IPv6地址表示形式
-
一般形式—冒号十六进制记法
-
压缩形式
-
- IPv6的三类基本地址类型:
- 单播:传统的点对点的通信,可做源地址+目的地址
- 多播:一点对多点的通信,可做目的地址
- 任播:一对多中的一个通信,可做目的地址
新增加的类型,一组中选择一个最近最方便的路由器,由他发给大家
4.6.3 IPv4向IPv6的过渡的策略
- 双栈协议:双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPv4网络和IPv6网络。如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
- 隧道技术:通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送
第一台路由器发一个IPv6数据报,第二台路由器把IPv6协议作为数据部分,前面封装个IPv4的首部,伪装是一个IPv4地址通过第三台IPv4路由器,到最后一段的时候,进入了IPv6的网络,于是吧IPv4的部分去掉,继续发送,交付主机。其中第二台—第三台路由器间的部分为一个隧道
4.7 IP多播(组播)
- IP组播地址:
- IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。
- 组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。
(1)组播数据报也是“尽最大努力交付”,不提供可靠交付,应用于UDP。
(2)对组播数据报不产生ICMP差错报文。
(3)并非所有D类地址都可以作为组播地址。
- 硬件组播
同单播地址一样,组播IP地址也需要相应的组播MAc地址在本地网络中实际传送帧。组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是根据IP组播组地址的最后23位转换得到的。
收到多播数据报的主机,还要在P层利用软件进行过滤,把不是本主机要接收的数据报丢弃。
- IGMP协议与组播路由选择协议
- IGMP—网际组管理协议
- 组播路由选择协议
- 组播路由选择协议目的是找出以源主机为根节点的组播转发树
- 构造树可以避免在路由器之间兜圈子。
- 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。
- 常使用的三种算法:
4.8 网络层设备
- 三层设备的区别
课后习题
1.网络层向上提供的服务有哪两种?是比较其优缺点。
网络层向运输层提供 “面向连接”虚电路(Virtual Circuit)服务或“无连接”数据报服务前者预约了双方通信所需的一切网络资源。优点是能提供服务质量的承诺。即所传送的分组不出错、丢失、重复和失序(不按序列到达终点),也保证分组传送的时限,缺点是路由器复杂,网络成本高;后者无网络资源障碍,尽力而为,优缺点与前者互易
5.IP地址分为几类?各如何表示?IP地址的主要特点是什么?
分为ABCDE 5类;每一类地址都由两个固定长度的字段组成,其中一个字段是网络号 net-id,它标志主机(或路由器)所连接到的网络,而另一个字段则是主机号 host-id,它标志该主机(或路由器)。各类地址的网络号字段net-id分别为1,2,3,0,0字节;主机号字段host-id分别为3字节、2字节、1字节、4字节、4字节。特点:(1)IP 地址是一种分等级的地址结构。分两个等级的好处是:第一,IP 地址管理机构在分配 IP地址时只分配网络号,而剩下的主机号则由得到该网络号的单位自行分配。这样就方便了 IP 地址的管理。第二,路由器仅根据目的主机所连接的网络号来转发分组(而不考虑目的主机号),这样就可以使路由表中的项目数大幅度减少,从而减小了路由表所占的存储空间。
(2)实际上 IP 地址是标志一个主机(或路由器)和一条链路的接口。当一个主机同时连接到两个网络上时,该主机就必须同时具有两个相应的 IP 地址,其网络号net-id 必须是不同的。这种主机称为多归属主机(multihomed host)。由于一个路由器至少应当连接到两个网络(这样它才能将 IP 数据报从一个网络转发到另一个网络),因此一个路由器至少应当有两个不同的 IP 地址。
(3) 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号 net-id。
(4) 所有分配到网络号 net-id 的网络,范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的。
7.试说明IP地址与硬件地址的区别,为什么要使用这两种不同的地址?
IP 地址就是给每个连接在因特网上的主机(或路由器)分配一个在全世界范围是唯一的 32 位的标识符。从而把整个因特网看成为一个单一的、抽象的网络在实际网络的链路上传送数据帧时,最终还是必须使用硬件地址。
MAC地址在一定程度上与硬件一致,基于物理、能够标识具体的链路通信对象、IP地址给予逻辑域的划分、不受硬件限制。
17.一个3200位长的TCP报文传到IP层,加上160位的首部后成为数据报。下面的互联网由两个局域网通过路由器连接起来。但第二个局域网所能传送的最长数据帧中的数据部分只有1200位。因此数据报在路由器必须进行分片。试问第二个局域网向其上层要传送多少比特的数据(这里的“数据”当然指的是局域网看见的数据)?
答:第二个局域网所能传送的最长数据帧中的数据部分只有1200bit,即每个IP数据片的数据部分<1200-160(bit),由于片偏移是以8字节即64bit为单位的,所以IP数据片的数据部分最大不超过1024bit,这样3200bit的报文要分4个数据片,所以第二个局域网向上传送的比特数等于(3200+4×160),共3840bit。
18.(1)有人认为:“ARP协议向网络层提供了转换地址的服务,因此ARP应当属于数据链路层。”这种说法为什么是错误的?(2)试解释为什么ARP高速缓存每存入一个项目就要设置10~20分钟的超时计时器。这个时间设置的太大或太小会出现什么问题?(3)至少举出两种不需要发送ARP请求分组的情况(即不需要请求将某个目的IP地址解析为相应的硬件地址)。
(1)因为ARP本身是网络层的一部分,ARP协议为IP协议提供了转换地址的服务,数据链路层
使用硬件地址而不使用IP地址,无需ARP协议数据链路层本身即可正常运行。因此ARP不再数据链路层。
(2)答:考虑到IP地址和Mac地址均有可能是变化的(更换网卡,或动态主机配置)
10-20分钟更换一块网卡是合理的。超时时间太短会使ARP请求和响应分组的通信量太频繁,而超时时间太长会使更换网卡后的主机迟迟无法和网络上的其他主机通信。
(3)在源主机的ARP高速缓存中已经有了该目的IP地址的项目;源主机发送的是广播分组;源主机和目的主机使用点对点链路。
19.主机A发送IP数据报给主机B,途中经过了5个路由器。试问在IP数据报的发送过程中总共使用了几次ARP?
6次,主机用一次,每个路由器各使用一次。
20.设某路由器建立了如下路由表:
目的网络 子网掩码 下一跳
128.96.39.0 255.255.255.128 接口m0
128.96.39.128 255.255.255.128 接口m1
128.96.40.0 255.255.255.128 R2
192.4.153.0 255.255.255.192 R3
*(默认) —— R4
现共收到5个分组,其目的地址分别为:
(1)128.96.39.10
(2)128.96.40.12
(3)128.96.40.151
(4)192.153.17
(5)192.4.153.90
(1)分组的目的站IP地址为:128.96.39.10。先与子网掩码255.255.255.128相与,得128.96.39.0,可见该分组经接口0转发。
(2)分组的目的IP地址为:128.96.40.12。
① 与子网掩码255.255.255.128相与得128.96.40.0,不等于128.96.39.0。
② 与子网掩码255.255.255.128相与得128.96.40.0,经查路由表可知,该项分组经R2转发。
(3)分组的目的IP地址为:128.96.40.151,与子网掩码255.255.255.128相与后得128.96.40.128,与子网掩码255.255.255.192相与后得128.96.40.128,经查路由表知,该分组转发选择默认路由,经R4转发。
(4)分组的目的IP地址为:192.4.153.17。与子网掩码255.255.255.128相与后得192.4.153.0。与子网掩码255.255.255.192相与后得192.4.153.0,经查路由表知,该分组经R3转发。
(5)分组的目的IP地址为:192.4.153.90,与子网掩码255.255.255.128相与后得192.4.153.0。与子网掩码255.255.255.192相与后得192.4.153.64,经查路由表知,该分组转发选择默认路由,经R4转发。
5 传输层
5.1传输输层协议概述
5.1.1 进程之间的通信
从通信和信息处理的角度看,运输层向它上面的应用层提供逻辑通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层
当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。
- 运输层的作用
(如何把数据分开,分别交给不同的应用进程)- 提供主机与主机之间应用进程之间的通信
- 运输层为相互通信的应用进程提供了逻辑通信
- 基于端口的复用和分用功能
- 屏蔽功能
- 传输层对收到的报文进行差错检测
- TCP和UDP协议(传输层有两个好兄弟,大哥TCP,二弟TCP,大哥靠谱,二弟不靠谱)
- 运输层和网络层之间的区别:
网络层是为主机之间提供逻辑通信;运输层为应用进程之间提供端到端的逻辑通信。
5.1.2 传输层的寻址和端口
为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对TCP/IP体系的应用进程进行标志。
复用:应用层所有的应用进程都可以通过传输层再传输到网络层。
分用:传输层从网络层收到数据后交付指明的应用进程
对于一个主机,若想要把数据发送给它,我们需要知道主机的IP地址即可,在网络中可以根据IP地址寻找到它所在的网络,再根据MAC地址定位到具体哪个主机,但是还需要传输层指明交付的应用进程
- 软件端口与硬件端口
- 在协议栈层间的抽象的协议端口是软件端口
- 路由器或交换机上的端口是硬件端口
- TCP/IP运输层端口
- 端口用一个16位端口号进行标志,允许有65,535个不同的端口号。
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。
由此可见,两个计算机中的进程要互相通信,不仅必须知道对方的端口号(为了找到对方计算机中的应用进程),而且还要知道对方的IP地址(为了找到对方的计算机)。
-
两大类端口
- 服务器端使用的端口号
(1)熟知端口:0—1023
(2)登记端口号:1024—49151 - 客户端使用的端口号—短暂端口号:49152—65535
- 服务器端使用的端口号
-
套接字Socket = (主机IP地址,端口号)
- 在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机和它上面的一个进程
5.2 用户数据包协议UDP
5.2.1 UDP最主要特点
- UDP协议
-
UDP主要特点:
(1)UDP是无连接的、不可靠、时延小,适用于小文件
(2)UDP使用尽最大努力交付
(3)UDP是面向报文的 ,应用层给UDP多长的报文,UDP就照样发送,即一次发一个完整报文。适合一次性传输少量数据的网络应用
(4)UDP没有拥塞控制
(5)支持一对一、一对多、多对多的交互通信
(6)UDP的首部开销小,只有8B,比TCP的20B的首部要短
(7)一次交付一个完整的报文
(8)应用程序必须选择合适大小的报文
-
5.2.2 UDP的首部格式
-
UDP校验
-
在发送端
- 填上伪首部
- 全0填充检验和字段
- 全0填充数据部分(UDP数据报要看成许多4B的字串接起来)
- 伪首部+首部+数据部分采用二进制反码求和
- 把求和求反码填入检验和字段
- 去掉伪首部,发送
-
接收端
- 填上伪首部
- 伪首部+首部+数据部分采用二进制反码求和
- 结果全1则无差错,否则丢弃数据报/交给应用层附上出差错的警告
5.3 传输控制协议TCP
5.3.1 TCP最主要特点
- TCP是面向连接的运输层协议
- TCP提供全双工通信,提供可靠交付的服务
- 每一条TCP连接只能有两个端点(endpoint),每一条TCP连接只能是点对点的
- 面向字节流
- 可靠、面向连接、时延大,适用于大文件
(1)流:流入流出进程的字节序列
(2)TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系
(3)但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样
- 注意
- TCP连接是一条虚连接而不是一条真正的物理连接。
- TC根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP发送的报文长度是应用进程给出的)
5.3.2 TCP报文段的首部格式
- 序号:在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。
- 确认号:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都已正确收到。
- 数据偏移〈首部长度):TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位,即1个数值是4B。
- 6个控制位
(1)紧急位URG: URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用。
(2)确认位ACK:ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
(3)推送位PSH:PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
(4)复位RST:RST=1时,表明TcP连接中出现严重差错,必须释放连接,然后再重新建立传输链接。
(5)同步位SYN:SYN=1时,表明是一个连接请求/连接接受报文。
(6)终止位FIN:FIN=1时,表明此报文段发送方数据已发完,要求释放连接。 - 窗口:指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量
- 检验和:检验首部+数据,检验时要加上12B伪首部,第四个字段为6。
- 紧急指针:URG=1时才有意义,指出本报文段中紧急数据的字节数。
- 选项:最大报文段长度MSS、窗口扩大、时间戳、选择确认…
5.3.3 TCP协议主要连接
- 每一条TCP连接有两个端点。
- TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口。
- TCP连接管理
- TCP连接传输的三个阶段:连接建立 —> 数据传送 —> 连接释放
- TCP连接的建立采用客户服务器方式,主动发起连接建立的应用进程叫做客户,而被动等待连接建立的应用进程叫服务器。
- TCP连接过程——三次握手
- 客户端发哦送连接请求报文段,无应用层数据
SYN=1,seq=x[随机] - 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段,允许连接,无应用层数据。
SYN=1,ACK=1,seq=y[随机],ack=x+1 - 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据。
SYN=0,ACK=1,seq=x+1,ack=y+1
- 服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使服务器易受到SYN洪泛攻击
- TCP的连接释放——四次握手
- 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。
FIN=1,seq=u - 服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了――半关闭状态。
ACK=1,seq=v,ack=u+1 - 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。
FIN=1,ACK=1,seq=w,ack=u+1 - 客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。
- 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。
- 客户端发哦送连接请求报文段,无应用层数据
5.4 可靠传输的工作原理
IP网络所提供的所提供的是不可靠传输,因此TCP必须采用适当的措施才能使两个传输之间的通信变的可靠
- 理想的传输条件:
- 传输信道不产生差错
- 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据
但是,世纪的网络一般不具备以上两个理想条件,因此,要使用一些可靠传输协议
5.4.1 停止等待协议
“停止等待”就是没发送一个分组就停止发送,等着对方给出确认信息,收到确认后再发送下一个分组
假如A是发送方,B是接收方
-
无差错情况
-
出现差错
-
确认丢失和确认迟到
- 使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
- 像上述的这种可靠传输协议常称为自动重传请求ARQ
-
要点
- 停止等待。发送方每次只发送一个分组。在收到确认后再发送下一个分组。
- 编号。对发送的每个分组和确认都进行编号。
- 自动重传请求。发送方为每个发送的分组设置一个超时计时器。若超时计时器超时,发送方会自动重传分组。
- 简单,但信道利用率太低。
5.4.2 信道利用率
- 流水线传输
- 为了提高传输效率,发送方可以不使用低效率的停止等待协议,而是采用流水线传输。
- 流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。
- 这样可使信道上一直有数据不间断地传送
5.4.3 连续ARQ协议
- 基本思想
- 发送方一次可以发出多个分组
- 使用滑动窗口协议控制发送方和接收方所能发送和接收的分组的数量和编号
- 每收到一个确认,发送方就把发送窗口向前滑动
- 接收方一般采用累积确认的方式
- 采用回退N(Go-Back-N)方法进行重传
-
累积确认
接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了。- 优点∶容易实现,即使确认丢失也不必重传。
- 缺点︰不能向发送方反映出接收方已经正确收到的所有分组的信息。
-
回退N
- 如果发送方发送了前5个分组,而中间的第3个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次。
- 这就叫做Go-back-N(回退N),表示需要再退回来重传已发送过的N个分组。
- 可见当通信线路质量不好时,连续ARQ协议会带来负面的影响
5.6 TCP可靠传输的实现
- TCP实现可靠传输的机制
-
校验
-
序号
-
确认
-
重传
(1)确认重传不分家,TCP的发送方在规定的时间内没有收到确认就要重传已发送的报文段——超时重传
* 重传时间:TCP采用自适应算法,动态改变重传时间RTTS(加权平均往返时间)
(2)冗余ACK(冗余确认)——每当比期望序号大的失序报文段到达时,发送一个冗余ACK,指明下一个期待字节的序号,又被称为—快速重传技术
-
5.6.2 流量控制
- TCP流量控制—让发送方慢点,要让接收方来得及接收:
- 利用滑动窗口实现流量控制
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
(1)TCP为每一个连接设有一个持续计时器,只要TcP连接的一方收到对方的零窗口通知,就启动持续计时器。
(2)若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。
(3)若窗口仍然是o,那么发送方就重新设置持续计时器。
- 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。
- 考虑传输效率(最大报文段长度MSS,只要达到MSS就发送报文)
- 利用滑动窗口实现流量控制
5.6.3 TCP拥塞控制
出现拥塞的条件:对资源需求的综合>可用资源
-
假定:
- 数据单方向传送,而另一个方向只传送确认
- 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度
-
已知
发送窗口=Min{接收窗口rwnd,拥塞窗口cwnd}- 接收窗口
接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量。 - 拥塞窗口
发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。
- 接收窗口
-
TCP拥塞控制——防止过多的数据注入到网络中(全局性):
-
慢开始:由小到大逐渐增大拥塞窗口数值
-
拥塞避免:拥塞窗口cwnd按线性规律缓慢增长
-
快重传:接收方每收到一个失序报文段后立即发出重复确认。
-
快恢复:当发送方连续收到三个重复确认时,把慢开始门限减半,预防网络拥塞。然后把cwnd值设为慢开始门限减半后的值,然后执行拥塞避免算法。
-
-
流量控制与拥塞控制的区别:
- 流量控制:强调的是两个端之间进行传输的数据控制
- 拥塞控制:强调的是整个网络所有网络主机数的数据控制
课后习题
5-23 主机 A 向主机B 连续发送了两个TCP 报文段,其序号分别是70 和100。试问:
(1) 第一个报文段携带了多少字节的数据?
(2) 主机 B 收到第一个报文段后发回的确认中的确认号应当是多少?
(3) 如果 B 收到第二个报文段后发回的确认中的确认号是180,试问A 发送的第二个报文段中的数据有多少字节?
(4) 如果 A 发送的第一个报文段丢失了,但第二个报文段到达了B。B 在第二个报文段到达后向A 发送确认。试问这个确认号应为多少?
解:(1)第一个报文段的数据序号是70到99,共30字节的数据。 (2)确认号应为100.(3)80字节。 (4)70
5-24 一个TCP连接下面使用256kb/s的链路,其端到端时延为128ms。经测试,发现吞吐量只有120kb/s。试问发送窗口W是多少?
(提示:可以有两种答案,取决于接收等发出确认的时机)。
解:来回路程的时延等于256ms(=128ms×2).设窗口值为X(注意:以字节为单位),假定一次最大发送量等于窗口值,且发射时间等于256ms,那么,每发送一次都得停下来期待再次得到下一窗口的确认,以得到新的发送许可.这样,发射时间等于停止等待应答的时间结果,测到的平均吞吐率就等于发送速率的一半,即8X÷(256×1000)=256×0.001X=8192所以,窗口值为8192.
5-37 在TCP的拥塞控制中,什么是慢开始、拥塞避免、快重传和快恢复算法?这里每一种算法各起什么作用? “乘法减小”和“加法增大”各用在什么情况下?
答:慢开始:
在主机刚刚开始发送报文段时可先将拥塞窗口cwnd设置为一个最大报文段MSS的数值。在每收到一个对新的报文段的确认后,将拥塞窗口增加至多一个MSS的数值。用这样的方法逐步增大发送端的拥塞窗口cwnd,可以分组注入到网络的速率更加合理。
拥塞避免:
当拥塞窗口值大于慢开始门限时,停止使用慢开始算法而改用拥塞避免算法。拥塞避免算法使发送的拥塞窗口每经过一个往返时延RTT就增加一个MSS的大小。快重传算法规定:发送端只要一连收到三个重复的ACK即可断定有分组丢失了,就应该立即重传丢手的报文段而不必继续等待为该报文段设置的重传计时器的超时。快恢复算法:当发送端收到连续三个重复的ACK时,就重新设置慢开始门限
ssthresh与慢开始不同之处是拥塞窗口 cwnd 不是设置为 1,而是设置为ssthresh若收到的重复的AVK为n个(n>3),则将cwnd设置为ssthresh若发送窗口值还容许发送报文段,就按拥塞避免算法继续发送报文段。若收到了确认新的报文段的ACK,就将cwnd缩小到ssthresh
乘法减小:是指不论在慢开始阶段还是拥塞避免阶段,只要出现一次超时(即出现一次网络拥塞),就把慢开始门限值 ssthresh设置为当前的拥塞窗口值乘以 0.5。当网络频繁出现拥塞时,ssthresh值就下降得很快,以大大减少注入到网络中的分组数。加法增大:是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个往返时间),就把拥塞窗口cwnd增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞。
5-39 TCP的拥塞窗口cwnd大小与传输轮次n的关系如下所示:
(1) 试画出如图 5-25 所示的拥塞窗口与传输轮次的关系曲线。
(2) 指明 TCP 工作在慢开始阶段的时间间隔。
(3) 指明 TCP 工作在拥塞避免阶段的时间间隔。
(4) 在第 16 轮次和第22 轮次之后发送方是通过收到三个重复的确认还是通过超时检测到丢失了报文段?
(5) 在第 1 轮次、第18 轮次和第24 轮次发送时,门限ssthresh 分别被设置为多大?
(6) 在第几轮次发送出第70 个报文段?
(7) 假定在第 26 轮次之后收到了三个重复的确认,因而检测出了报文段的丢失,那么拥塞窗口cwnd 和门限ssthresh 应设置为多大?
答:(1)拥塞窗口与传输轮次的关系曲线如图所示(课本后答案):
(2) 慢开始时间间隔:【1,6】和【23,26】
(3) 拥塞避免时间间隔:【6,16】和【17,22】
(4) 在第16轮次之后发送方通过收到三个重复的确认检测到丢失的报文段。在第22轮次之后发送方是通过超时检测到丢失的报文段。
(5)在第1轮次发送时,门限ssthresh被设置为32 在第18轮次发送时,门限ssthresh被设置为发生拥塞时的一半,即21.
在第24轮次发送时,门限ssthresh是第18轮次发送时设置的21
(6) 第70报文段在第7轮次发送出。
(7)拥塞窗口cwnd和门限ssthresh应设置为8的一半,即4. 5—40
5-41 用TCP传送512字节的数据。设窗口为100字节,而TCP报文段每次也是传送100字节的数据。再设发送端和接收端的起始序号分别选为100和200,试画出类似于图5-31的工作示意图。从连接建立阶段到连接释放都要画上。
要传送的 512 B 的数据必须划分为 6 个报文段传送,前 5 个报文段各 100 B,最后一个报文段传送 12 B。下图是双方交互的示意图。下面进行简单的解释。
【----- 进行三报文握手 -----】
报文段 #1:A 发起主动打开,发送 SYN 报文段,除以 SYN-SENT 状态,并选择初始序号 seq = 100。B 处于 LISTEN 状态。
报文段 #2:B 确认 A 的 SYN 报文段,因此 ack = 101(是 A 的初始序号加 1)。B选择初始序号 seq = 200。B 进入到 SYN-RCVD 状态。
报文段 #3:A 发送 ACk 报文段来确认报文段 #2,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 字节 的数据。值得注意的是,B 发送的所有确认报文都不消耗序号,其序号都是 seq = 201。
报文段 #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。A 进入 FIN-WAIT-1 状态。报文段 #16 的确认号 ack = 202。
报文段 #17:B发送确认报文段,确认号为 614,进入 CLOSE-WAIT 状态。由于确认报文段不消耗序号,因此报文段 #17 的序号仍然和报文段 #15 的一样,即 seq = 201
报文段 #18:B 没有数据要发送,就发送 FIN 报文段 #18,其序号仍然是 seq = 201。这个 FIN 报文会消耗一个报文。
报文段 #19:A 发送最后的确认报文段。报文段 #16 的序号是 613,已经消耗掉了。因此,现在的序号是 seq = 614。但这个确认报文段并不消耗序号。
【-----四报文挥手结束-----】
5-61 在本题中列出的 8 种情况下,画出发送窗口的变化。并标明可用窗口的位置。已知主机 A 要向主机 B 发送 3 KB 的数据。在 TCP 连接建立后,A 的发送窗口大小是 2 KB。A 的初始序号是 0。
(1) 一开始 A 发送 1 KB的数据。
(2) 接着 A 就一直发送数据,直到把发送窗口用完。
(3) 发送方 A 收到对第 1000 号字节的确认报文段。
(4) 发送方 A 再发送 850 B的数据。
(5) 发送方 A 收到 ack = 900 的确认报文段。
(6) 发送方 A收到对第 2047 号字节的确认报文段。
(7) 发送方 A把剩下的数据全部都发送完。
(8) 发送方 A 收到 ack = 3072 的确认报文段。
下图是发送窗口和可用窗口的变化情况。
(1)我们应当注意到,发送窗口 = 2 KB 就是 2∗1024=20482∗1024=2048 字节。因此,发送窗口应当是从 0 到第2047 字节为止,长度是 2048 字节。A 开始就发送了 1024 字节,因此发送窗口中左边的 1024个字节已经用掉了(窗口的这部分为灰色),而可用窗口是白色的,从第 1024 字节到第 2047 字节位置。请注意,不是到第 2048字节位置,因此第一个编号是 0 而不是 1。
(2)发送方 A一直发送数据,直到把发送窗口用完。这时,整个窗口都已用掉了,可用窗口的大小已经是零了,一个字节也不能发送了。
(3)发送方 A 收到对第 1000 字节的确认报文段,表明 A 收到确认号 ack = 1001 的确认报文段。这时,发送窗口的后沿向前移动,发送窗口从第 1001 字节(不是从第 1000 字节)到第 3048 字节(不是第 3047 字节)为止。可用窗口从第 2048 字节到第 3048字节。【注意,因为从 1001 起,3048 - 1001 + 1 = 2048】
(4)发送方 A 再发送 850 字节,使得可用窗口的后沿向前移动 850 字节,即移动到 2898 字节。现在的可用窗口从第 2898 字节到 3048 字节。
(5)发送方 A 收到 ack = 900 的确认报文段,不会对其窗口状态有任何影响。这是个迟到的确认。
(6)发送方 A 收到对第2047 号字节的确认报文段。A 的发送窗口再向前移动。现在的发送窗口从第 2048 字节开始到第 4095 字节。可用窗口增大了,从第 2898 字节第 4095 字节。
(7)发送方 A 把剩下的数据全部发送完。发送方 A 共有 3 KB(即 3072字节)的数据,其编号从 0 到 3071。因此现在的可用窗口变小了,从第 3072 字节到第 4095 字节。
(8)发送方 A 收到ack = 3072 的确认报文段,表明序号在 3071 和这以前的报文段都收到了,后面期望收到的报文段的序号熊 3072开始。因此新的发送窗口的位置又向前移动,从第 3072 号字节到第 5119 号字节。整个发送窗口也就是可用窗口。
74.流量控制和拥塞控制的最主要的区别是什么?发送窗口的大小取决于流量控制还是拥塞控制?
简单地说,流量控制是在一条 TCP 连接中的接收端才用的措施,用来限制对方(发送端)发送报文的速率,以免在接收端来不及接收。流量控制只控制一个发送端。
拥塞控制是用来控制 TCP 连接中发送端发送报文段的速率,以免使互联网中的某处产生过载。拥塞控制可能会同时控制许多个发送端,限制它们的发送速率。不过每一个发送端只知道自己应当怎样调整发送速率,而不知道在互联网中还有哪些主机被限制了发送速率。
我们知道,发送窗口的上限值是 Min [rwnd, cwnd],即发送窗口的数值不能超过接收窗口和拥塞窗口中娇小的一个。接收窗口的大小体现了接收端对发送端施加的流量控制,而拥塞窗口的大小则是整个互联网的负载情况对发送端施加的拥塞控制。因此,当接收窗口小于拥塞窗口时,发送窗口的大小取决于流量控制,即取决于接收端的接收能力。但当拥塞窗口小于接收窗口时,则发送窗口的大小取决于拥塞控制,即取决于整个网络的拥塞状况。
6 应用层
6.1 网络应用模型
6.1.1 应用层概述
应用层对应用程序的通信提供服务
- 应用层协议的定义:
- 应用进程交换的报文类型,请求还是响应?
- 各种报文类型的语法,如报文中的各个字段及其详细描述。
- 字段的语义,即包含在字段中的信息的含义。
- 进程何时、如何发送报文,以及对报文进行响应的规则。
应用层功能:文件传输、访问和管理、虚拟终端、查询服务和远程作业登录
应用层的重要协议:FTP、SMTP、POP3、HTTP、DNS
6.1.2 网络应用模型
- 客户/服务器模型(C/S)模型
应用层的许多协议都是基于客户服务器方式- 服务器:提供计算服务的设备
- 永久性提供服务
- 永久性访问地址/域名
- 客户机:请求计算服务的主机
- 与服务器通信,使用服务器提供的服务
- 间歇性接入网络
- 可能使用动态IP地址
- 不与其他客户机直接通信
- 应用:Web、文件传输FTP、远程登录、电子邮件
- 服务器:提供计算服务的设备
- P2P模型
不存在永远在线的服务器
每个主机既可以提供服务,也可以请求服务任意端系统/节点之间可以直接通讯
节点间歇性接入网络
节点可能改变IP地址
可扩展性好
网络健壮性强
6.2 域名解析系统DNS
-
域名
- 互联网采用了层次树状结构的命名方法
- 任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名
- 域名的结构由标号序列组成,个标号之间用点隔开
……三级域名.二级域名.顶级域名 - 域名只是逻辑概念,并不代表计算机所在的物理地点
-
通用顶级域名gTLD
最早的顶级域名是∶
1. .com(公司和企业)
3. .net(网络服务机构
4. .org_(非赢利性组织)
5. .edu(美国专用的教育机构)
6. .gov(美国专用的政府部门)
7. .mil(美国专用的军事部门)
8. .int(国际组织)
-
域名服务器
-
名字到 IP 地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器。
-
目的:为每一级的域名都设置一个对应的域名服务器,数量太多,效率低下。因此DNS采用划分区的办法
-
区:一个服务器所负责的范围
-
权限域名服务器:每一个区都设有,用来保存区中所有主机的域名到IP地址的映射
-
互联网上的DNS域名服务器树状结构:
-
-
域名服务器分类:
-
根域名服务器:是层次最高的域名服务器,也是最重要的。所有根域名服务器都知道所有顶级域名服务器的域名和IP地址。任何本地域名服务器只要自己无法解析,就首先求助于根域名服务器
-
顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答
-
权限域名服务器:负责一个区的域名服务器。当权限域名服务器还不能给出回答时,就会告诉发出查询请求的DNS客户,下一步应找哪一个权限域名服务器
-
本地域名服务器:并不属于域名服务器层次结构,但很重要。当主机发出DNS查询请求时,这个查询请求报文发给本地域名服务器
-
-
提高域名服务器可靠性:
DNS域名服务器把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其余是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器就可以保证DNS的查询工作不会中断
- 域名的解析过程:
- 域名的解析过程
-
主机向本地域名服务器查询,采用递归查询:如果本地域名服务器不知道查询域名的IP,则本地域名服务器以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步查询。因此,递归查询返回的查询结构是查询的IP地址或报错,即无法查询到IP
-
本地域名服务器向根域名服务器查询,采用迭代查询:当根域名服务器收到本地域名服务器发出的查询请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器下一步应向哪个域名服务器查询,然后让本地域名服务器进行后续查询。根域名服务器通常把自己知道的顶级域名服务器的IP告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询
-
6.3 文件传送协议FTP
提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力
FTP是基于客户/服务器(C/S)的协议。
用户通过一个客户机程序连接至在远程计算机上运行的服务器程序。
依照FTP协议提供服务,进行文件传送的计算机就是FTP服务器。
连接FTP服务器,遵循FTP协议与服务器传送文件的电脑就是FTP客户端。
-
FTP工作原理
- 登陆—ftp地址 用户名&密码
- 匿名登录:互连网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
Anonymous(匿名文件传输)能够使用户与远程主机建立连接并以匿名身份从远程主机上拷贝文件,而不必是该远程主机的注册用户。用户使用特殊的用户名“anonymous”登录FTP服务,就可访问远程主机上公开的文件。
- 匿名登录:互连网中有很大一部分FTP服务器被称为“匿名”(Anonymous)FTP服务器。这类服务器的目的是向公众提供文件拷贝服务,不要求用户事先在该服务器进行登记注册,也不用取得FTP服务器的授权。
- FTP使用TCP实现可靠传输。
- 登陆—ftp地址 用户名&密码
-
FTP工作流程
FTP使用客户服务器方式,一个FTP服务器进程可同时为多个客户进程提供服务,FTP的服务进程分为两大部分:-
主进程,负责接受新的请求
-
主进程的工作步骤:
(1)打开熟知端口(21),使客户进程能够连接(2)等待客户进程发出连接请求
(3)启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些子进程
(4)回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的
-
-
若干从属进程,负责处理单个请求
-
-
FTP的两个TCP连接:
-
控制连接:在整个会话期间一直打开,FTP客户发出的传送请求,通过控制连接发送给服务器端;端口号21
-
数据连接:用于传输文件;端口号20
-
由于FTP使用两个不同的端口号,所以数据连接与控制连接不会发生混乱
-
服务器端控制进程收到FTP客户发来的文件传输请求后,就创建数据传送进程和数据连接,用来连接客户端和服务端的数据传送进程
-
6.4 简单文件传送协议TFTP
TFTP:是很小且易于实现的文件传送协议,使用客户服务器方式,但使用UDP数据报,因此,TFTP需要有自己的差错改正措施,TFTP只支持文件传输而不支持交互。TFTP没有庞大的命令集,没有列目录功能,不能对用户进行身份识别
优点:TFTP可用于UDP环境;TFTP代码所占的内存小
-
TFTP的主要特点:
(1)每次传送的数据报文中有512字节的数据,但最后一次可不足512字节
(2)数据报文按序编号,从1开始
(3)支持ASCII码或二进制传送
(4)可对文件进行读或写
(5)使用很简单的首部
-
TFTP工作流程:
TFTP客户进程发送一个请求报文给TFTP服务器进程,其熟知端口号为69。TFTP服务器进程选择一个新的端口和TFTP客户进程通信。若文件长度恰好为512字节整倍数,则文件传送完毕后,还必须在最后发送一个只含首部而无数据的数据报;若不是整倍数,则最后一个报文一定不足512字节,可作为文件结束的标志
6.5 万维网WWW
6.5.1 万维网概述
万维网:是一个大规模联机式的信息储存所,用连接的方法能非常方便的从互联网上的一个站点访问另一个站点,从而主动按需获得信息;是一个分布式的超媒体系统,是超文本系统的扩充
页面:在客户程序(浏览器)主窗口上显示出的万维网文档就是页面
统一资源定位符URL:标志万维网上各种文档,使每个文档在互联网范围具有唯一标识符URL
超文本传送协议HTTP:是一个应用层协议,使用TCP进行可靠传送
6.5.2 统一资源定位符URL
URL作用:用来表示从互联网上得到的资源位置和访问这些资源的方法
-
URL的格式:<协议>://<主机>:<端口>/<路径>
-
协议:指出使用什么协议来获得该文档,常用HTTP或FTP
-
主机:指出文档在哪台主机上,主机就是指该主机在互联网上的域名
-
端口和路径:为了进一步定位,有事可省略
-
6.5.3 超文本传送协议HTTP
HTTP协议定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。
-
用户浏览页面方法:
- 输入URL
- 点击超链接
-
HTTP的主要特点:
-
HTTP本身是无连接的:虽然使用TCP连接,但通信双方在交换HTTP报文前不需要建立HTTP连接
-
HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同
-
请求一个万维网文档所需时间:是该文档的传输时间+两倍往返时间RTT
-
HTTP协议的连接方式
-
超文本传输协议HTTP一报文结构
HTP报文是面向文本的,因此在报文中的每一个字段都是一些ASCII码串。
- HTTP报文分类:请求报文、响应报文
- HTTP报文分类:请求报文、响应报文
-
HTTP/1.0的主要缺点:每请求一个文档就要有两倍的RTT的开销;这种非持续连接会使万维网服务器负担很重
HTTP/1.1的改进:使用了持续连接;服务器在发送响应后仍在一段时间内保持连接,使同一个客户能继续在这条连接上传送后续HTTP请求报文和响应报文
-
HTTP/1.1持续连接的两种工作方式:
-
非流水线方式:客户在收到响应报文之后才能继续发送
-
流水线方式:客户收到响应报文之前也可以继续发送
-