计算机网络学习笔记(谢希仁版本)

news2024/11/17 0:00:40

计算机网络学习笔记

1. 概述

1.1 计算机网络在信息时代的作用

互联网基本特点:

  1. 连通性:互联网上用户不管距离多远,都能通信,就像这些用户终端都彼此连通

  2. 共享性:指资源共享,包含信息、软件、硬件等共享,就像资源在用户身边

**计算机网络的组成:**由若干结点和连接这些结点的链路组成。结点可以是计算机、集线器、交换机、路由器等

**互连网:**网络之间通过路由器连接,构成更大的网络,就是互连网,是网络的网络

**主机(host):**与网络相连的计算机

1.2 互联网的组成

互联网从其工作方式上,分成两大部分:

  1. 边缘部分:由互联网上的主机组成,是用户直接使用的部分,用来进行通信和资源共享
  2. 核心部分:由大量网络和连接这些网络的路由器组成,是为边缘部分提供服务的,提供连通性和交换

1.2.1 边缘部分

端系统:主机

计算机之间的通信:主机A上的进程与主机B上的进程进行通信

端系统间通信方式:

  1. 客户-服务器方式:最常用与传统的方式,一方请求服务,一方提供服务,通信可以是单向的,也可以是双向的。

    客户和服务器:指通信中涉及的两个应用进程

    主要特征:客户是服务请求方,服务器是服务提供方

    客户程序:

    1. 用户调用后,在通信时主动向远地服务器发起通信(请求服务)。因此,客户程序必须知道服务器程序的地址
    2. 不需要特殊的硬件和很复杂的操作系统

    服务器程序:

    1. 是一种专门提供服务的程序,可同时处理多个客户的请求
    2. 系统启动后即自动调用不断运行,被动等待接受客户的通信请求。因此,服务器程序不需要知道客户程序的地址
    3. 一般需要强大的硬件和操作系统支持
  2. 对等连接方式(P2P):两台主机不区分服务器和客户,只要都运行p2p软件,就可以进行平等对等连接通信,双方都可访问对方硬盘中的共享文档。可支持大量对等用户同时工作。

1.2.2 核心部分

路由器的重要性:路由器是一种专用计算机,是实现分组交换的关键部件,其任务是转发收到的分组,这是网络核心部分最重要的功能

交换:按照某种方式动态分配传输线路的资源

三种交换方式(✔):

  1. 电路交换

    工作方式:在两用户端间建立一条专用的物理通路,保证了双方通信所需的通信资源,而这些资源在双方通信时也不会被其他用户占用

    三个步骤:建立连接(占用通信资源)->通话(一直占用通信资源)->释放连接(归还通信资源)

    重要特点:在通话的全部时间内,通话的两个用户始终占用端到端的通信资源

  2. 报文交换

    特点:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发给下一个结点

  3. 分组交换

    工作方式:采用存储转发技术,把一个报文划分为几个分组后进行传送

    报文:要发送的整块数据

    分组:把较长的报文分成更小的等长数据段,再加上必要的控制信息组成的首部后,就构成一个分组;分组又称包,分组的首部又称包头

    首部的重要性:包含了诸如目的地址和源地址等重要控制信息,使每一个分组才能独立的选择传输路径,并正确交付到终点

    存储转发技术:路由器收到分组后,先暂时存储,检查其首部,查找转发表,按照首部中目的地址,选择合适的接口转发出去

    优点:

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

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

    3. 迅速:以分组为单位传输,不用建立和释放连接

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

三种交换的特点概述

  1. 电路交换:整个报文的比特流连续的从源点直达终点,好像在管道中传送
  2. 报文交换:整个报文先传送到相邻结点,全部存储下来后查找转发表,转发给下一个结点
  3. 分组交换:单个分组传送到相邻结点,存储下来后查找转发表,转发给下一个结点

1.3 计算机网络的类别

按照网络的作用范围分类(✔):

  1. 广域网(WAN):作用范围几十到几千公里,是互联网的核心部分,其任务是通过长距离运送主机所发送的数据,广域网各结点采用高速链路,有较大通信容量

  2. 城域网(MAN):作用范围一个城市,用来将多个局域网进行互联,多采用以太网技术

  3. 局域网(LAN):作用范围1km左右,一般用微机或工作站通过高速通信线路相连

  4. 个人区域网(PAN):作用范围10m左右,把个人工作的地方属于个人的设备用无线技术相连,也叫无线个人区域网(WPAN)

按照网络的使用者分类

  1. 公用网:电信公司出资建造的大型网络,任何人都可付费使用,也称公众网
  2. 专用网:为满足特殊业务需要建立的网络,不向外人提供服务

用来把用户进入到互联网的网络

​ 接入网:又称本地接入网或居民接入网

1.4 计算机网络性能

计算机网络的性能指标:

  1. 速率

    ​ 定义:数据的传送速率;常指额定速率或标称速率,并不是实际的速率

    ​ 单位:bit/s(比特每秒)

  2. 带宽

    ​ 定义:表示网络中某通道传送数据的能力,即单位时间内网络中某信道能通过的最高数据率

    ​ 单位:bit/s

  3. 吞吐量

    ​ 定义:单位时间内通过某网络的实际的数据量

    ​ 单位:bit/s

  4. 时延

    ​ 定义:数据从网络的一段传送到另一端所需的时间;又称延迟或迟延

    ​ 组成:

    1. 发送时延:是主机或路由器发送数据帧所需要的时间

      发生位置:在机器内部的发送器中,即网络适配器中,与信道长度无关

      img

    2. 传播时延:是电磁波在信道中传播一定距离所需要的时间

      发生位置:在机器外部的传输信道媒体上,与信号的发送速率无关,只与信号传送的距离有关

      img

    3. 处理时延:主机或路由器收到分组后处理分组所用的时间;如分析首部、提取数据、差错检验、转发路由查找等

    4. 排队时延:分组经过路由器时,在路由器中经历输入和输出的排队等待时间

      发生位置:各中转路由器中;取决于网络的通信量,通信量很大时会发生队列溢出,使分组丢失,相当于时延无限大

    总时延=发送时延+传播时延+处理时延+排队时延

  5. 时延带宽积

img

  1. 往返时间RTT:双向交互一次所需的时间;包含中间各结点的处理时延、排队时延、转发数据时的发送时延

  2. 利用率

    • 信道利用率:指某信道有百分之几的时间是被利用的
    • 网络信道利用率:全网络的信道利用率的加权平均数
    • D=D0/1-U 其中D是网络时延,D0是空闲时网络时延,U是利用率
    • 特点:信道或网络利用率过高会产生非常大的时延

计算机网络的非性能指标:

  1. 费用
  2. 质量
  3. 标准化
  4. 可靠性
  5. 可扩展性和可升级性
  6. 易于管理和维护

1.5 计算机网络体系结构(✔)

1.5.1 协议与划分层次

网络协议:为进行网络中的数据交换而建立的规则、标准或约定

计算机网络体系结构:计算机网络各层及其协议的集合

网络协议的三要素

  1. 语法:数据与控制信息的结构或格式
  2. 语义:需要发出何种控制信息,完成何种动作以及做出何种响应
  3. 同步:事件实现顺序的详细说明

1.5.2 各协议的体系结构

img
  1. 应用层:通过应用进程间的交互来完成特定网络应用,应用层协议定义的是应用进程间通信和交互的规则

  2. 运输层:负责向两台主机中进程之间的通信提供通用的数据传输服务,应用进程利用该服务传送应用层报文;通用指多种应用可以使用同一运输层服务;有复用和分用功能

  3. 网络层:负责为分组交换网上不同主机提供通信服务。在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送;选择合适路由,使运输层传下来的分组能通过网络中的路由器找到目的主机

  4. 数据链路层:负责两主机间链路上的传输;将网络层交下来的IP数据报组装成帧,在两个相邻结点间的链路上传送帧,帧中包含数据和必要的控制信息;在接收数据时,提取出数据部分交给网络层;通过控制信息监测差错,丢弃差错帧或纠正错误

  5. 物理层:考虑用多大电压代表0或1,如何识别对方发送的比特;确定电缆插头的物理结构

1.5.3 TCP/IP体系结构

img img
  • TCP/IP协议可为各式各样的应用提供服务(everything over IP)

  • TCP/IP也允许IP协议在各式各样的网络构成的互联网上运行(IP over everything)

2. 物理层

2.1 物理层的基本概念

物理层的功能:怎样在连接各种计算机的传输媒体上传输数据比特流,屏蔽不同传输媒体和通信手段的差异

传输媒体接口的特性

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

  2. 电气特性:接口电路的各条线上出现的电压范围

  3. 功能特性:某条线上出现某一电平电压的意义

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

2.2 数据通信的基础知识

2.2.1 数据通信系统模型

查看源图像

数据通信系统划分:源系统、传输系统、目的系统

源系统

  • 源点:源点设备产生要传输的数据

  • 发送器:源点生成的数字比特流要通过发送器编码后才能在传输系统中传输;如调制器

  • 接收器:结束传输系统发送来的信号,并转换成能被目的设备处理的信息;如解调器

  • 终点:终点设备从接收器获取传送来的数字比特流,然后把信息输出

常用术语

  • 消息:通信的目的是传送消息,如语音、文字、图像、视频等

  • 数据:是运送消息的实体;使用特点方式表示的信息,通常是有意义的符号序列

  • 信号:数据的电气或电磁表现

  • 模拟信号(连续信号):代表消息的参数取值是连续的

  • 数字信号(离散信号):代表消息的参数的取值是离散的

  • 码元:代表不同离散数值的基本波形

2.2.2 有关信道的基本概念(✔)

信道:表示向某一个方向传送信息的媒体

信息交互的方式

  1. 单向通信(单工通信):只能有一个方向的通信而没有反方向的交互;只需要一条信道
  2. 双向交替通信(半双工通信):通信的双方都可以发送信息,但不能双方同时发送,而是一方发送另一方接收,一段时间后可以反过来;两条信道
  3. 双向同时通信(全双工通信):通信双方可以同时发送和接收信息;两条信道;传输效率最高

基带信号:来自信源的信号,如计算机输出的代表文字或图像的数据信号都是基带信号

调制分类

  • 基带调制(编码):仅对基带信号的波形进行变换,使其能与信道特性相适应,变换后的信号仍是基带信号
  • 带通调制:使用载波进行调制,把基带信号的频率范围移到较高频段,并转换为模拟信号,变换后的信号称为带通信号

常用编码方式

查看源图像
  1. 不归零制:正电平代表1,负电平代表0

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

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

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

基本的带通调制方法

查看源图像
  1. 调幅:载波的振幅随基带数字信号而变化;如0或1分别对应无载波或有载波输出
  2. 调频:载波的频率随基带数字信号而变化;如0或1分别对应频率f1或f2
  3. 调相:载波的初始相位随基带数字信号而变化;如0或1分别对应于相位0度或180度

2.2.3 信道的极限容量(✔)

限制码元在信道上传输速率的因素

  1. 信道能够通过的频率范围

    码间串扰:信号中高频分类受到衰减,在接收端收到的波形前沿和后沿不那么陡峭,每个码元所占时间界限不明确,失去了码元间的清晰界限的现象

    奈氏准则:在任何信道,码元传输的速率是有上限的,超过上限就会出现严重的码间串扰,使接收端对码元无法识别

  2. 信噪比

    定义:信号的平均功率和噪声的平均功率之比,记作S/N

img

香农公式:信道的极限信息传输速率C是

img

​ 其中W为信道带宽,S为信道内所传信号的平均功率,N为信道内部的高斯噪声功率

​ 香农公式表明,信道的带宽或信道中的信噪比越大,信息的极限传输速率就越高

​ 香农公式的意义:只要信息传输速率低于信道的极限速率,就一定存在某种方法来实现无差错的传输。

2.3 物理层下面的传输媒体

传输媒体:是数据传输系统中在发送器和接收器之间的物理通路

传输媒体的分类:

  1. 引导型:电磁波被引导沿着固体媒体传播

    • 双绞线
    • 同轴电缆
    • 光纤
  2. 非引导型:电磁波无线传输

2.4 信道复用技术

2.4.1 频分复用、时分复用、统计时分复用

复用:允许用户使用一个共享的信道进行通信,降低成本,提高利用率

频分复用

​ 原理:用户在分配到一定频带后,在通信过程中自始至终都占用这个频带

​ 特点:所有用户在同样的时间占用不同的频率带宽

时分复用

​ 原理:将时间划分为一段段等长的时分复用帧(TDM帧),每个时分复用的用户在每一个TDM帧中占用固定序号的时隙

​ 特点:所有用户在不同的时间占用同样的频带宽度

查看源图像

统计时分复用

​ 原理:使用STDM帧来传送复用的数据,每一个STDM帧中的时隙数小于连接在集中器上的用户数;各用户有数据就发往集中器的输入缓存,集中器按顺序依次扫描输入缓存,把缓存中的输入数据放入STDM帧中,没有数据的缓存就跳过,当一个帧放满即发送,因此STDM帧不是固定分配时隙,而是按需动态分配时隙

某用户占用的时隙不是周期性出现的,因此统计时分复用又称为异步时分复用,而时分复用又称为同步时分复用

2.4.2 波分复用

原理:就是光的频分复用,使用同一根光纤同时传输多个光载波信号

2.4.3 码分复用(✔)

原理:各个用户使用进过特殊挑选的不同码型,因此彼此不会互相干扰

码片:每一个比特时间划分为m个短的间隔,称为码片

工作方式:每个站被指派一个唯一的m bit码片。若发送1,则发送自己的m bit码片;若发送0,则发送该码片的二进制反码。

码片实现扩频:由于一个比特可转换成m个比特的码片,因此实际发送数据率提高了m倍

重要特点:每个站的码片必须各不相同,并相互正交

码片正交关系:不同码片正交,就是向量S和T的规格化内积为0

正交关系的重要特征:任何码片与自己的规格化内积为1,与自己反码的规格化内积为-1

2.5 数字传输系统

早期数字传输系统的缺点:

  1. 速率标准不一

  2. 不是同步传输

现代的传输网络的传输媒体:光纤

同步光纤网(SONET):各级时钟都来自一个非常精确的主时钟,为光纤传输系统定义了同步传输的线路速率等级结构

同步数字系列(SDH):由SONET为基础发展的国际标准

2.6 带宽接入技术

ADSL技术:非对称数字用户线,将原有的模拟电话线进行改造,使其能够承载宽带业务,将0-4k的低端频谱留给电话使用,将剩余部分给宽带使用,其中上行带宽小于下行带宽。

​ 传输距离:与数据率和用户线的线径(粗细)有关

​ 传输速度:与实际用户线的信噪比密切相关

​ 数据率:采用自适应调制技术使用户线能够传输尽可能多的数据,受环境和线路条件影响较大

​ 特点:上行和下行带宽不对称、需要在用户线两端各安装一个调制解调器

​ 第二代ADSL:得到更高的数据率,采用无缝速率自适应技术,可在运营中不中断通信和不产生误码的情况下,自适应的调整数据率

光纤同轴混合网(HFC):是目前覆盖面较广的有线电视网,采用模拟技术,频分复用,主干部分使用光纤,入户部分使用同轴电缆

FTTx技术:是一种实现宽带居民接入网的方案,代表多种宽带光纤接入方式

3. 数据链路层

数据链路层使用的信道

​ 点对点信道:使用一对一的点对点通信方式

​ 广播信道:使用一对多的广播通信方式,过程比较复杂,需要专用的协议来协调

3.1 使用点对点信道的数据链路层

3.1.1 数据链路和帧

链路(物理链路):从一个结点到相邻结点的一段物理线路,中间没有任何其他的交换节点。链路是一条路径的一个组成部分,两台计算机之间的通信路径需要许多链路

数据链路(逻辑链路):把实现了这些通信协议的硬件和软件加到链路上,就构成了数据链路(物理线路+协议)

网络适配器:既有硬件也包括软件,实现了通信协议,包括了数据链路层和物理层两层的功能

规程:数据链路层中,规程等同于协议

:点对点信道数据链路层的协议数据单元

数据链路层通信时的主要步骤

  1. 结点A的数据链路层把网络层交下来的IP数据报添加首部和尾部封装成帧

  2. 结点A把封装好的帧发送给结点B的数据链路层

  3. 若结点B的数据链路层收到的帧无差错,则从收到的帧中提取IP数据报上交给网络层;否则丢弃这个帧

特点:数据链路层不用考虑物理层如何实现,所以就相当与对等层水平传输

3.1.2 三个基本问题(✔)

3.1.2.1 封装成帧

封装成帧:就是在一段数据前后分别添加首部和尾部,确定帧的界限,然后就构成了一个帧

添加首部和尾部的作用:进行帧定界(确定帧的界限);包含许多必要的控制信息

帧长:帧的数据部分加上帧首部和帧尾部的长度

最大传送单元(MTU):链路层协议规定的所能传送的帧的数据部分长度上限

帧格式

查看源图像

帧界定的方法:可用特殊的帧定界符,在ACSCII码中,用SOH表示帧的首部开始,EOT表示帧的结束

帧界定的作用:判断收到的帧是否完整,不完整则丢弃

3.1.2.2 透明传输

透明传输:不管什么数据,都能完整无差错的通过这个数据链路层,数据链路层对数据没有妨碍,数据链路层对数据时透明的

透明传输中的问题:若数据中的某个字节的二进制代码恰好组成了帧界定符,就会出现错误

解决方法:字节填充,在控制字符和特殊字符前插入一个转义字符"ESC",而真正的首部和尾部前不加

(7E --> 7D5E,7D --> 7D5D)

3.1.2.3 差错检测(✔)

比特差错:在传输中可能会产生比特差错,1可能变0,0可能变1

误码率:在一段时间,传输错误的比特占所有传输比特总数的比率,与信噪比有关

循环冗余校验(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=110101,余数R=001,则最终传输数据为101001001。

​ 帧校验序列(FCS):为差错检验而添加的冗余码,就是计算后得到的余数R

​ 生成多项式:一种方便的表示循环冗余校验过程的方法

例: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协议的特点

作用域:用户计算机和ISP通信时所使用的数据链路层协议

PPP协议应满足的需求

  1. 简单:对数据链路层的帧,不需要纠错、序号、流量控制,简单作为首要要求;收到帧进行CRC检验,无差错则接收,反之丢弃

  2. 封装成帧:必须规定特殊的字符作为帧定界符,使接收端从收到的比特流中准确找出帧的开始和结束位置

  3. 透明性:必须保证数据传输的透明性,要能解决碰巧出现和帧定界符一样的比特组合的问题

  4. 多种网络层协议:必须能够在同一条物理链路上同时支持多种网络层协议的运行,如IP等;在局域网和路由器上同样如此

  5. 多种类型链路:必须能够在多种链路上运行

  6. 差错检验:必须能够对接收端收到的帧进行检测,并立即丢弃有差错的帧

  7. 检测连接状态:必须能够自动检测链路是否处于正常工作状态

  8. 最大传送单元:必须对每一种类型的点对点链路设置MTU的标准默认值;促进各种实现之间的互操作性,若高层协议发送的分组数据部分超过MTU值,则丢弃并返回差错

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

  10. 数据压缩协商:必须提供方法来协商使用数据压缩算法

PPP的特点:不支持多点线路,只支持点对点的链路通信,只支持全双工链路

PPP协议不需要的功能:纠错、流量控制、序号、多点线路、半双工或单工链路(只工作在点对点链路)

PPP协议的组成

  1. 将IP数据报封装到串行链路的方法;PPP支持异步链路,也支持面向比特的同步链路;IP数据报在PPP帧中数据部分,收到MTU限制

  2. 用来建立、配置和测试链路连接的链路控制协议LCP

  3. 网络控制协议NCP,其中每一个协议支持不同的网络层协议

3.2.2 PPP协议的帧格式

查看源图像

首部和尾部分别为4个字段和2个字段

标志字段F:规定为0x7E,表示一个帧的开始或结束,就是帧的定界符

地址字段A:规定为0xFF

控制字段C:规定为0x03

协议字段:

  1. 当协议字段为0x0021时,PPP帧的信息字段就是IP数据报。

  2. 当协议字段为0xC021时,PPP帧的信息字段就是PPP链路控制协议LCP的数据。

  3. 当协议字段为0x8021时,PPP帧的信息字段就是网络层的控制数据。

信息字段:长度可变,不超过1500字节

帧减压序列FCS:CRC中使用的冗余码

透明传输问题: 当信息字段中出现和标志字段一样的比特(0x7E)组合时,就必须采取一些措施使这种形式上和标志字段一言的比特组合不出现在信息字段中。

异步传输-字符填充

  • 当PPP使用异步传输时,它把转移符定义为0x7D,并使用字节填充。

  • RFC1662规定了如下填充方法:

    1. 把信息字段中出现的每一个0x7E字节转变为2字节序列(0x7D,0x5E)。
    2. 若信息字段中出现一个0x7D的字节(即出现了和转义字符一样的比特组合),则把转义字符0x7D转变为2字节序列(0x7D,0x5D)。
    3. 若信息字段中出现ASCII码的控制字符(即数值小于0x20的字符),则在该字符前面要加入一个0x7D字节,同时将该字符的编码加以改变。例如,出现0x03(在控制字符中是“传输结束”ETX)就要把它转变为2字节序列的(0x7D,0x31)。
  • 由于在发送端进行了字节填充,因此在链路上传送的信息字节数就超过了原来的信息字节数。但接收端在接收到数据后再进行与发送端字节填充相反的变换,就可以正确地恢复出原来的信息。

同步传输-零比特填充(✔)

  • 当PPP使用同步传输时,使用零比特填充。

  • 零比特填充的具体方法:

    1. 在发送端先扫描整个信息字段(通常使用硬件实现,但也可以用软件实现,但是会慢一些。
    2. 只要发现有5个连续的1,则立即填入一个0。
    3. 接收端在收到一个帧时,先找到标志字段F以确定帧的边界,接着再用硬件对其中的比特流进行扫描,每当发现5个连续1时,就把5个连续1后的一个0删除,以还原成原来的信息比特流。
  • 因此通过这种零比特填充后的数据,就可以保证在信息字段中不会出现连续6个1。

3.2.3 PPP协议的工作状态

查看源图像

3.3 使用广播信道的数据链路层

3.3.1 局域网的数据链路层

局域网的特点:网络为一个单位所拥有,且地理范围和站点数目均有限

局域网的优点

  1. 具有广播功能,从一个站点可方便的访问全网;局域网上主机共享局域网上各种硬件和软件资源

  2. 便于系统的扩展和演变,各设备的位置可灵活调整和改变

  3. 提高了系统的可靠性、可用性和生存性

局域网的拓扑结构:总线网、环形网、星形网

媒体共享技术

  • 静态划分信道:频分复用、时分复用、波分复用、码分复用(代价较高,不适合局域网使用)

  • 动态媒体接入控制(多点接入):

    • 随机接入:所有用户可随机发送信息,若发生碰撞(冲突),会使这些发送失败,需要解决碰撞的网络协议
    • 受控接入:用户不能随机发送信息而必须服从一定的控制,如多点线路探询(轮询)

以太网的两个标准:DIX Ethernet V2;IEEE 802.3

数据链路层的两个子层

  1. 逻辑链路控制(LLC):靠近网络层,看不见下面的局域网,为网络层提供统一的接口,已经过时
  2. 媒体接入控制(MAC):靠近物理层,存放与接入媒体有关的内容

适配器的作用

  • 网络适配器又被称为网卡

  • 包含了数据链路层和物理层两层的功能

  • 适配器的重要功能:

    1. 进行串行\并行转换
    2. 对数据进行缓存
    3. 在计算机的操作系统安装设备驱动程序
    4. 实现以太网协议

    计算机通过配置器和局域网通信:

查看源图像

3.3.2 CSMA\CD协议(✔)

先听后发,边听边发,冲突停止,延迟重发

总线的特点:当一台主机发送数据时,总线上所有主机都能检测到这个数据,就是广播通信方式

为使通信简便采取的措施

  1. 采用无连接工作方式,不必先建立连接就可以直接发送数据;适配器对数据帧不编号,不要求发回确认;因此,以太网提供尽最大努力交付,是不可靠交付;收到差错帧则丢弃,是否重传由高层决定,和以太网无关;同一时间只允许一台主机发送数据;使用CSMA/CD协议

  2. 发送的数据使用曼切斯特编码

CSMA/CD协议要点

  1. 多点接入:说明是总线型网络

  2. 载波监听:检测总线上有没有其他计算机也在发送;每个主机必须不停的检测信道,发送前检测是为了获得发送权,发送中检测是为了及时发现碰撞

  3. 碰撞检测:边发松边监听,也叫冲突检测;发生碰撞就立即停止发生,等待一段随机时间后再次发送

发生碰撞的原因:电磁波在1km电缆的传播时延为5μs,在这段时间其他主机发送数据无法检测到,就会导致之后某时刻发送冲突

适用环境:双向交替通信(半双工通信)

以太网的发送不确定性:每一个站在自己发送数据之后一段时间内,存在遭遇碰撞的可能,这段时间是不确定的,取决于离另一个发送站的距离,因此无法保证一定能把自己的数据帧成功发送出去

争用期(碰撞窗口):以太网端到端的往返时间2τ;经过争用期没检测到碰撞,才能肯定这次发送不会发送碰撞

截断二进制指数退避算法:用来确定碰撞后重传的时机,不是信道空闲就立即再次发送,而是推迟一个随机的时间

具体流程

  1. 规定了基本退避时间为争用期2τ,具体的争用期时间是51.2μs;对于10Mbit/s以太网,争用期内能发送512bit,即64字节,也可以说争用期是512比特时间。

  2. 从离散的整数集合[0,1,…,(2^k-1)]中随机取一个数,记为r,重传应推后r倍的争用期,k=min(重传次数,10)

  3. 当重传16次仍不成功时,丢弃该帧,向高层报告

凡长度小于64字节的帧都是由于冲突而异常终止的无效帧

强化碰撞:当发现碰撞时,处理立即停止发送数据外,还要继续发送32bit或48bit的人为干扰信号,使所有用户都知道发生了碰撞

帧间最小间隔:9.6μs,即96比特时间,使刚收到数据帧的站的接受缓存来得及清理,做好接收下一帧的准备

CSMA/CD协议要点

  1. 准备发送:适配器从网络获得一个分组,加上首部和尾部组成以太网帧,放入以太网缓存中,发送前先检测信道

  2. 检测信道:若检测到信道忙,则不停检测,直到信道转为空闲;若检测到信道空闲,并在96比特时间内保持空闲,就发送这个帧

  3. 在发送过程中仍不停检测信道,边发送边监听。这里有两种可能:

    发送成功:争用期内未检测到碰撞。这个帧一定能发送成功。发送完毕后回到步骤1

    发送失败:争用期内检测到碰撞。立即停止发送,并按规定发送人为干扰信号(强化碰撞),执行指数退避算法,等待r倍512比特时间后,返回步骤2;若重传16次仍不成功,停止重传并向上报错

3.3.3 使用集线器的星形拓扑(✔)

集线器的特点

  1. 使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,还是使用CSMA/CD协议,在同一时刻只允许一个站发送数据
  2. 一个集线器有多个接口,因此一个集线器很像一个多接口转发器
  3. 集线器工作在物理层,仅简单的转发比特,不进行碰撞检测
  4. 有专用的芯片,能自适应串音回波抵消
  5. 每次只能发送一个信号,工作在物理层,只对比特进行转发不进行检测

3.3.4 以太的网信道利用率

以太网信道的利用率由于会发生碰撞,实际利用率达不到100%

成功发送一个帧占用信道的时间:T0+τ

参数a

  • a=τ/T0 是单程端到端时延τ与帧的发送时间T0之比

  • a->0表示一发生碰撞就能立即检测出来并停止发送,而a越大,争用期占比越大,使信道利用率降低

    因此a的值越小越好,当数据率一定时,以太网连线的长度受到限制,同时以太网的帧长不能太短

极限信道利用率Smax

Smax=T0/(T0+τ)=1/1+a

只有参数a远小于1才能得到尽可能高的极限信道利用率

3.3.5 以太网的MAC层

MAC地址

​ 定义:又叫物理地址或硬件地址;就是适配器的标识符,用48位二进制数来标识网卡的硬件地址,表示为6个16进制数,在局域网内具有唯一性

​ I/G位:地址字段第一个字节的最低位;为0表示单个站地址、为1表示组地址,用来进行多播

​ G/L位:地址字段第一个字节的最低第二位;为0表示全球管理、为1表示本地管理

适配器的过滤功能:适配器收到MAC帧后检查帧中目的地址,若发往本站则收下,否则丢弃

发往本站的帧:

  1. 单播帧:一对一,即收到的帧的MAC地址与本站的硬件地址相同
  2. 广播帧:一对全体,即发送给本局域网上所有站点的帧(全1地址)
  3. 多播帧:一对多,即发送给本局域网上一部分站点的帧

MAC帧格式

查看源图像

以太网数据帧长度:64~1518

各字段含义:

  • 类型:用来标志上一层使用的是什么协议

  • 数据:长度在46~1500字节

  • FCS:帧检验序列,使用CRC检验

填充字段:当数据字段长度小于46字节时,MAC子层会在数据字段后面加入一个整数字节的填充字段,以保证MAC帧长不小于64字节

插入的8字节:从MAC子层传到物理层时要在帧前插入8字节,由硬件生成

前同步码:7字节;使接收端的适配器在接收MAC帧时能迅速调整时钟频率,使其和发送端时钟同步

帧开始定界符:定义为10101011;用来表示帧开始

无效的MAC帧:

  1. 帧的长度不是整数个字节

  2. 用收到的帧检验序列FCS查出差错

  3. 收到的帧的MAC客户数据长度不在46 ~ 1500字节之间,或MAC帧长度不在64 ~ 1518

3.4 扩展以太网

3.4.1 在物理层扩展以太网

物理扩展:集线器、光纤

3.4.2 在数据链路层扩展以太网(✔)

网桥:对收到的帧根据MAC帧目的地址查找地址表进行转发和过滤

交换机:工作在数据链路层,实质就是一个多接口网桥

交换机特点:交换机上的主机是全双工工作,不会产生冲突,交换机中存有地址表通过自学习算法建立,交换机上所有端口在同一个广播域上

帧转发方式

  • 直通:收到帧之后直接转发,不必事先把整个数据帧缓存,但也不对帧进行检验

  • 存储转发:将所有帧都收到后进行检查,然后再发送

交换机的自学习功能

地址表的形成:收到未知的地址后,存储源地址和接口的对应关系,向除来源端口的其它端口广播,目的地址不符则丢弃,否则接收并回复,收到回复后存储对应关系;地址表有有效时间,超过有效时间则失效

生成树协议STP:用于解决帧在交换机之间无限循环的问题

3.4.3虚拟局域网

虚拟局域网(VLAN):是一些局域网网段构成的与物理位置无关的逻辑组

VLAN标记:在MAC帧的源地址和类型间插入4字节的VLAN标记,交换机收到帧后只向所属VLAN转发,而不进行广播

最大帧长变为1522字节(1518+4)

4. 网络层

4.1 网络层提供的两种服务

网络层提供服务的特点(✔):网络层向上只提供简单的、无连接的、尽最大努力交付的数据报服务,不保证可靠通信

  1. 虚电路服务:保证可靠通信,必须建立连接

    • 思路:可靠通信由网络保证
    • 连接的建立:必须有
    • 终点地址:仅在连接建立阶段使用,每个分组使用短虚电路号
    • 分组转发:属于同一条虚电路的分组均按照统一路由进行转发
    • 当节点出故障:所有通过故障的结点的虚电路均不能工作
    • 分组的顺序:总是按发送顺序到达终点
    • 端到端的差错处理:可以由网络负责,也可以由用户主机负责
  2. 数据报服务:尽最大努力发送,不保证可靠通信

    • 思路:可靠通信由用户主机保证
    • 连接的建立:不需要
    • 终点地址:每个分组都有终点的完整地址
    • 分组转发:每个分组独立选择路由器进行转发
    • 当结点出故障:出故障结点可能会丢失分组,一些路由可能会发生变化
    • 分组的顺序:到达终点的时间不一定按发送顺序
    • 端到端的差错控制:由用户主机负责

4.2 网际协议IP

与IP配套使用的三个协议

  1. 地址解析协议ARP

  2. 网际控制报文协议ICMP

  3. 网际组管理协议IGMP

查看源图像

4.2.1 虚拟互连网络

虚拟互联网络:逻辑互连的网络,可以由多种异构网络互连组成,在网络层上看起来像一个统一的网络

中间设备:用来将网络互相连接

  • 物理层的中间设备:转发器

  • 数据链路层的中间设备:网桥

  • 网络层的中间设备:路由器

  • 网络层以上的中间设备:网关

4.2.2 分类的IP地址(✔)

IP地址的编址方法

  • 分类的IP地址:是最基本的编址方法
  • 子网的划分:对最基本编址方法的改进
  • 构成超网:比较新的无分类编址方法

分类的IP地址:将IP地址划分为若干个固定类,每一类地址都由 网络号(net-id)主机号(host-id) 构成,一个IP地址在整个互联网范围内是唯一的。

查看源图像

A、B、C类地址都是单播地址,D类地址用于多播

IP地址的记法:点分十进制记法

常用的三类IP地址

  • A类

    最大可指派网络数:126(2^7-2) 8位除去1个固定位剩7位,减2因为要除去全0和全1位

    第一个可指派的网络号:1

    最后一个可指派的网络号:126

    每个网络中最大主机数:16777214(2^24-2(网络地址+广播地址))

  • B类

    最大可指派网络数:16383(2^14-1) 16位除去2个固定位,减1因为有两个固定位为10,所以不存在全0或全1,但规定128.0.0.0不使用,所以减去

    第一个可指派的网络号:128.1

    最后一个可指派的网络号:191.255

    每个网络中最大主机数:65534(2^16-2(网络地址+广播地址))

  • C类

    最大可指派网络数:2097151(2^21-1) 24位除去3个固定位,减1同B类,192.0.0.0规定不使用

    第一个可指派的网络号:192.0.1

    最后一个可指派的网络号:223.255.255

    每个网络中最大主机数:254(2^8-2(网络地址+广播地址))

IP地址的指派范围

查看源图像

一般不使用的特殊IP地址

img

IP地址的重要特点

  1. 每一个IP地址都由网络号和主机号两部分组成,是一种分等级的地址结构

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

  3. 用转发器或网桥连接起来的若干给局域网仍为一个网络,因为这些局域网都具有同样的网络号net-id

  4. 所有分配到网络号的网络都是平等的

网络上的IP地址

  1. 同一局域网上的各IP地址的网络号都是相同的

  2. 用网桥互连的网段仍是一个局域网,只有一个网络号

  3. 一个路由器有多个接口,每个接口对应的网络号不同

  4. 两路由器直接相连时,可以不给两端接口分配IP,这样的特殊网络也叫无编号网络或无名网络

4.2.3 IP地址与硬件地址

IP地址与硬件地址区别:从层次看,硬件地址或物理地址是数据链路层和物理层使用的地址,IP地址是网络层和以上各层使用的地址,是一种逻辑地址。

查看源图像

4.2.4 地址解析协议ARP

IP地址与MAC地址:源IP地址和目的IP地址始终不变;而源MAC地址和目的MAC地址在每条链路上都要变化

作用:从网络层使用的IP地址,解析出在数据链路层使用的硬件地址

工作方式:每个主机里都设有一个ARP高速缓存,里面有所在局域网上各主机和路由器的IP地址到硬件地址的映射表,且这个映射表经常动态更新

工作流程(✔):当主机A向局域网上某个主机B发送IP数据报时,先在ARP高速缓存中查看有无主机B的IP地址,若有,就可查出对应的硬件地址,反之,执行ARP请求分组:

  1. ARP请求分组:在局域网广播一个ARP请求分组,包含发送方硬件地址,发送方IP地址,目的方硬件地址(未知时填0),目的方IP地址
  2. 本地广播ARP请求,路由器不转发ARP请求
  3. ARP响应分组:某主机收到广播,发现本机IP与查询IP一致,就回复ARP响应分组,包含发送方硬件地址,发送方IP地址;同时将请求分组中IP与硬件地址对应关系保存
  4. 收到回复的ARP响应分组后,将对应IP和硬件地址存入ARP高速缓存中,方便下次使用

生存时间:ARP高速缓存中每条映射都只存在一段时间,超过时间后就被删除

特点(✔)

  • ARP协议只解决同一局域网上IP地址和硬件地址映射问题,不在同一局域网则无法解决
  • ARP工作过程对用户来说是透明的

四种使用ARP的典型情况

  1. 发送方是主机,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址

  2. 发送方是主机,要把IP数据报发送到另一个网络上的一个主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成

  3. 发送方是路由器,要把IP数据报发送到本网络上的一个主机,这时ARP找到目的主机的硬件地址

  4. 发送方是路由器,要把IP数据报发送到另一个网络上的主机,这时ARP找到本网络上的一个路由器的硬件地址,剩下的工作由这个路由器完成

4.2.5 IP数据报格式

img

首部各字段含义

  1. 版本:占4位,说明该IP数据报使用的IP协议的版本,通信双方必须使用同一个IP协议版本
  2. 首部长度:占4位,长度20~60字节,因为IPv4中首部存在可变部分,所以需要指出首部的长度以划分首部与数据部分;以4字节为单位,不是4的整倍数时要填充至整倍数
  3. 区分服务:占8位,只在区分服务时才起作用,一般不用
  4. 总长度:占16位,说明该IP数据报的总长度(首部+数据)。IP数据报封装为MAC帧时受限于MAC帧的长度上限,所以IP数据报还存在“分片”操作,即将IP数据报分为多片,封装进多个MAC帧。因此IP数据报最大长度2^16-1=65535字节
  5. 标识:占16位,IP数据报若存在分片,则接收方需要将各分片组合出原IP数据报,相同标识号的IP数据报就说明它们其实是同一个源IP数据报。
  6. 标志:占3位,目前只有前两位有意义,最低位为MF(More Fragment),若MF=1则说明该数据报后面“还有分片”。中间一位为DF(Don’t Fragment),若DF=1则不能分片,只有DF=0才可以分片
  7. 片偏移:占13位,用于说明该IP数据报(已分片)在源IP数据报中的相对位置(相对于数据字段的起点),单位是8字节,每个分片一定是8字节的整倍数
  8. 生存时间:IP分组在网络中传递时有可能出现“兜圈子”的情况,所以需要对IP数据报进行一定的限制,生存时间的单位是“跳数”,最大值为255,每经过一个路由器,路由器便将IP数据报的生存时间-1,当IP数据报中的生存时间为0时,路由器丢弃该分组。
  9. 协议:说明该IP数据报的上层协议类型,如IP对应4,TCP对应6,UDP对应17
  10. 首部校验和:验证首部是否存在传输错误,只检验首部,不包括数据部分
  11. 源地址
  12. 目的地址
  13. 可变部分:长度为1~40字节,IP地址中的可变部分可用于支持很多操作,但很多情况都用不上,而且会增加路由器处理分组的开销,所以IPv6中的数据报首部做成了固定长度

4.2.6 IP层转发分组的流程

每个路由器路由表表项数:每有一个网络就要有一个路由表项。接口所在网络为直连网络,直接交付

特定主机的路由:给特定主机指定路由表,通过指定路线访问目标主机

默认路由:可以减少路由表所占用的空间和搜索路由表所用的时间,将不在路由表中的网络都连向默认路由

路由表:只有目标网络和对应的下一跳地址,并不储存到某个网络的完整路径

分组转发算法

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

  2. 若N就是与此路由器直接相连的某个网络地址,则进行直接交付,不需要再经过其他的路由器,直接把数据报交付给目的主机(这里包括把目的主机地址D转换为具体的硬件地址,把数据报封装为MAC帧,再发送此帧);否则就要执行第三步进行间接交付。

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

  4. 若路由表中有到达网络N的路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行第五步。

  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的下一跳路由器,否则执行第六步。

  6. 报告转发分组出错。

4.3 划分子网和构造超网(✔)

4.3.1 划分子网

两级IP地址的问题

  • IP地址空间利用率有时很低
  • 给每个物理网络分配一个网络号会使路由表变得很大,因此网络性能会变坏
  • 两级IP地址不够灵活

划分子网的基本思路:借用主机号若干位作为子网地址

划分子网后的IP地址:| 网络号 | 子网号 | 主机号 |

子网掩码

​ 作用:用来找出IP地址中的子网部分,长度为32位,原IP中网络号和子网部分置为1,主机号部分置为0

​ (IP地址)and(子网掩码)=网络地址

​ 默认子网掩码:在不进行子网划分时,也要给出子网掩码,就用默认子网掩码

查看源图像

​ 子网掩码是一个网络或一个子网的重要属性,路由表中的每一项还要给出该网络的子网掩码

子网数:2^k-2,k表示子网号的位数,减去全0和全1,就是可用子网数,虽然现在全0和全1地址也可以使用,但不推荐

子网划分方法

​ 固定长度划分:所划分的所有子网的子网掩码都是相同的,取所用最大的主机数进行划分

​ 变长划分:根据需求灵活划分

4.3.2 使用子网时的分组转发

子网划分后的路由表:包含目的网络地址、子网掩码、下一跳地址

子网划分后的路由器转发分组算法

  1. 从收到的数据报首部提取目的IP地址

  2. 先判断是否为直接交付。对路由器直接相连的网络进行逐个检查:用各网络的子网掩码和D逐位相与,看结果是否和相对应的网络地址匹配。若匹配,则把分组进行直接交付,转发任务结束。否则就是间接交付,执行(3)。

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

  4. 对路由表的每一行,用其中的子网掩码和D逐位相与,其结果为N。若N与该行的目的网络地址匹配,则把数据报传送给该行指明的下一跳路由器。否则执行(5)。

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

  6. 报告转发分组出错。

4.3.3 无分类编址CIDR(构造超网)

概述:它最最主要的一点是消除了A,B,C类地址和划分子网的概念。它重新将IP地址划分为两个部分,即 “网络前缀” 和 ”主机号”。注意这里的网络前缀再也没有位数的限制,即没有A、B、C类之分。

CIDR的主要特点

  1. 消除了传统A、B、C类地址及划分子网的概念,重新将IP地址划分为两个部分,即 ”网络前缀” 和 ”主机号”。注意这里的网络前缀再也没有位数的限制,即没有A、B、C类之分

  2. 把网络前缀相同的连续IP地址组成一个CIDR地址块,只要知道任一个地址,就可以知道这个地址块的起始地址和最大地址以及地址数

格式:使用网络前缀代替网络号和子网号,使IP地址变回两级格式

斜线表示法:/24表示子网掩码前24位为1,即网络前缀的位数

CIDR地址块:把网络前缀都相同的连续IP地址组成CIDR地址块

路由聚合:一个CIDR地址块能表示很多地址,这种地址的聚合称为路由聚合,也称为构成超网。有利于减少路由器之间的路由选择信息的交换,从而提高整个互联网的性能

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开始

最长前缀匹配:用收到的目的地址与路由表中的每条掩码依次相与,取最长前缀匹配项的地址作为下一跳。因为前缀越长,其地址块就越小,因而路由就越具体

二叉线索树:将路由表中各IP地址构成一个01字典树,也称为二叉线索树,能极大优化路由表匹配过程

4.4 网际控制报文协议ICMP

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

格式

点击查看源网页

4.4.1 ICMP报文种类(✔)

报文种类:差错报告报文,询问报文

img

常见差错报告报文:终点不可达、时间超过、参数问题、改变路由(重定向)

ICMP差错报告报文封装过程

image-20190512130716058

不发送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 路由选择协议基本概念

分层次的路由选择协议:互联网采用分层次的路由选择协议,自适应的(动态的)、分布式路由选择协议

自治系统AS:在单一技术管理下的一组路由器,在AS内部使用内部网关协议,AS之间使用外部网关协议

路由选择协议分类

  • 内部网光协议IGP:在一个自治系统内部使用。如RIP、OSPF协议

  • 外部网光协议EGP:在不同自治系统之间使用。如BGP协议

4.5.2 内部网关协议RIP(✔)

概述:是一种分布式,基于距离的路由选择协议

距离:直连网络距离为1,每过一个非直连网络距离加1,距离也称为跳数,每经过一个路由器跳数就加1,距离实际上指最短距离。RIP允许一个路径最多包含15个路由器,也就是距离最大值为16,故RIP适合小型互联网使用;RIP不能在两个网络之间同时使用多条路由

工作流程:每个路由器每隔一段时间向外广播,每个路由器收到广播后更新自己的路由表。刚开始时只知道直连网络的距离,路由表为空,以后,每个路由器只和数目有限的相邻路由器交互并更新路由信息,经过若干次更新后,所有路由器最终会知道到达本自治系统其他路由器的最短距离和下一跳地址,此时称该网络收敛

RIP协议的特点

  1. 仅和相邻路由器交换信息,不相邻的路由器不交换信息

  2. 交换的信息是当前本路由器所知道的全部信息,即其现在的路由表

  3. 按固定时间间隔交换信息

距离向量算法

  1. 路由器收到地址为X的相邻路由器的一个RIP报文,修改报文中所有项目,把下一跳地址改为X,把距离字段值都+1

  2. 对修改后的RIP报文中的每个项目重复以下步骤:

    若项目中目的地址不在路由表中,则加入路由表;

    若下一跳给出的路由器地址与RIP报文传来地址相同,则用收到的项目替换原路由表中的项目;

    若收到项目中的距离小于路由表中的距离,进行更新;

  3. 若超过3分钟未收到相邻路由信息,则将其标记为不可达,即把距离置为16

  4. 返回

RIP协议报文格式

查看源图像

各字段含义

  • 命令:指出报文的意义;1表示请求路由信息,2表示对请求路由信息的响应或路由更新报文
  • 地址族标识符:标志所使用的的地址协议;如IP地址就置为2
  • 路由标记:填入自治系统号,因为RIP可能受到本自治系统以外的路由选择信息

RIP报文最大长度:4+20*25=504字节

RIP2改动:支持变长子网掩码和无分类域间路由选择CIDR;提供简单的鉴别过程支持多播

RIP存在的问题:当网络出现故障时,要经过较长时间才能将此信息传送到所有路由器

RIP协议特点

  • 好消息传播快,坏消息传播慢,网络出故障的传播时间需要较长时间

  • 优点:实现简单,开销较小;

  • 缺点:限制了网络的规模,出故障时传播时间较长

4.5.3 OSPF协议

主要特征:使用分布式的链路状态协议,而不像RIP使用距离向量协议

OSPF的要点

  1. 向本自治系统中所有路由器发送信息。使用洪泛法,向所有相邻路由发送信息,每个相邻路由又再将此信息发给所有相邻路由

  2. 发送信息就是与本路由器相邻的所有路由器的链路状态,说明与哪些路由相邻,以及该链路的"度量";而不是发生路由表

  3. 只有当链路状态发生变化时,才使用洪泛法发生信息;不是定期更新

度量:费用、距离、时延、带宽

链路状态数据库:实际就是全网的拓扑结构图,它在全网范围内是一致的,能较快的更新,收敛较快

OSPF的区域:为使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干各更小的范围,叫做区域;必须要有一个主干区域,其它区域一般都和主干区域直接相连;每个区域都有一个32位的区域标识符;区域不能太大,一个区域路由器数量不超过200个;

优点:使用泛洪法交换链路信息时,仅在一个区域内而不是整个自治系统中,这减小了整个网络上的通信量

OSPF的特点

  • 使用层次结构的区域划分

  • OSPF直接用IP数据报传送,而不用UDP

  • 支持可变长度的子网划分和无分类编址CIDR

  • OSPF对于不同类型的业务可计算出不同的路由

  • 到达同一目的网络可有多条代价相同的路径,多路径间的负载平衡

  • 所有在OSPF路由器之间交换的分组都具有鉴别功能

OSPF报文

查看源图像

OSPF报文的5种分组类型

  1. 问候分组;

  2. 数据库描述分组;

  3. 链路状态请求分组;

  4. 链路状态更新分组,用泛洪法对全网更新链路状态;

  5. 链路状态确认分组

指定路由器法:指定一个代表路由器,将信息都传送给指定的路由,再由其向其他路由器转发,减小网络上的通信量

4.5.4 外部网关协议EGP

EGP协议的作用:寻找一条能够到达目的网络且比较好的路由,不一定是最佳路由,采用路径向量路由选择协议

4.5.5 路由器的构成

路由器:路由器是一种由多个输入端口和多个输出端口的专用计算机

路由器两大部分

  1. 路由选择部分:路由选择处理机,路由选择协议,路由表

  2. 分组转发部分:交换结构,一组输入端口,一组输出端口

    转发与路由选择:转发根据转发表,转发表由路由表而来,路由选择根据路由表,路由表由路由选择协议及相关算法而来

    分组丢弃:由于没有足够存储空间

    交换结构:交换结构是路由器的关键部件、把分组从一个输入端口转到一个输出接口

    三种交换方式:通过存储器、通过总线、通过互连网络

4.6 IPv6

4.6.1 IPv6的基本首部

IPv6主要变化

  • 更大的地址空间:将地址从32位增大到128位

  • 扩展的地址层次结构

  • 灵活的首部格式:定义了很多可选的扩展首部

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

  • 允许协议继续扩充

  • 支持即插即用:自动配置,不需要使用DHCP

  • 支持资源的预分配

  • 首部改为8字节对齐

IPv6数据报格式

查看源图像

首部长度固定位40字节

基本首部

查看源图像

各字段含义

  • 版本:占4位。指明协议的版本

  • 通信量类:占8位。为了区分不同的IPv6数据报的类别或优先级

  • 流标号:占20位。标明数据报所属的流,在流经过的路径上的路由器都保证服务质量

  • 有效载荷长度:占16位。指明除基本首部外的字节数,最大值是64KB

  • 下一个首部:占8位。相当于IPv4的协议字段或可选字段。当没有扩展首部时,指明首部后面的数据应交付IP上层哪个协议;有扩展首部时,就标识后面第一个扩展首部的类型

  • 跳数限制:占8位。防止数据报在网络中无限期存在,最大255跳,每转发一次就-1,为0就将这个数据报丢弃

  • 源地址:占128位。是数据报发送端的IP地址

  • 目的地址:占128位。是数据报接收端的IP地址

4.6.2 IPv6地址(✔)

结点与接口:将实现IPv6的主机和路由器均称为结点

IPv6的表示

冒号16进制记法:用8段,每段4个16进制数组成,允许将数据前的0省略

​ 例:68E6:8C64:FFFF:FFFF:0:1180:FFFF:FFFF

零压缩:一串连续的零可用一对冒号所代替,在一个地址中只能使用一次,若多次压缩将导致地址无法还原

​ 例:FF05:0:0:0:0:0:0:0:03 => FF05::03

点分十进制记法的后缀:可将IPv4地址前添加6组0,使其变成IPv6的地址

​ 例:0:0:0:0:0:0:128.10.2.1 = ::128.10.2.1

4.6.3 IPv4向IPv6过渡

双协议栈:在完全过渡到IPv6前,使一部分主机或路由器装有两个协议栈,使其可与不同网络通信时采用不同的协议,将IPv6数据报报头改为IPv4数据报形式

隧道技术:在IPv6协议进入IPv4网络时,更改源地址为隧道起点,目的地址变为隧道终点,建立隧道,使整个原IPv6数据报作为IPv4数据报的数据部分,在出隧道时改回原来的源地址和目的地址,还原为IPv6数据报

4.6.4 ICMPv6

ICMPv6:地址解析协议ARP和IGMP都集合到ICMPv6中

分类:差错报文,信息报文,邻站发现报文,组成员关系报文

4.7 IP多播(略)

4.8 虚拟专用网VPN和网络地址转换NAT

4.8.1 虚拟专用网VPN

概述:用于机构内部的通信,而不是用于和网络外非本机构的主机通信,但没有真正使用通信专线,VPN只是在效果上和真正的专用网一样。

VPN的构建:所有通过互联网传送的数据都必须加密,要构建VPN必须为它的每一个场所配置专门的硬件和软件,使每一个场所的VPN系统都知道其他场所的地址。

远程接入VPN:可以满足外部流动员工访问公司网络的需求。

4.8.2 网络地址转换NAT

​ 要在路由器上安装NAT软件,装有NAT软件的路由器称为NAT路由器,它至少有一个有效的外部全球IP地址,所有使用本地地址的主机在和外界通信时,都要在NAT路由器上将其本地地址转换为全球IP地址,才能和互联网连接。

网络转换的过程

在内部主机与外部主机通信时,在NAT路由器上进行了两次转换:

  1. 离开专用网时:替换源地址,将内部地址替换为全球地址

  2. 进入专用网时:替换目的地址,将全球地址替换为内部地址

    通过NAT路由器的通信必须由专用网内的主机发起,专用网内部的主机不能充当服务器用,因为互联网上的用户无法请求专用网内的服务器提供服务

网络地址与端口号转换NAPT:可以使多个本地主机共用一个全球IP地址

NAPT地址转换过程:NAPT把专用网内不同的源IP地址,都转换为同样的全球IP地址,但对源主机所采用的TCP端口号,则转换为不同的新的端口号,因此,当NAPT路由器收到从互联网发来的应答时,就可以从IP数据报的数据部分找出运输层的端口号,然后根据不同的目的端口号,从NAPT转换表中找到正确的目的主机。

5. 运输层

5.1 运输层协议概述

5.1.1 进程间的通信

概述:运输层向它上面的应用层提供通信服务运输层属于面向通信部分的最高层,同时也是用户功能中的最底层;只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发时只用到下三层的功能

通信:真正进行通信的实体是在主机中的进程,是一台主机中的进程和另一台主机中的进程在交换数据,严格来讲,两台主机进行通信就是两台主机中的应用进程互相通信

运输层的作用

查看源图像

网络层与运输层的区别:网络层为主机之间提供逻辑通信,运输层为应用进程之间提供端到端的逻辑通信

基于端口的复用和分用功能

复用:在发送方不同的应用进程都可以使用同一个运输层协议传送数据

分用:接收方的运输层在剥去报文的首部后能把这些数据正确交付目的应用进程

屏蔽作用:运输层向高层屏蔽了网络核心的细节,使应用进程看见的就好像在两个运输层实体之间有一条端到端的逻辑通信信道

两种不同的运输协议:当运输层采用TCP协议时,尽管下面的网络是不可靠的,但这种逻辑通信信道就相当于一条全双工的可靠信道;当运输层采用无连接的UDP协议时,这种逻辑信道仍是一条不可靠信道

5.1.2 运输层的两个主要协议

两个主要协议

  1. 用户数据报协议(UDP)
  2. 传输控制协议(TCP)

两种协议在协议栈中的位置

查看源图像

UDP:在传送数据之前不需要先建立连接,远地主机收到UDP报文后,不需要给出确认,UDP不提供可靠交付,但某些情况却是最有效的工作方式

TCP:提供面向连接的服务,在传送数据前先建立连接,数据传送结束后要释放连接;TCP不提供广播或多播服务;TCP提供可靠的、面向连接的运输服务,因此增加了很多开销

UDP与IP数据报的区别:IP数据报要经过互联网中许多路由器的存储转发;UDP用户数据报是在运输层的端到端抽线的逻辑信道中传送的;TCP报文是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道

5.1.3 运输层的端口

目的:把特定主机上运行的进程作为互联网上通信的终点不可行,因为进程的创建和撤销是动态的,因此使用协议端口号作为识别的终点,而不需要知道具体进程

协议端口号(端口):虽然通信的终点是应用进程,但只要把报文交到目的主机的某个目的端口,剩下的工作就由TCP或UDP来完成

两种端口区别

  • 硬件端口:不同硬件设备进行交互的接口

  • 软件端口:应用层的各种协议进程与运输实体进行层间交互的一种地址,此处的端口都是指软件端

端口的表示:用16位的端口号来标志一个端口;端口号只具有本地意义,只标志本计算机应用层中各进程和运输层交互时的层间接口

端口号的分类

  • 服务器端口号:

    • 熟知端口号:0~1023,这些端口号被指派给TCP/IP最重要的以下应用程序,让所有用户都知道
    • 登记端口号:1024~49151,为没有熟知端口号的应用程序使用
  • 客户端端口号:49152~65535,仅在客户进程运行时才动态选择,因此又叫短暂端口号

5.2 用户数据报协议UDP

5.2.1 UDP概述

UDP的主要特点

  1. UDP是无连接的:发生数据之前无需建立连接,减少了开销和发送数据之前的时延

  2. UDP使用尽最大可能交付:不保证可靠交付,因此主机不需要维持复杂的连接状态表

  3. UDP是面向报文的:UDP对应用层交下来的报文不做处理,直接加上首部后就转发,若报文过长,IP层会进行分片,可能使IP层效率降低

  4. UDP没有拥塞控制:因此网络出现拥塞不会使源主机发送速率降低,对实时应用很重要

  5. UDP支持一对一、一对多、多对一和多对多的交互通信

  6. UDP的首部开销小:只有8字节,比TCP的20字节首部短

5.2.2 UDP的首部格式

查看源图像

伪首部:只在计算校验和时使用,不参与数据传输

源端口:源端口号;在需要对方回信时选用;不需要时用全0

目的端口:目的端口号;在终点交付报文时必须使用

长度:UDP用户数据报的长度,最小值是8(仅有首部)

校验和:检测UDP用户数据报在传输过程中是否有错。有就丢弃

计算UDP校验和:与IP首部检验相似,但UDP的检验和把首部和数据部分一起都检验

5.3 传输控制协议TCP概述

5.3.1 TCP的主要特点(✔):

  1. TCP是面向链接的运输层协议:在使用TCP协议之前,必须先建立连接

  2. 每一条TCP链接只能有两个端点,每一条TCP连接只能是点对点的

  3. TCP提供可靠交付的服务:保证数据无差错、不丢失、不重复、按序到达

  4. TCP提供全双工通信:允许通信双方任何时候都能发送数据

  5. 面向字节流:流指的是流入到进程或从进程流出的字节序列。TCP把应用程序交下来的数据仅看作一串无结构的字节流

查看源图像

5.3.2 TCP的连接

套接字:套接字=(IP地址:端口号) IP地址拼接上端口号,例如(192.168.1.1:80)

每一条TCP连接唯一被通信两个端点(两个套接字)所确定:

TCP连接::={socket1,socket2} = {(IP1:port1),(IP2:port2)}

TCP连接的端点不是进程,而是套接字

同一个IP地址可以由多个不同的TCP连接,而同一个端口也能出现在多个不同TCP连接中

5.4 可靠传输的工作原理

理想传输条件:

  1. 传输信道不产生差错
  2. 不管发送方以多快的速度发送数据,接收方总是来得及处理收到的数据

5.4.1 停止等待协议

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

  1. 无差错情况
img
  1. 出现差错
img

A只要超过一段时间每收到确认,就默认发送的分组丢失而重传之前的分组,就是超时重传。

注意:

  1. A发送完一个分组后,必须暂时保留已发送分组的副本,只有在收到相应确认后才删除

  2. 分组和确认都需要编号,才能明确哪个分组收到确认,哪个没收到

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

  4. 确认丢失和确认迟到:

确认丢失

img

确认迟到

img

5.4.2 连续ARQ协议

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

img

ARQ规定,发送方每收到一个确认,就把发送窗口滑动一个分组位置,接收方采用累积确认方式,在收到几个分组后,对按序到达的最后一个分组发送确认。

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

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

5.5 TCP报文段的首部格式

查看源图像
  1. 源端口和目的端口:各占2字节,分别是源端口号和目的端口号

  2. 序号:占4字节,TCP中传输的数据流中的每一字节都有一个编号。序号字段的值是本报文段所发送的数据的第一个字节的序号

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

    确认号=N,则表明到序号N-1为止所有数据都正确收到

  4. 数据偏移:占4位,指出TCP报文段的数据起始处距离TCP报文段的起始处有多远

  5. 保留:占6位,保留为今后使用

  6. 紧急URG:当URG=1时,表明紧急指针字段有效,告诉系统此报文中有紧急数据,应尽快传送,而不采用原来的按排队顺序来传送

  7. 确认ACK:当ACK=1时确认号字段有效,TCP规定,在连接建立后所有数据报文段都把ACK置为1

  8. 推送PSH:当收到PSH=1的报文时,就尽快交付接收应用进程,而不再等到整个缓存都填满后再向上交付

  9. 复位RST:当RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后重新建立连接

  10. 同步SYN:在连接建立时用来同步序号;当SYN=1而ACK=0时,表明这是一个连接请求报文,对方若同一建立连接,则应在响应报文中使SYN=1,ACK=1

  11. 终止FIN:用来释放一个连接,当FIN=1时,表示此报文段的发送方已经发送完毕,并要求释放连接

  12. 窗口:占2字节,指的是发送本段报文段的一方的接收窗口,窗口值作为接收方让对方设置其发送窗口的依据;窗口字段明确指出了现在允许对方发送的数据量,窗口值经常动态变化

  13. 校验和:占2字节,检验和字段检验的范围包括首部和数据两部分

  14. 紧急指针:占2字节,在URG=1时才有意义,指出本报文段中的紧急数据的字节数

  15. 选项:长度可变,最长40字节

5.6 TCP可靠传输的实现(✔)

5.6.1 以字节为单位的滑动窗口

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

查看源图像

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

发送窗口中的序号表示允许发送的序号,窗口越大,发送方就可以在收到对方确认前连续发送更多的数据,因此可能获得更高的传输效率。

收到新的确认后发送窗口前沿向前移动,没有收到新的确认或收到新的确认但对方通知的窗口缩小了,会使发送窗口前沿不动

TCP的缓存和窗口的关系

img

发送缓存存放

  • 发送应用程序发送给发送方TCP准备发送的数据

  • TCP已发送出但尚未收到确认的数据

接收方缓存存放

  • 按序到达的、但尚未被接受应用程序读取的数据

  • 未按序到达的数据

5.6.2 超时重传时间的选择

加权平均往返时间RTTs:新的RTTs=(1-a)(旧的RTTs)+a(新的RTT样本)

超时重传时间RTO:RTO=RTTs+4*RTTd

RTT的偏差的加权平均值RTTd:新的RTTd=(1-b)(旧的RTTd)+b|RTTs-新的RTT样本| 其中b=0.25

Karn算法:在计算加权平均RTTs时,只要报文段重传了,就不采用其往返时间样本,这样得出的加权平均RTTs和RTO就较准确

5.6.3 选择确认SACK

选择确认的工作原理:接收方在接受对方发送过来的数据字节流的序号不连续,结构就形成了一些不连续的字节块,如果这些字节的序号都在接受窗口内,接收方就先收下这些数据,但要把这些信息告诉发送方,使发送方不再重复发送这些已收到的数据。

img

左边界为闭,右边界为开;左边界指向字节块第一个字节序号,右边界指向字节块最后一个序号+1

5.7 TCP的流量控制

5.7.1 利用滑动窗口实现流量控制

流量控制:让发送方发送速率不要太快,让接收方来得及接收

滑动窗口的单位:字节

滑动窗口流量控制流程:开始时rwnd=400,每个报文段长100字节

img

持续计时器:解决盲等死锁。只要TCP连接的一方收到对方的零窗口通知,就启动持续计时器,若计时器到期,就发送一个零窗口探测报文段,而对方就在确认这个报文段时给出了现在的窗口值,若窗口值仍是零,那么收到报文的一方就重新设置持续计时器,若不是零,那么死锁就被打破

5.7.2 TCP的传输效率

Nagle算法:若发送应用进程要把发送的数据逐个字节地送到TCP发送缓存,则发送方就把第一个数据字节先发送出去,把后面到达的数据字节都缓存起来。当发送方收到对第一个数据字符的确认后,再把发送缓存中的所有数据组装成一个报文发送出去,同时继续对后到达的数据进行缓存。只有在收到对前一个报文段的确认后才继续发送下一个报文段。

糊涂窗口综合征:接收缓存每次只能释放出1字节空间,然后把窗口设为1,向发送方发送确认,发送方又发来1字节数据,接收方发回确认,仍将窗口设为1字节,这样会使网络效率降低。

解决方法:让接收方等待一段时间,使得接收缓存有足够空间容纳一个最大的报文段,或等接收缓存中有一半空闲空间。此时再发送确认报文。

5.8 TCP的拥塞控制

5.8.1 拥塞控制的一般原理

拥塞:某段时间,若对网络中某资源的需求超过了该资源所能提供的可用部分,网络的性能就要变坏,这种现象称为拥塞

出现拥塞的原因:对资源的需求>可用资源

增加资源解决拥塞:不能。拥塞由多种因素引起,不能单纯通过增加资源解决

拥塞的恶化:如果路由器没有足够缓存空间,就会丢弃一些新到的分组,当分组被丢弃时,发送方就会重传,甚至多次重传,这样会导致更多分组流入网络和被网络中的路由器丢弃

拥塞控制与流量控制的区别:拥塞控制就是防止过多的数据注入到网络,这样可以使网络中的路由器或链路不致过载,拥塞控制的前提是网络能够承受现有的网络负荷,拥塞控制是一个全局性过程。流量控制是指对点对点通信量的控制,是端到端的问题,流量控制就是抑制发送端发送数据的速率,以便使接收端来得及接收。

拥塞控制的一般原理

  • 开环控制:就是在设计网络时事先将有关发生拥塞的因素考虑周到,力求网络在工作时不发生拥塞。

  • 闭环控制:基于反馈回路概念;检测网络系统以便检测到拥塞在何时、何处发生;把拥塞发生的信息传送到可采取行动的地方;调整网络系统的运行以解决出现的问题。

检测网络拥塞的指标

  • 由于缺少缓存空间而被丢弃的分组的百分数
  • 平均队列长度
  • 超时重传分组数
  • 平均分组时延
  • 分组时延的便准差

5.8.2 TCP的拥塞控制方法

拥塞控制算法

  • 慢开始
  • 拥塞避免
  • 快重传
  • 快恢复

慢开始和拥塞避免

  • 拥塞窗口:大小取决于网络的拥塞程度,并且动态的变化,发送方让自己的发送窗口等于拥塞窗口

  • 判断拥塞的依据:出现了超时

  • 发送方控制拥塞窗口的原则:

  • 只要没有出现拥塞,拥塞窗口就可以再增大一些,以便把更多分组发送出去,提高网络利用率;只要发生拥塞,就把拥塞窗口减小一些,以减少注入到网络种的分组数,以缓解网络出现的拥塞

  • 拥塞的判断:重传定时器超时、收到三个相同的ACK

慢开始算法

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

  • 初始拥塞窗口:初始拥塞窗口设置为1至2个发送方的最大报文段的数值

  • 拥塞窗口的控制:在每收到一个对新报文段的确认后,可以把拥塞窗口增加多一个SMSS(发送方最大报文段)的数值,即拥塞窗口cwnd每次的增加量 = min(N,SMSS),N是原先未被确认、现在被刚收到的确认报文确认的字节数

算法流程:

img

每经过一个传输轮次,拥塞窗口cwnd就加倍。

传输轮次:一个传输轮次所经历的时间就是往返时间RTT;即发送n个报文段并受到n个报文段确认总共经历的时间

传输轮次更加强调:把拥塞窗口所允许发送的报文段都连续发送出去,并收到对已发送的最后一个字节的确认

慢开始:不是指cwnd的增长速度慢,而是在TCP开始发送报文段时先把cwnd设置为1,然后再逐步增大cwnd

慢开始门限:防止拥塞窗口增长过大引起网络拥塞

用法: 当cwnd<ssthresh时,使用慢开始算法;当cwnd>ssthresh时,停止使用慢开始而改用拥塞避免算法;当cwnd=ssthresh时,既可用慢开始,也可用拥塞避免。

拥塞避免算法

  • 算法思路:让拥塞窗口缓慢的增大,每经过一个RTT就把发送方的拥塞窗口+1,而不是像慢开始加倍增长

  • 拥塞避免特点:加法增大,拥塞窗口按线性规律缓慢增长,比慢开始的拥塞窗口增长速率慢得多

  • 拥塞避免不能完全避免拥塞,只是控制拥塞窗口按线性规律增长,使网络不易出现拥塞

快重传算法

  • 特点:可以让发送方尽早知道发生了个别报文段的丢失
  • 算法思路:要求接收方不等待自己发送数据时才进行捎带确认,而是要立即发送确认,即使收到了失序的报文段也要立即发出对已收到的报文段的重复确认
  • 算法启动:发送方只要一连收到3个重复确认,就立即进行重传(即快重传)

5.9 TCP的运输连接管理

运输连接的三个阶段:连接建立、数据传送、连接释放

客户-服务器方式:TCP连接建立采用客户服务器方式,主动发起连接建立的应用叫客户,而被动等待连接建立的应用进程叫服务器

5.9.1 TCP的连接建立

三报文握手:

img

流程

  1. 最初两端TCP进程都处于关闭状态,开始时B的TCP服务器进程先创建传输控制块TCB,准备接受客户进程的连接请求,然后进入收听状态;

  2. A的TCP客户进程也先创建TCB,然后打算建立TCP连接时,向B发送连接请求报文,这是首部中同步位SYN=1,同时选择一个初始序号seq=x,TCP规定,SYN报文段不能携带数据,但要消耗一个序号,这时TCP客户进程进入同步已发送状态;

  3. B收到连接请求报文后,若同意建立连接,则向A发送确认。在确认报文中将SYN位和ACK位都置1,确认号时ACK=x+1,同时也为自己选择一个初始序号seq=y。这个报文段也不能携带数据,但同样消耗一个序号,这时TCP服务器进程进入同步收到状态;

  4. TCP客户进程收到B的确认后,还要向B给出确认。确认报文的ACK置1,确认号ack=y+1,而自己的序号seq=x+1。TCP规定,ACK报文段可以携带数据,但如果不携带数据则不消耗序号,这种情况,下一个数据报文段序号仍是seq=x+1。这时TCP连接已经建立,A进入已建立连接状态;

  5. B收到A的确认后,也进入已建立连接状态

5.9.2 TCP连接的释放

四报文握手:

img

流程

  1. 起始时A和B都处于已建立连接状态

  2. A的应用进程先向其TCP发出连接释放报文段,并停止再发送数据,主动关闭TCP连接,A把连接释放报文段首部的终止控制位FIN置1,序号seq=u,它等于前面已传送过的数据的最后一个字节的序号+1。这时A进入终止等待状态。FIN报文段即使不携带数据,也消耗一个序号

  3. B收到连接释放报文后发出确认,确认号是ack=u+1,而这个报文自己的序号是v,等于B前面已传送过的数据的最后一个字节的序号+1。然后B进入关闭等待状态,TCP服务器进程通知高层应用进程,因而从A到B这个方向的连接就释放了,这时的TCP连接处于半关闭状态,即A已经没有数据要发送了,但B若发送数据,A仍要接受

  4. A收到来自B的确认后,进入终止等待2状态,等待B发送的连接释放报文段

  5. 若B已经没有要向A发送的数据,应用进程就通知TCP释放连接,此时B发出的连接释放报文段FIN=1,假定现在B的序号为w,B还必须重复上次已发送过的确认号ack=u+1,此时B进入最后确认状态,等待A的确认

  6. A在收到B的链接释放报文后,必须对此发出确认,在确认报文段中把ACK置1,确认号ack=w+1,而自己的序号时seq=u+1,然后进入时间等待状态。此时TCP连接还没有释放,必须经过时间等待计时器设置的时间2MSL后,A才进入关闭状态。

A等待2MSL时间的原因

  1. 保证A发送的最后一个ACK报文段能够到达B
  2. 防止已失效的连接请求报文段出现在本连接中

6. 应用层

6.1 域名系统DNS

6.1.1 域名系统概述

域名系统DNS:是互联网使用的命名系统,用来把便于人们使用的机器名字转换为IP地址。

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

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

DNS使大多数名字都在本地进行解析,仅少量解析需要互联网上通信

域名的解析过程:当需要把主机名解析成IP地址时,应用进程调用解析程序,并成为DNS的一个客户,把待解析的域名放在DNS请求报文中,以UDP用户数据报方式发给本地域名服务器,本地域名服务器查找域名后,把对应的IP地址放在回答报文中返回,应用进程获得目的主机的IP地址后即可进行通信

6.1.2 互联网的域名结构

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

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

域是名字空间中一个可被管理的划分,域还可以划分为子域,而子域还可继续划分

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

标号的规定:域名中的标号由英文字母和数字组成,每一个标号不超过63个字符,也不区分大小写;级别低的域名写在左边,级别高的写在右边;由多个标号组成的完整域名总共不超过255个字符

域名是逻辑概念,并不代表计算机所在的物理地点

顶级域名的分类

  • 国家顶级域名:如cn、us
  • 通用顶级域名:如com、net、org、edu
  • 基础结构域名:只有arpa,用于反向域名解析,又称为反向域名

二级域名

  • 类别域名:ac、com、edu、gov

  • 行政区域名:bj、js

img

6.1.3 域名服务器

目的:为每一级的域名都设置一个对应的域名服务器,数量太多,效率低下。因此DNS采用划分区的办法

:一个服务器所负责的范围

权限域名服务器:每一个区都设有,用来保存区中所有主机的域名到IP地址的映射

互联网上的DNS域名服务器树状结构:

img

域名服务器分类

  • 根域名服务器:是层次最高的域名服务器,也是最重要的。所有根域名服务器都知道所有顶级域名服务器的域名和IP地址。任何本地域名服务器只要自己无法解析,就首先求助于根域名服务器

  • 顶级域名服务器:负责管理在该顶级域名服务器注册的所有二级域名。当收到DNS查询请求时,就给出相应的回答

  • 权限域名服务器:负责一个区的域名服务器。当权限域名服务器还不能给出回答时,就会告诉发出查询请求的DNS客户,下一步应找哪一个权限域名服务器

  • 本地域名服务器:并不属于域名服务器层次结构,但很重要。当主机发出DNS查询请求时,这个查询请求报文发给本地域名服务器

提高域名服务器可靠性:DNS域名服务器把数据复制到几个域名服务器来保存,其中一个是主域名服务器,其余是辅助域名服务器。当主域名服务器出现故障时,辅助域名服务器就可以保证DNS的查询工作不会中断

域名的解析过程

主机向本地域名服务器查询,采用递归查询:如果本地域名服务器不知道查询域名的IP,则本地域名服务器以DNS客户的身份,向其他根域名服务器继续发出查询请求报文,而不是让主机自己进行下一步查询。因此,递归查询返回的查询结构是查询的IP地址或报错,即无法查询到IP

本地域名服务器向根域名服务器查询,采用迭代查询:当根域名服务器收到本地域名服务器发出的查询请求报文时,要么给出要查询的IP地址,要么告诉本地域名服务器下一步应向哪个域名服务器查询,然后让本地域名服务器进行后续查询。根域名服务器通常把自己知道的顶级域名服务器的IP告诉本地域名服务器,让本地域名服务器再向顶级域名服务器查询

6.2 文件传送协议FTP

6.2.1 FTP概述

文件传输协议FTP:时互联网上使用最广泛的文件传送协议,提供交互式访问,允许客户指明文件的类型与格式,并允许文件具有存取权限

特点:要存取一个文件,必须先获得一个本地的文件副本,要修改文件,只能对副本进行修改,然后将修改后的文件副本传回原节点

6.2.2 FTP的基本工作原理

FTP的特点:只提供文件传送的基本服务,使用TCP可靠性运输服务,FTP的主要功能是减少或消除在不同操作系统下处理文件的不兼容性

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

主进程的工作步骤

  1. 打开熟知端口(21),使客户进程能够连接
  2. 等待客户进程发出连接请求
  3. 启动从属进程处理客户进程发来的请求。从属进程对客户进程的请求处理完毕后即终止,但从属进程在运行期间根据需要还可能创建一些子进程
  4. 回到等待状态,继续接受其他客户进程发来的请求。主进程与从属进程的处理是并发进行的

FTP的两个TCP连接

控制连接:在整个会话期间一直打开,FTP客户发出的传送请求,通过控制连接发送给服务器端;端口号21

数据连接:用于传输文件;端口号20

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

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

6.2.3 简单文件传送协议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.3 万维网WWW

6.3.1万维网概述

万维网:是一个大规模联机式的信息储存所,用连接的方法能非常方便的从互联网上的一个站点访问另一个站点,从而主动按需获得信息;是一个分布式的超媒体系统,是超文本系统的扩充

页面:在客户程序(浏览器)主窗口上显示出的万维网文档就是页面

统一资源定位符URL:标志万维网上各种文档,使每个文档在互联网范围具有唯一标识符URL

超文本传送协议HTTP:是一个应用层协议,使用TCP进行可靠传送

6.3.2 统一资源定位符URL

URL作用:用来表示从互联网上得到的资源位置和访问这些资源的方法

URL的格式:<协议>://<主机>:<端口>/<路径>

  • 协议:指出使用什么协议来获得该文档,常用HTTP或FTP
  • 主机:指出文档在哪台主机上,主机就是指该主机在互联网上的域名
  • 端口和路径:为了进一步定位,有事可省略

6.3.3 超文本传送协议HTTP

HTTP作用:定义了浏览器怎么向万维网服务器请求万维网文档,以及服务器怎么把文档传送给浏览器;是面向事物的应用层协议

HTTP的主要特点

  1. HTTP本身是无连接的:虽然使用TCP连接,但通信双方在交换HTTP报文前不需要建立HTTP连接
  2. HTTP是无状态的:同一个客户第二次访问同一服务器上的页面时,服务器的响应与第一次被访问时相同

请求一个万维网文档所需时间:是该文档的传输时间+两倍往返时间RTT

HTTP/1.0的主要缺点:每请求一个文档就要有两倍的RTT的开销;这种非持续连接会使万维网服务器负担很重

HTTP/1.1的改进:使用了持续连接;服务器在发送响应后仍在一段时间内保持连接,使同一个客户能继续在这条连接上传送后续HTTP请求报文和响应报文

HTTP/1.1持续连接的两种工作方式

  • 非流水线方式:客户在收到响应报文之后才能继续发送
  • 流水线方式:客户收到响应报文之前也可以继续发送

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/130353.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebRTC的拥塞控制技术(Congestion Control)

\1. 概述 对于共享网络资源的各类应用来说&#xff0c;拥塞控制技术的使用有利于提高带宽利用率&#xff0c;同时也使得终端用户在使用网络时能够获得更好的体验。在协议层面上拥塞控制是TCP的一个总要的组成部分&#xff1b;但是对于非面向链接的传输层协议&#xff0c;如UDP&…

智慧城管违规摆摊沿街晾晒识别检测 python

智慧城管违规摆摊沿街晾晒识别检测通过opencvpython对现场画面中进行7*24小时不间断实时监测&#xff0c;当opencvpython城管违规摆摊沿街晾晒识别检测监测到沿街晾晒违规摆摊占道经营时&#xff0c;立即抓拍告警。OpenCV的全称是Open Source Computer Vision Library&#xff…

小侃设计模式(十九)-解释器模式

1.概述 解释器模式&#xff08;Interpreter Pattern&#xff09;是一种使用相对较少的模式&#xff0c;主要使用在编译解释等场景&#xff0c;例如&#xff1a;编译器、规则引擎解释、正则表达式解析等&#xff0c;这些语言又被称为领域特定语言&#xff08;Domain Specific L…

【数据结构与算法】数据结构介绍与稀疏数组相关操作

文章目录一 数据结构介绍1 数据结构和算法的重要性2 数据结构和算法的关系3 线性结构和非线性结构&#xff08;1&#xff09;线性结构&#xff08;2&#xff09;非线性结构二 稀疏数组1 应用场景2 基本概念&#xff08;1&#xff09;基本介绍&#xff08;2&#xff09;压缩策略…

并发编程——1.进程与线程

目录1.进程与线程1.1.概述1.2.并行与并发本文笔记整理来自黑马视频https://www.bilibili.com/video/BV16J411h7Rd/?p1&#xff0c;相关资料可在视频评论区进行获取。 1.进程与线程 1.1.概述 &#xff08;1&#xff09;进程 程序由指令和数据组成&#xff0c;但这些指令要运…

2022 年度作品优秀大赏 | 开发者说·DTalk

岁聿云暮之际&#xff0c;回首 2022&#xff0c;开发者们一直在迈着坚定的步伐向顶峰攀登&#xff0c;我们也竭尽所能不断为大家提供帮助——操作系统 Android 13 完成 Beta 版到正式版的蜕变&#xff0c;开发工具 Flutter 3.3 全力支持您的跨平台之旅&#xff0c;应用平台 Goo…

并行、并发、同步、异步、阻塞、非阻塞

并行 是指两个或者多个事件在同一时刻发生。并行是在不同实体上的多个事件。 并行针对多核 CPU 而言&#xff0c;它指的是多个核心同时执行多个任务的能力 单核 CPU 无法并行&#xff0c;并行只可能发生在多核 CPU 中。 并发 是指两个或多个事件在同一时间间隔发生。并发是…

【观察】让行业AI“触手可及”,NVIDIA创新与实践“从未止步”

毫无疑问&#xff0c;今天AI正与产业结合得越来越紧密&#xff0c;从自动驾驶&#xff0c;到智慧医疗&#xff0c;智慧金融、智慧城市等&#xff0c;AI已经开始渗透到我们生活的方方面面。事实上&#xff0c;即便目前来自传统行业用户的AI转型需求尚未完全激活爆发&#xff0c;…

第一篇 AlexNet——论文翻译

文章目录摘要1 简介2 数据集3 架构 3.1 ReLU非线性3.2 多GPU训练3.3 局部响应归一化3.4 重叠池化3.5 整体架构4 减少过拟合4.1 数据增强4.2 失活(Dropout)5 学习细节6 结果6.1 定性评估7 探讨摘要 论文链接&#xff1a;http://www.cs.toronto.edu/~fritz/absps/imagenet.pdf …

VTK--交互方式vtkInteractorStyleTrackballCamera

前言&#xff1a;本博文主要介绍vtk中基于Camera的交互方式vtkInteractorStyleTrackballCamera 及其子类&#xff0c;小伙伴可以根据需求自定义交互方式。 目录 vtkInteractorStyleTrackballCamera vtkGeoInteractorStyle vtkInteractorStyleImage vtkInteractorStyleMult…

LeetCode刷题复盘笔记—一文搞懂动态规划之152. 乘积最大子数组问题(动态规划系列第三十六篇)

今日主要总结一下动态规划的一道题目&#xff0c;152. 乘积最大子数组 题目&#xff1a;152. 乘积最大子数组 Leetcode题目地址 题目描述&#xff1a; 给你一个整数数组 nums &#xff0c;请你找出数组中乘积最大的非空连续子数组&#xff08;该子数组中至少包含一个数字&…

怎样学习线性代数?

最近在看《线性代数的几何意义》这本书&#xff0c;刚好也借用书里的总结&#xff0c;分享一下。 &#xff08;注&#xff1a;本文是一篇我国代数名家丘维声教授在电大讲授线性代数课程时关于如何学好线性代数的综合论述&#xff0c;超牛&#xff01;&#xff09; 初学线性代数…

社区10款年度优秀插件框架盘点!

Cocos 社区年度插件框架 TOP 10以下游戏资源排名不分先后&#xff0c;Cocos Store & Cocos微店 年终元旦限时优惠进行中......作者&#xff1a;Chuan——张川介绍&#xff1a;一款节点树实时预览插件&#xff0c;支持 Cocos Creator 2.x\3.x 引擎版本&#xff0c;除节点预览…

云信小课堂 | 如何管理音视频的通话状态?

2022.12业务背景 用户在实际使用云信音视频通话 2.0 服务中&#xff0c;常常会遇到弱网&#xff0c;掉线等情况&#xff0c;对于这类情况&#xff0c;云信 SDK 提供了自动重连的相关策略&#xff0c;业务层不需要单独处理重连&#xff0c;只需要监听并做好相应的 UI 逻辑。所以…

【OpenCV】使用 Python 的铅笔素描图像

目录&#xff1a;使用 Python 的铅笔素描图像一、前言二、代码实战2.1 导包2.2 读取照片2.3 使用 OpenCV 显示图像2.4 灰度图像2.5 反转图像2.6 模糊图像2.7 减淡和融合三、结果展示五、源代码一、前言 图片在 Python 中表示为一组数字。所以我们可以进行各种矩阵操作来得到令…

跨域问题(三种解决方法)

跨域就是一个域名的网页去请求另一个域名的资源&#xff0c;比如你刚刚在A网站输入了自己的账号密码&#xff0c;然后访问B网站&#xff0c;B网站无法获取账号密码 两个请求的协议&#xff08;比如http&#xff09;&#xff0c;域名&#xff08;比如说localhost或者192.168.0.…

python 时间

目录标题python的时间模块1、时间戳2、时间元组3、获取格式化的时间可以自定义输出格式日期格式化的符号4、显示某月的日历5、sleep模块python的时间模块 1、时间戳 时间戳&#xff0c;以1970为时间基准&#xff0c;但是太过于遥远的时间就不可以了&#xff0c;windows最源支持…

基于springboot实验室管理系统(程序+数据库)

大家好✌&#xff01;我是CZ淡陌。一名专注以理论为基础实战为主的技术博主&#xff0c;将再这里为大家分享优质的实战项目&#xff0c;本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目&#xff0c;希望你能有所收获&#xff0c;少走一些弯路…

C进阶:征服指针之指针笔试题强化(3)

目录 ​​​​​​​ &#x1f432;T1. ​​​​​​​ ​​​​​​​ &#x1f916; T2. ​​​​​​​ ​​​​​​​ &#x1f42c; T3. ​​​​​​​ ​​​​​​​ &#x1f433; T4. ​​​​​​​ ​​​…

并发编程——5.共享模型之无锁

目录5.共享模型之无锁5.1.问题提出5.1.1.案例5.1.2.解决思路——锁5.1.3.解决思路——无锁5.2.CAS 与 volatile5.2.1.CAS5.2.2.volatile5.2.3.为什么无锁效率高5.2.4.CAS 的特点5.3.原子整数5.4.原子引用5.4.1.概述5.4.2.案例5.4.3.ABA 问题及解决5.5.原子数组5.6.字段更新器5.…