概述
计算机网络复习
作者:why will kill it
第一章 概述
internet和Internet的区别
- 以小写字母“i”开始的internet(互联网)是一个通用名词,它泛指由多个计算机网络互连而成的网络
- 以大写字母“I”开始的Internet(互联网或因特网)则是一个专用名词,它指当前全球最大的、开放的、由众多网络相互连接而成的特定计算机网络,它采用TCP/IP协议族作为通信的规则,且其前身是美国的ARPANET
互联网的组成
- 边缘部分:由所有连接在互联网上的主机组成。这部分是用户直接使用的,用来进行通信和资源共享
- 核心部分:由大量网络和连接这些网络的路由器组成。这部分是为边缘部分提供服务的。
端系统之间通信的两种方式
- 客户-服务器方式(C/S方式)
- 对等方式(P2P方式)
- 本质上看仍然是使用客户服务器方式,只是对等连接中的每一个主机既是客户又是服务器
典型的交换技术
- 电路交换
- 电话增加时就需要使用交换机来完成交换任务
- 分组交换
- 分组交换则采用存储转发技术
- 在发送端,先把较长的报文划分成较短的、固定长度的数据段
- 每一个数据段前面添加上首部构成分组
- 分组交换网以分组作为数据传输单元
- 以此把各分组发送到接收端
- 问题
- 分组在各结点存储转发时需要排队,这就会造成一定的时延
- 分组必须携带的首部也造成了一定的开销
- 报文交换
网络的分类
-
按照网络的作用范围进行分类
- 广域网WAN:作用范围通常为几十到几千公里。
- 城域网MAN:作用距离约为5~50公里
- 局域网LAN:局限在较小的范围(如1公里左右)
- 个人局域网PAN:范围很小,大约在10米左右
-
按照网络的使用者进行分类
- 公用网
- 专用网
-
用来把用户接入到互联网的网络
- 接入网AN
时延
- 发送时延
- 传播时延
- 排队时延
- 处理时延
- 总时延等于四者之和
网络协议的三个组成要素
- 语法:数据与控制的结构或格式
- 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
- 同步:事件实现顺序的详细说明
具有五层协议的体系结构
- TCP/IP是四层体系结构:应用层、运输层、网际层和网络接口层
- 我们在平时使用的是五层体系结构:应用层、运输层、网络层、数据链路层和物理层
- PDU:协议数据单元
- SAP:服务访问点
- 应用层:HTTP SMTP DNS RTP
- 运输层:TCP UDP
- 网际层:IP
- 网络接口层:
第二章 物理层
常用术语
- 数据:运送消息的实体
- 信号:数据的电气或电磁的表现
- 模拟信号:代表消息的参数的取值是连续的
- 数字信号:代表消息的参数的取值是离散的
- 码元:在使用时间域的波形表示数字信号时,代表不同离散数值的基本波形
- 信道:一般用来表示向某一个方向传送消息的媒体
- 单向通信:只能有一个方向的通信而没有反方向的交互
- 双向交替通信:通信的双方都可以发送消息,但不能双方同时发送
- 双向同时通信:通信的双方可以同时发送和接收消息
有关信道的几个基本概念
- 基带信号:来自信源的信号。像计算机输出的代表各种文字或图像文件的数据信号都属于基带信号
- 基带信号往往包含有较多的低频成分,甚至有直流成分,而许多信道并不能传输这种低频分量或直流分量。因此必须对基带信号进行调制
- 基带调制:进队基带信号的波形进行变换,使它能够与信道特性相适应。变换后的信号仍然是基带信号。把这种过程称为编码
- 带通调制:使用载波进行调制,把基带信号的频率范围搬移到较高的频段,并转换为模拟信号,这样就能够更好地在模拟信道中传输
- 带通信号:经过载波调制后的信号
常用编码方式
- 不归零制:正电平代表1,负电平代表0
- 归零制:正脉冲代表1,负脉冲代表0
- 曼彻斯特编码:位周期中心地向上跳变代表0,位周期中心的向下跳代表1。但也可反过来定义。
- 差分曼彻斯特编码:在每一位的中心处始终都有跳变。位开始边界有跳变代表0,而位开始边界没有跳变代表1
信噪比
信道的极限信息传输速率C可表达为:
物理层下面的传输媒体
- 导引型传输媒体
- 双绞线
- 最常用的传输媒体
- 模拟传输和数字传输都可以使用双绞线,其通信距离一般为几到十几公里
- 屏蔽双绞线STP
- 带金属屏蔽层
- 无屏蔽双绞线UTP
- 同轴电缆
- 同轴电缆具有很好的抗干扰特性,被广泛用于传输较高速率的数据
- 同轴电缆的带宽取决于电缆的质量
- 50 Ω Omega Ω同轴电缆——LAN/数字传输常用
- 75 Ω Omega Ω同轴电缆——有线电视/模拟传输常用
- 光纤
-
光纤是光纤通信的传输媒体
-
由于可见光的频率非常高,约为 1 0 8 10^8 108MHz的量级,因此一个光纤通信系统的传输带宽远远大于目前其他各种传输媒体的带宽
-
多模光纤
-
单模光纤
-
优点:
- 通信容量非常大
- 传输损耗小,中继距离长
- 抗雷电和电磁干扰性能好
- 无串音干扰,保密性好
- 体积小,重量轻
-
- 双绞线
- 非导引型传输媒体
频分复用
- 将整个带宽分为多份,用户在分配到一定的频带后,在通信过程中自始至终都占用这个频带
- 频分复用的所有用户在同样的时间占用不同的带宽资源(请注意,这里的带宽是频率带宽而不是数据的发送速率)
时分复用
- 时分复用则是将时间划分为一段段等长的时分复用帧(TDM帧)每一个时分复用的用户在每一个TMD帧中占用固定序号的时隙
- 每一个用户所占用的时隙是周期性地出现(其周期就是TDM帧地长度)的
- TDM信号也称为等时信号
- 时分复用的所有用户在不同的时间占用同样的频带宽度
统计时分复用
- STDM帧不是固定分配时隙,而是按需动态地分配时隙。因此统计时分复用可以提高线路的利用率
波分复用
- 波分复用就是光的频分复用。使用一根光纤来同时传输多个光载波信号
码分复用
- 常用的名词是码分多址CDMA
- 各用户使用经过特殊挑选的不同码型,因此彼此不会造成干扰
- 这种系统发送的信号具有很强的抗干扰能力,其频谱类似于白噪声,不易被敌人发现
CDMA的重要特点
- 每个站分配的码片序列不仅必须各不相同,并且还必须互相正交
- 在实用的系统中是使用伪随机码序列
宽带接入技术
-
用户要连接到互联网,必须先连接到某个ISP
-
在互联网的发展初期,用户都是利用电话的用户线通过调制解调器连接到ISP的,电话用户线接入到互联网的速率最高仅达到56kbit/s
-
美国联邦通信委员会FCC原来认为只要双向速率之和超过200kbit/s就是宽带。但2015年重新定义为:
-
宽带下行速率要达到25Mbit/s
-
宽带上行速率要达到3Mbit/s
-
从宽带接入的媒体来看,可以划分为两大类
- 有线宽带接入
- 非对称数字用户线ADSL技术就是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带业务
- 标准模拟电话信号的频带被限制在300~3400Hz的范围内,但用户线本身实际可通过的信号频率仍然超过1MHz
- ADSL技术就把0~4kHz低端频谱留给传统电话使用,而把原来没有被利用的高端频谱留给用户上网使用
- DSL就是数字用户线的缩写
- 无线宽带接入
- 有线宽带接入
ADSL的传输距离
- ADSL的传输距离取决于数据率和用户线的线径
- ADSL所能得到的最高数据传输速率与实际的用户线上的信噪比密切相关
ADSL的特点
- 上行和下行带宽做成不对称的。上行指的是从用户到ISP,而下行指从ISP到用户
- ADSL在用户线的两端各安装一个ADSL调制解调器
- 我国目前采用的方案是离散多音调DMT调制技术
- 这里的”多音调"就是“多载波”或“多子信道”的意思
光纤同轴混合网(HFC网)
-
HFC网是在目前覆盖面很广的有线电视网CATV的基础上开发的一种居民宽带接入网
-
HFC网出可传送CATV外,还提供电话、数据和其他宽带交互型业务。
-
现有的CATV网是树型拓扑结构的同轴电缆网络,它采用模拟技术的频分复用对电视节目进行单向传输
-
HFC网对CATV网进行了改造
-
HFC网将原CATV网中的同轴电缆主干部分改换成光纤,并使用模拟光纤技术
-
在模拟光纤中采用光的振幅调制AM,这比使用数字光纤更为经济
-
模拟光纤从头端连接到光纤结点,即光分配结点ODN。在光纤结点光信号被转换为电信号。在光纤节点以下就是同轴电缆
FTTx技术
- FTTx是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式
- FTTx表示Fiber to the ,例如:
- 光纤到户FTTH
- 光纤到大楼FTTB
- 光纤到路边FTTC
第三章 数据链路层
数据链路层使用的信道
- 点对点信道
- 广播信道
数据链路和帧
-
链路:是一条无源的点到点的物理线路段,中间没有任何其他的交换结点
- 一条链路只是一条通路的一个组成部分
-
数据链路(data link)除了物理线路外,还必须有通信协议来控制这些数据的传输。若把实现这些协议的硬件和软件加到链路上,就构成了数据链路
三个基本问题
- 封装成帧
- 封装成帧就是在一段数据的前后分别添加首部和尾部,然后就构成了一个帧
- 首部和尾部的一个重要作用就是进行帧定界
- 透明传输
- 解决方法:字节填充或字符填充
- 发送端的数据链路层在数据中出现控制字符“SOH”或“EOT”的前面插入一个转义字符“ESC”
- 接受端的数据链路层在将数据送往网络层之前删除插入的转义字符
- 如果转义字符也出现在数据当中,那么应在转义字符前面插入一个转义字符ESC。当接收端收到连续的两个转义字符时,就删除其中前面的一个。
- 透明指某一个实际存在的事务看起来却好像不存在一样
- 差错控制
- 在一段时间内,传输错误的比特占所传输比特总数的比率称为误码率BER
- 误码率与信噪比有很大的关系
- 为了保证数据传输的可靠性,在计算机网络传输数据时,必须采用各种差错检测措施
- 在数据链路层传送的帧中,广泛使用了循环冗余检验CRC的检错技术
冗余码的计算
接收端对收到的每一帧进行CRC检验
- 若得出的余数R=0,则判定这个帧没有差错,就接受
- 若余数R不等于0,则判定这个帧有差错,就丢弃
- 但这种检测方法并不能确定究竟是哪一个或哪几个比特出现了差错
- 只要经过严格的挑选,并使用位数足够多的除数P,那么出现检测不到的差错的概率就很小很小
帧检验序列FCS
- 在数据后面添加上的冗余码称为帧检验序列FCS
- 循环冗余检验CRC和帧检验序列FCS并不等同
- CRC是一种常用的检错方法,而FCS是添加在数据后面的冗余码
- FCS可以用CRC这种方法得出,但CRC并非用来获得FCS的唯一方法
点对点协议PPP
- 简单:这是首要的要求
- 封装成帧:必须规定特殊的字符作为帧定界符
- 透明性:必须保证数据传输的透明性
- 多种网络层协议:能够在同一条物理链路上同时支持多种网络层协议
- 多种类型链路:能够在多种类型的链路上运行
- 差错检测:能够对接受端收到的帧进行检测,并立即丢弃有差错的帧
- 检测连接状态:能够及时自动检测出链路是否处于正常工作状态
- 最大传送单元:必须对每一种类型的点对点链路设置最大传送单元MTU的标准默认值,促进各种实现之间的互操作性
- 网络层地址协商:必须提供一种机制使通信的两个网络层实体能够通过协商知道或能够配置彼此的网络层地址
- 数据压缩协商:必须提供一种方法来协商使用数据压缩算法
PPP协议不需要的功能
- 纠错
- 流量控制
- 序号
- 多点线路
- 半双工或单工链路
PPP协议的组成
- 一个将IP数据报封装到串行链路的方法
- 链路控制协议LCP
- 网络控制协议NCP
PPP协议的帧格式
- PPP帧的首部和尾部分别为4个字段和2个字段
- 标志字段F=0x7E
- 地址字段A只置为0xFF。地址字段实际上并不起作用
- 控制字段C通常置为0x03
- PPP使面向字节的,所有PPP帧的长度都是整数字节
零比特填充
- PPP协议用在SONET/SDH链路时,使用同步传输(一连串的比特连续传送)这时PPP协议采用零比特填充方法来实现透明传输
- 在发送端,只要发现有5个连续1,则立即填入一个0
- 接收端对帧中的比特流进行扫描。每当发现5个连续1时,就把这5个连续1后的一个0删除
PPP协议的状态图
【PPP还要多看看】
局域网的数据链路层
-
局域网的最主要的特点是:
- 网络为一个单位所拥有
- 地理范围和站点数目均有限
-
局域网具有如下主要优点:
- 具有广播功能,从一个站点可很方便地访问全网。局域网上的主机可共享连接在局域网上的各种硬件和软件资源
- 便于系统的扩展和逐渐地演变,各设备的位置可灵活调整和改变。
- 提高了系统的可靠性、可用性和残存性
局域网的拓扑结构
共享信道带来的问题
以太网的两个标准
- DIX Ethernet V2
- IEEE 802.3
数据链路层的两个子层
- 逻辑链路控制LLC子层
- 媒体接入控制MAC子层
CSMA/CD协议
-
为了实现一对一通信,将接收站的硬件地址写入帧首部中的目的地址字段中。仅当数据帧中的目的地址与适配器的硬件地址一致时,才能接受这个数据帧
-
总线也有缺点,若多台计算机或多个站点同时发送时,会产生发送碰撞或冲突,导致发送失败
CSMA/CD
- 含义:载波监听多点接入/碰撞检测
- 多点接入表示许多计算机以多点接入的方式连接在一根总线上
- 载波监听是指每一个站在发送数据之前要先检测一下总线上是否有其他计算机在发送数据,如果有,则暂时不要发送数据,以免发生碰撞
- 总线上没有什么载波。因此,载波监听就是用电子技术检测总线上有没有其他计算机发送的数据信号
CSMA/CD协议工作流程
最短有效帧长
- 如果发生冲突,就一定是在发送的前64字节之内。
- 由于一检测到冲突就立即中止发送,这时已经发送出去的数据一定小于64字节
- 以太网规定了最短有效帧长为64字节,凡长度小于64字节的帧都是由于冲突而异常中止的无效帧
使用集线器的星型拓扑
- 采用双绞线的以太网采用星型拓扑,在星型的中心则增加了一种可靠性非常高的设备,叫做集线器
星形以太网10BASE-T
- 使用无屏蔽双绞线,采用星型拓扑
- 每个站需要用两对双绞线,分别用于发送和接受
- 双绞线的两端使用RJ-45插头
- 集线器使用了大规模集成电路芯片,因此集线器的可靠性提高
- 10BASE-T的通信距离稍短,每个站到集线器的距离不超过100m
集线器的一些特点
- 集线器是使用电子器件来模拟实际电缆线的工作,因此整个系统仍然像一个传统的以太网那样运行
- 使用集线器的以太网在逻辑上仍是一个总线网,各工作站使用的还是CSMA/CD,并共享逻辑上的总线
- 集线器很像一个多接口的转发器,工作在物理层
- 集线器采用了专门的芯片,进行自适应串音回波抵消,减少了近端串音
MAC层的硬件地址
-
在局域网中,硬件地址又称为物理地址,或MAC地址
-
802 标准所说的“地址”严格地讲应当是每一个站的“名字”或“标识符”
-
但鉴于大家都早已习惯了将这种48位的名字称为地址,所以本书也采用这种习惯用法,尽管这种说法并不太严格
-
所有48位都为1时,为广播地址。只能作为目的地址使用
适配器检查MAC地址
-
适配器收到MAC帧就用硬件检查MAC帧中的MAC地址。
- 如果是发往本站的帧则收下,然后再进行其他的处理
- 否则就将此帧丢弃,不再进行其他的处理
-
发往本站的帧包括以下三种帧
- 单播(一对一)
- 广播 (一对全体)
- 多播(一对多)
MAC帧的格式
- 最常用的MAC帧的格式是以太网V2的格式
在物理层扩展以太网
-
使用光纤扩展
-
使用集线器扩展
在数据链路层扩展以太网
- 扩展以太网更常用的方法是在数据链路层进行
- 早期使用网桥,现在使用以太网交换机
以太网交换机的特点
-
以太网交换机实质上就是一个多接口的网桥
- 通常都有十几个或更多的接口
-
每个接口都直接与一个单台主机或另一个以太网交换机相连,并且一般都工作在全双工方式
-
以太网交换机具有并行性
- 能同时连通多对接口,使多对主机能同时通信
以太网交换机的优点
第四章 网络层
网际协议IP
- 网际协议IP是TCP/IP体系中两个最主要的协议之一
- 与IP协议配套使用的还有三个协议
- 地址解析协议ARP
- 网际控制报文协议ICMP
- 网际组管理协议IGMP
虚拟互连网络
- 将网络互联并能够互相通信,会遇到许多问题需要解决
- 不同的寻址方案
- 不同的最大分组长度
- 不同的网络接入机制
- 不同的超时控制
- 不同的差错恢复方法
- 不同的状态报告方法
- 不同的路由选择技术
- 不同的用户接入控制
- 不同的服务
- 不同的管理与控制方式等
使用一些中间设备进行互连
- 将网络互相连接起来要使用一些中间设备
- 中间设备又称为中间系统或中继系统
- 有以下五种不同的中间设备
- 物理层中继系统:转发器
- 数据链路层中继系统:网桥
- 网络层中继系统:路由器
- 网桥和路由器的混合物:桥路器
- 网络层以上的中继系统:网关
分类的IP地址
- 在TCP/IP体系中,IP地址是一个最基本的概念
- 在本部分重点学习:
- IP地址及其表示方法
- 常用的三种类别的IP地址
IP地址的便知编址方法
-
分类的IP地址。这是最基本的编址方法,在1981年就通过了相应的标准协议
-
这种两级的IP地址结构如下:
-
这种两级的IP地址可以记为:
-
点分十进制记法
-
IP地址的指派范围
-
一般不使用的特殊IP地址
-
-
子网的划分。这是对最基本的编址方法的改进,其标准在1985年通过
-
构成超网。这是比较新的无分类编址方法。1993年提出后很快就得到推广应用
IP地址的一些重要特点
- IP地址是一种分等级的地址结构
- 实际上IP地址是标志一个主机(或路由器)和一条链路的接口
- 用转发器或网桥连接起来的若干个局域网仍为一个网络,因此这些局域网都具有同样的网络号net-id
- 所有分配到网络号net-id的网络,无论是范围很小的局域网,还是可能覆盖很大地理范围的广域网,都是平等的
互联网中的IP地址
IP地址与硬件地址
-
IP地址与硬件地址是不同的地址
-
从层次的角度看,
- 硬件地址是数据链路层和物理层使用的地址
- IP地址是网络层和以上各层使用的地址,是一种逻辑地址(称IP地址是逻辑地址是因为IP地址是用软件实现的)
-
路由器只根据目的站的IP地址的网络号进行路由选择
地址解析协议ARP
-
已经知道了一个机器的IP地址,如何找出其相应的硬件地址
-
地址解析协议ARP就是用来解决这样的问题的
-
当主机A欲向本局域网上的某个主机B发送IP数据报时,就先在其ARP高速缓存中查看有无主机B的IP地址
- 如有,就可查出其对应的硬件地址,再将此硬件地址写入MAC帧,然后通过局域网将该MAC帧发往此硬件地址
- 如没有,ARP进程在本局域网上广播发送一个ARP请求分组。收到ARP响应分组后,将得到的IP地址到硬件地址的映射写入ARP告诉缓存
ARP高速缓存的作用
- 存放最近获得的IP地址到MAC地址的绑定,以减少ARP广播的数量
- 为了减少网络上的通信量,主机A在发送其ARP请求分组时,就将自己的IP地址到硬件地址的映射写入ARP请求分组
- 当主机B收到A的ARP请求分组时,就将主机A的这一地址映射写入主机B自己的ARP高速缓存中。这对主机B以后向A发送数据报时就更方便了
使用ARP的四种典型情况
IP数据报的格式
-
一个IP数据报由首部和数据两部分组成
-
首部的前一部分是固定长度,共20字节,是所有IP数据报必须具有的
-
在首部的固定部分的后面是一些可选字段,其长度是可变的
-
版本:占4位,指IP协议的版本
-
首部长度:占4位,克表示的最大数值是15个单位,因此IP的首部长度的最大值是60字节
-
区分服务:占8位,用来获得更好的服务
-
总长度:占16位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为65535字节,总长度必须不超过最大传送单元MTU
-
标识:占16位,它是一个计数器,用来产生IP数据报的标识
-
标志:占3位,目前只有前两位有意义。标志字段的最低位是MF。MF=1表示后面还有分片。MF=0表示最后一个分片。标志字段中间的一位是DF,只有当DF=0时才允许分片
-
片偏移:占13位,指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以8个字节为偏移单位
例4-1
-
生存时间:占8位,记为TTL指示数据报在网络中可通过的路由器数的最大数
-
协议:占8位,指出此数据报携带的数据使用何种协议,以便目的主机的IP层将数据部分上交给那个处理过程
-
首部检验和:占16位,只检验数据报的首部,不检验数据部分。这里不采用CRC检验码而采用简单的计算方法
-
源地址和目的地址都占据4个字节
IP层转发分组的流程
-
假设:有四个A类网络通过三个路由器连接在一起。每一个网络上都可能有成千上万个主机
-
可以想象,若按目的主机号来制作路由表,每一个路由表就有4万个项目,即4万行,则所得出的路由表就会过于庞大
-
但若按主机所在的网络地址来制作路由表,那么每一个路由器中的路由表就只包含4个项目,这样就可使路由表大大简化
-
在路由表中,对每一条路由,最主要的是(目的网络地址,下一跳地址)
查找路由表
根据目的网络地址就能确定下一跳的路由器,这样做的结果是:
- IP数据报最终一定可以找到目的主机所在的网络上的路由器
- 只有到达最后一个路由器时,才试图向目的主机进行直接交付
特定主机路由
- 虽然互联网所有的分组转发都是基于目的主机所在的网络,但在大多数情况下都允许有这样的特例,即为特定的目的主机指明一个路由
- 采用特定主机路由可使网络管理人员能更方便地控制网络和测试网络,同时也可在需要考虑某种安全问题时采用这种特定主机路由
默认路由
- 路由器还可采用默认路由以减少路由表所占用的空间和搜索路由表所用的时间
- 这种转发方式在一个网络只有很少的对外连接时是很有用的
- 默认路由在主机发送IP数据报时往往更能显示出它的好处
- 如果一个主机连接在一个小网络上,而这个网络只用一个路由器和互联网连接,那么在这种情况下使用默认路由是非常合适的
必须强调指出
- IP数据报的首部中没有地方可以用来指明”下一跳路由器的IP地址“
- 当路由器收到待转发的数据报,不是将下一跳路由器的IP地址填入IP数据报,而是送交下层的网络接口软件
- 网络接口软件使用ARP负责将下一跳的路由器的IP地址转换成硬件地址,并将此硬件地址放在链路层的MAC帧的首部,然后根据这个硬件地址找到下一跳路由器
路由器分组算法
关于路由表
- 路由表没有给分组指明到某个网站的完整路径
- 路由表指出,到某个网络应先到某个路由器
- 在到达下一跳路由器后,再继续查找其路由表,知道再下一步应当到哪一个路由器
- 这样一步一步地查找下去,直到最后到达目的网络
从两级IP地址到三级IP地址
在早期ARPANET的早期,IP地址的设计确实不够合理
- IP地址空间的利用率有时很低
- 给每一个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
- 两级的IP地址不够灵活
三级IP地址
- 从1985年起在IP地址中又增加了一个子网号字段,使两级的IP地址变成为三级的IP地址
- 这种做法叫做划分子网
- 划分子网已成为互联网的正式标准协议
划分子网的基本思路
- 划分子网纯属一个单位内部的事情,单位对外仍然表现为没有划分子网的网络
- 从主机号借用若干个位作为子网号subnet-id,而主机号host-id也就相应减少了若干个位
一个未划分子网的B类网络145.13.0.0
划分为三个子网后对外仍是一个网络
划分子网后变成了三级结构
-
优点
- 减少了IP地址的浪费
- 使网络的组织更加灵活
- 更便于维护和管理
-
划分子网纯属一个单位内部的事情,对外部网络透明,对外仍然表现没有划分子网的一个网络
子网掩码
- 从一个IP数据报的首部并无法判断源主机或目的主机所连接的网络是否进行了子网划分
- 使用子网掩码可以找出IP地址中的子网部分
规则:
- 子网掩码长度为32位
- 子网掩码左边部分的一连串1,对应于网络号和子网号
- 子网掩码右边部分的一连串0,对应于主机号
IP地址的各字段和子网掩码
子网掩码是一个重要属性
- 子网掩码是一个网络或一个子网的重要属性
- 路由器在和相邻路由器交换路由信息时,必须把自己所在网络的子网掩码告诉相邻路由器
- 路由器的路由表中的每一个项目,除了要给出目的网络地址外,还必须同时给出该网络的子网掩码
- 若一个路由器连接在两个子网上,就拥有两个网络地址和两个子网掩码
B类地址的子网划分选择
使用子网时分组的转发
网络前缀
划分子网在一定程度上缓解了互联网在发展中遇到的困难。然而在1992年互联网仍然面临三个必须尽早解决的问题:
- B类地址在1992年已分配了近一半,眼看就要在1994年3月全部分配完毕
- 互联网主干网上的路由表中的项目数急剧增长
- 整个IPv4的地址空间最终将全部耗尽
无分类域间路由选择CIDR
- CIDR消除了传统的A类、B类、C类地址以及划分子网的概念,因而可以更加有效地分配IPv4的地址空间
- CIDR使用各种长度的网络前缀来代替分类地址中的网络号和子网号
- IP地址从三级编址又回到了两级编址
无分类的两级编址
-
无分类的两级编址的记法是:
-
CIDR使用斜线记法,它又称为CIDR记法,即在IP地址面加上一个斜线”/“,然后写上网络前缀所占的位数。例如:220.78.168.0/24
CIDR地址块
- CIDR把网络前缀都相同的连续IP地址组成CIDR地址块
- 128.14.32.0/20表示地址块具有
2
12
2^{12}
212个地址
- 这个地址块的起始地址是128.14.32.0
- 在不需要指出地址块的起始地址时,也可将这样的地址块简称为“/20地址块”
- 128.14.32.0/20地址块的最小地址:128.14.32.0
- 128.14.32.0/20地址块的最大地址:128.14.47.255
- 全0和全1的主机号地址一般不使用
路由聚合
- 一个CIDR地址块可以表示很多地址,这种地址的聚合常称为路由聚合,它使得路由表中的一个项目可以表示很多个原来传统分类地址的路由
- 路由聚合有利于减少路由器之间的路由选择信息的交换,从而提高了整个互联网的性能。
- 路由聚合也称为构成超网
- CIDR虽然不适用子网了,但仍然使用掩码这一名词
- 对于/20地址块,它的掩码是20个连续的1。斜线记法中的数字就是掩码中1的个数
CIDR地址块划分举例
最长前缀匹配
- 使用CIDR时,路由表中的每个项目由网络前缀和下一跳地址组成。在查找路由表时可能会得到不止一个匹配结果
- 应当从匹配结果中选择具有最长网络前缀的路由:最长前缀匹配
- 网络前缀越长,其地址块就越小,因而路由就越具体
- 最长前缀匹配又称为最长匹配或最佳匹配
网际控制报文协议ICMP
- 为了更有效地转发IP数据报和提高交付成功的机会,在网际层使用了网际控制报文协议ICMP
- ICMP时互联网的标准协议
- ICMP允许主机或路由器差错报告情况和提供有关异常情况的报告
- 但ICMP不是高层协议,而是IP层的协议
ICMP报文的格式
ICMP报文的种类
- ICMP报文的种类有两种,即ICMP差错报告报文和ICMP询问报文
- ICMP报文的前4个字节是统一的格式,共有三个字段:即类型、代码和检验和。接着的4个字节的内容与ICMP的类型有关
ICMP差错报告报文共有4种
- 终点不可达
- 时间超过
- 参数问题
- 改变路由
ICMP的应用举例
PING
- PING用来测试两个主机之间的联通性
- PING使用了ICMP回送请求与回送回答报文
- PING是应用层直接使用ICMP的例子,它没有通过运输层的TCP或UDP
Traceroute的应用举例
- 在Windows操作系统种这个命令是tracert
- 用来跟踪一个分组从源点到终点的路径
- 它利用IP数据报中的TTL字段和ICMP时间超过差错报告实现对从源点到终点的路径的跟踪
有关路由选择协议的几个基本概念
理想的路由算法
- 算法必须是正确的和完整的
- 算法在计算上应简单
- 算法应能适应通信量和网络拓扑的变化,这就是说,要有自适应性
- 算法应具有稳定性
- 算法应是公平的
- 算法应是最佳的
从路由算法的自适应性考虑
- 静态路由选择策略:即非自适应路由选择,其特点是简单和开销较小,但不能及时适应网络状态的变化
- 动态路由选择策略:即自适应路由选择,其特点是能较好地适应网络状态地变化,但实现起来较为复杂,开销也比较大
互联网有两大类路由选择协议
- 内部网关协议
- 在一个自治系统内部使用的路由选择协议
- 目前这类路由选择协议使用得最多,如RIP和OSPF协议
- 外部网关协议
- 若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时,就需要使用一种协议将路由信息传递到另一个自治系统种。这样的协议就是外部网关协议EGP
- 在外部网关协议中目前使用最多的是BGP-4
内部网关协议RIP
- 路由信息协议RIP是内部网关协议IGP中最先得到广泛使用的协议
- RIP是一种分布式的、基于距离向量的路由选择协议
- RIP协议要求网络中的每一个路由器都要维护从它自己到其他每一个目的网络的距离记录
距离的定义:
-
从一个路由器到直接连接的网络的距离定义为1
-
从一个路由器到非直接连接的网络的距离定义为所经过的路由器数据加1
-
RIP协议中的距离也称为跳数,因为没经过一个路由器,跳数就加1
-
这里的距离实际上指的是最短距离
-
RIP认为一个好的路由就是它通过的路由器的数目少,即距离短
-
RIP允许一条路径最多只能包含15个路由器
-
距离的最大值为16时即相当于不可达。可见RIP只适用于小型互联网
-
RIP不能在两个网络之间同时使用多条路由。RIP选择一个具有最少路由器的路由,哪怕还存在另一条高速但路由器较多的路由
距离向量算法
RIP协议特点
- 特点:好消息传播得快,坏消息传播得慢。
- 存在的一个问题:当网络出现故障的时候,要经过比较长的时间才能将此信息传送到所有的路由器
- 优点:实现简单,开销较小
- 缺点:
- RIP限制了网络的规模,它能使用的最大距离为15
- 路由器之间的交换的路由信息时路由器中的完整路由表,因而随着网络规模的扩大,开销也就增加
- 坏消息传播得慢,时更新过程得收敛时间过长
内部网关协议OSPF
- 开放最短路径优先OSPF是为客服RIP得缺点在1989年开发出来得
- OSPF的原理很简单,但实现起来却较复杂
OSPF划分为两种不同的区域
OSPF直接用IP数据报传送
- OSPF不用UDP而是直接用IP数据报传送
- OSPF构成的数据报很短。这样做可减少路由信息的通信量
- 数据报很短的另一好处是可以不必将长的数据报分片传送
- 但分片传送的数据报只要丢失一个,就无法组装成原来的数据报,而整个数据报就必须重传
OSPF的其他特点
- OSPF对不同的链路可根据IP分组的不同服务类型TOS而设置成不同的代价。因此,OSPF对于不同类型的业务可计算出不同的路由。
- 如果到同一个目的网络有多条相同代价的路径,那么可以将通信量分配给这几条路径。这叫做多路径间的负载平衡
- 所有在OSPF路由器之间交换的分组都具有鉴别的功能
- 支持可变长度的子网划分和无分类编址CIDR
- 每一个链路状态都带上一个32位的序号,序号越大状态就越新
IPv6
- IP是互联网的核心协议
- 互联网经过几十年的飞速发展,到2011年2月,IPv4的32位地址已经耗尽
- ISP已经不能再申请到新的IP地址块了
- 我国在2014-2015年也逐步停止了向新用户和应用分配IPv4地址
- 解决IP地址耗尽的根本措施就是采用具有更大地址空间的新版本的IP,即IPv6
IPv6数据报的一般形式
- IPv6数据报由两大部分组成
- 基本首部
- 有效载荷
IPv6数据报的基本首部
- IPv6将首部长度变为固定的40字节,称为基本首部
- 把首部中不必要的功能取消了,使得IPv6首部的字段数减少到只有8个
- IPv6对首部中的某些字段进行了如下的更改
IPv6地址分类
IP多播的基本概念
- IP多播已成为互联网的一个热门课题
- 目的:更好地支持一对多通信
- 一对多通信:一个源点发送到许多个终点
- 例如,实时信息的交付,软件更新,交互式会议及其他多媒体通信
IP多播
- 在互联网上进行多播就叫做IP多播
- 互联网范围的多播要靠路由器来实现
- 能够运行多播协议的路由器成为多播路由器。当然它也可以转发普通的单播IP数据报
- 从1992年起,在互联网上开始试验虚拟的多播主干网。现在多播主干网已经有了相当大的规模
多播IP地址
- IP多播所传送的分组要使用多播IP地址
- 在多播数据报的目的地址写入的是多播组的标识符
- 多播组的标识符就是IP地址中的D类地址
- 每一个D类地址标志一个多播组
- 多播地址只能用于目的地址,不能用于源地址
多播数据报
- 多播数据报和一般的IP数据报的区别就是它使用D类IP地址作为目的地址,并且首部中的协议字段值是2,表明使用网际组管理协议IGMP
- 多播数据报也是尽最大努力交付,不保证一定能够交付多播组内的所有成员
- 对多播数据报不产生ICMP差错报文。因此,若在PING命令后面键入多播地址,将永远不会收到响应
IP多播需要两种协议
- 为了使路由器知道多播组成员的信息,需要利用网际组管理协议IGMP
- 连接在局域网上的多播路由器还必须和互联网上的其他多播路由器协同工作,以便把多播数据报用最小代价传送给所有的组成员。这就需要使用多播路由选择协议
IGMP的使用范围
- IGMP并非在互联网范围内对所有多播成员进行管理的协议
- IGMP不知道IP多播组包含的成员数,也不知道这些成员都分布在哪些网络上
- IGMP协议是让连接在本地局域网上的多播路由器知道本局域网上是否有主机(严格讲,是主机上的某个进程)参加或退出了某个多播组
IGMP是整个网际协议IP的一个组成部分
- 和ICMP相似,IGMP使用IP数据报传递其报文,但它也向IP提供服务
- 因此,我们不把IGMP看成是一个单独的协议,而是属于整个网际协议IP的一个组成部分
虚拟专用网VPN
- 由于IP地址的紧缺,一个机构能够申请到的IP地址数往往小于本机构所拥有的主机数
- 考虑到互联网并不很安全,一个机构内也并不需要把所有的主机接入到外部的互联网
- 假定在一个机构内部的计算机通信也是采用TCP/IP协议,那么从原则上讲,对于这些尽在机构内部使用的计算机就可以由本机构自行分配其IP地址
本地地址与全球地址
- 本地地址:仅在机构内部使用的IP地址,可以由本机构自行分配,而不需要向互联网的管理机构申请
- 全球地址:全球唯一的IP地址,必须向互联网的管理机构申请
- 问题:在内部使用的本地地址就有可能和互联网中某个IP地址重合,这样就会出现地址的二义性问题
虚拟专用网VPN
- 利用公用的互联网作为本机构各专用网之间的通信载体,这样的专用网又称为虚拟专用网VPN
- 专用网是因为这种网络是为本机构的主机用于机构内部的通信,而不是用于和网络外非本机构的主机通信
- 虚拟表示好像是,但实际上并不是,因为现在并没有真正使用通信专线,而VPN只是在效果上和真正的专用网一样
远程接入VPN
- 远程接入VPN可以满足外部流动员工访问公司网络的要求
- 在外地工作的员工拨号接入互联网,而驻留在员工PC机中的VPN软件可在员工的PC机和公司的主机之间建立VPN隧道,因而外地员工与公司通信的内容是保密的,员工们感到好像就是使用公司内部的本地网络
网络地址转换NAT
-
问题:在专用网上使用专用地址的主机如何与互联网上的主机通信?
-
解决:
- 再申请一些全球IP地址,但这在很多情况下是不容易做到的
- 采用网络地址转换NAT。这是目前使用得最多的办法
网络地址转换的过程
- 内部主机A用本地地址IPa和互联网上主机B通信所发送的数据报必须经过NAT路由器
- NAT路由器将数据报的源地址IPa转换成全球地址IPg,并把转换结果记录到NAT地址转换表中,目的地址IPb保持不变然后发送到互联网。
- NAT路由器收到主机B发回的数据报时,知道数据报中的源地址是IPb而目的地址是IPg
- 根据NAT转换表,NAT路由器将目的地址IPg转换为IPa,转发给最终的内部主机A
第五章 运输层
进程之间的通信
- 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部份的最高层,同时也是用户功能中的最低层
- 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的而主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能
网络层和运输层有明显的区别
两种不同的运输协议
- 但这条逻辑通信信道对上层的表现却因运输层使用的不同协议而有很大的区别
- 当运输层采用面向TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道
- 当运输层采用无连接的UDP协议时,这种逻辑通信信道是一条不可靠信道
运输层的两个主要协议
TCP/IP的运输层有两个主要协议
- 用户数据报协议UDP
- 传输控制协议TCP
TCP与UDP
- 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元TPDU
- TCP传送的数据单位协议是TCP报文段
- UDP传送的数据单位协议是UDP报文或用户数据报
还要强调两点
-
运输层的UDP用户数据报与网际层的IP数据报有很大区别
- IP数据报要经过互联网中许多路由器的存储转发
- UDP用户数据报是在运输层的端到端抽象的逻辑信道中传送的
-
TCP报文段实在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了TCP连接
软件端口与硬件端口
- 两个不同的概念
- 在协议栈层间的抽象的协议端口是软件端口
- 路由器或交换机上的端口是硬件端口
- 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体层间交互的一种地址
TCP/IP运输层端口
- 端口用一个16位端口号进行标志,允许有65535个不同的端口号
- 端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在互联网中,不同计算机的相同端口号是没有联系的。
UDP概述
- UDP只在IP的数据报服务之上增加了很少一点的功能:
- 复用和分用的功能
- 差错检测的功能
UDP的主要特点
-
UDP是无连接的,发送数据之前不需要建立连接,因此减少了开销和发送数据之前的时延
-
UDP使用尽最大努力交付,即不保证可靠交付,因此主机不需要维持复杂的连接状态表
-
UDP是面向报文的。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。UDP一次交付一个完整的报文
-
UDP没有拥塞控制,因此网络出现的拥塞不会使源主机的发送速率降低。这对某些实时应用是很重要的。很适合多媒体通信的要求
-
UDP支持一对一、一对多、多对一和多对多的交互通信
-
UDP的首部开销小,只有8个字节,比TCP的20个字节的首部要短
面向报文的UDP
-
发送方UDP对应用程序交下来的报文,在添加首部后就向下交付IP层。UDP对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界
-
应用层交给UDP多长的报文,UDP就照样发送,即一次发送一个报文
-
接收方UDP对IP层交上来的UDP用户数据报,在除去首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文
-
应用程序必须选择合适大小的报文
- 若报文太长,UDP把它交给IP层后,IP层在传送时可能要进行分片,这会降低IP层的效率
- 若报文太短,UDP把它交给IP层后,会使IP数据报的首部的相对长度太大,这也降低了IP层的效率
UDP的首部格式
TCP最主要的特点
-
TCP是面向连接的运输层协议,在无连接、不可靠的IP网络服务基础之上提供可靠交付的服务。为此,在IP的数据报基础服务之上,增加了保证可靠性的一系列措施
-
TCP是面向连接的运输层协议
-
每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的
-
TCP提供可靠交付的服务
-
TCP提供全双工通信
-
面向字节流
- TCP中的流指的是流入或流出进程的字节序列
- 面向字节流的含义是:虽然应用程序和TCP的交互是一次一个数据块,但TCP把应用程序交下来的数据看成仅仅是一连串无结构的字节流
TCP面向流的概念
- TCP不保证接收方应用程序所收到的数据块和发送方应用程序所发出的数据块具有对应大小的关系
- 但接收方应用程序收到的字节流必须和发送方应用程序发出的字节流完全一样
注意点
- TCP连接是一条虚连接而不是一条真正的物理连接
- TCP对应用进程一次把多长的报文发送到TCP的缓存中是不关心的
- TCP根据对方给出的装口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节
- TCP可把太长的数据块划分短一些再传送
- TCP也可等待积累有足够多的字节后再构成报文段发送出去
TCP的连接
-
TCP把连接作为最基本的抽象
-
每一条TCP连接有两个端点
-
TCP连接的端点不是主机,不是主机的IP地址,不是应用进程,也不是运输层的协议端口。TCP连接的端点叫做套接字(socket)或插口
-
端口号拼接到IP地址即构成了套接字
套接字
- 每一条TCP连接唯一地被通信两端的两个端点所确定
停止等待协议
- 停止等待就是每发送完一个分组就停止发送,等待对方的确认。在收到确认后再发送下一个分组
- 全双工通信的双方既是发送方也是接收方
- 为了讨论问题的方便,我们仅考虑A发送数据,而B接受数据并发送确认。因此A叫做发送方,而B叫做接收方
出现差错
-
在接受方B会出现两种情况:
- B接受M1时检测出了差错,就丢弃M1,其他什么也不做
- M1在传输过程中丢失了,这时B当然什么都不知道,也什么都不做
-
在这两种情况下,B都不会发送任何消息
-
但A都必须重发分组,直到B正确接受为止,这样才能实现可靠通信
确认丢失和确认迟到
-
确认丢失
-
确认迟到
自动重传请求ARQ
-
通常A最终总是可以收到对所有发出的分组的确认。如果A不断重传分组但总是收不到确认,就说明通信线路太差,不能进行通信。
-
使用上述的确认和重传机制,我们就可以在不可靠的传输网络上实现可靠的通信
-
像上述的这种可靠传输协议常称为自动重传请求ARQ。意思是重传的请求是自动进行的,接收方不需要请求发送方重传某个出错的分组
信道利用率
- 可以看出,当往返时间RTT远大于分组发送时间Td时,信道的利用率就会非常低
- 若出现重传,则对传送有用的数据信息来说,信道的利用率就还要降低
流水线传输
- 为了提高传输效率,发送方可以不适用低效率的停止等待协议,而是采用流水线传输
- 流水线传输就是发送方可连续发送多个分组,不必每发完一个分组就停顿下来等待对方的确认。这样可使信道上一致有数据不间断地传送
- 由于信道上一直有数据不间断地传送,这种传输方式可获得很高地信道利用率
连续ARQ协议
- 基本思想:
- 发送方一次可以发出多个分组
- 使用滑动窗口协议控制发送方和接收方所能发送和接收地分组的数量和编号
- 每收到一个确认,发送方就把发送窗口向前滑动
- 接收方一般采用累积确认的方式
- 采用回退N方法进行重传
累积确认
- 接收方一般采用累积确认的方式。即不必对收到的分组逐个发送确认,而是对按序到达的最后一个分组发送确认,这样就表示:到这个分组为止的所有分组都已正确收到了
- 优点:容易实现,即使确认丢失也不必重传
- 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息
GO-back-N
-
如果发送方发送了前5个分组,而中间的第三个分组丢失了。这时接收方只能对前两个分组发出确认。发送方无法知道后面三个分组的下落,而只好把后面的三个分组都再重传一次
-
这就叫做Go-back-N,表示需要再退回来重传已发送过的N个分组
-
可见当通信线路质量不好时,连续ARQ协议会带来负面的影响
TCP可靠通信的具体实现
- TCP连接的每一端都必须设有两个窗口——一个发送窗口和一个接收窗口
- TCP的可靠传输机制用字节的序号进行控制。TCP所有的确认都是基于序号而不是基于报文段
- TCP两端的四个窗口经常处于动态变化之中
- TCP连接的往返时间RTT也不是固定不变的。需要使用特定的算法估算较为合理的重传时间
连续ARQ协议与停止等待协议
连续ARQ协议
- 滑动窗口协议比较复杂,是TCP协议的精髓所在
- 发送方维持的发送窗口,它的意义是:位于发送窗口内的分组都可以发送出去,而不需要等待对方的确认。这样,信道利用率就提高了
- 连续ARQ协议规定,发送方每收到一个确认,就把发送窗口向前滑动一个分组的位置
累积确认
和上面一样
TCP报文段的首部格式
-
TCP虽然是面向字节流的,但TCP传送的数据单元却是报文段
-
一个TCP报文段分为首部和数据两部分,而TCP的全部功能都体现在它首部中各字段的作用
-
TCP报文段首部的前20个字节是固定的,后面有4n字节是根据需要而增加的选项。因此TCP首部的最小长度是20字节
-
源端口和目的端口字段:各占2字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现
-
序号字段:占4字节。TCP连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号
-
确认号字段:占4字节,是期望收到对方下一个报文段的数据的第一个字节的序号
-
数据偏移:占4位,它指出TCP报文段的数据起始处距离TCP报文段的起始处有多远。“数据偏移”的单位是32位字
-
保留字段:占6位,保留为今后使用,但目前应置为0
-
紧急URG:当URG为1时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送
-
确认ACK:只有当ACK=1时确认号字段才有效。当ACK=0时,确认号无效
-
推送PSH:接收TCP收到PSH=1的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付
-
复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立运输连接
-
同步SYN:同步SYN=1表示这是一个连接请求或连接接受报文
-
终止FIN:用来释放一个连接。FIN=1表明此报文段地发送端的数据已发送完毕,并要求释放运输连接
-
窗口字段:占2字节,用来让对方设置发送窗口的依据,单位为字节
-
检验和:占2字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在TCP报文段的前面加上12字节的伪首部
-
在计算检验和时,临时把12字节的“伪首部”和TCP报文段连接在一起。伪首部仅仅是为了计算检验和
-
紧急指针字段:占16位,指出在本报文段中紧急数据共有多少个字节
-
选项字段:长度可变。TCP最初只规定了一种选项,即最大报文段长度MSS。MSS告诉对方TCP:“我的缓存所能接收的报文段的数据字段的最大长度时MSS个字节”
-
填充字段:这是为了使整个首部长度是4字节的整数倍
为什么要规定MSS?
- MSS与接收窗口值没有关系
- 若选择较小的MSS长度,网络的利用率就降低
- 若TCP报文段非常长,那么在IP层传输时就有可能要分解成多个短数据报片。在终点要把收到的各个短数据报片装配成原来的TCP报文段
- 因此,MSS应尽可能大些,只要在IP层传输时不需要再分片就行
- 但最佳的MSS是很难确定的
其他选项
-
窗口扩大选项
-
时间戳选项
-
选择确认选项
以字节为单位的滑动窗口
- TCP使用流水线传输和滑动窗口协议实现高效、可靠的传输
- TCP的滑动窗口是以字节为单位的
- 发送方A和接收方B分别维持一个发送窗口和一个接收窗口
- 发送窗口表示:再没有收到确认的情况下,可以连续把窗口内的数据全部发送出去
- 接收窗口表示:只允许接收落入窗口内的数据
发送缓存
接收缓存
-
发送缓存用来暂时存放:
- 发送应用程序传送给发送方TCP准备发送的数据
- TCP已发送出但尚未收到确认的数据
-
接收缓存用来暂时存放:
- 按需到达的、但尚未被接收应用程序读取的数据
- 不按序到达的数据
需要强调三点
- 第一,A的发送窗口并不总是和B的接收窗口一样大
- 第二,TCP标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程
- 第三,TCP要求接收方必须有累积确认的功能,这样可以减小传输开销
超时重传时间的选择
- 重传机制是TCP中最重要和最复杂的问题之一
- TCP每发送一个报文段,就对这个报文段设置一次计时器
- 只要计时器设置的重传时间到但还没有收到确认,就要重传这一报文段
- 重传时间的选择是TCP最复杂的问题之一
利用滑动窗口实现流量控制
- 一般来说,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失
- 流浪控制就是让发送方得发送速率不要太快,既要让接收方来得及接收,也不要使网络发生拥塞
- 利用滑动窗口机制可以很方便地再TCP连接上实现流量控制
可能发生死锁
- B向A发送了零窗口的报文段后不久,B的接收缓存又有了一些存储空间。于是B向A发送了rwnd=400的报文段
- 但这个报文段再传送过程中丢失了。A一直等待收到B发送的非零窗口的通知,而B也一直再等待A发送数据
- 如果没有其他措施,这种互相等待的死锁局面将一直延续下去。
- 为了解决这个问题,TCP为每一个连接设有一个持续计时器
- 只要TCP连接的一方收到对方的零窗口通知,就启动该持续计数器
- 若持续计时器设置的时间到期,就发送一个零窗口探测报文段,而对方就在确认这个探测报文段时给出了现在的窗口值
- 若窗口值依然是零,则收到这个报文段的一方就重新设置持续计时器
- 若窗口不是零,则死锁的僵局就可以被打破了
必须考虑传输效率
- 可以用不同的机制来控制TCP报文段的发送时机:
发送方糊涂窗口综合征
接收方糊涂窗口综合征
解决办法:让接收方等待一段时间,使得或者接收缓存已有足够空间容纳一个最长的报文段,或者等到接收缓存已有一般空闲的空间。只要出现这两种情况之一,接收方就发出确认报文,并向发送方通知当前的窗口大小
拥塞控制的一般原理
- 在某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏。这种现象称为拥塞
- 最坏结果:系统崩溃
拥塞产生的原因
-
网络拥塞往往是由许多因素引起的:
- 点缓存的容量太小
- 链路的容量不足
- 处理机处理的速率太慢
- 拥塞本身会进一步加剧拥塞
-
出现拥塞的原因
增加资源不能解决拥塞
拥塞控制与流量控制的区别
拥塞控制的一般原理
- 拥塞控制的前提:网络能够承受现有的网络负荷
- 实践证明,拥塞控制是很难设计的,因为它是一个动态问题
- 分组的丢失是网络发生拥塞的征兆而不是原因
- 在许多情况下,甚至正是拥塞控制本身成为引起网络性能恶化、甚至发生死锁的原因
开环控制和闭环控制
属于闭环控制的有以下几种措施:
- 检测网络系统,以遍检测到拥塞在何时、何处发生
- 将拥塞发生的信息传送到可采取行动的地方
- 调整网络系统的运行以解决出现的问题
监测网络的拥塞
- 主要指标有:
- 由于缺少缓存空间而被丢弃的分组的百分数
- 平均队列长度
- 超时重传的分组数
- 平均分组时延
- 分组时延的标准差,等等
- 上述这些指标的上升都标志着拥塞的增长
TCP的拥塞控制方法
- TCP采用基于窗口的方法进行拥塞控制。该方法属于闭环控制方法
- TCP发送方维持一个拥塞窗口cwnd
- 发送端利用拥塞窗口根据网络的拥塞情况调整发送的数据量
- 发送窗口大小不仅取决于接收方窗口,还取决于网络的拥塞状况,所以真正的发送窗口值为:
拥塞的判断
TCP拥塞控制算法
- 四种拥塞控制算法
- 慢开始
-
目的:用来确定网络的负载能力或拥塞程度
-
算法的思路:由小到达逐渐增大拥塞窗口数值
-
两个变量:
-
窗口大小按指数增加,不慢
-
传输轮次
- 一个传输伦次就是往返时间RTT
- 传输伦次更加强调:把拥塞窗口cwnd所允许发送的报文段都连续发送出去,并受到了对己发送的最后一个字节的确认
- 例如,拥塞窗口cwnd=4,这时的往返时间RTT就是发送方连续发送4个报文段,并收到这4个报文段的确认,总共经历的时间
-
- 拥塞避免
- 思路:让拥塞窗口cwnd缓慢地增大,避免出现拥塞
- 没经过一个传输轮次,拥塞窗口cwnd=cwnd+1
- 使拥塞窗口cwnd按线性规律缓慢增长
- 在拥塞避免阶段,具有加法增大的特点
- 拥塞避免并非指完全能够避免了拥塞。利用以上的措施要完全避免网络拥塞还是不可能的
- 拥塞避免是说在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞
- 快重传
- 发送方只要一连收到三个重复确认,就知道接收方确实没有收到报文段,因而应当立即进行重传,这样就不会出现超时,发送方也不就误认为出现了网络拥塞
- 使用快重传可以使整个网络的吞吐量提高约20%
- 采用快重传FR算法可以让发送方尽早知道发生了个别报文段的丢失
- 快重传算法首先要求接收方不要等待自己发送数据时才进行捎带确认,而是立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
- 快恢复
- 当发送端收到连续三个重复的确认时,由于发送方现在认为网络很可能没有发生拥塞,因此现在不执行慢开始算法,而是执行快恢复FR算法:
- 慢开始门限ssthresh=当前拥塞窗口cwnd/2
- 新拥塞窗口cwnd=慢开始门限ssthresh
- 开始执行拥塞避免算法,使拥塞窗口缓慢地线性增大
- 慢开始
TCP拥塞控制流程图
发送窗口的上限值
- 发送方的发送窗口的上限值应当取为接收方窗口rwnd和拥塞窗口cwnd这两个变量中较小的一个,即应按以下公式确定
主动队列管理AQM
- TCP拥塞控制和网络层采取的策略有密切关系
- 若路由器对某些分组的处理时间特别长,那么这就可能使这些分组中的TCP报文段经过时间才能到达终点,结果引起发送方超时,对这些报文段进行重传
- 重传会使TCP连接的发送端认为在网络中发生了拥塞,但实际上网络并没有发生拥塞
- 对TCP拥塞控制影响最大的就是路由器的分组丢弃策略
先进先出FIFO处理规则
- 路由器的队列通常都是按照先进先出FIFO的规则处理到来的分组
- 当队列已满时,以后再到达的所有分组都将被丢弃,这就叫做尾部丢弃策略
- 路由器的尾部丢弃往往会导致一连串分组的丢失,这就使发送方出现超时重传,使TCP进入拥塞控制的慢开始状态,结果使TCP连接的发送方团让你把数据的发送速率降低到很小的数值
全局同步
- 更为严重的是,在网络中通常有很多的TCP连接,这些连接中的报文段通常是复用在网络层的IP数据报中传送的
- 在这种情况下,若发生了路由器中的尾部丢弃,就可能会影响到很多条TCP连接,结果使这许多TCP连接在同一时间突然都进入到慢开始状态。这在TCP术语中称为全局同步
- 全局同步使得全网的通信量突然下降了很多,而在网络恢复正常后,其通信量又突然增大很多
主动队列管理AQM
- 1998年提出了主动队列管理AQM
- 所谓主动就是不要等到路由器的队列长度已经达到最大值时才不得不丢弃后面到达的分组,而是在队列长度到某个值得警惕得数值时,就主动丢弃到达得分组
- AQM可以有不同实现方法,其中曾流行多年得就是随机早期监测RED
随机早期监测RED
- 使路由器得队列维持两个参数:队列长度最凶啊门限THmin和最大门限THmax
- RED对每一个到达的分组都先计算平均队列长度Lav
- 若平均队列长度小于最小门限THmin,则将新到达的分组放入队列进行排队
- 若平均队列长度超过最大门限THmax,则将新到达的分组丢弃
- 若平均队列长度在最小门限THmin和最大门限THmax之间,则按照某一概率p将新到达的分组丢弃
运输连接的三个阶段
- TCP使面向连接的协议
- TCP连接有三个阶段
- TCP连接的管理就是使TCP连接的建立和释放都能正常地进行
TCP连接建立过程中要解决的三个问题
- 要是每一方能够确知对方的存在
- 要允许双方协商一些参数
- 能够对运输实体资源进行分配
客户——服务器模式
- TCP连接的建立采用客户服务器的模式
- 主动发起连接建立的应用进程叫做客户
- 被动等待连接建立的应用进程叫做服务器
TCP的连接建立
- TCP建立连接的过程叫做握手
- 握手需要在客户和服务器之间交换三个TCP报文段。称之为三报文握手
- 采用三报文握手主要是防止已失效的连接请求报文段突然又传送到了,因而产生错误
TCP的连接释放
- TCP连接释放过程比较复杂
- 数据传输结束后,通信的双方都可释放连接
- TCP连接释放过程是四报文握手
第六章 应用层
域名系统概述
- 许多应用层软件经常直接使用域名系统DNS,但计算机的用户只是间接而不是直接使用域名系统
- 互联网采用层次结构的命名树作为主机的名字,并使用分布式的域名系统DNS
- 名字到IP地址的解析是由若干个域名服务器程序完成的。域名服务器程序在专设的结点上运行,运行该程序的机器称为域名服务器
互联网的域名结构
-
互联网采用了层次树状结构的命名方法
-
任何一个连接在互联网上的主机或路由器,都有一个唯一的层次结构的名字,即域名
-
域名的结构由标号组成,各标号之间用点隔开
-
各标号分别代表不同级别的域名
域名只是个逻辑概念
- 域名只是个逻辑概念,并不代表计算机所在的物理地点
- 变长的域名和使用有助记忆的字符串,是为了便于人来使用。而IP地址是定长的32位二进制数字则非常偏于机器进行处理
- 域名中的点和点分十进制IP地址中的点并无一一对应的关系。点分十进制IP地址中一定是包含三个点,但每一个域名中点的数目则不一定正好是三个
顶级域名TLD
- 国家顶级域名nTLD,例如:
- .cn表示中国
- .us表示美国
- .uk表示英国,等等
- 通用顶级域名gTLD
- 最早的顶级域名是:
- .com(公司和企业)
- .net(网络服务机构)
- .org(非营利性组织)
- .edu(美国专用的教育机构)
- .gov(美国专用的政府部门)
- .mil(美国专用的军事部门)
- .int(国际组织)
- 基础结构域名
- 这种顶级域名只有1个,即arpa
- 用于反向域名解析,因此又称为反向域名
互联网的域名空间
域名服务器
- 一个服务器所负责管辖的范围叫做区
- 各单位根据具体情况来划分自己管辖范围的区。但在一个区中的所有节点必须是能够连通的
- 每一个区设置相应的权限域名服务器,用来保存该区中的所有主机的域名到IP地址的映射
- DNS服务器的管辖范围不是以域为单位,而是以区为单位
树状结构的DNS域名服务器
域名服务器有以下四种类型
-
根域名服务器
- 根域名服务器是最高层次的域名服务器,也是最重要的域名服务器。所有的根域名服务器都知道所有的顶级域名服务器的域名和IP地址
- 不管是哪一个本地域名服务器,若要对互联网上任何一个域名进行解析,只要自己无法解析,就首先求助于根域名服务器
- 在互联网上共有13个不同IP地址的根域名服务器,它们的名字是用一个英文字母命名,从a一直到m(前13个字母)
-
顶级域名服务器
- 顶级域名服务器(即TLD服务器)负责管理在该顶级域名服务器注册的所有二级域名
- 当收到DNS查询请求时,就给出相应的回答(可能是最后的结果,也可能是下一步应当找的域名服务器的IP地址)
-
权限域名服务器
- 负责一个区的域名服务器
- 当一个权限域名服务器还不能给出最后的查询回答时,就会告诉发出查询请求的DNS客户,下一步应当找哪一个权限域名服务器
-
本地域名服务器
- 本地域名服务器对域名系统非常重要
- 当一个主机发出DNS查询请求时,这个查询请求报文就发送给本地域名服务器
- 每一个互联网服务提供者ISP,或一个大学,甚至一个大学里的系,都可以拥有一个本地域名服务器
- 这种域名服务器有时也称为默认域名服务器
提高域名服务器的可靠性
- DNS域名服务器都把数据复制到几个域名服务器来保存,其中的一个是主域名服务器,其他的是辅助域名服务器
- 当主域名服务器出故障时,辅助域名服务器可以保证DNS的查询工作不会中断
- 主域名服务器定期把数据复制到辅助域名服务器中,而更改数据只能在主域名服务器中进行,这样就保证了数据的一致性
域名的解析过程
- 主机向本地域名服务器的查询一般都是采用递归查询。如果主机所询问的本地域名服务器不知道被查询域名的IP地址,那么本地域名服务器就以DNS客户的身份,向其他根域名服务器继续发出查询请求报文
- 本地域名服务器向根域名服务器的查询通常是采用迭代查询。当根域名服务器收到本地域名服务器的迭代查询请求报文时,要么给出索要查询的IP地址,要么告诉本地域名服务器:”你下一步应当向哪一个域名服务器进行查询。然后让本地域名服务器进行后续的查询
名字的高速缓存
- 每个域名服务器都维护一个高速缓存,存放最近用过的名字以及从何处获得名字映射信息的记录
- 可大大减轻根域名服务器的负荷,使互联网上的DNS查询请求和回答报文的数量大为减少
- 为保持高速缓存中的内容正确,域名服务器应为每项内容设置计时器,并处理超过合理时间的项(例如,每个项目只存放两天)
- 当权限域名服务器回答一个查询请求时,在响应中都指明绑定有效存在的时间值。增加此时间值可减少网络开销,而减少此时间值可提高域名转换的准确性
远程终端TELNET
- TELNET是一个简单的远程终端协议,也是互联网的正式标准
- 用户用TELNET就可在其所在地通过TCP连接注册到远地的另一个主机上
- TELNET能将用户的击键传到远地主机,同时也能将远地主机的输出通过TCP连接返回到用户屏幕。这种服务是透明的,因为用户感觉到好像键盘和显示器是直接连在远地主机上
网络虚拟终端NVT格式
- 客户软件把用户的击键和命令转换成NVT格式,并送交服务器
- 服务器软件把收到的数据和命令,从NVT格式转换成远地系统所需的格式
- 向用户返回数据时,服务器把远地系统的格式转换为NVT格式,本地客户再从NVT格式转换到本地系统所需的格式
万维网概述
- 万维网WWW并非某种特殊的计算机网络
- 万维网是一个大规模的、联机式的信息储藏所
- 万维网用链接的方法能非常方便地从互联网上的一个站点访问另一个站点,从而主动地按需获取丰富的信息
- 这种访问方式称为“链接”
超媒体与超文本
- 万维网是分布式超媒体系统,它是超文本系统的扩充
- 一个超文本由多个信息源链接成。利用一个链接可使用户找到另一个文档。这些文档可以位于世界上任何一个接在互联网上的超文本系统中。超文本是万维网的基础
- 超媒体与超文本的区别是文档内容不同。超文本文档仅包含文本信息,而超媒体文档还包含其他表示方式的信息,如图形、图像、声音、动画,甚至活动视频图像
万维网的工作方式
- 万维网以客户-服务器方式工作
- 浏览器就是在用户计算机上的万维网客户程序。万维网文档所驻留的计算机则运行服务器程序,因此这个计算机也称为万维网服务器
- 客户程序向服务器程序发出请求,服务器程序向客户程序送回客户所要的万维网文档
- 在一个客户程序主窗口上显示出的万维网文档称为页面
万维网必须解决的问题
- 怎样标志分布在整个互联网上的万维网文档?
- 使用统一资源定位符URL来标志万维网上的各种文档
- 使每一个文档在整个互联网的范围内具有唯一的标识符URL
- 用何协议实现万维网上各种超链的链接
- 在万维网客户程序与万维网服务器程序之间进行交互所使用的协议,是超文本传送协议HTTP
- HTTP是一个应用层协议,它使用TCP连接进行可靠的传送
- 怎样使各种万维网文档都能互联网上的各种计算机上显示出来,同时使用户清楚地知道在什么地方存在着超链
- 超文本标记语言HTML使得万维网页面的设计者可以很方便地用一个超链从本页面地某处链接到互联网上的任何一个万维网页面,并且能够在自己的计算机屏幕上将这些页面显示出来
- 怎样使用户能够很方便地找到所需的信息?
- 为了在万维网上方便地查找信息,用户可使用各种的搜索工具(即搜索引擎)
统一资源定位符URL
- URL的格式
- 资源定位符URL是对可以从互联网上得到的资源的位置和访问方法的一种简洁表示
- URL给资源的位置提供一种抽象的识别方法,并用这种方法给资源定位
- 只要能够对资源定位,系统就可以对资源进行各种操作,如存取、更新、替换和查找其属性
- URL相当于一个文件名在网络范围的扩展。因此URL是与互联网相连的机器上的任何可访问对象的一个指针
- URL的一般形式
- 由以冒号隔开的两大部分组成,并且在URL中的字符对大写或小写没有要求
- URL的一般形式是:
超文本传送协议HTTP
- 为了使超文本的链接能够高效率地完成,需要用HTTP协议来传送一切必须的信息
- 从层次的角度看,HTTP 是面向事务的应用层协议,它是万维网上能够可靠地交换文件的重要基础
HTTP的主要特点
- HTTP使用了面向连接的TCP作为运输层协议,保证了数据的可靠传输
- HTTP协议本身也是无连接的,虽然它使用了面向连接的TCP向上提供的服务
- HTTP是面向事务的客户服务器协议
- HTTP1.0协议是无状态的
动态主机配置协议DHCP
- 在协议软件中,给协议参数赋值的动作叫做协议配置
- 一个协议软件在使用之前必须是已正确配置的
- 连接到互联网的计算机的协议软件需要配置的参数包括
- IP地址
- 子网掩码
- 默认路由器的IP地址
- 域名服务器的IP地址
协议配置
- 在协议软件中给这些参数赋值的动作叫做协议配置
- 一个软件协议在使用之前必须是已正确配置的
- 具体的配置信息有哪些则取决于协议栈
- 这些信息通常存储在一个配置文件中,计算机在引导过程中可以对这个文件进行存取
动态主机配置协议DHCP
- 互联网广泛使用的动态主机配置协议DHCP提供了即插即用连网的机制
- 这种机制允许一台计算机加入新的网络和获取IP地址,而不用手工配置
- DHCP给运行服务器软件、且位置固定的计算机指派一个永久地址,给运行客户端软件的计算机分配一个临时地址
DHCP使用客户-服务器方式
- 需要IP地址的主机在启动时就向DHCP服务器广播发送发现报文,这时该主机就成为DHCP客户
- 本地网络上所有主机都能收到此广播报文,但只有DHCP服务器才回答此广播报文
- DHCP服务器现在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的IP地址池中取一个地址分配给该计算机。DHCP服务器的回答报文叫提供报文
DHCP工作方式
- DHCP使用客户-服务器方式,采用请求/应答方式工作
- DHCP基于UDP工作,DHCP服务器运行在67号端口,DHCP客户运行在68号端口
DHCP中继代理
- 并不是每个网络上都有DHCP服务器,这样会使DHCP服务器的数量太多。现在是每一个网络至少有一个DHCP中继代理,它配置了DHCP服务器的IP地址信息
- 当DHCP中继代理收到主机发送的发送报文后,就以单薄方式向DHCP服务器转发此报文,并等待其回答。收到DHCP服务器回答的提供报文后,DHCP中继代理再将此提供报文发回给主机
租用期
- DHCP服务器分配给DHCP客户的IP地址的临时的,因此DHCP客户只能在一段有限的时间内使用这个分配到的IP地址。DHCP协议称这段时间为租用期
- 租用期的数值应由DHCP服务器自己决定
- DHCP客户也可在自己发送的报文中提出对租用期的要求
最后
以上就是调皮野狼为你收集整理的计算机网络复习资料(前六章谢希仁版)计算机网络复习的全部内容,希望文章能够帮你解决计算机网络复习资料(前六章谢希仁版)计算机网络复习所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复