综述

  • 该笔记为中国海洋大学940计算机网络复习笔记
  • 笔记参考 王道408的计算机网络、谢希仁《计算机网络》第七版、追梦海大的940高分笔记册
  • 由于考纲是以谢希仁的《计算机网络》第七版为参考,所以笔记主要以该书为主

    计算机网络体系结构

    复习重点

  • 了解计算机网络的相关概念

  • 理解并对比电路交换、报文交换和分组交换
  • 掌握并会计算相关性能(速率、时延等)
  • 明确协议、服务等基本概念
  • 对比 OSI 参考模型和 TCP/IP 参考模型
  • 掌握五层协议的体系结构(各自的功能)

    概念

  • 互联网两个重要基本特点:连接性和共享

  • 数据通信是计算机网络最基本和最重要的功能,包括连接控制、传输控制、差错控制、流量控制、路由选择、多路复用等子功能。
  • 计算机网络的五大功能:数据通信、资源共享、分布式处理、提高可靠性、负载均衡

    互联网的组成

  • 从功能组成上看,计算机网络由通信子网资源子网组成

  • 从工作方式上看,计算机网络可分为边缘部分核心部分

    边缘部分

    由所有连接在因特网上的主机组成。这部分是用户直接使用的,用来进行通信(传送数据、音频或视频)和资源共享

    客户-服务器方式(C/S)

  • 客户(client)和服务器(server)都是指通信中所涉及的两个应用进程。

  • 客户-服务器方式所描述的是进程之间服务和被服务的关系
  • 最主要的特征是:客户是服务请求方,服务器是服务提供方。服务请求方和服务提供方都要使用网络核心部分所提供的服务
  • 客户机是面向用户的,服务器是面向任务的

客户程序的特点:

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

服务器程序的特点

  • 是一种专门用来提供某种服务的程序,可同时处理多个远程或本地用户的请求
  • 系统启动后即自动调用并一直不断的运行着,被动的等待并接受来自各地的用户的通信请求。因此,服务器程序不需要知道客户程序的地址
  • 一般需要强大的硬件和高级的操作系统支持

    对等连接方式(P2P)

  • P2P 是网络结点之间采用对等方式直接交换信息的工作模式

  • 指两个主机在通信时并不区分哪一个是服务请求方哪一个是服务提供方。只要两个主机都运行了对等连接软件(P2P软件),他们就可以进行平等的、对等的连接通信
  • 实际上对等连接方式从本质上看仍然是使用客户-服务器方式,只是对等连接中的每一台主机既是客户同时又是服务器
  • 常用应用有 Napster、Gnutella、BT、迅雷等
  • 在 P2P 应用中,广泛使用的索引和查找技术是分布式散列表 DHT

    核心部分

    在网络核心部分起特殊作用的是路由器,它是一种特殊计算机。路由器上实现分组交换的关键构件,其任务是转发收到的分组,这是网络核心部分最重要的功能。这部分是为边缘部分提供服务的(提供连接性和交换)

    电路交换

  • 建立连接(占用通信资源)-通话(一直占用通信资源)-释放连接(归还通信资源)

  • 电路交换的关键点:在通话的全部时间内,用户始终占用端到端的通信资源
  • 优点:通信时延小、有序传输、没有冲突、适用范围广、实时性强、控制简单
  • 缺点:建立连接时间长、线路独占,使用效率低、难以规格化

    报文交换

  • 数据交换的单位是报文,报文携带有目标地址、源地址等信息。报文交换在交换节点采用的是存储转发的方式

  • 优点:无须建立连接、动态分配线路、提高线路可靠性、提高线路利用率
  • 缺点:引起转发时延、需要有较大的缓存空间

    分组交换

  • 在通信过程中,通信双方以分组为单位,使用存储-转发机制实现数据交互的通信方式,被称为分组交换

  • 分组交换则采用了存储转发技术。采用存储转发的分组交换,实质上是采用了在数据通信的过程中断续(或动态)分配带宽的策略。
  • 优点:
    • 高效:在分组传输的过程中动态分配传输带宽,对通信线路是逐段占用
    • 灵活:为每一个分组独立的选择最合适的转发路由
    • 迅速:以分组作为传输单位,可以不先建立连接就能向其他主机发送分组
    • 可靠:保证可靠性的网络协议;分布式多路由的分组交换网,使网络有很好的生存性
  • 缺点:存在传输时延,需要传输额外的信息量,无法确保通信时的带宽造成了一定的开销

三种交换方式在数据传送阶段的主要特点:

  • 电路交换:整个报文的比特流连续的从源点直达终点,好像在一个管道中传送
  • 报文交换:整个报文先先传送到相邻结点,全部存储下来后转发存储表,转发到下一个结点
  • 分组交换:单个分组(只是整个报文的一部分)传送到相邻结点,存储下来后查找转发表,转发到下一个结点
  • 由于一个分组的长度往往远小于整个报文段长度,因此分组交换比报文交换的时延小,同时也具有更好的灵活性。

    计算机网络的类别

  • 按分布范围:广域网、城域网、局域网、个人区域网

  • 按传输技术:广播式网络、点对点网络
  • 按拓扑结构:总线形网络、星形网络、环形网络、网状网络
  • 按使用者:公用网、专用网
  • 按交换技术:电路交换网络、报文交换网络、分组交换网络
  • 按传输介质:有线、无线
  • 按信号频带占用方式:基带网、宽带网

    计算机网络的性能(计算题)

    计算机网络的性能指标

    两个最重要的指标是带宽时延

    速率

    网络技术中的速率指的是连接在计算机网络上的主机在数字信道上的速率,也称数据传输速率、数据率和比特率
    单位为 b/s(比特/秒)(或 bit/s,有时也写作 bps),数据率较高时,可用 kb/s(k=103)或 Gb/s(G=109)表示

    带宽

    用来表示网络的通信线路所能传送数据的能力,因此网络带宽表示在单位时间内从网络中的某一点到另一点所能通过的最高数据率(最高数据传输速率),单位为比特/秒(b/s)

    吞吐量

    表示在单位时间内通过某个网络的数据量
    吞吐量受网络带宽或网络额定速率的限制

    时延

    指数据从网络的一端传送到另一端所需的时间
    时延由四个部分组成:发送时延、传播时延、处理时延和排队时延

  • 发送时延

    • 指结点将分组的所有比特推向传输链路所需的时间
    • 发送时延 = 分组长度(数据帧长度)/ 信道宽度(发送速率)
  • 传播时延
    • 指电磁波在信道中传播一定的距离需要花费的时间
    • 传播时延 = 信道长度(m)/ 电磁波在信道上的传播速率(m/s)
  • 处理时延:数据在交换结点为存储转发而进行的一些必要的处理所花费的时间
  • 排队时延:分组在进入路由器后先在输入队列中排队等待处理。路由器确定转发端口后,还要在输出队列中排队等待转发。

    时延带宽积

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

    往返时延 RTT

    表示从发送方发送数据开始,到发送方收到来自接收方的确认,总共经历的时间

    利用率

  • 有信道利用率和网络利用率两种

    • 信道利用率:指某信道有百分之几的时间是有效利用的(有数据通过)
    • 网络利用率:指全网络的信道利用率的加权平均值
  • 利用率并非越高越好,利用率增大时,时延可能会迅速增加
  • 如果令 D0 表示网络空闲时的时延,D 表示网络当前的时延,U 表示网络利用率,有:

    • D = D0 / (1 - U)

      计算机网络的非性能特征

      费用、质量、标准化、可靠性、可扩展性和可升级性、易于管理和维护

      计算机网络体系结构与参考模型

      网络分层结构

      分层原则

      计算机网络的体系结构通常都具有可分层的特性,其基本原则如下:
  • 各层之间是独立的

  • 灵活性好
  • 结构上可分开
  • 易于实现和维护
  • 能促进标准化工作

分层目标

  • 提供标准语言
  • 定义标准界面
  • 增强功能之间的独立性

    实体

  • 第 n 层的中的活动元素通常称为第 n 层实体

  • 实体指任何可发送或接收信息段硬件或软件过程
  • 不同机器上的同一层称为对等层,同一层的实体称为对等实体

    数据单位

    在计算机网络体系结构的各个层次中,每个报文都分为两个部分:一是数据部分,即 SDU;二是控制信息部分,即 PCI,它们共同组成 PDU

  • 服务数据单元(SDU):为完成用户要求的功能而应传送到数据

  • 协议控制信息(PCI):控制协议操作的信息
  • 协议数据单元(PDU):对等层次之间传送的数据单元称为该层的 PDU。如物理层的 PDU 称为比特,数据链路层的 PDU 称为帧,网络层的 PDU 称为分组,传输层的 PDU 称为报文段

    层次结构的含义

  • 第 n 层的实体不仅要使用第 n-1层的服务来实现自身定义的功能,还要向第 n + 1 层提供本层的服务

  • 最低层只提供服务,最高层面向用户提供服务
  • 上一层只能通过相邻层间的接口使用下一层的服务,而不能调用其他层的服务;下一层所提供的服务的实现细节对上层透明
  • 两台主机通信时,对等层在逻辑上有一条直接信道,表现为不经过下层就把信息传送给对方

    计算机网络协议、接口、服务的概念

    协议

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

  • 协议是控制两个(或多个)对等实体进行通信的规则的集合,是水平的。不对等实体之间是没有协议的
  • 协议有语法、语义和同步三部分组成
  • 一个完整的协议通常应具有线路管理(建立、释放连接)、差错控制、数据转换等功能

    接口(服务访问点)

  • 接口是同一结点内相邻两层间交换信息段连接点,是一个系统内部的规定

  • 在典型的接口上,同一结点相邻两层的实体通过服务访问点(SAP)交互

    服务

    服务指下层为紧邻的上层提供功能调用,它是垂直的。要实现本层协议,还需要使用下面一层所提供的服务。
    计算机网络提供的服务可按以下三种方式分类:

  • 面向连接服务与无连接服务

    • 面向连接服务:通信前双方必须先建立连接,分配相应的资源(如缓冲区),以保证通信能正常进行,传输结束后释放连接和所占用的资源。(TCP 就是面向连接的服务的协议)
    • 无连接服务:通信前双方不需要先建立连接,需要发送数据时可直接发送,把每个带有目的地址的包(报文分组)传送到线路上,由系统选定路线进行传输,这是一种不可靠的服务。(UDP 就是一种无连接服务的协议)
  • 可靠服务和不可靠服务
    • 可靠服务:指网络具有纠错、应答机制,能保证数据正确、可靠的传送到目的地
    • 不可靠服务:网络只能尽量正确、可靠的传送,而不能保证数据正确
  • 有应答服务和无应答服务

    ISO/OSI 参考模型

  • 物理层

    • 传输单位是比特,任务是透明的传输比特流,功能是在物理媒体上为数据端设备透明的传输原始比特流
    • 规定了电路接口的参数,也规定了通信链路上传输的信号的意义和电气特征
  • 数据链路层
    • 传输单位是,任务是将网络层传来的 IP 数据报组装成帧
    • 功能概括为:成帧、差错控制、流量控制和传输管理等
  • 网络层
    • 传输单位是数据报
    • 主要任务是把网络层的协议数据单元(分组)从源端传到目的端,为分组交换网上的不同主机提供通信服务
    • 功能:对分组进行路由选择,并实现流量控制、拥塞控制、差错控制和网际互联等功能
  • 传输层
    • 传输单位是报文段或用户数据报
    • 传输层负责主机中两个进程之间的通信,功能是为端到端提供可靠的传输服务,为端到端连接提提供流量控制、差错控制、服务质量、数据传输等服务
  • 会话层
    • 允许不同主机上的各个进程之间进行会话。
    • 会话层负责管理主机间的会话进程,包括建立、管理及终止进程间的会话
  • 表示层:主要处理两个通信系统中交换信息的方式
  • 应用层:是用户与网络的界面

    TCP/IP 模型

  • 网络接口层:功能类似 OSI 参考模型的物理层和数据链路层

  • 网际层:与 OSI 参考模型的网络层在功能上非常相似
  • 传输层:功能同样与 OSI 参考模型中的传输层非常相似,即使得发送端和目的端上的对等实体进行会话
  • 应用层:包含所有的高层协议

    五层协议体系结构

  • 应用层:

    • 应用层是体系结构中的最高层,直接为用户的应用进程提供服务
    • 应用层定义是是应用进程间通信和交互的规则
    • 应用层协议有域名系统 DNS、HTTP 协议、SMTP 协议等
    • 应用层交互的数据单元称为报文
  • 运输层:
    • 运输层的任务就是负责两个主机中进程之间的通信提供服务
    • 由于一台主机可同时运行多个进程,因此运输层有复用和分用的功能
    • 复用:指多个应用层进程可同时使用下面运输层的服务
    • 分用:指运输层把收到的信息分别交付上面应用层中的相应进程
    • 传输控制协议 TCP——提供面向连接、可靠的数据传输服务,其数据传输的单位是报文段
    • 用户数据报协议 UDP——提供无连接的、尽最大努力的数据传输服务(不保证数据传输的可靠性),其数据传输的单位的用户数据报
  • 网络层:
    • 负责为分组交换网上的不同主机提供通信服务
    • 在发送数据时,网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送
    • 在 TCP/IP 体系中,由于网络层使用 IP 协议,因此分组也叫做 IP 数据报,或简称为数据报
  • 数据链路层:
    • 数据链路层在两个相邻结点之间传送数据时,数据链路层将网络层交下来的 IP 数据报组装成帧,在两个相邻结点间的链路上“透明”的传输帧中的数据
    • 每一帧包括数据和必要的信息(如同步信息、地址信息、差错控制等)
  • 物理层:

    • 物理层上所传数据的单位是比特
    • 物理层的任务就是透明的传送比特流
    • 注意:传递信息所用的一些物理媒体,如双绞线、光缆、无线信道等,并不在物理层协议内而是在物理层协议的下面

      其他

  • 无论在哪一层传送的数据单元,都可笼统的用“分组“来表示

  • 互联网现在采用存储转发的分组交换技术,以及三层 ISP 结构
  • 一个主机可以使用两个不同的接口。一个接口连接到面向连接的分组交换网,而另一个接口连接到无连接的分组交换网
  • 运输层应根据上层应用程序的性质确定使用面向连接服务或者无连接服务
  • 数据链路层在设计硬件时就能够确定使用面向连接服务还是无连接服务
  • “在数据链路层透明的传送数据”表示无论什么样的比特组合的数据都能通过这个数据链路层

    物理层

    复习重点

  • 了解物理层的主要功能

  • 知道物理层接口的特性
  • 掌握奈奎斯特定理和香农定理
  • 掌握常见编码方式
  • 熟悉各种传输介质的基本特点和使用场景
  • 掌握中继器和集线器的基本知识

    基本概念

    物理层的主要任务

    物理层考虑的是如何在连接到各种计算机的传输媒体上传输数据比特流,而不指具体的传输媒体(屏蔽硬件设备、传输媒体、通信手段等差异)
    物理层的主要任务为确定与传输接口有关的一些特性,如:

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

  • 电气特性:指明在接口电缆的各条线上出现的电压的范围
  • 功能特性:指明某条线上出现的某一电平的电压的意义。规定了接口信号的来源、作用以及其他信号之间的关系。即物理接口上各条信号线的功能分配和确切定义。物理接口信号线一般分为数据线、控制线、定时线和地线。
  • 过程特性:指明对于不同功能的各种可能事件的出现顺序。定义了在信号线上进行二进制比特流传输的一组操作过程,包括各信号线的工作顺序和时序,使得比特流传输得以完成。

    数据、信号和码元

    数据是指传送信息的实体,信号则是数据的电气或电磁表现
    数据传输方式分为

  • 串行传输:指 1 比特 1 比特的按照时间顺序传输(远距离通信通常采用串行传输,数据在通信线路一般都是串行传输)

  • 并行传输:指若干比特通过多条通信信道同时传输(计算机内部的数据传输)

码元:指用一个固定时长的信号波形(数字脉冲)表示一位 k 进制数字,代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,这个时长内的信号称为 k 进制码元,而该时长称为码元宽度。1 码元可以携带若干比特的信息量。

信源、信道与信宿

信源:产生和发送数据的源头
信宿:接受数据的终点
信道:信号的传输媒介
信道分类

  • 按传输信号的方式:传送模拟信号的模拟信道、传送数字信号的数字信道
  • 按传输介质:无线信道、有线信道

通信双方信息的交互方式

  • 单向通信:只有一个方向的通信而没有反方向的交互,仅需要一条信道(无线广播、电视广播)
  • 半双工通信:通信的双方都可以发送或接收信息,但任何一方都不能同时发送或接收信息,需要两条信道
  • 全双工通信:通信双方可以同时发送和接受信息,需要两条信道

    速率与波特

  • 码元传输速率:又称波特率,它表示单位时间内数字通信系统所传输码元个数(脉冲个数或信号变化次数),单位是波特(Baud)。码元速率与进制数无关

  • 信息传输速率:又称信息速率、比特率等。它表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s)

若一个码元携带 n 比特的信息量,则 M 波特率的码元传输速率所对应的信息传输速率为 Mn 比特/秒

基础通信

奈奎斯特定理

奈奎斯特定理指出在理想低通(没有噪声、带宽有限)信道中,为避免码间串扰,极限码元传输速率为 2W 波特,其中 W 是理想低通信道的带宽
理想低通信道下的极限码元传输速率 = 2Wlog**2**V(单位为 b/s),V 表示每个码元离散电平的数目(指有多少种不同的码元,比如 16 种不同码元,则需要 4 个二进制位,因此数据传输速率是码元传输速率的 4 倍)

  • 在任何信道中,码元传输速率是有上限的。若传输速率超过上限,就会出现严重的码间串扰问题
  • 信道的频带越宽,传输速率越高
  • 奈氏准则给出了码元传输速率的限制,但未限制信息传输速率(即未对一个码元可以对应多少个二进制位给出限制)

    香农定理

  • 香农定理给出了带宽受限且有高斯白噪声干扰的信道的极限数据传输速率。

  • 信道的极限传输速率 = Wlog**2**(1 + S/N)(单位为 b/s)
    • 式中,W为信道的带宽,S 为信道所传输信号的平均功率,N 为信道内部的高斯噪声功率
    • S/N 为信噪比,即信号的平均功率与噪声的平均功率之比,信噪比 = 10log**10**(S/N)(dB),当 S/N = 10 时,信噪比为 10dB,当 S/N = 1000 时,信噪比为 30dB
  • 信道的带宽或信道中的信噪比越大,信息的极限传输速率越高
  • 对一定的传输带宽或一定的信噪比,信息的极限传输速率的上限是确定的
  • 只要信息传输速率低于信道的极限传输速率,就能找到某种办法实现无差错传输
  • 实际信道能达到的传输速率要低不少
  • 从侧面表明,一个码元对应的二进制位数是有限的

    常用编码方式

    编码:数据变换成数字信号的过程

  • 归零编码(RZ): 高电平代表 1、低电平代表 0(或者相反),每个时钟周期的中间均跳变到低电平(归零)

  • 非归零编码(NRZ):高电平为 1、低电平为 0,不用归零
  • 反向非归零编码(NRZI):信号的翻转代表 0,信号保持不变代表 1
  • 曼彻斯特编码(Manchester Encoding):将一个码元分成两个相等的间隔,前一个间隔为高电平而后一个间隔为低电平表示码元 1;码元 0 的表示方法则正好相反(以太网使用的编码,常用于局域网传输)
  • 差分曼彻斯特编码:若码元为 1,则前半个码元的电平与上一个码元的后半个码元的电平相同;若码元为 0,则情形相反(令牌环局域网使用的编码)

    数字调制方式

    基本的带通调制方法:

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

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

    传输介质

    导引型传输媒体

  • 双绞线:由两根并排绞合、相互绝缘的铜导线组成(常用于局域网、传统电话网)

  • 同轴电缆:主要用于传输基带数字信号,常用于有线电视系统
  • 光纤:利用光导纤维传递光脉冲来进行通信。优点:

    • 传输损耗小,中继距离长
    • 抗雷电好电磁干扰性能好
    • 无串音干扰,保密性好
    • 体积小,重量轻

      非导向传输媒体

  • 无线电波:具有较强的穿透能力,可以传输很长的距离。应用于如无线手机通信、无线局域网(WLAN)等

  • 微波、红外线、激光:三种高宽带的无线通信
  • 微波通信:频率较高,频段范围较宽。信号沿直线传播,因此在地面的传播距离有限,超过一定距离需要中继站来接力
  • 无线电微波通信主要有两种方式:即地面微波接力通信和卫星通信

    物理层设备

  • 中继器(转发器):将信号整形并放大出去,其原理是信号再生(而非简单的将衰减的信号放大)

    • 中继器不能连接两个速率不同的网段,中继器两段的网段一定要使用同一个协议
    • 在粗缆以太网规范中,有“5-4-3”原则,即最多5个网段,互相串联的中继器不能超过4个,网段中只有3段可以挂载计算机,其余两段只能作为扩展通信的链路段
  • 集线器(Hub):实质上是一个多端口的中继器。由 Hub 组成的网络是共享式网络,但逻辑上仍是一个总线网,同时 Hub 只能在半双工状态下工作,网络的吞吐率因而受到限制

    信道复用技术

    见 数据链路层-介质访问控制-信道划分介质访问控制 部分

    宽带接入技术

  • ADSL 技术

    • 非对称数字用户线 ADSL 技术是用数字技术对现有的模拟电话用户线进行改造,使它能够承载宽带数字业务。
    • ADSL 的传输距离取决于数据率和用户线的线径(用户线越细,信号传输时的衰减就越大)
    • ADSL 不能保证固定的数据率,对于质量很差的用户线甚至无法开通 ADSL
    • ADSL 的最大好处就是可以利用现有电话网中的用户线(铜线),而不需要重新布线
  • 光纤同轴混合网(HFC 网)
    • 光纤同轴混合网(HFC 网)是指目前覆盖面很广的有线电视网的基础上开发的一种居民宽带接入网,除可传送节目外,还能提供电话、数据和其他宽带交互型业务
    • 为了提高传输的可靠性和电视信号的质量,HFC 网把原有线电视网中的同轴电缆主干部分改换成光纤。
  • FTTx 技术

    • 光纤接入 FTTx 是解决宽带接入最理想的方案,因为光纤可传送的数据率很高,且通信质量最好。但大量用户使用光纤接入还需要较多的建设资金

      数据链路层

      复习重点

  • 熟悉数据链路层的功能

  • 重点掌握 PPP 协议和 CSMA/CD 协议
  • 熟悉 MAC 的硬件地址
  • 熟悉中继器、网桥、网卡、集线器和交换机的原理和区别

    数据链路层的功能

    为网络层提供服务

  • 无确认的无连接服务:以太网

  • 有确认的无连接服务:无线通信
  • 有确认的面向连接服务:适用于通信要求(可靠性、实时性)较高的场合
  • 有连接就一定要有确认,即不存在无确认的面向连接的服务

两种类型的信道:点对点信道广播信道

封装成帧

  • 在一段数据的前后分别添加首部和尾部,构成一个帧。首部和尾部中含有很多控制信息,用来帧定界。
  • 一个帧的帧长等于帧的数据部分长度加上帧首部和尾部的长度。
  • 每一种链路层协议规定了所能传输的帧的数据部分长度上限——最大数据单元 MTU

    透明传输

    不管数据是什么样的比特组合,都应当能在链路上传送

    差错检测

  • 比特差错:指帧中某些位出现了差错。通常用循环冗余校验(CRC)方式发现位错。

  • 传输差错:指帧的丢失、重复或失序等错误。在数据链路层引入定时器和编号机制,能保证每一帧最终都能有且仅有一次正确的交付给目的结点。
  • 对于通信质量良好的有线传输线路,数据链路层协议不使用确认和重传机制,即不要求数据链路层向上提供可靠传输的服务。如果在数据链路层传输数据时出现了差错并且需要进行改正,那么改正差错的任务就由上层协议(如运输层的 TCP 协议)来完成
  • 对于通信质量较差的无线传输链路,数据链路层协议使用确认和重传机制,数据链路层向上提供可靠传输的服务

    组帧和差错控制

    奇偶校验码

  • 奇偶校验码是奇校验码和偶校验码的统称,是一种最基本的检错码。它由 n-1 位信息元和 1 位校验元组成

  • 如果是奇校验码,那么在附加一个校验元后,码长为 n 的码字中 “1” 的个数为奇数
  • 如果是偶校验码,那么早在附加一个校验元以后,码长为 n 的码字中 “1” 的个数为偶数
  • 它只能检测奇数位的出错情况,但并不知道哪些位错了,也不能发现偶数位出错的情况

    字符填充的首尾定界符法

  • 字符填充法使用特定字符来定界一帧的开始和结束

  • 控制字符 SOH 放在帧的最前面,表示帧的首部开始,控制字符 EOT 表示帧的结束
  • 为了使信息位中出现的特殊字符不被误判为帧的首尾定界符,可在特殊字符前面填充一个转义字符(ESC)加以区分
  • PPP 协议中的字节填充

    • 把转义符定义为 0x7D(即 01111101)
    • 把信息字段中所有的 0x7E 字节转变为 2 直接序列(0x7D,0x5E)
    • 若信息字段中出现一个 0x7D 字节,则转变为 2 字节序列(0x7D,0x5D)
    • 若信息字段出现了 ASCII 的控制字符(即数值小于 0x20 的字符),则在字符前加入一个 0x7D 字节,同时将该字符的编码加以改变(加 0x20)

      零比特填充的首尾标志法

  • 零比特填充法允许数据帧包含任意个数的比特,也允许每个字符的编码包含任意个数比特

  • 使用一个特定的比特模式,即 01111110 来表示一帧的开始和结束
  • 为了不使信息位中出现的比特流 01111110 被误判为帧的首尾标志,发送方的数据链路层在信息位中遇到 5 个连续的 “1” 时,将自动在其后插入一个 “0”
  • 而接收方做该过程的逆操作,即收到 5 个连续的 “1” 时,自动删除后面紧跟的 “0”,以恢复原信息
  • 零比特填充法很容易由硬件来实现,性能优于字符填充法

    循环冗余校验(CRC)

    给定一个 m bit 的帧或报文,发送器生成一个 r bit 的序列,称为帧检验序列(FCS)。这样所形成的帧将由 m+r 比特组成。发送方和接收方事先商定一个多项式 G(x) (最高位和最低位必须为 1),使这个带检验码的帧刚好能被预先确定的多项式 G(x) 整除。接收方用相同的多项式去除收到的帧,如果无余数,那么认为无差错。
    假设一个帧有 m 位,其对应的多项式为 M(X),则计算冗余码的步骤如下:

  • 加 0。假设 G(x) 的阶为 r,在帧的低位端加上 r 个 0

  • 模 2 除。利用模 2 除法(异或操作),用 G(x) 对应的数据串去除上步计算出的数据串,得到的余数即为冗余码(共 r 位,前面的 0 不可省略)

例子:设 G(x)=1101(即 r=3),待传送数据 M=101001(即 m=6),经模 2 除法运算后的结果是:商 Q=110101(这个商没什么用),余数 R=001。所有发送出去的数据为 101001001(即 2rM+FCS),共有 m+r 位

纠错编码——海明码

  • 确定校验位的个数
    • 设 n 为有效信息段位数,k 为校验位的位数,则信息位 n 和校验位 k 应满足:
      • n +k ≤ 2**k** - 1(若要检测两位错,则需再增加 1 位校验位,即 k+1 位)
    • 假设有8位信息位,则需要插入__位校验码?Q: 4位
  • 确定校验位的位置
    • 核心:校验码 Pi 必须是在 2 的 n 次方位置,即只能放在 H1,H2,H4,H8
    • 注意:这里指的位置都是从左向右排序,即:H5,H4,H3,H2,H1
  • 海明码的纠一检二
    • 如果只有一位比特发生错误,那么可以进行检错并且纠错
    • 如果发生了两位比特的错误,假设是P1P2位的值发生了翻转,那么G1和G2的值就会变为一,但是,如果只有H3发生了翻转(也就是一位比特发生了差错),同样会导致P1P2的值发生翻转,所以此时只能检测到错误,而不能纠错。那如果发生了三位比特的错误呢,假设现在P1P2H3发生了错误,那么G1G2的值还是00,也就是无法检测出错误,所以我们说海明码具有一位比特的纠错能力和两位比特的检错能力。
  • 码距
    • 是一个编码系统中任意两个合法编码(码字)之间不同的二进数位(bit)数,而整个编码系统中任意两个码字的的最小距离就是该编码系统的码距。
    • 为了使一个系统能检查和纠正一个差错,码间最小距离必须至少是“3”。最小距离为 3 时,或能纠正一个错,或能检二个错,但不能同时纠一个错和检二个错。编码信息纠错和检错能力的进一步提高需要进一步增加码字间的最小距离。所以从这里可以看出,海明码的码距是 3
  • 码距的性质

    • 海明码如果要检测出 D 位错误,那么就需要一个码距大于等于 D+1 的编码方案,如果要纠正 D 位错误,那么需要一个码距为 2D+1 的编码方案:L - 1 = D + C 且 D>= C
    • 其中 L 为码距,D 为检错出 D 位,C 为纠错出 C 位,这个公式也可以验证海明码,海明码码距为 3,纠错为 1 位,检错为 1 位或者(检错为 2 位,纠错为 0 位),接下来我们用这个公式验证性质一,如果要检测出 D 位错误,那么 C=0,L>=D+1,如果要纠正 D 位错误,那么至少需要检测出 D 位错误 ,也就是 L >= 2D+1,成立

      介质访问控制

      信道划分介质访问控制

      谢书把该部分放物理层讲

      频分复用(FDM)

  • 频分多路复用是一种将多路基带信号调制到不同频率载波上,再叠加形成一个复合信号的多路复用技术

  • 优点:充分利用了传输介质的带宽,系统效率较高;由于技术比较成熟,实现也较容易

    时分复用(TDM)

    时分多路复用是将一条物理信道按时间分成若干时间片,轮流的分配给多个信号使用

    统计时分复用(STDM)

    统计时分多路复用是 TDM 的一种改进,它采用 STDM 帧,STDM 帧并不固定分配时隙,而按需动态的分配时隙,当终端有数据传送时,才会分配时间片,因此可以提高线路的利用率

    波分复用(WDM)

    波分多路复用即光的频分多路复用

    码分复用(CDM)

    码分多路复用是采用不同的编码来区分各路原始信号的一种复用方式。与 FDM 和 TDM 不同,它既共享信道的频率,又共享时间
    常用的名词是码分多址 CDMA。其原理是每比特时间被分成 m 个更短的时间槽,被称为码片,通常情况下每比特有 64 或 128 个码片。每个站点被指定一个唯一的 m 为代码或码片序列。发送 1 时,站点发送码片序列,发送 0 时,站点发送码片序列的反码。当两个或多个站点同时发送时,各路数据在信道中线性相加。为从信道中分离信号,要求各个站点的码片序列相互正交。
    例子:

  • 假如站点 A 的码片序列为 00011011,则 A 站发送 00011011 表示发送比特 1,发送 11100100 表示发送比特 0。按惯例,0 写成 -1,1 写成 +1,所以 A 站的码片序列为 -1 -1 -1 +1 +1 -1 +1 +1。

  • 令向量 S 表示 A 站的码片向量,令 T 表示 B 站的码片向量。两个不同站的码片序列正交,即 S 和 T 的规格化内积(即两个向量内积后再除以向量的分量个数)为 0。
  • 任何一个码片向量和该码片向量自身的规格化内积都是 1,任何一个码片向量和该码片反码的向量的规格化内积都是 -1。
  • 令向量 T 为(-1 -1 +1 -1 +1 +1 +1 -1)。A 站向 C 站发送数据 1(-1 -1 -1 +1 +1 -1 +1 +1),B 站向 C 站发送数据 0(+1 +1 -1 +1 -1 -1 -1 +1)
  • 两个向量到公共信道进行了线性相加,得到 S-T =(0 0 -2 2 0 -2 0 2)
  • 到达 C 站后,进行数据分离,如果要得到来自 A 站的数据,C 站就必须知道 A 站的码片序列,让 S 与 S-T 进行规格化内积,得到 S · (S - T) = 1,所以 A 站发出的数据是 1。同理,B 发出的数据为 0
  • 做题时即让码片序列与数据进行规格化内积,若为 +1 即发出数据 1,若为 -1 即发出数据 0,其他均排除

    随机访问介质访问控制

    CSMA/CD 协议

    载波侦听多路访问/碰撞检测(CSMA/CD)是 CSMA 的协议的改进方案,适用于总线型网络半双工网络环境(不适合全双工通信)

  • 多点接入:说明这是总线型网络,许多计算机以多点接入的方式连接在一根总线上。协议是实质是载波监听和碰撞检测

  • 载波监听:用电子技术检测总线上有没有其他计算机在发送数据,不管在发送前还是在发送中,每个站都必须不停的检测信道
  • 碰撞检测:也就是边发送边监听,即适配器边发送数据边检测信道上的信号电压的变化情况,以便自己在发送数据时其他站是否也在发送数据

把以太网段端到端往返时间 2τ 称为争用期(又称冲突窗口或碰撞窗口),每个站在发送数据后,只有经过这段时间还未检测到碰撞时,才能确定这次发送不会发生碰撞。
最小帧长

  • 确保发送站在发送数据时能检测到可能存在的碰撞,需要在发送完帧之前就能收到自己发送出去的数据
  • 所有数据帧都必须大于一个最小帧长,任何站点收到帧长小于最小帧长的帧时,就要把它当作无效帧立刻丢弃
  • 最小帧长=总线传输时延 数据传输速率 2
  • 以太网规定 51.2μs 为争用期的长度,对于 10Mb/s 的以太网,最小帧长为 512bit,即 64B(若要发送小于64B 的帧,需要填充)

截断二进制指数退避算法(解决碰撞问题)

  • 确定基本退避时间,一般取两倍的总线端到端的传播时延 2τ(即争用期)
  • 定义参数 k,它等于重传次数,但 k 不超过 10,即 k=min[重传次数,10]。
  • 从离散的整数集合[0,1,…,(2k-1)]中随机取出一个数 r,重传所需要退避的时间就是 r 倍的基本退避时间,即 2rτ
  • 当重传达 16 次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错

强化碰撞:当发送数据的占一旦发现发生了碰撞时,除了立即停止发送数据外,还要继续发送 32 比特或 48 比特的人为干扰信号,以便让所有用户都知道现在已经发生了碰撞
帧间最小间隔:以太网还规定了帧间最小间隔为 9.6μs,相当于 96 比特时间。这样做是为了使刚刚收到数据帧的站的接收缓存来得及清理,做好接收下一帧的准备

CSMA/CA协议

无线局域网不使用 CSMA/CD 协议的原因(特别是碰撞检测):

  • 接收信号强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就会过大
  • 在无线通信中,并非所有的站点都能听见对方,即存在“隐蔽站“的问题

802.11 把碰撞检测改为碰撞避免(CA),指尽量降低碰撞发生的概率
由于无线信道的通信质量远不如有线信道,所以使用链路层确认/重传(ARQ)方案,即每发送完一帧,收到对方的确认帧后才能继续发送下一帧
虚拟载波监听:让源站把它要占用信道的时间(包括目的站发回确认帧所需的时间)及时通知给所有其他站,以便其他站在这一段时间都停止发送数据,这样就大大减少了碰撞的机会

局域网

基本结构

三种特殊的局域网拓扑实现:

  • 以太网(目前使用范围最广的局域网,几乎成为局域网的代名词)。逻辑拓扑是总线形结构,物理拓扑是星形结构或扩展星形结构
  • 令牌环。逻辑结构是环形结构,物理拓扑是星形结构
  • FDDI。逻辑结构是环形结构,物理结构是双环结构,使用令牌环局域网技术。

IEEE 802 标准定义将的局域网参考模型只对应与 OIS 参考模型的数据链路层和物理层,并将数据链路层拆分成两个子层:逻辑链路控制(LLC)子层和介质访问控制(MAC)子层

  • MAC 子层:与接入传输媒体有关的内容都放在 MAC 子层,它向上屏蔽对物理层访问的各种差异,提供对物理层的统一访问接口,主要功能包括:组帧和拆卸帧、比特传输差错控制、透明传输
  • LLC 子层:其与传输媒体无关,它向网络层提供无确认无连接、面向连接、带确认无连接、高速传送4种不同的连接服务类型(该层在实际应用中已经用处不大)主要功能包括:建立和释放数据链路层的逻辑连接,提供与高层的接口,差错控制,给帧加序号

    以太网与 IEEE 802.3

  • IEEE 802.3 标准是一种基带总线形的局域网标准

  • 以太网逻辑上是采用总线形拓扑结构,以太网中的所有计算机共享同一条总线信息,以广播方式发送,使用 CSMA/CD 方式对总线进行访问控制
  • 以太网采用无连接的工作方式,不对发送的数据帧编号,也不要求接收方发送确认,即以太网尽最大努力交付数据,提供的是不可靠服务,对于差错的纠正则由高层完成
  • 以太网发送的数据都使用曼彻斯特编码的信号

    以太网的 MAC 帧

    每块网卡中的 MAC 地址也称物理地址,长 6 字节。
    MAC 帧并不需要帧结束符,但以太网 MAC 帧需要尾部
    严格来讲,局域网中的地址应当是每一个站的名字或标识符
    帧的种类

  • 单播帧(一对一),即收到的帧的 MAC 地址与本站的硬件地址相同

  • 广播帧(一对全体),即发送的给本局域网上所有站点的帧(全1地址)
  • 多播帧(一对多),即发送给本局域网上一部分站点的帧

适配器的混杂工作方式

  • 普通模式下适配器只接收目标 MAC 地址与自身 MAC 相符合的帧,其他的丢弃
  • 混杂方式下:适配器会接受以太网上传输的所有帧
  • 混杂方式可能被黑客用来窃听,一般用来监视和分析以太网上的流量

MAC 帧的格式
image.png

  • 图中假定网络层使用的是 IP 协议
  • 前两个字段分别为 6 字节长的目的地址和源地址字段
  • 第三个字段是 2 字节的类型字段,用来标志上一层使用的是什么协议,以便把收到的 MAC 帧数据上交给上一层的这个协议
  • 首部并没有帧长度字段的原因:使用曼彻斯特编码的每一个码元中间都有一次电压的转换。当发送方把一个以太网帧发送完毕,就不再发送其它码元了(不发送1不发送0),如此发送方适配器的接口上的电压也就不再变化了,接收方也由此确定以太网帧的结束位置
  • 由于在以太网上传送数据时是以为单位传送的。以太网在传送帧时,各帧之间还必须有一定的间隙。因此,接收端只要找到帧开始定界符,其后面的连续到达的比特流就都属于同一个 MAC 帧。所以以太网不需要帧结束定界符,也不需要使用字节插入来保证透明传输
  • 将 MAC 帧下传到物理层时,要在帧前加 8 个字节,该字节用来实现接收端在接收 MAC 帧时能够迅速实现比特同步,前 7 个字节为前同步码,第 8 个字节为帧开始定界符,定义为 10101011。MAC 帧的 FCS 字段的检验范围不包括前同步码和帧开始定界符。

无效的mac帧

  • 帧长不是整数个字节
  • 收到的帧检验序列 FCS 出错
  • 收到的 MAC 帧的数据字段长度不在 46 ~ 1500 字节之间(检查出无效的 MAC 帧只丢弃处理,以太网不负责重传已丢弃的帧)

    扩展的以太网

    在物理层扩展以太网

    扩展主机和集线器之间的距离的一种简单方法就是使用光纤(通常是一对光纤)和一对光纤调制解调器

    在数据链路层扩展以太网

    在数据链路层扩展以太网要使用网桥。网桥工作在数据链路层,它根据 MAC 帧的目的地址对收到的帧进行转发过滤
    网桥依靠转发表来转发帧(转发帧时不改变帧的原地址)
    网桥的优点

  • 过滤通行量,增大吞吐量。网桥使各网段成为隔离开的碰撞域

  • 扩大了物理范围,因而增加了整个以太网上工作站的最大数目
  • 提高了可靠性。网络出现故障时,一般只影响个别网段
  • 可互连不同物理层、不同 MAC 子层和不同速率的以太网

网桥的缺点

  • 由于网桥对接收的帧要先存储和查找转发表,然后再转发,而转发之前还必须执行 CSMA/CD 算法(发送碰撞时要退避),这就增加了时延
  • 在 MAC 子层并没有流量控制功能(流量控制需要用到编号体制,编号体制的实现在 LLC 子层)
  • 网桥只适合于用户数不太多(不超过几百个)和通信量不太大的以太网。否则有时会产生网络拥塞,即所谓的广播风暴

网桥的分类

  • 透明网桥:”,“透明”是指以太网上的站点并不知道发送的帧将经过哪几个网桥,以太网上的站点时看不见以太网上的网桥。透明网桥是一种即插即用设备,只要把网桥接入局域网,不用人工配置转发表网桥就能工作。网桥能按照自学习算法处理收到的帧,并且按照转发表把帧转发出去
  • 源路由网桥
    • 源路由网桥是在发送帧时,把详细的路由信息放在帧的首部中。
    • 为了发现合适的路由,源站以广播方式向欲通信的目的站发送一个发现帧作为探测之用;
    • 发现帧将在整个扩展的以太网中沿着所有可能的路由传送。在传送过程中,每个发现帧都记录所经过的路由,当这些帧到达目的站时,就沿着各自的路由返回源站;源站得知这些路由后,从所有可能的路由中选择一个最佳路由;
    • 发现帧还有一个重要的作用,就是帮助源站确定整个网络可以通过的帧的最大长度。
    • 源路由网桥对主机不是透明的,主机必须知道网桥的标识以及连接到哪一个网段上;使用源路由网桥可以利用最佳路由;可以实现负载均衡(信息量平均的分配到每一个网桥)
  • 其最佳路由并不是经过路由器最少的路由,而可以是发送帧往返时间最短的路由
  • 多接口网桥——以太网交换机实质上就是一个多接口的网桥

交换机的特点:

  • 以太网交换机的每个端口都直接与单台主机相连(普通网桥的端口往往连接到以太网的一个网段),并且一般都工作在全双工方式
  • 以太网交换机能同时连通许多对端口,使每队相互通信的主机都能像独占通信媒体那样,无碰撞的传输数据
  • 以太网交换机也是一种即插即用设备(和透明网桥一样),其内部的帧的转发表也是通过自学习算法自动的逐渐建立起来的
  • 以太网交换机由于使用了专用的交换结构芯片,因此交换速率较高
  • 以太网交换机独占传输媒体的带宽
  • 以太网交换机主要采用两种交换模式:存储转发方式、直通方式

    • 直通式交换机只检查帧的目的地址,这使得帧在接收后几乎能马上被传出去。这种方式速度快,但缺乏智能性和安全性,也无法支持具有不同速率的端口的交换
    • 存储转发式交换机先将接收到的帧缓存到高速缓存器中,并检查数据是否正确,确认无误后通过查找表转换成输出端口该帧发送出去。如果发现帧有错,那么就将其丢弃。存储转发式的优点是可靠性高,并能支持不同速率端口间的转换,缺点是延迟较大

      虚拟局域网

  • 利用以太网交换机可以实现虚拟局域网 VLAN,VLAN 不仅可以隔离冲突域,而且可以隔离广播域(注意交换机本身只能隔离冲突域,不能划分广播域)

  • 虚拟局域网其实只是局域网给用户提供的一种服务,而不是一种新型局域网
  • 虚拟局域网限制了接受广播信息的计算机数,使得网络不会因传播过多的广播信息(即所谓的“广播风暴”)而引起性能恶化

    高速以太网

  • 速率达到或超过 100Mb/s的以太网称为高速以太网

    100BASE-T 以太网

  • 100BASE-T 是在双绞线上传送 100Mb/s 基带信号的星形拓扑结构以太网

  • 它使用 CSMA/CD 协议,既支持全双工方式,又支持半双工方式,可在全双工方式下无冲突发生,因此,在全双工方式下不使用 CSMA/CD 协议。它又称为快速以太网(Fast Ethemet)

    吉比特以太网

  • 又称千兆以太网,允许在 1Gb/s 下以全双工和半双工两种方式工作。

  • 使用 IEEE 802.3 协议规定的帧格式,在半双工方式下使用 CSMA/CD 协议(全双工模式下不需要)
  • 与 10BASE-T 和 100BASE-T 技术向后兼容
  • 在半双工方式时,必须进行碰撞检测
  • 吉比特以太网仍然保持一个网段的最大长度为 100m,但采用了载波延伸的办法,使最短帧长仍为 64 字节,同时将争用期增大为 512 字节。
  • 增加了一种功能称为分组突发(Packet Bursting)

    10 吉比特以太网和 100 吉比特以太网

  • 帧格式与上述的帧格式完全相同,保留了以太网的最小帧长和最大帧长

  • 由于数据率太高,不再使用铜线而只使用光纤作为传输媒体
  • 只工作在全双工方式,因此没有争用期问题,也不使用 CSMA/CD 协议

    广域网

    广域网和局域网

    |
    | 广域网 | 局域网 | | —- | —- | —- | | 覆盖范围 | 很广,通常跨区域 | 较小,通常在一个区域内 | | 连接方式 | 结点之间都是点到点连接,但为了提高网络的可靠性,一个结点交换机往往与多个结点交换机相连 | 普遍采用多点接入技术 | | OSI 参考模型 | 三层:物理层,数据链路层,网络层 | 两层:物理层,数据链路层 | | 联系与相似点 |
    1. 广域网和局域网都是互联网的重要构成组件,从互联网的角度看,二者平等(不是包含关系)
    1. 连接到一个广域网或局域网上的主机在该网内进行通信时,只需要使用网络的物理地址
    | | | 着重点 | 强调资源共享 | 强调数据传输 |

HDLC 协议

  • 高级链路控制协议(HDLC)协议是 ISO 制定的面向比特的数据链路层协议
  • 数据报文可透明传输,用于实现透明传输的“0 比特插入法”易于硬件实现
  • 全双工通信,有较高的链路传输效率
  • 所有帧采用 CRC 检验,对信息帧进行顺序编号,可防止漏收或重发,传输可靠性高
  • 两种基本配置:非平衡配置、 平衡配置
  • 3 种站类型:主站、从站、复合站
  • 3 种数据操作方式:正常响应方式、异步平衡方式、异步响应方式
  • 3 类 HDLC 帧:信息帧、监督帧、无编号帧
  • 信息帧使用了编号和确认机制,能够提供可靠传输

    PPP 协议

  • 在通信线路质量较差的年代,在数据链路层使用可靠传输协议曾经是一种好办法。因此能实现可靠传输的高级数据链路控制 HDLC 成为当时流行的数据链路层协议,但如今 HDLC 已很少使用了。对于点对点的链路,简单得多的点对点协议 PPP 是目前使用最广泛的数据链路层协议。

    组成

    PPP 协议是用户计算机和互联网服务提供商(ISP)进行通信时所使用的数据链路层协议
    PPP 是使用串行线路通信的面向字节的协议
    PPP 协议不使用序号和确认机制,只保证无差错接收
    三个组成部分:

  • 链路控制协议(LCP):一种扩展链路控制协议,用于建立、配置、测试和管理数据链路

  • 网络控制协议(NCP):其中的每一个协议支持不同的网络层协议,为网络层协议建立和配置逻辑连接
  • 一个将 IP 数据报封装到串行链路的方法。PPP 既支持异步链路(无奇偶校验的 8 比特数据),也支持面向比特同步链路。IP 数据报在 PPP 帧中就是其信息部分。这个信息部分的长度受最大传送单元 MTU 的限制

    帧格式

    940《计算机网络》笔记 - 图2

  • 首部的第一个字段和尾部的第二个字段都是标志字段 F(Flag),规定为 0x7E

  • PPP 帧的前 3 个字段的内容始终是不变的
  • PPP 是面向字节的,因此所有PPP帧的长度都是整数个字节
  • 第 4 个字段是协议段,占 2 字节
  • 第 5 段信息段的长度是可变的,大小等于 0B 且小于等于 1500B(由于 PPP 是点对点型的,并不是总线型,所以无须采用 CSMA/DA 协议,就没有最短帧)
  • 当 PPP 使用异步传输时,使用字节填充
  • PPP 使用同步传输时,使用零比特填充来实现透明传输
  • 第 6 个字段是帧检测序列(FCS),占 2 字节,即循环冗余的冗余码

    PPP 协议的工作状态

    image.png

    其他

  • 以太网设置最大帧长是为了保证各个站都能公平竞争接入到以太网。因为如果每个站发送特长的数据帧,则其他的站就必须等待很长的时间才能发送数据

  • 一个 10 Mbit/s 以太网若工作在全双工状态,其数据率是发送和接收各为 10 Mbit/s
  • 一个单个的以太网上使用的网桥原理上数量未限制,但每引入一个网桥会引入一帧的延迟,网桥太多会影响以太网的性能
  • 如果在数据链路层不进行封装成帧,那么数据链路层帧收到一些数据时,就无法知道对方传送到数据哪些是数据,哪些是信息,也无法差错检测
  • 局域网的地理范围很小,且为一个单位所有,采用广播通信方式十分方便,但广域网的地理范围很大,显然用广播通信势必造成通信资源的极大浪费

    网络层

    功能与服务

    异构网络互联

    网络互联:指将两个以上的计算机网络,通过一定的方法,用一种或多种通信处理设备(即中间设备)相互连接起来,以构成更大的网络系统。
    中间设备又称中间系统或中继系统,分为以下 4 种:

  • 物理层中继系统:中继器(转发器),集线器(Hub)

  • 数据链路层中继系统:网桥或交换机
  • 网络层中继系统:路由
  • 网络层以上的中继系统:网关

    路由与转发

    路由器功能

  • 路由选择:指按照复杂的分布式算法,根据从相邻路由器所得到的关于整个网络拓扑的变化情况,动态的改变所选择的路由

  • 分组转发:指路由器根据转发表将用户的 IP 数据报从合适的端口转发出去

    拥塞控制

    拥塞控制的作用:确保子网能够承载所达到的流量
    流量控制和拥塞控制的区别:流量控制往往是指在发送端和接收端之间的点对点通信量的控制。流量控制所要做的是抑制发送端发送数据的速率,以便接收端来得及接收。而拥塞控制必须确保通信子网能够传送待传数据,这是全局性的问题,涉及到网络中所有的主机、路由器及导致网络传输能力下降的所有因素
    拥塞控制的方法:开环控制、闭环控制

    虚电路、数据报服务

    TCP/IP 体系的网络层提供的是数据报服务
    帧中继X.25ATM通过建立虚电路进行通信
虚电路报服务 数据报路服务
思路 可靠通信应当由网络来保证 可靠通信应当由用户主机来保证
连接的建立 必须有 不需要
终点地址 仅在连接阶段使用,每个分组使用短的虚电路号 每个分组都有终点的完整地址
分组的转发 属于同一条虚电路的分组按照同一路由转发 每个分组独立地址的进行路由选择和转发
当结点出故障时 所有通过出故障的结点的虚电路均不能工作 出故障的结点可能会丢失分组,一些路由可能会发生变化
分组的顺序 总是按发送顺序到达终点 到达终点的时间不一定按发送顺序
端到端的差错处理和流量控制 可以由网络负责,也可以由用户主机负责 由用户主机负责

IPv4

IPv4 分组

IPv4 分组的格式

一个 IP 分组由首部和数据部分组成。首部前一部分的长度固定,共 20B,是所有 IP 分组必须具有的。首部固定部分的后面是一些可选字段,其长度可变,用来提供错误检测及安全等机制。IP 数据报的格式如下图:
940《计算机网络》笔记 - 图4

  • 版本:指 IP 的版本,现在主要版本号为 4
  • 首部长度占 4 位,可以表示的最大十进制数是 15。以 32 位为单位,最大值为 60B(15*4B)。最常用的长度是 20B
  • 总长度占 16 位。指首部和数据的长度,单位为字节,因此数据报的最大长度为 216-1=65535B。但数据报的总长度不能超过数据链路层的 MTU 值(以太网帧的 MTU 为 1500B,所以数据部分长度最多为 1480B)
  • 标识:占 16 位。是一个计数器,每产生一个数据报就加 1,并赋值给标识字段。但它并不是“序号”(因为 IP 是无连接服务)。当一个数据报长度超过 MTU 时,必须分片且每个数据报片都复制一次标识号,以便能重新组装成原来的数据报
  • 标志:占 3 位。标志字段的最低位为 MF,MF = 1 表示后面还有分片,MF = 0 表示最后一个分片。标志字段中间的一位是 DF,只有当 DF = 0 时才允许分片
  • 片偏移:占 13 位。指出较长的分组在分片后,某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位,每个分片的长度一定是 8B(64位)的整数倍
  • 生存时间(TTL):占 8 位。数据报在网络中可通过的路由器数的最大值。路由器在转发分组前,先把 TTL 减 1,若 TTL 被减为 0,则该分组必须丢弃
  • 协议:占 8 位。指出此分组携带的数据使用何种协议
  • 首部检验和:占 16 位。IP 数据报的首部检验和,只校验分组的首部,而不校验数据部分。数据报每经过一个路由器,路由器都要重新计算首部检验和。如果出错,将此数据报丢弃
  • 源地址字段:占 4 B,标识发送方的 IP 地址
  • 目的地址字段:占 4B,标识接收方的 IP 地址
  • (要记住首部长度、总长度、片偏移长度;要熟悉 IP 数据报的各个字段的意义和功能,但不需要记忆 IP 数据报的的首部)

    IP数据报分片

  • 当 IP 数据报的总长度大于链路 MTU 时,就需要将 IP 数据报中数据分装在两个或多个较小的 IP 数据报中,这些较小的数据报称为

  • 片在目的地的网络层被重新组装。目的主机使用 IP 首部中的标识、标志和片偏移字段来完成对片的重组
  • 分片的计算:涉及到标识、标志、片偏移字段

    网络层转发分组的流程

    路由器执行的分组转发算法如下:
  1. 从数据报的首部提取目的主机的 IP 地址 D,得出目的网络地址 N
  2. 若网络 N 与此路由器直接相连,则把数据报直接交付给目的主机 D,即直接交付;否则是间接交付,执行步骤 3
  3. 若路由表中有目的地址 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤 4
  4. 若路由表中有到达网络 N 的路由,则把数据报传送给路由表指明的下一跳路由器;否则,执行步骤 5
  5. 若路由表中有一个默认路由,则把数据报传送给路由表中所指明的默认路由器;否则,执行步骤 6
  6. 报告转发分组出错

    IPv4 地址

    传统的 IP 地址是分类的地址,分为 A、B、C、D、E 五类
    IP 地址都由网络号和主机号两部分组成。即 IP 地址 :: = {<网络号>,<主机号>}
  • 网络号:标志主机(或路由器)所连接到的网络。一个网络号在整个因特网范围内必须是唯一
  • 主机号:标志该主机(或路由器)。一台主机号在它前面的网络号所指明的网络范围内必须是唯一

分类的 IP 地址如图所示
image.png
具有特殊用途,不用做主机的 IP 地址

  • 主机号全为 0 表示本网络本身,如 202.98.174.0
  • 主机号全为 1 表示本网络的广播地址,又称直接广播地址,如 202.98.174.255
  • 127.0.0.0 保留为环回自检地址,即本地回路地址,此地址表示任意地址本身,目的地址为环回地址的 IP 数据报永远不会出现在任何网络上(网络号为 127 的 IP 地址都是环回自检地址)
  • 32 位全为 0,即 0.0.0.0 表示本网络上的本主机
  • 32 位全为 1,即 255.255.255.255 表示整个 TCP/IP 网络的广播地址,又称受限广播地址。实际使用时等效为本网络的广播地址

常用的三种类别 IP 地址的使用范围

网络类别 最大可用网络数 第一个可用的网络号 最后一个可用的网络号 每个网络中的最大主机数
A 27-2 1 126 224-2
B 214-1 128.1 191.255 216-2
C 221-1 192.0.1 223.255.255 28-2

IP 地址的特点

  • IP 地址是一种分等级的地址结构
  • IP 地址是标志一台主机(或路由器)和一条链路的接口。IP 网络上的一个路由器必然至少应具有两个 IP 地址(路由器每个端口必须至少分配一个 IP 地址)
  • 用转发器或桥接器(网桥等)连接到若干 LAN 仍然是同一个网络(同一个广播域),因此该 LAN 中所有主机的 IP 地址的 IP 地址的网络号必须相同,但主机号必须不同
  • 在 IP 地址中,所有分配到网络号的网络(无论是 LAN 还是 WAN)都是平等的
  • 在同一个局域网上的主机或路由器的 IP 地址中的网络号必须是一样的

    划分子网与子网掩码、CIDR

    划分子网

    两级 IP 地址的缺点(为什么要划分子网):

  • IP 地址空间的利用率有时很低

  • 给每个物理网络分配一个网络号会使路由表变得太大而使网络性能变坏
  • 两级的 IP 地址不够灵活

划分子网的基本思路

  • 划分子网纯属单位内部的事情。单位对外仍然表现为没有划分子网的网络
  • 从主机号借用若干比特作为子网号,当然主机号相应减少了相同的比特
  • 三级 IP 地址的结构如下:IP 地址 = {<网络号>,<子网号>,<地址号>}
  • 凡是从其他网络发送给本单位某台主机的 IP 数据报仍然是根据 IP 数据报的目的网络号,先找到连接到本单位网络上的路由器,然后该路由器在收到 IP 数据报后,按目的网络号和子网号找到目的子网。最后把 IP 数据报直接交付给目的主机

    子网掩码

  • 为了告诉主机或路由器对一个 A 类、B 类、C 类网络进行了划分子网,使用子网掩码来表达对原网络中主机号的借位(子网掩码的作用)

  • 子网掩码是一个与 IP 地址相对应的、长 32bit 的二进制串,由一串 1 和跟随的一串 0 组成。其中 1 对应于 IP 地址中的网络号及子网号,而 0 对应于主机号
  • 优点:不管网络有没有划分子网,计算机只需将 IP 地址和其对应的子网掩码逐位与运算,即可得出相应子网的网络地址
  • 现在的因特网标准规定:所有的网络必须使用子网掩码。一个网络如果为划分子网,就使用默认子网掩码
  • A、B、C 类地址的默认子网掩码分别为 255.0.0.0、255.255.0.0、255.255.255.0
  • 所有路由器在相互之间交换路由信息时,必须把自己所在网络(或子网)的子网掩码告诉对方。路由器的路由表中所包含的主要内容必须有目的网络地址、子网掩码、下一跳地址
  • 同属于一个子网的所有主机及路由器的相应端口,必须设置相同的子网掩码

使用子网掩码时路由器的分组转发算法如下

  1. 从收到的分组的首部提取目的主机的 IP 地址 D
  2. 先判断是否为直接交付。对路由器直接相连的网络逐个进行检查:用各网络的子网掩码和 D 逐位与运算,看结果是否和相应的网络地址相对应。若匹配,则将分组直接交付;否则是间接交付,执行步骤 3
  3. 若路由表中有目的地址 D 的特定主机路由,则把数据报传送给路由表中所指明的下一跳路由器;否则,执行步骤 4
  4. 对路由表中的每一行(目的网络地址、子网掩码、下一跳地址)中的子网掩码和 D 逐位与运算,其结果为 N。若 N 与该行的目的网络地址匹配,则将分组传送给该行指明的下一跳路由器;否则,执行步骤 5
  5. 若路由表中有一个默认路由,则把分组传送给路由表中所指明的默认路由器;否则,执行步骤 6
  6. 报告转发分组出错

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

    无分类域间路由选择(CIDR)是在变长子网掩码的基础上提出的一种消除传统 A、B、C 类网络划分,并且可以在软件的支持下实现超网构造的一种 IP 地址的划分方法
    CIDR 使用“斜线记法”,即在 IP 后面加上斜线“/”,然后写上网络前缀所占的位数
    CIDR 的特点
  • 消除了传统A、B、C 类地址及划分子网的概念
  • CIDR 使 IP 地址从三级编址(使用子网掩码)由回到了两级编址,但是无分类的两级编址,记法为:IP:: = {<网络前缀>,<主机号>}
  • 将网络前缀都相同的连续 IP 地址组成“CIDR 地址块”。一个 CIDR 地址块可以表示很多地址,这种地址的聚合称为路由聚合,或称构成超网

最长前缀匹配(最佳匹配):使用 CIDR 时,路由表中的每个项目由“网络前缀”和“下一跳地址”组成。在查找路由表时可能会得到不止一个匹配结果。此时应当从匹配结果中选择具有最长网络前缀的路由,因为网络前缀越长,其地址块就越小,因而路由就越具体

ARP 和 ICMP

IP 地址与硬件地址

从层次的角度看,物理地址是数据链路层和物理层使用的地址,而 IP 地址是网络层和以上各层使用的地址,是一种逻辑地址。IP 地址放在 IP 数据报的首部,而硬件地址则放在 MAC 帧的首部。在网络层和网络层以上使用的是 IP 地址,而数据链路层及以下使用的是硬件地址(如 MAC 地址)
由于路由器的隔离,在 IP 网络中只使用 IP 地址来完成寻址。寻址时,每个路由器依据其路由表选择到目标网络需要转发到的下一跳,而 IP 分组通过多次路由转发到达目标网络后,改为在目标 LAN 中通过数据链路层的 MAC 地址以广播方式寻址,这样可以提高路由选择的效率
注意:

  • 在 IP 层抽象的互联网上只能看到 IP 数据报
  • 虽然在 IP 数据报首部有完整的源 IP 地址和目的 IP 地址,但路由器指只根据目的 IP 地址的网络号进行路由选择
  • 在局域网的数据链路层,只能看见 MAC 帧。而通过路由器转发 IP 分组时,此 IP 分组在每个网络中都被路由器解封装和重新封装。因此 IP 数据报中被路由转发时,其数据链路层所使用的 MAC 帧是不断改变的。这决定了无法使用 MAC 地址跨网络通信
  • 尽管互联在一起的网络的硬件地址体系各不相同,但 IP 抽象的互联网屏蔽了下层这些复杂的细节
  • 路由器由于互联多个网络,因此它不仅有多个 IP 地址,也有多个硬件地址

    地址解析协议(ARP)

    ARP 的作用就是根据一个机器(主机或路由器)的 IP 地址,能够找出相应的硬件地址
    ARP 是解决同一个局域网上的主机或路由器的 IP 地址和硬件地址的映射问题
    工作原理
  1. 主机 A 欲向本局域网上的某台主机 B 发送 IP 数据报时,先在其 ARP 高速缓存中查看有无主机 B 的 IP 地址,转 2
  2. 若有,就可查出其相应的硬件地址,在再将此硬件地址写入 MAC 帧然后通过局域网将该 MAC 帧发往此硬件地址,结束;若无,就使用目的 MAC 地址为 FF-FF-FF-FF-FF-FF 的帧来封装并广播 ARP 请求分组,使同一个局域网里的所有主机收到 ARP 请求,转 3
  3. 主机 B 收到该 ARP 请求后,向主机 A 发出响应 ARP 分组(单播),分组中包含主机 B 的 IP 与 MAC 地址的映射关系,转 4
  4. 主机 A 在收到后将此映射写入 ARP 缓存,然后按查询到的硬件地址发送 MAC 帧

ARP 的 4 种典型情况

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

为什么要使用抽象的 IP 地址,而不直接使用硬件地址进行通信?
由于全世界存在各式各样的网络,它们使用不同的地址。要使这些异构网络能够互相通信就必须进行非常复杂的硬件地址转换工作,因此由用户或用户主机来完成这项工作几乎是不可能的事。但 IP 编址把这种复杂问题解决了。连接到互联网的主机只需各自拥有一个唯一的 IP 地址,它们之间的通信就像连接在同一个网络上那样简单方便,因为上述的调用 ARP 的负责过程都是由计算机软件自动进行的,对用户来说是看不见这种调用过程的。
逆地址解析协议 RARP:和 ARP 相反,用来把一个机器(主机或路由器)的物理地址(或硬件地址)转换为相应的 IP 地址

网际控制报文协议(ICMP)

为了更有效的转发 IP 数据报和提高交付成功的机会,在网际层使用了网际控制报文协议 ICMP。ICMP 用来让主机或路由器报告差错和异常情况,为 IP 层协议,需要封装在 IP 分组中发送

ICMP 差错报告报文

四种差错报告报文类型

  • 终点不可达:不能交付数据报
  • 时间超过:收到 TTL 为 0 的数据报
  • 参数问题:数据报首部中有的字段值不正确
  • 改变路由(重定向):让主机知道下次应将数据报发送给更好的路由

不应发送差错报告报文的情况

  • 对 ICMP 差错报告报文不再发送 ICMP 差错报告报文
  • 对第一个分片的数据报片的所有后续数据报片都不发送 ICMP 差错报告报文
  • 对具有多播地址的数据报都不发送 ICMP 差错报告报文
  • 对具有特殊地址(如 127.0.0.0 或 0.0.0.0)的数据报不发送 ICMP 差错报告报文

    ICMP 询问报文

    四种询问报文类型

  • 常用报文:回送请求和回答报文、时间戳请求和回答报文

  • 不常用报文:掩码地址请求和回答报文、路由器询问和通告报文

    常见应用

  • PING:用来测试两台主机之间的连通性,使用了 ICMP 回送请求和回答报文,工作在应用层,直接使用了网络层的 ICMP,而未使用传输层的 TCP 或 UDP

  • Traceroute/Tracert:用来跟踪分组经过的路由,使用了 ICMP 时间超过报文,工作在网络层

    IPv6

    IPv6 的主要特点

    从根本上解决了 IP 地址的耗尽问题
    IPv6 的主要特点:

  • 更大的地址空间,将地址从 IPv4 的 32 位增大到了 128 位。IPv6 的字节数(16B)是IPv4 字节数(4B)的平方

  • 扩展的地址层次结构,将 IPv4 的校验和字段彻底删除
  • 灵活的首部格式,首部长度是固定的,因此不需要首部长度字段
  • 改进的选项
  • 允许协议继续扩充
  • 支持即插即用(即自动配置)
  • 支持资源的预分配
  • IPv6 只有在包的源节点才能分片,是端到端的,传输路径中的路由器不能分片,所有从一般意义上说,IPv6 不允许分片(不允许类似 IPv4 的路由分片)
  • IPv6 首部长度必须是 8B 的整数倍
  • 增大了安全性。身份验证和保密功能是 IPv6 的关键特征

    IPv6 的基本首部

    IPv6 数据报由两大部分组成,即基本首部和后面的有效载荷。有效载荷也称为净载荷。有效载荷允许有零个或多个扩展首部,再后面是数据部分。但所有的扩展首部并不属于 IPv6 数据报的首部。
    image.png
    image.png

  • 版本:占 4 位

  • 通信量:占 8 位
  • 流标号:占 20 位。IPv6 的一个新的机制是支持资源预分配,并且允许路由器把每一个数据报与给定的资源分配相联系
  • 有效载荷长度:占 16 位。指明 IPv6 数据报除基本首部以外的字节数(所有扩展首部都算在有效载荷内)。最大值为 64KB(65535 字节)
  • 下一个首部:占 8 位。相当于 IPv4 的协议字段或可选字段
    • 当 IPv6 没有扩展首部时,下一个首部字段的作用和 IPv4 的协议字段一样,指出基本首部后面的数据应交付 IP 层上面的哪一个高层协议
    • 当出现扩展首部时,下一个首部字段的值就标识后面第一个扩展首部的类型
  • 跳数限制:占 8 位。
  • 源地址:占 128 位。是数据报的发送端的 IP 地址
  • 目的地址:占 128 位。是数据报的接收端的 IP 地址

    IPv6 的地址

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

    • 单播(unicast):就是传统的点对点通信
    • 多播(multicast):是一点对多点的通信,分组被交付到一组计算机的每台计算机
    • 任播(anycast):IPv6 增加的一种类型。任播的目的站是一组计算机,但数据报在交付时只交付其中一台计算机,通常是距离最近的一个
  • IPv6 采用冒号十六进制记法,即把地址中的每 4 位用一个十六进制数表示,并用冒号分割每 16 位
  • 允许零压缩和双冒号缩写(双冒号表示法在一个地址中仅能出现一次)
  • IPv4 向 IPv6 过度可以采用双协议栈隧道技术两种策略
  • 双协议栈:指完全过渡到 IPv6 之前,使一部分主机(或路由器)装有双协议栈:一个 IPv4 和 IPv6。区分两类地址:看 DNS 返回的地址类型。
  • 隧道技术:在 IPv6 数据报要进入 IPv4 网络时,把 IPv6 数据报封装成为 IPv4 数据报

    路由器与路由选择协议

    域内路由与域间路由

    自治系统:单一技术管理下的一组路由器
    自治系统内部的路由选择称为域内路由选择,自治系统之间的路由选择称为域间路由选择

  • 内部网关协议(IGP):即在一个自治系统内部使用的路由选择协议,如 RIP 和 OSPF

  • 外部网关协议(EGP):若源站和目的站处在不同的自治系统中,当数据报传到一个自治系统的边界时(两个自治系统就可能使用不同的 IGP),就需要使用一种协议将路由选择信息传递到另一个自治系统中。目前使用最多的外部网关协议是 BGP-4

    路由信息协议(RIP)

    工作原理:RIP 是一种分布式的基于距离向量的路由选择协议,是因特网的标准协议,其最大优点是简单。RIP 协议要求网络中的每一个路由器都要维护从它自己到其他的每一个目的网络的距离记录。RIP 中的“距离”也称为“跳数”
    RIP 协议的特点:

  • 仅和相邻路由器交换信息

  • 路由器交换的信息是当前本路由器所知道的全部信息,即自己的路由表
  • 按固定的时间间隔交换路由信息

距离向量算法
每个路由表项目都有三个关键数据:<目的网络 N,距离 d,下一跳路由器地址 X>。对于每个相邻路由器发送过来的报文,执行以下步骤:

  1. 对地址为 X 的相邻路由器发来的 RIP 报文,先修改此报文中的所有项目:把“下一跳”字段中的地址都改为 X,并把所有“距离”字段的值加 1
  2. 对修改后的 RIP 报文中的每个项目,执行以下步骤:
    1. 当原来的路由表中没有目的网络 N 时,把该项目添加到路由表中
    2. 当原来的路由表中有目的网络 N,且下一跳路由器的地址是 X 时,用收到的项目替换原路由表中的项目
    3. 当原来的路由表中有目的网络 N,且下一跳路由器的地址不是 X 时,如果收到的项目中的距离 d 小于路由表的距离,那么就用收到的项目替换原路由表中的项目;否则什么也不做
  3. 如果 180 秒(RIP 默认超时时间是 180 秒)还没有收到相邻路由器的更新路由表,那么把此相邻路由器记为不可达路由器,即把距离设置为 16(距离 16 表示不可达
  4. 返回

RIP 最大的优点是实现简单、开销小、收敛过程较快。
RIP 的缺点如下:

  • RIP 限制了网络的规模,它能使用的最大距离为 15(16 表示不可达)
  • 路由器之间交换的是路由器中的完整路由表,因此网络规模越大,开销也越大
  • 网络出现故障时,会出现慢收敛现象(即需要较长时间才能将信息传送到所有路由器),俗称“坏消息传的慢”,使更新过程的收敛时间长,慢收敛是导致路由回路的重要原因

RIP 是应用层协议,它使用 UDP 传送数据(端口 520)。RIP 选择的路径不一定是时间最短的,但一定是具有最少路由器的路径。

开放最短路径优先协议(OSPF)

OSPF 协议是使用分布式链路状态协议的典型代表
OSPF 与 RIP 的区别:

  • OSPF 向本自治系统中所有路由器发送信息。这里使用的方法是洪泛法。而 RIP 仅向与自己相邻的几个路由器发送信息。
  • OSPF 发送的信息是与本路由器相邻的所有路由器的链路状态,但这只是路由器所知道的部分信息。而 RIP 发送的信息是本路由器全部知道的信息,即整个路由表。
  • OSPF 只有当链路状态发生变化时,才用洪泛法向所有路由器发送信息,并且更新过程收敛得快。而在 RIP 中,不管网络拓扑是否发生变化,路由器之间都会定期交换路由表的信息
  • OSPF 是网络层协议,它不使用 UDP 或 TCP,而直接用 IP 数据报传送,而 RIP 是应用层协议,它在传输层使用 UDP。

OSPF 的特点:

  • 所有的路由器最终都能建立一个链路状态数据库,实际上就是全网的拓扑结构图,在全网范围内是一致的
  • OSPF 对不同的链路可根据 IP 分组的不同服务类型(TOSs)而设置成不同的代价
  • 如果到同一个目的网络有多条相同代价的路径,那么可以将通行量分配给这几条路径。称为多路径间的负载均衡
  • 所有在 OSPF 路由器之间交换的分组都具有鉴别功能,因而保证了仅可在可信赖的路由器之间交换链路状态信息
  • 支持可变长度的子网划分和无分类编址 CIDR
  • 每个链路状态都带上一个 32 位的序号,序号越大,状态就越新

OSPF 的工作原理

  • 每个路由器根据全网拓扑结构图,使用 Dijkstra 最短路径算法计算从自己到目的网络的最优路径,以此构造自己的路由表
  • Dijkstra 最短路径算法(SPF)原理:https://zhuanlan.zhihu.com/p/164743936
  • 当链路状态发生变化时,每个路一起去重新计算到各目的网络的最优路径,构造新的路由表
  • OSPF 将一个自治系统再划分为若干个更小的范围,称为区域。好处是使用洪泛法交换链路状态信息段范围局限于每个区域而非整个自治系统,减少了整个网络上的通行量

OSPF 的五种分组类型

  • 问候分组(Hello):用来发现和维持邻站的可达性
  • 数据库描述分组:向领站给出自己到链路状态数据库中的所有链路状态项目的摘要信息
  • 链路状态请求分组(LSU):向对方请求发送某些链路状态项目的详细信息
  • 链路状态更新分组:用洪泛法对全网更新链路状态
  • 链路状态确认分组:对链路更新分组的确认
  • 另:OSPF 规定,每两个相邻路由器每隔 10 秒钟要交换一层问候分组,这样就能确定哪些邻站是可达的

    边界网关协议(BGP)

  • BGP 是一种外部网关协议,主要力求寻找一条能够到达目的网络且比较好的路由(不能兜圈子),而并非寻找一条最佳路由

  • BGP 采用路径向量选择协议。
  • BGP 是应用层协议,它是基于 TCP
  • BGP 交换的可达性信息是到达某个网络所经过的路径

BGP-4 的四种报文:

  • OPEN(打开)报文
  • UPDATE(更新)报文
  • KEEPALIVE(保活)报文
  • NOTIFICATION(通知)报文

    路由器的组成和功能

  • 路由器所一种具有输入/输出端口的专用计算机,其任务是连接不同的网络(连接异构网络)并完成路由转发,即转发分组。在多个逻辑网络(即多个广播域)互联时必须使用路由器

  • 路由器结构分成两大部分:路由选择部分、分组转发部分
    • 路由选择部分:也称控制部分,包括路由选择处理机、路由选择协议、路由表,但其核心构件路由选择处理机。路由选择处理机的任务是根据所选定的路由选择协议构造出路由表,同时经常或定期的和相邻路由器交换路由信息而不断的更新和维护路由表
    • 分组转发部分
      • 一组输入端口:输入端口在从物理层接收到的比特流中提取出数据链路层帧,进而从帧中提取出网络层数据报,
      • 一组输出端口:输出端口则执行恰好相反的操作:网络层数据报-数据链路层帧-物理层比特流
      • 交换结构关键部件,它根据转发表对分组进行处理,将某个输入端口进入的分组从一个合适的输出端口转发出去。三种常用的交换方法:通过存储器、通过总线、 通过互联网络
  • 从模型的角度看,路由器是网络层设备,实现了网络模型的下三层,即物理层、数据链路层和网络层(所以相对于网桥、集线器传输延迟较高)
  • 路由器的两个重要功能:
    • 分组转发:处理通过路由器的比特流,关键操作是转发表查询、转发及相关的队列管理好任务调度等
    • 路由计算:通过和其他路由器进行基于路由协议的交互,完成路由表的计算
  • 路由器和网桥的重要区别:网桥和高层协议无关,而路由器是面向协议的,它依据网络地址进行操作,并进行路径选择、分段、帧格式转换、对数据报的生存时间和流量进行控制等。限制的路由器一般提供多种协议支持,包括 OSI、TCP/IP、IPX 等

    IP多播

    多播的概念

  • 多播机制:让源计算机一次发送的单个分组可以抵达用一个组地址表示的若干目标计算机,并被它们正确接收

  • 多播地址只能用于目的地址,而不能用于源地址
  • 多播一定仅应用于 UDP,它将报文同时送往多个接收者的应用来说非常重要。而 TCP 是一个面向连接的协议,意味着分别运行于两台主机内的两个进程之间存在一条连接,因此会一对一的发送
  • 主机多播时仅发送一份数据,只有数据在传送路径出现分叉时才将分组复制后继续转发
  • 与单播相比,在一对多的通信中,多播可以大大节约网络资源

    IP 多播地址

  • IP 多播使用 D 类地址格式。D 类范围是 224.0.0.0~239.255.255.255。每个 D 类 IP 地址标志一个广播组

  • 多播数据报与一般的 IP 数据报的区别是,前者使用 D 类 IP地址作为目的地址,并且首部中的协议字段值是 2,表明使用 IGMP

    • 多播数据报也是“尽最大努力交付”,不托管可靠交付
    • 多播地址只能用于目的地址,而不能用于源地址
    • 对多播数据报不产生 ICMP 差错报文
    • 并非所有的 D 类地址都可以作为组播地址

      IGMP 与多播路由算法

      要使路由器知道多播组成员的信息,需要利用因特网组管理协议(IGMP);连接到局域网上的多播路由器还必须和因特网上的其他组播路由器协同工作,以便把多播数据报用最小代价传送给所有组成员,这就需要使用多播路由选择协议
      IGMP 的两个工作阶段:
  • 第一阶段:当某个主机加入新的多播组时,该主机应向多播组的多播地址发送一个 IGMP 报文,声明自己要成为该组的成员。本地的多播路由器收到 IGMP 报文后,还有利用多播路由协议把这种组成员关系转发给因特网上的其他多播路由器

  • 第二阶段:组成员关系是动态的。本地多播路由器要周期性的探询本地局域网上的主机,以便知道这些主机是否还继续是组的成员

IGMP 避免多播控制信息给网络增加开销而采用的措施:

  • 在支持硬件多播的网络上,没有参加 IP 多播的主机不会收到 IGMP 报文
  • 多播路由器在探询组成员关系时,只需要对所有的组发送一个请求信息的询问报文,而不需要对每一个组发送一个询问报文
  • 当同一个网络上连接有几个多播路由时,它们能够迅速和有效的选择其中一个来探询主机的成员关系
  • IGMP的询问报文中有一个数值 N,它指明一个最长响应时间(默认为 10 秒)。当收到询问时,主机在 0 到 N 之间随机选择发送响应所需经过的时延。因此,若一个主机同时参加了几个多播组,则主机对每一个多播组选择不同的随机数。对应于最小时延的响应最先发送
  • 同一个组内的每一个主机都要监听响应,只要有本组的其他主机先发送了响应,自己就可以不再发送响应了

多播路由选择:实际上实现要找出以源主机为根结点的组播转发树,其中每个分组在每条链路上只传送一次(即在多播转发树上的路由器不会收到重复的多播数据报)。不同多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树
多播路由选择协议的三种方法:洪泛与剪除、隧道技术、基于核心的发现技术
实现因特网多播时,主要有三种路由算法:基于链路状态的路由选择、基于距离向量的路由选择、建立在任何路由器协议之上的协议无关的组播(PIM)

VPN 和 NAT

虚拟专用网(VPN)

  • 虚拟专用网 VPN 利用公用的因特网作为本机构各专用网之间的通信载体。VPN 内部使用因特网的专用地址。一个 VPN 至少要有一个路由器具有合法的全球 IP 地址,这样才能和本系统的另一个 VPN 通过因特网进行通信。所有通过因特网传送的数据都必须加密
  • VPN 的优点:价格上比建造专用网更便宜
  • VPN 的缺点:需要比较复杂的技术。当需要保密通信时,就需要有更加完善的加密措施(安全性降低)
  • VPN 的种类:

    • 内联网,或内联网 VPN:由本机构内部网络构成的 VPN
    • 外联网,或外联网 VPN:由某些外部机构参加而构成的 VPN
    • 远程接入 VPN:能够使在外地工作的员工通过拨号接入互联网,并和本公司保持联系或开电话会议

      网络地址转换(NAT)

      网络地址转换 NAT 是指通过专用网络地址转换为公用网络地址,从而对外隐藏内部管理的 IP 地址。它使得整个专用网只需要一个全球 IP 地址就可以与因特网连通,由于专用网本地 IP 地址是可重用的,所以 NAT 大大节省了 IP 地址的消耗。同时,它隐藏了内部网络结构,从而降低了内部网络受到攻击的风险
      NAT 的表项需要管理员手动添加,这样可以控制一个内网到外网的网络连接

      其他

  • 网络层的主要目的是:在任意结点间进行数据报传输(不保证可靠)

  • 异构网络:数据链路层和物理层均不同
  • 不考虑 NAT,IP 数据报在传输过程中,IP 数据报的头部中的源地址和目的地址都不会发生变化
  • IP 有分片的功能,但广域网中的分组不必分片(广域网的 MTU 是所有结点事先知道的,源节点不可能发送网络不支持的过长分组)
  • 划分子网可以增加子网的数量,减少了广播域的大小;子网号占据了主机号位,减少了主机的数量;仅提高 IP 地址的利用率,并不增加网络的数量
  • 如果一台主机有两个或两个以上的 IP 地址,那么主机属于两个或两个以上的逻辑网络,网络号必须不同,否则会引起 IP 地址冲突
  • ABC 类划分子网时,子网号不能全 0 或全 1,在 CIDR 划分子网时,子网号可以全 0 或全 1;分配主机时,主机位不能全 0 或全 1
  • 默认网关,又称缺省网关,是子网与外网连接的设备,通常是路由器。
    • 对于 IP 主机,默认网关是主机用于向主机广播域之外传输数据报所使用的 IP 路由器的地址(如果不指定或指定错误的默认网关地址,那么该主机只能在本地子网中进行通信)
  • IPv6 中不允许分片,如果路由器发现数据报太大,只能丢弃数据报,并向发送方发送一个指示分组太大的 ICMP 报文
  • 采用分层划分协议使交换信息段种类变多了,但也使 OSPF 协议更加复杂了
  • 路由收敛指网络设备的路由表与网络拓扑结构保持一致
  • 路由表中默认路由的目的地址和子网掩码都是 0.0.0.0
  • RIP 慢收敛的例子(路由回路)https://zhuanlan.zhihu.com/p/359024546
  • 构造多播转发树能避免路由环路
  • 所谓路由一般是一个局域网和一个广域网的连接处。如果仅仅一个 IP 地址,就无法实现和两个网络的连接。所以路由器至少有两个 IP 地址,一个是内网的,另一个是外网的地址
  • 中继器和集线器工作在物理层,既不隔离冲突域也不隔离广播域。为了解决冲突域的问题,用网桥和交换机来分割互联网的各个网段中的通信量,建立起多个分离的冲突域,但当网桥和交换机接收到一个未知转发信息的数据帧时,为了保证该帧能被目的结点正确接收,将该帧从所有的端口广播出去,可以看出网桥和交换机的冲突域等于端口个数,广播域为 1。路由器工作在网络层,既隔离冲突域,又隔离广播域

    传输层

    传输层提供的服务

    传输层的功能

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

  • 传输层位于网络层之上,它为运行在不同主机上的进程之间提供了逻辑通信,而网络层提供主机之间的逻辑通信
  • 即使网络层协议不可靠(网络层协议使分组丢失、混乱或重复),传输层同样能为应用程序提供可靠的服务(采用面向连接的 TCP
  • 当传输层采用无连接的 UDP 时,这种逻辑通信信道仍然是一条不可靠信道

传输层的主要功能如下

  • 传输层提供应用进程之间的逻辑通信,即端到端的通信(网络层提供的是主机之间的逻辑通信,即点到点通信)
  • 复用和分用。复用指发送方不同的应用程序都可使用同一个传输层协议传送数据;分用是指接收方的传输层在剥去报文的首部后能够把这些数据正确交付到目的应用进程(网络层也有复用分用的功能,网络层的复用是指发送方不同协议的数据都可以封装成 IP 数据报发送出去,分用是指接收方的网络层在剥去首部后把数据交付给相应的协议)
  • 传输层还要对收到的报文进行差错检测(首部和数据部分),而网络层只检查 IP 数据报的首部,不检验数据部分是否出错
  • 提供两种不同的传输协议,即面向连接的 用户数据报协议 TCP 和无连接的 传输控制协议 UDP。而网络层无法同时实现两种协议(即在网络层要么只提供面向连接的服务,如虚电路;要么只提供无连接服务,如数据报,不可能在网络层同时存在这两种方式)

    传输层的寻址与端口

  • 端口能够让应用层的各种应用进程将其数据通过端口向下交付到传输层,以及让传输层知道应当将其报文段中的数据向上通过端口交付给应用层相应的进程

  • 端口是传输层服务访问点(TSAP),数据链路层的 SAP 是 MAC 地址,网络层的 SAP 是 IP 地址
  • 传输层使用的是软件端口,是应用层的各种协议进程与传输实体进行层间交互的一种地址(不同于硬件接口,硬件接口是不同硬件设备进行交互的接口)
  • 应用进程通过端口号进行标识,端口长度为 16bit,能够表示 65536(216)个不同的端口号
  • 端口号只具有本地意义,即端口号只标识计算机应用层中的各进程,在因特网中不同计算机的相同端口号是没有联系的
  • 根据端口号范围可将端口分为两类:
    • 服务端使用的端口号
      • 熟知端口号,数值为 0~1023,IANA(互联网地址指派机构)把这些端口指派给最重要的一些应用程序
      • image.png
      • 登记端口号,数值为 1024~49151,供没有熟知口号的应用程序使用,使用这类端口号必须在 IANA 登记
    • 客户端使用的端口号:数值为 49152~65535。由于这类端口号仅在客户进程运行时才动态的选择,因此又称短暂端口号(也称临时端口)。通信结束,刚用过的客户端口号就不复存在
  • 套接字 Socket:由端口号拼接到 IP 地址上构成,其实际上是一个通信端点,即 套接字 Socket=(IP 地址:端口号)
  • 套接字在网络中采用发送方和接收方的套接字组合来识别端点,套接字唯一标识了网络中的一个主机(IP地址标识网络中每一个主机)和它上面的一个进程(端口号标识主机中的进程)

    无连接服务与面向连接服务

  • 面向连接的传输控制协议(TCP)

    • TCP 提供面向连接的服务,在传送数据之前必须先建立连接,数据传送结束后释放连接。因此 TCP 不提供广播或组播服务
    • 由于 TCP 提供面向连接的可靠传输服务,因此不可避免的增加了许多开销,如确认、流量控制、计时器及连接管理等,导致协议数据单元的头部增大了许多,还要占用许多的处理机资源
    • TCP 主要适用于可靠性更重要的场合,如文件传输协议(FTP)、超文本传输协议(HTTP)、远程登录(TELNET)、STMP(简单邮件传送协议)
  • 无连接的用户数据报协议(UDP)
    • UDP 是一个无连接的非可靠传输层协议
    • UDP 在 IP 之上仅提供两个附加服务:多路复用和对数据的错误检查。IP 知道怎样把分组投递给一台主机,但不知道怎样把它们投递给主机上的具体应用
    • UDP 在传送数据之前不需要先建立连接,远程主机的传输层收到 UDP 报文后,不需要给出任何确认
    • 由于 UDP 比较简单,因此执行速度比较快、实时性好
    • 使用 UDP 的应用主要包括简单文件传输协议(TFTP)、DNS、SNMP、RIP、DHCP、NFS 和实时传输协议(RTP)
  • IP 数据报与 UDP 数据报的区别:IP 数据报中网络层要经过路由的存储转发;而 UDP 数据报中传输层的端到端的逻辑信道中传输,封装成 IP 数据报在网络层传输时,UDP 数据报的信息对路由是不可见的
  • TCP 和网络层虚电路的区别:TCP 报文段在传输层抽象的逻辑信道中传输,对路由器不可见;虚电路所经过的交换节点都必须保存虚电路状态信息。在网络层若采用虚电路方式,无法提供无连接服务;而传输层采用 TCP 不影响网络层提供无连接服务

    UDP 协议

    UDP 概述

  • UDP 仅在 IP 数据报服务上增加了两个最基本的服务:复用分用以及差错检测

  • UDP 常用于一次性传输较少数据的网络应用,如 DNS、SNMP 等(若用 TCP,会为连接创立维护拆除带来不小的开销) ,也常用于多媒体应用(如 IP 电话、实时视频会议、流媒体等)(可靠传输对这些应用并不重要,但TCP的拥塞控制会导致数据会出现较大延迟)
  • UDP 使用尽最大努力交付,即不保证可靠性,但并不意味着应用对数据的要求是不可靠的。如果用户应用程序使用 UDP 进行数据传输,那么必须在传输层的上层即应用层提供可靠性方面的全部工作
  • UDP 是面向报文的。报文不可分割,是 UDP 数据报处理的最小单位,因此应用程序必须选择合适大小的报文
  • UDP 没有拥塞控制
  • UDP 支持一对一、一对多、多对一、多对多的交互通信
  • UDP 的首部开销小,只有 8 个字节

    UDP 的首部格式

    UDP 数据报包含两部分:UDP 首部用户数据。UDP 首部有 8B,由 4 个字段组成,每个字段的长度都是 2B
    image.png
    各字段意义如下:

  • 源端口:即源端口号,需要对方回信时选用,不需要时可用全 0

  • 目的端口:目的端口号,在终点交付报文时必须使用到
  • 长度:UDP 数据报的长度(包括首部和数据),其最小值为 8(仅有首部)
  • 校验和:检测 UDP 数据报中传输中是否有错。有错就丢弃。该字段是可选的,当源主机不想计算校验和时,则直接令该字段为全 0。UDP 的检验和是把首部和数据部分一起都检验。

当传输层从 IP 层收到 UDP 数据报时,就根据首部中的目的端口,把 UDP 数据报通过相应的端口上交给应用进程。
如果接收方 UDP 发现收到的报文中的目的端口号正确(即不存在对应于端口号的应用进程),那么就丢弃该报文,并由 ICMP 发送“端口不可达”差错报文给发送方

UDP 校验

在计算校验和时,要在 UDP 数据报之前增加 12B 的伪首部,伪首部并不是 UDP 是真正首部。只是在计算校验和时,临时添加在 UDP 数据报的前面,得到一个临时的 UDP 数据报。校验和就是按照这个临时的 UDP 数据报来计算的。伪首部既不向下传送又不向上提交,而只是为了计算校验和。

TCP 协议

TCP 协议的特点

TCP 主要特点如下:

  • TCP 是面向连接的传输层协议
  • 每条 TCP 连接只能有两个端点,每条 TCP 连接只能是点对点的(一对一)
  • TCP 提供可靠交付服务,保证传送到数据无差错、不丢失、不重复且有序
  • TCP 提供全双工通信,允许通信双方的应用进程在任何时候都能发送数据,为此 TCP 连接到两端都设有发送缓存和接收缓存,用来临时存放双向通信的数据。
    • 发送缓存用来暂时存放以下数据:发送应用程序传送给发送方 TCP 准备发送的数据、TCP 已发送但尚未收到确认的数据
    • 接收缓存用来暂时存放以下数据:按序到达但尚未被接收应用程序读取的数据、不按序到达的数据
  • TCP 是面向字节流的,虽然应用程序和 TCP 的交互是一次一个数据块(大小不等),但 TCP 把应用程序交下来的数据仅视为一连串的无结构的字节流

TCP 和 UDP 在发送报文所采用的方式完全不同。UDP 报文段长度由发送应用程序决定,而 TCP 报文的长度则根据给出的窗口值和当前网络拥塞程度来决定。如果应用进程传送到 TCP 缓存的数据块太长,TCP 就把它划分得短一些再传送;如果太短,TCP 也可以等到积累足够多的字节后再组成报文段发送出去

TCP 的连接

  • TCP 把连接作为最基本的抽象
  • TCP 连接的端点叫做套接字(socket)或插口,端口号拼接到 IP 地址即构成了套接字
  • 套接字 socke=(IP 地址:端口号)
  • 每一条 TCP 连接唯一的被通信两端的两个端点(即套接字)所确定,即:
    • TCP 连接 ::= {socket1, socket2} = {(IP1 : port1), (IP2 : port2)}
  • 同一个名词 socket 却可表示多种不同的意思:

    • 允许应用程序访问连网协议的应用编程接口 API
    • 在 socket API 中使用的一个函数名叫做 socket
    • 调用 socket 函数的端点称为 socket
    • 调用 socket 函数时,其返回值称为 socket 描述符
    • 在操作系统内核中连网协议的 Berkeley 实现,称为 socket 实现

      TCP 报文段

      TCP 传送的数据单位称为报文段。TCP 报文段既可以用来运载数据,又可以用来建立连接、释放连接和应答
      报文段首部的前 20B 是固定的。TCP 报文段的首部最短为 20B,后面有 4N 字节是根据需要而增加的选项,通常长度为 4B 的整数倍
      image.png
      TCP 首部的各个字段意义如下:
  • 源端口和目的端口:各占 2B。端口是运输层和应用层的服务接口,运输层的复用和分用功能都要通过端口实现

  • 序号:占 4B。范围为 0~232-1,共 232 个序号。TCP 是面向字节流的(即 TCP 传送时是逐个字节传送的),所以 TCP 连接传送的字节流中的每个字节都按顺序编号。序号字段的值指的是本报文段所发送的数据的第一个字节的序号
  • 确认号:占 4B。是期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N,则表明到序号 N-1 为止的所有数据都已正确收到
  • 数据偏移(首部长度):占 4 位。这里不是 IP 数据报分片的那个数据偏移,而是表示首部长度(首部中还有长度不确定的选项字段),它指出 TCP 报文段的数据起始处距离 TCP 的报文段的起始处有多远。“数据偏移”的单位是 32 位(以 4B 为计算单位)。因此当此字段的值为 15 时,达到 TCP 首部的最大长度 60B。
  • 保留:占 6 位。保留为今后使用,但目前应置为 0
  • 紧急位 URG:URG=1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据应尽快传送(相当于高优先级的数据)。但 URG 需要和紧急指针配合使用,即数据从第一个字节到紧急指针所指字节就是紧急数据
  • 确认 ACK:仅当 ACK=1 时确认号字段才有效。当 ACK=0 时,确认号无效(TCP 规定,在建立连接后所有传送到报文段都必须把 ACK 置 1)
  • 推送 PSH(Push):接收方 TCP 收到 PSH=1 的报文段,就尽快的交付给接收应用程序,而不再等到整个缓存都填满后再向上交付
  • 复位 RST(Reset):RST=1 时,表明 TCP 连接中出现严重差错(如主机崩溃或其他原因)必须释放连接,然后再重新建立运输连接)
  • 同步 SYN:同步 SYN = 1 表示这是一个连接请求或连接接受报文。当 SYN = 1,ACK = 0 时,表明这是一个连接请求报文,对方若同意建立连接,则应在响应报文中使用 SYN = 1,ACK = 1
  • 终止 FIN(Finish):用来释放一个连接。当 FIN=1 时,表明此报文段的发送方的数据已发送完毕,并要求释放传输连接
  • 窗口:占 2B,范围为 0~216-1。它指出现在允许对方发送的数据量,接收方的数据缓存空间是有限的,因此用窗口值作为接收方让发送方设置其发送窗口的依据
  • 检验和:占 2B,校验和字段检验的范围包括首部和数据两部分。在计算校验和时,和 UDP 一样,要在 TCP 报文段的前面加上 12B 的伪首部(只需将 UDP 伪首部的第 4 个字段,即协议字段的 17 改成 6,其他的和 UDP 一样)
  • 紧急指针:占 2B。紧急指针仅在 URG=1 时才有意义,它指出在本报文段中紧急数据共有多少字节(紧急数据咋报文段数据的最前面)
  • 选项:长度可变。TCP 最初只规定了一种选项,即最大报文段长度(MSS)。MSS 是 TCP 报文段中的数据字段的最大长度(注意仅仅是数据字段)
  • 填充:这是为了使整个首部长度是 4B 的整数倍

    TCP 连接管理

  • 每个 TCP 连接都有三个阶段:连接建立、数据传送和连接释放

  • TCP 连接的管理就是使运输连接的建立和释放都能正常运行
  • TCP 连接建立的过程中,要解决以下三个问题:
    • 要使每一方能够确知对方的存在
    • 要允许双方协商一些参数(如最大窗口值、是否使用窗口扩大选项、时间戳选项及服务质量等)
    • 能够对运输实体资源(如缓存大小、连接表中的项目等)进行分配
  • 每条 TCP 连接有两个端点,TCP 连接的端点不是主机,不是主机的 IP 地址,不是应用进程,也不是传输层的协议接口。TCP 连接的端口即为套接字(socket)或插口
  • TCP 连接的建立采用客户/服务器方式,主动发起连接的应用进程称为客户(Client),而被动等待连接建立的应用进程称为服务器(Server)

    TCP 连接的建立(三次握手)

    image.png

  • 连接建立前,服务器进程处于 LISTEN(收听)状态,等待客户的连接请求

  • 第一步:客户机的 TCP 首先向服务器端 TCP 发送连接请求报文段。这个特殊报文段的首部中的同步位 SYN 置 1,同时选择一个初始序号 seq=x。SYN 报文段不能携带数据,但要消耗掉一个序号。这时TCP 客户进程进入 SYN-SENT(同步已发送)状态
  • 第二步:服务器端 TCP 收到连接请求报文段后,如同意建立连接,则向客户机发回确认,并为该 TCP 连接分配缓存和变量。在确认报文段中,把 SYN 位和 ACK 位都置 1,确认号是 ack=x+1,同时也为自己选择以后初始序号 seq=y。确认报文段不能携带数据,但也要消耗掉一个序号。这时,TCP服务器进程进入 SYN-RCVD(同步已发送)状态
  • 第三步:当客户机收到确认报文段后,还要向服务器给出确认,并为该 TCP 连接分配缓存和变量。确认报文段的 ACK 位置 1,确认号 ack=y+1,序号 seq=x+1。该报文段可以携带数据,若不携带数据则不消耗序号。这时,TCP 客户进程进入 ESTABLISHED(已建立连接)状态

服务器端的资源是在完成第二次握手时分配的,而客户端的资源是在完成第三次握手时分配的,这就使得服务器易于受到 SYN 洪范攻击

TCP 连接的释放(四次握手)

image.png

  • 第一步:客户机打算关闭连接时,向其 TCP 发送连接释放报文段,并停止发送数据,主动关闭 TCP 连接,该报文段的终止位 FIN 置 1,序号 seq=u,它等于前面已传送过的数据的最后一个字节的序号加 1,FIN 报文段即使不携带数据,也消耗掉一个序号。这时,TCP 客户进程进入 FIN-WAIT-1(终止等待 1)状态。(TCP 是全双工的,即为一条 TCP 连接上有两条数据通路,发送 FIN 的一端不能再发送数据,就是关闭了其中一条通路,但对方还可以发送数据)
  • 第二步:服务器收到连接释放报文段后即发出确认,确认号 ack=u+1,序号 seq=v,等于它前面已传送过的数据的最后一个字节的序号加 1。然后服务器进入 CLOSE-WAIT(关闭等待)状态。此时,从客户机到服务器这个方向就释放了,TCP 连接处于半关闭状态。但服务器若发送数据,客户机仍要接收,即从服务器到客户机这个方向的连接并未关闭。
  • 第三步:若服务器已没有要向客户机发送的数据,就通知 TCP 释放连接,此时其发送 FIN=1 的连接释放报文段。设该报文段的序号为 w(在半关闭状态服务器可能又发送了一些数据),还需重复上次已发送的确认号 ack=u+1。这时服务器进入 LAST-ACK(最后确认)状态
  • 第四步:客户机收到连接释放报文段后,必须发送确认。把确认报文段中的确认位 ACK 置 1,确认号 ack=w+1,序号 seq=u+1。此时 TCP 连接还未释放,必须经过时间等待计时器设置的时间 2MSL(最长报文段寿命)后,客户机才进入 CLOSED(连接关闭)状态

TCP 连接建立和释放总结如下:

  • 连接建立
    • SYN=1,seq=x
    • SYN=1,ACK=1,seq=y,ack=x+1
    • ACK=1,seq=x+1,ack=x+1
  • 释放连接

    • FIN=1,seq=u
    • ACK=1,seq=v,ack=u+1
    • FIN=1,ACK=1,seq=w,ack=u+1
    • ACK=1,seq=u+1,ack=w+1

      流量控制与可靠传输机制

      停止-等待流量控制基本原理

      发送方每发送一帧,都要等待接收方的应答信号,之后才能发送下一帧;接收方每接收一帧,都要反馈一个应答信号,表示可接收下一帧,如果接收方不反馈应答信号,那么发送方必须一直等待。每次只允许发送一帧,然后就陷入等待接收方确认信息的过程中,因而传输效率很低

      滑动窗口流量控制基本原理

  • 发送窗口:在任意时刻,发送方都维持一组连续的允许发送的帧的序号

  • 接收窗口:接收方维持一组连续的允许接收帧的序号
  • 发送窗口的大小 WT:代表在还未收到对方确认信息的情况下发送方最多还可以发送多少数据帧
  • 接收窗口WR:控制可以接收哪些数据帧和不可以接收哪些帧
  • 基本原理
    • 发送端每收到一个确认帧,发送窗口就向前滑动一个帧的位置,当发送窗口内没有可以发送 的帧(即窗口内的帧全部是已发送但未收到确认的帧)时,发送方就会停止发送,直到收到接收方发送端确认帧使窗口移动,窗口内有可以发送端帧后,才开始继续发送
    • 接收端收到数据帧后,将窗口向前一个位置,并发回确认帧,若收到的数据帧落在接收端口之外,则一律丢弃
  • 重要特性:

    • 只有接收窗口向前滑动(同时接收方发送了确认帧)时,发送窗口才有可能(只有发送方收到确认帧后才一定)向前滑动。
    • 从滑动窗口的概念来看,停止-等待协议、后退 N 帧协议和选择重传协议只在发送窗口大小与接收窗口大小上有所差别
      • 停止-等待协议:发送窗口大小 = 1,接收窗口大小 = 1
      • 后退 N 帧协议:发送窗口大小 > 1,接收窗口大小 = 1
      • 选择重传协议:发送窗口大小 > 1,接收窗口大小 > 1
    • 接收窗口大小为 1 时,可保证帧的有序接收(所以题目如果说无序接收,即指的是 选择重传协议)

      可靠传输机制

  • 选择自动重传(ARQ)通过接收方请求发送方重传出错的数据帧来恢复出错的帧。

  • 传统自动重传请求分为三种:停止-等待 ARQ、后退 N 帧 ARQ、选择重传 ARQ。后两种是滑动窗口与请求重发技术的结合,由于窗口尺寸开到足够大时,帧在线路上可以连续的流动,因此又称为连续 ARQ 协议
  • 谢书里分类:

    • 停止-等待协议:自动重传请求 ARQ
    • 连续 ARQ 协议
    • 滑动窗口协议

      单帧滑动窗口与停止-等待协议

  • 无差错情况

    • 源站发送单个帧后必须等待确认,在目的站的回答到达源站前,源站不能发送其他的数据帧
  • 差错情况

    • 出现差错:
      • 问题:到达目的站的帧可能已遭破坏,接收方接收帧时检测出差错,就丢弃帧,其他什么也不做
      • 解决方法:发送方只要超过了一段时间仍然没有收到确认,就让为刚才发送的分组丢失了,因而重传前面发送过的分组,就叫做超时重传。要实现超时重传,就要在每发送完一个分组设置一个超时计时器。注意以下三点:
        • 第一,发送方在发送完一个分组后,必须暂时保留已发送的分组的副本(为发生超时重传时使用)。只有在收到相应的确认后才能清除暂时的分组副本。
        • 第二,分组和确认分组都必须进行编号。这样才能明确是哪一个发送出去的分组收到了确认,而哪一个分组还没有收到确认(解决重复帧问题)
        • 第三,超时计时器设置的重传时间应当比数据在分组传输的平均往返时间更长一些
    • 确认丢失和确认迟到:
      • 问题:数据帧正确而确认帧被破坏,此时接收方已收到正确的数据帧,但发送方收不到确认帧
      • 解决方法:
        • 发送方重传已被接收的数据帧,接收方收到同样的数据帧会丢弃该帧,并重传一个该帧对应的确认帧
        • 发送的帧交替的用 0 和 1 标识,肯定确认分别用 ACK0 和 ACK1 来表示收到的确认有误时,重传已发送的帧

          多帧滑动窗口与后退N帧协议(GBN)

  • 基本原理:

    • 在后退 N 帧式 ARQ 中,发送方无须在收到上一帧的 ACK 后才能开始发送下一帧,而是可以连续的发送帧。
    • 当接收方检测到失序的信息帧后,要求发送方重发最后一个正确接收到信息帧之后的所有未被确认的帧
    • 或者当发送方发送了 N 个帧后,若发现该 N 个帧的前一个帧在计时器超时后仍未返回其确认信息,则该帧被判为出错或丢失,此时发送方就不得不重传该出错帧及随后的 N 个帧
    • 总之,接收方只允许按顺序接收帧
  • 累计确认
    • 原理:接收方不必对收到的分组逐个发送确认,而是收到几个分组后,对按序到达的最后一个分组发送确认
    • 优点:容易实现,即使确认丢失也不必重传
    • 缺点:不能向发送方反映出接收方已经正确收到的所有分组的信息
  • 后退 N 帧协议的接收窗口为 1,若采用 n 比特对帧编号,则其发送窗口的尺寸 WT 要满足 1 ≤ WT ≤ 2n-1(过大会导致接收方无法分辨新帧与旧帧)

    多帧滑动窗口与选择重传协议(SR)

  • 选择重传 ARQ 协议:为进一步提高信道的利用率,可设法只重传出现差错的数据帧或计时器超时的数据帧,但此时必须加大接收窗口,以便先收下发送序号不连续但仍处在接收窗口中的那些数据帧。等到所缺序号的数据帧收到后再一并送交主机

  • 计时器:每个发送缓冲器对应一个计时器,当计时器超时时,缓冲区的帧就会重传。
  • NAK:一旦接收方怀疑帧出错,就会发一个否定帧 NAK 给发送方,要求发送方对 NAK 中指定的帧进行重传
  • 窗口大小:
    • 接收窗口尺寸和发送窗口尺寸都大于 1,一次可以发送或接收多个帧
    • 若采用 n 比特对帧编号,则接收窗口 WR + 发送窗口 WT ≤ 2n
    • 若仍然采用累计确认的方法,并且接收窗口 WR 显然不应超过发送窗口 WT(否则无意义),那么接收窗口尺寸不应超过序号范围的一半,即 WR ≤ 2(n-1)。接收窗口为最大值时,WTmax = WRmax = 2(n-1)
    • 一般情况下,在 SR 协议中,接收窗口的大小和发送窗口的大小是相同的
  • 选择重传协议可以避免重复传送本已正确到达接收端的数据帧,但在接收端要设置具有相当容量的缓冲区来暂存未按序正确收到的帧。所需缓冲区的数目等于窗口的大小,而不是序号数目
  • 信道的利用率可以用下式计算:

    • U=TD/(TD+RTT+TA)
    • TD 是发送方发送分组需要的时间(等于分组长度除以数据率);TA 为接收方发送确认分组需要时间;RTT 是往返时间

      TCP 可靠传输

      TCP 提供的可靠数据传输服务保证接收方进程从缓冲区读出的字节流与发送方的字节流完全一样
      TCP 使用了校验、序号、确认和重传等机制来达到这一目的,其中 TCP 校验机制与 UDP 一样
  • 序号

    • TCP 首部的序号字段用来保证数据能有序提交给应用层,TCP 把数据视为一个无结构但有序的字节流,序号建立在传送到字节流之上,而不建立在报文段之上
    • TCP 连接传送到数据流中的每个字节都编上一个序号,序号字段的值是指本报文段所发送的数据的第一个字节的编号
  • 确认
    • TCP 首部的确认号是期望收到对方的下一个报文段的数据的第一个字节的序号
    • TCP 默认使用累计确认,即 TCP 只确认数据流中至第一个丢失字节为止的字节
  • 重传

    • 超时
      • TCP 每发送一个报文段,就对这个报文段设置一次计时器。计时器设置的重传时间到期但还未收到确认时,就要重传这一报文段
      • 为了计算超时计时器的重传时间,TCP 采用一种自适应算法,它记录一个报文段发出的时间,以及收到相应确认的的时间,两个时间之差为报文段往返时间(RTT)
      • TCP 保留了 RTT 的一个加权平均往返时间 RTTs,它随新测量 RTT 样本值的变化而变化:新RTTS=(1-α)(旧RTTS)+α(新RTT样本)
      • 显然,超时计时器设置的超时重传时间(RTO)应略大于 RTTS,但也不能大太多:RTO=RTTS+4*RTTD
      • RTTD 是 RTT 的偏差的加权平均值。当第一次测量时,RTTD 值为测量到的 RTT 样本量的一半,。在以后的测量时,则使用下式计算加权平均的 RTTD:新RTTD=(1-β)(旧RTTD)+β|RTTS-新RTT样本|
      • 超时触发重传存在的一个问题是超时周期往往太长
    • 冗余 ACK(冗余确认)
      • 冗余 ACK 就是再次确认某个报文段的 ACK,而发送方先前已经收到该报文段的确认
      • TCP 规定每当比期望序号大的失序报文段到达时,就发送一个冗余 ACK,指明下一个期待字节的序号
      • TCP 规定当发送方收到对同一个报文段的 3 个冗余 ACK 时,就可以认为跟在这个被确认报文段之后的报文段已经丢失,这时可以立即重传,这种技术通常称为快速重传
      • 冗余 ACK 还被用在拥塞控制中

        TCP 流量控制

  • TCP 提供流量控制服务来消除发送方(发送速率太快)使接收方缓存区溢出的可能性,因此可以说流量控制是一个速度匹配服务(匹配发送方的发送速率与接收方的读取速率)

  • TCP 提供基于滑动窗口匹配的流量控制机制
  • TCP 的窗口单位是字节,不是报文段
  • 在通信过程中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口的大小,这称为接收窗口 rwnd,即调整 TCP 报文段首部中的“窗口”字段值,来限制发送方向网络注入报文段速率。同时,发送方根据其对当前网络拥塞程度的估计而确定的窗口值,称为拥塞窗口 cwnd,其大小与网络的带宽或时延密切相关
  • 发送窗口的实际大小取 rwnd 与 cwnd 的最小值
  • 传输层和数据链路层的流量控制的区别是:传输层定义端到端用户之间的流量控制,数据链路层定义两个中间的相邻结点的流量控制。另外,数据链路层的滑动窗口协议的窗口大小不能动态变化,传输层的则可以动态变化

    TCP 拥塞控制

  • 拥塞控制:指防止过多的数据注入网络,保证网络中的路由器或链路不致过载。出现拥塞时,端点并不了解拥塞发生的细节,对通信的端点来说,拥塞往往表现为通信时延的增加

  • 拥塞控制与流量控制的区别:拥塞控制是让网络能够承受现有的网络负荷,是一个全局性的过程,涉及所有的主机、所有的路由器,以及与降低网络传输性能有关的所有因素;流量控制往往是指点对点的通信量的控制,是个端到端的问题(接收端控制发送端),它所要做的是抑制发送端发送数据的速率,以便使接收端来得及接收
  • 开环控制:在设计网络时事先将有关发送拥塞的因素考虑周到,力求网络在工作时不产生拥塞。但一旦整个系统运行起来,就不再中途进行改正了。开环控制根据用户的协议限制进入网络的交通,从而阻止阻塞的发生。如果服务的质量不能保证,那么网络不得不拒绝交通流。决定拒绝或接受交通流的功能称为准入控制。因此,开环算法包含某类型的资源预留
  • 闭环控制:监测网络以便检测到拥塞在何时、何处发生。把拥塞发生的信息传送到可采取行动的地方。调整系统的运行以解决出现的问题。
  • TCP 协议要求发送方维护以下两个窗口:
    • 接收窗口 rwnd:接收方根据目前接收缓存大小所许诺的最新窗口值,反映接收方的容量。由接收方根据其放在 TCP 报文段首部的窗口字段通知发送方
    • 拥塞窗口 cwnd:发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络的当前容量。只要网络未出现拥塞,拥塞窗口就增大一些,以便把更多的分组发送出去。但只要网络出现拥塞,拥塞窗口就减小一些,以减少注入网络的分组数
  • 在流量控制中,发送方发送数据的量由接收方决定,而在拥塞控制中,则由发送方自己通过检测网络状况来决定
  • 实际上,慢开始、拥塞避免、快重传和快恢复几种算法是同时应用在拥塞控制中
  • 在 TCP 连接建立和网络出现超时时,采用慢开始和拥塞避免算法;当发送方接受到冗余 ACK 时,采用快重传和快恢复算法
  • 发送窗口的上限值应取接收窗口 rwnd 和拥塞窗口 cwnd 中较小的一个

    慢开始和拥塞避免

  • 以下拥塞控制也叫做基于窗口的拥塞控制,拥塞窗口的大小取决于网络的拥塞程度,并且动态的在变化。发送方让自己的发送窗口等于拥塞窗口

  • 慢开始算法
    • 在 TCP 刚刚连接好并开始发送 TCP 报文段时,先令拥塞窗口 cwnd=1,即一个最大报文段长度 MSS。每收到一个对新报文段的确认后,将 cwnd 加 1,即增大一个 MSS。用这样的方法逐步增大发送方的 cwnd,可使分组注入网络的速率更加合理
    • 例如,发送数据时,发送方先置拥塞窗口 cwnd=1,发送方发送第一个报文段,发送方收到接收方对第一个报文段的确认后,把 cwnd 从 1 增加到 2;于是 A 接着发送两个报文段,发送方收到接收方对这两个报文段的确认后,把 cwnd 从 2 增大到 4,下次就可以一次发送 4 个报文段
    • 慢开始的慢并不是指拥塞窗口 cwnd 的增长速率慢,而是指在 TCP 开始发送报文段时先设置 cwnd=1,使得发送方在开始时只发送一个报文段(目的是试探一网络的拥塞情况),然后再逐渐增大 cwnd,对防止网络出现拥塞是一个非常有力的措施
    • 使用慢开始算法后,每经过一个传输轮次(即往返时延 RTT),cwnd 就会加倍,即 cwnd 的大小指数式增长,直到把 cwnd 增大到一个规定的慢开始门限 ssthresh(阀值),然后改用拥塞避免算法
  • 拥塞避免算法
    • 拥塞避免算法的思路是让拥塞窗口 cwnd 缓慢增大,具体做法是:每经过一个往返时延 RTT 就把发送方的拥塞窗口 cwnd 加 1,而不是加倍,使拥塞窗口 cwnd 按线性规律缓慢增长(即加法增大),比慢开始算法的拥塞窗口增长速率要缓慢的多
    • 根据 cwnd 的大小执行不同的算法,归纳如下:
      • 当 cwnd<ssthresh 时,使用慢开始算法
      • 当 cwnd>ssthresh 时,停止使用慢开始算法而改用拥塞避免算法
      • 当 cwnd=ssthresh 时,既可使用慢开始算法,又可使用拥塞避免算法(通常做法)
  • 网络拥塞的处理
    • image.png
    • 实现过程:
      • 初始时,拥塞窗口置为 1,即 cwnd=1,慢开始门限置为 16,即 ssthresh=16
      • 慢开始阶段,cwnd 的初值为 1,以后发送方每收到一个确认 ACK,cwnd 值加 1,也即经过每个传输轮次(RTT),cwnd 呈指数规律增长。当拥塞窗口 cwnd 增长到慢开始门限 ssthresh 时(即当 cwnd=16 时),就改用拥塞避免算法,cwnd 按线性规律增长
      • 假定 cwnd=24 时网络出现超时,更新 ssthresh 值为 12(即变为超时时 cwnd 值的一半),cwnd 重置为 1,并执行慢开始算法,当 cwnd=12 时,改为执行拥塞避免算法
      • (注意:在慢开始阶段,若 2cwnd>ssthresh,则下一个 RTT 后 cwnd=ssthresh,而不是 2cwnd,即 cwnd 不能越过 ssthresh 值)
  • “乘法减少“:指无论在哪个阶段,只要出现超时,就把慢开始门限值 ssthresh 设置为当前拥塞窗口的一半(cwnd 重置为1,并执行慢开始算法)
  • “加法增大”:是指执行拥塞避免算法后,在收到对所有报文段的确认后(即经过一个 RTT),就把拥塞窗口 cwnd 增加一个 MSS 大小,使拥塞窗口缓慢增大,以防止网络过早出现拥塞
  • 拥塞避免并不能完全避免拥塞。拥塞避免是指在拥塞避免阶段把拥塞窗口控制为按线性规律增长,使网络比较不容易出现拥塞

    快重传和快恢复

  • 快重传

    • 冗余 ACK 也用于网络拥塞的检测
    • 快重传并非取消重传计时器,而是在某些情况下可更早的重传丢失的报文段
    • 当发送方连续收到三个重复的 ACK 报文时,直接重传对方尚未收到的报文段,而不必等待那个报文段设置的重传计时器超时
  • 快恢复

    • 当发送方连续收到三个冗余 ACK(即重复确认)时,执行“乘法减小”算法,把慢开始门限 ssthresh设置为此时发送方 cwnd 的一半
    • 与慢开始不同之处是它把 cwnd 设置为慢开始门限 ssthresh 改变后的数值(并非重置为 1),然后执行拥塞避免算法(“加法增大”),使拥塞窗口缓慢的线性增大

      其他

  • 通信子网包括物理层、数据链路层和网络层,主要负责数据通信。资源子网为 OSI 参考模型的上三层,传输层承上启下,向高层用户屏蔽下面通信子网的细节(如网络拓扑、路由协议等)

  • 端到端的逻辑通信的意思是:传输层之间的通信好像是沿水平方向传送数据,但事实上这两个传输层之间并没有一条水平方向的物理连接

    应用层

    域名系统(DNS)

    域名服务 DNS 的主要功能为通过请求及回答获取主机和网络相关信息
    DNS 用于把便于人们记忆的具有特点含义的主机名转换为便于机器处理的 IP 地址
    DNS 系统采用客户/服务器模型,其协议运行在 UDP 上,使用 53 号端口
    从概念上可将 DNS 分为 3 部分:层次域名空间域名服务器解析器

    层次域名空间

  • 因特网采用层次树状结构的命名方法

  • 域是名字空间中一个可被管理的划分。域还可以划分为子域,而子域还可以继续划分为子域的子域,这样就形成了顶级域、二级域、三级域等
  • 每个域名都由标号序列组成,而各标号之间用点(“.”)隔开
  • 域名中的标号需要注意以下几点:
    • 标号中的英文不区分大小写
    • 标号中除连字符(-)外不能使用其他的标点符号
    • 每个标号不超过 63 个字符,多标号组成的完整域名最长不超过 255 个字符
    • 级别最低的域名写在最左边,级别最高的顶级域名写在最右边
  • 顶级域名(TLD)分为如下三大类:
    • 国家顶级域名(nTLD)。国家或某些地区的域名,如“.cn”表示中国
    • 通用顶级域名(gTLD)。常见的有“.com”、”.net”、”.org”、”.gov”等
    • 基础结构域名。这种顶级域名只有一个,即 arpa,用于反向域名解析,因此又称反向域名
  • 域名结构:

    • 如 www.tsinghua.edu.cn
    • www:服务器名(主机名),代表一个 Web 服务器【mail 代表邮箱服务器】
    • tsinghua:结构名
    • edu:网络名
    • cn:最高域名
    • tsinghua.edu.cn:域名
    • www.tsinghua.edu.cn:网站名,由服务器名+域名组成

      域名服务器

  • 因特网的域名系统被设计为一个联机分布式的数据库系统,并采用客户/服务器模型

  • DNS 使大多数名字都在本地进行解析,仅少量解析需要在互联网上通信,因此 DNS 系统的效率很高
  • 域名到 IP 地址的解析是由运行在域名服务器上的系统完成的,一个服务器所负责管辖的(或有权限的)范围称为区(不以域为单位)
  • 每个区设置相应的权限域名服务器用来保存该区中的所有主机域名到 IP 地址的映射
  • 每个域名服务器不但能够进行一些域名到 IP 地址的解析,而且还必须具有连向其他域名服务器的信息,当自己不能进行域名到 IP 地址的转换,能够知道到什么地方去找其他域名服务器
  • DNS 使用了大量的域名服务器,它们以层次方式组织。没有一台域名服务器具有因特网上所有主机的映射,相反,该映射分布在所有的 DNS 上
  • 四种类型的域名服务器:

    • 根域名服务器
    • 顶级域名服务器
    • 权限域名服务器(授权域名服务器):将其管辖的主机名转换为该主机的 IP 地址
    • 本地域名服务器

      域名解析过程

  • 域名解析是指把域名映射成为 IP 地址或把 IP 地址映射成域名的过程。前者称为正向解析,后者称为反向解析

  • 当客户端需要域名解析时,通过本机的 DNS 客户端构造一个 DNS 请求报文,以 UDP 数据报方式发往本地域名服务器
  • 域名解析的方式有两种:递归查询递归与迭代相结合的查询
  • 递归查询:本地域名服务器只需向根域名服务器查询一次,后面的几次查询都是递归的在其他几个域名服务器之间进行的。之后本地域名服务器从根域名服务器得到了所需的 IP 地址,最后本地域名服务器把查询结果告诉发起查询的主机。(该方法给根域名服务器造成的负载过大,在实际中几乎不使用)
  • 递归和迭代相结合的查询,该方式分为两个部分:
    • 主机向本地域名服务器端查询采用的是递归查询:如果本地主机所询问的本地域名服务器不知道被查询域名到 IP 地址,那么本地域名服务器就以 DNS 客户的身份,向根域名服务器继续发出查询请求报文(即替该主机继续查询),而不是让该主机自己进行下一步的查询。两种方式的这一步是相同的
    • 本地域名服务器向根域名服务器端查询采用迭代查询:当根域名服务器收到本地域名服务器发出的迭代查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应向哪个顶级域名服务器查询;同样,顶级域名服务器收到查询请求报文时,要么给出所要查询的 IP 地址,要么告诉本地域名服务器下一步应向哪个权限域名服务器查询。最后,知道所要解析的域名的 IP 地址后,把这个结果返回给发起查询的主机
  • 为了提高 DNS 的查询效率,并减少因特网上的 DNS 查询报文数量,在域名服务器中广泛的使用了高速缓存。当一个 DNS 服务器接受到 DNS 查询结果时,能够将 DNS 信息缓存在高速缓存中

    文件传输协议(FTP)

    FTP 的工作原理

  • 文件传输协议(FTP)是因特网上使用的最广泛的文件传输协议

  • FTP 提供交互式的访问,允许客户指明文件的类型与格式,并允许文件具有存取权限
  • FTP 屏蔽了各计算机系统的细节,因而适合于在异构网络中的任意计算机之间传送文件
  • FTP 提供以下功能:
    • 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力
    • 以用户权限管理的方式提供用户对远程 FTP 服务器上的文件管理能力
    • 以匿名 FTP 的方式提供公用文件共享的能力
  • FTP 采用客户/服务器的工作方式,使用 TCP 可靠的传输服务。一个 FTP 服务器进程可同时为多个客户进程提供服务
  • FTP 的服务器进程由两大部分组成:一个主进程,负责接收新的请求;另外有若干从属进程,负责处理单个请求。其工作步骤如下:
    • 打开熟知端口 21(控制端口),使客户进程能够连接上
    • 等待客户进程发送连接请求
    • 启动从属进程来处理客户进程发来的请求。主进程与从属进程并发执行,从属进程对客户进程的请求处理完毕后即终止
    • 回到等待状态,继续接收其他客户进程的请求
  • FTP 服务器必须在整个会话期间保留用户的状态信息。特别是服务器必须把指定的用户账户与控制连接联系起来,服务器必须追踪用户在远程目录树上的当前位置

    控制连接与数据连接

  • FTP 在工作时使用两个并行的 TCP 连接:一个是控制连接(端口号 21),一个是数据连接(端口号 20)。使用两个不同的端口号可使协议更加简单和容易实现

  • 控制连接
    • 服务器监听 21 号端口,等待客户连接,建立在这个端口上的连接称为控制连接
    • 控制连接用来传输控制信息(如连接请求、传送请求等),并且控制信息都以 7 位 ASCII 格式传送
    • FTP 客户发出的传送请求,通过控制连接发送给服务器端的控制进程,但控制连接并不用来传送文件
    • 在传输文件时还可以使用连接状态(如客户在传输途中发一个中止传输的命令),因控制连接在整个会话期间一直保持打开状态
  • 数据连接
    • 服务器端的控制进程在接收到 FTP 客户发来的文件传输请求后,就创建“数据传输进程”和“数据连接”
    • 数据连接连接客户端和服务器端的数据传送进程,数据传送进程实际完成文件的传送,在传送完毕后关闭“数据传送连接”并结束运行
    • 数据连接有两种传输模式:
      • 主动模式 PORT:客户端连接到服务器的 21 端口,登录成功后要读取数据时,客户端随开放一个端口,并发送命令告知服务器,服务器收到 PORT 命令和端口号后,通过 20 端口和客户端开放的端口连接,发送数据
      • 被动模式 PASV:客户端要读取数据时,发送 PASV 命令到服务器,服务器在本地随机开放一个端口,并告知客户端,客户端再连接到服务器开放的端口进行数据传输
      • 可见,用 PORT 模式还是 PASV 模式,选择权在客户端。简单概括为,主动模式传送数据是服务器连接到客户端的端口;被动模式传送数据时客户端连接到服务器的端口
  • 因为 FTP 使用了一个分离的控制连接,所有也称 FTP 的控制信息是带外(Out-of-band)传送的
  • 使用 FTP 时,若要修改服务器上的文件,则需要将此文件传送到本地主机,然后再将修改后的文件副本传送到原服务器,来回耗费许多时间
  • 网络文件系统(NFS)允许进程打开一个远程文件,并能在该文件的某个特定位置开始读写数据,这样 NFS 可使用户复制一个大文件中的一个很小的片段,而不需要复制整个大文件

    TFTP

  • 简单传送协议 TFTP,是一个很小且易于实现的文件传送协议,使用熟知端口 69。虽然使用客户服务器方式,但它使用 UDP 数据报

  • TFTP 只支持文件传输而不支持交互,没有一个庞大的命令集,没有列目录的功能,也不能对用户进行身份鉴别
  • 优点:可用于 UDP 环境、TFTP 代码所占的内存较小

    远程终端协议(TELNET)

    TELENT 是一个简单的远程终端协议。用户用 TELNET 就可在其所在地通过 TCP 连接注册(即登录)到远地的另一个主机上(使用主机名或 IP地址)

    电子邮件

    电子邮件系统的组成结构

    电子邮件把邮件发送到收件人使用的邮件服务器,并放在其中的收件人邮箱中,收件人可以随时上网到自己使用的邮件服务器进行读取

  • 用户代理(UA):用户与电子邮件系统的接口。用户代理向用户提供一个很友好的接口来发送和接收邮件,用户代理至少应当具有撰写、显示和邮件处理的功能。通常情况下,用户代理就是一个运行在 PC 上的程序(电子邮件客户端软件)

  • 邮件服务器:功能是发送和接收邮件,同时还要向发信人报告邮件传送的情况(已交付、被拒绝、丢失等)。邮件服务器采用客户/服务器方式工作,但它必须能够同时充当客户和服务器
  • 邮件发送协议和读取协议

    电子邮件格式与 MINE

  • 电子邮件分为信封和内容两个部分。邮件内容首部包括一些关键字,后面加上冒号。最重要的关键字是:To 和 Subject

    • “TO:“后面填入一个或多个收件人的电子邮件地址
    • “Subject:”是可选关键字,是邮件的主题,反映了邮件的主要内容
    • “Cc”又称抄送,意思是留下一个“复写副本”
    • “Bcc”又称抄送,用它来实现盲复写副本,这是使发件人能将邮件的副本送给某人,但不希望此事为收件人知道
    • “From”和“Date”表示发件人的电子邮件地址和发信日期
    • “Reply-To”即对方回信所用的地址
  • 多用途网际邮件扩充(MINE)并未改动 SMTP 或取代它。MINE 的意图是继续使用目前的格式,但增加了邮件主体的结构,并定义了传送非 ASCII 码的编码规则
  • MINE 主要包括以下三部分内容:
    • 5 个新的邮件首部字段,包括 MINE 版本、内容描述、内容标识、传送编码和内容类型
    • 定义了许多邮件内容的格式,对多媒体电子邮件表示方法进行了标准化
    • 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变
  • MINE 的内容传送编码:

    • 7 位 ASCII 编码:每行不超过 1000 个字符
    • quoted-printable 编码:适用于所传送的数据中只有少量的非 ASCII 码,例如汉字。先将每个字节的二进制代码用两个十六进制数字表示,然后再加上一个等号“=”。如“系统”两字的十六进制数字表示为:CFB5CDB3,其编码表示为:=CF=B5=CD=B3
    • base64 编码:
      • Base64 要求把每三个 8Bit 的字节转换为四个 6Bit 的字节(38 = 46 = 24),然后把每个 6Bit 再添两位高位 0,组成四个 8Bit 的字节,也就是说,转换后的字符串理论上将要比原来的长 1/3。
      • 转换表:
        • 0-25:A-Z
        • 26-51:a-z
        • 52-61:0-9
        • 62:+
        • 63:/
        • (填充):=

          SMTP 和 POP3

  • 简单邮件传输协议 SMTP

  • SMTP 通信有以下三个阶段
    • 连接建立:发件人的邮件送到发送方邮件服务器端邮件缓存后,SMTP 客户就每隔一定时间对邮件缓存扫描一次。如发现有邮件,就使用 SMTP 的熟知端口号(25)与接收方邮件服务器端 SMTP 服务器建立 TCP 连接
    • 邮件传送:邮件传送从 MAIL 命令开始,MAIL 命令后面有发件人的地址
    • 连接释放:邮件发送完毕后,SMTP 客户应发送 QUIT 命令
  • POP3 是一个非常简单但功能有限的邮件读取协议。采用的是“拉”(Pull)的通信方式,当用户读取邮件时,用户代理向邮件服务器发出请求,“拉”取用户邮箱中的邮件
  • 另一个邮件读取协议是因特网报文存取协议(IMAP),它比 POP3 复杂的多,IMAP 为用户提供了创建文件夹、在不同文件夹之间移动邮件及在远程文件夹中查询邮件等联机命令,为此 IMAP 服务器维护了会话用户的状态信息
  • 有很多基于万维网的电子邮件,如 Hotmail、Gmail 等。这种电子邮件的特点是,用户游览器与 Hotmail 或 Gmail 的邮件服务器之间的邮件发送或接收使用的是 HTTP,而仅在不同邮件服务器之间传送邮件时才使用 SMTP

    万维网(WWW)

    万维网的概念与组成结构

  • 万维网是一个分布式的超媒体系统,它是超文本系统的扩充。超文本就是包含指向其他文档链接的文本

  • 万维网把大量信息分布在整个因特网,每台主机上的文档都独立进行管理
  • 万维网以客户/服务器方式工作,客户程序向服务器发送请求,服务器程序向客户程序送回客户所要的万维网文档
  • 万维网的内核部分是由三个标准构成的:
    • 统一资源定位符(URL):负责标识万维网上的各种文档,并使每个文档在整个万维网的范围内具有唯一的标识符 URL
    • 超文本传送协议(HTTP):一个应用层协议,它使用 TCP 连接进行可靠传输,HTTP 是万维网客户程序和服务器查询之间交互所必须严格遵守的协议
    • 超文本标记语言(HTML):一种文档结构的标记语言,它使用一些约定的标记对页面上的各种信息(包括文件、声音、图像、视频等)、格式进行描述
  • URL 是对可以从因特网上得到的资源的位置和访问方法的一种间接表示。URL 相当于一个文件名在网络范围的扩展,其一般形式是:

    • <协议>://<主机>:<端口>/<路径>
    • <协议>就是指用什么协议来获取万维网文档,常见的协议有 http、ftp 等
    • <主机>指出这个万维网文档是在哪一个主机上。这里的<主机>就是指该主机在因特网上的域名
    • <端口>和<路径>有时可省略

      超文本传送协议(HTTP)

  • HTTP 是面向事务的应用层协议

  • HTTP 的操作过程:
    • 万维网网点的服务器进程不断的监听 TCP 的端口 80,以便发现是否有浏览器(即万维网客户)向它发出连接建立请求。
    • 一旦监听到连接建立请求并建立了 TCP 连接之后,游览器就向万维网服务器发出游览某个页面的请求,服务器接着就返回所请求的页面作为响应最后,TCP 连接就被释放了。
    • 在游览器和服务器之间的请求和相应的交互,必须遵守超文本传送协议 HTTP
  • HTTP 使用 TCP 作为运输层协议,保证数据的可靠传输,但是 HTTP 本身是无连接的,虽然 HTTP 使用了 TCP 连接,但通信双方在交换 HTTP 报文之前不需要先建立 HTTP 连接
  • HTTP 是无状态的(不保留之前的任何信息),简化了服务器端设计,使服务器更容易支持大量并发的 HTTP 请求。在实际应用中,通常使用 Cookie 加数据库的方式来跟踪用户的活动
  • HTTP 即可以非持续连接,也可以使用持续连接(HTTP/1.1 支持)
    • 非持续连接:指每个网页元素对象的传输都需要单独建立一个 TCP 连接
    • 持续连接:指万维网服务器在发送响应后仍然保持这条连接,使同一个客户(浏览器)和该服务器可以继续在这条连接上传送后续的 HTTP 请求和响应报文
  • 持久连接又分为非流水线流水线两种方式:
    • 非流水线方式,客户在收到前一个响应后才能发出下一个请求,服务器发送完下一个对象后,其 TCP 连接就处于空闲状态,浪费了服务器资源
    • HTTP/1.1 是默认方式是使用流水线的持续连接,客户可以逐个的连续发出对各个引用对象的请求,减少了 TCP 连接中的空闲时间,提高了效率
  • 代理服务器(Proxy Server)是一种网络实体,又称为万维网高速缓存(Web Cache)。代理服务器把最近的一些请求和响应暂存在本地磁盘里,当新请求到达时,若代理服务器发现这个请求与暂时存放的请求相同,就返回暂存的响应,而不需要按 URL 的地址再次去因特网
  • HTTP 协议的主要特点(总结)
    • 应用层协议
    • 请求/响应
    • 无状态:每一个 HTTP 请求都是独立的,万维网服务不保留过去的请求和过去的会话记录
    • 双向传输:浏览器发出 HTTP 请求,服务器给出 HTTP 响应
    • 能力协商:允许浏览器和服务器协商一些细节
    • 支持高速缓存
    • 支持代理服务器
  • HTTP 1.1 协议的变化(相对于 HTTP 1.0)HTTP 1.1 采用持续连接作为默认的工作方式
  • HTTP 报文段分类:
    • 请求报文:从客户向服务器发送请求报文
    • 响应报文:从服务器到客户的回答报文
  • HTTP 报文段结构:

    • image.png
    • 开始行:用于区分是请求报文还是响应报文。在请求报文中的开始行叫请求行,而在响应报文中的开始行是状态行。在开始行的三个字段之间都以空格分割开,最后的“CR”和“LF”分别代表“回车”和“换行”
    • 首部行:用来说明游览器、服务器和报文主体的一些信息
    • 实体主体:在请求报文中一般都不用这个字段,而在响应报文中也可能没有这个字段

      动态主机配置协议(DHCP)

  • 动态主机配置协议(DHCP)是常用于给主机动态的分配 IP 地址,它提供即插即用连网的机制,这种机制允许一台计算机加入新的网络和获取 IP 地址而不用手工参与。DHCP 是应用层协议,是基于 UDP 的

  • DHCP 的工作原理
    • 使用客户/服务器方式。需要 IP 地址的主机在启动时就向 DHCP 服务器广播发送发现报文,这时该主机就成为 DHCP 客户。
    • 本地网络上的所有主机都能收到此广播报文,但只有 DHCP 服务器才回答此广播报文。
    • DHCP 服务器先在其数据库中查找该计算机的配置信息。若找到,则返回找到的信息。若找不到,则从服务器的 IP 地址池中取一个地址分配给该计算机。
    • DHCP 服务器的回答报文称为提供报文。
  • DHCP 的详细工作过程

    • image.png
    • DHCP 服务器被动打开 UDP 端口 67,等待客户端发来的报文
    • DHCP 客户从 UDP 端口 68 发送 DHCP 发现报文
    • 凡收到 DHCP 发现报文段, DHCP 服务器都发出 DHCP 提供报文,因此 DHCP 客户可能收到多个 DHCP 提供报文
    • DHCP 客户从几个 DHCP 服务器中选择其中的一个,并向所选择的 DHCP 服务器发送 DHCP 请求报文
    • 被选择的 DHCP 服务器发送确认报文 DHCPACK。DHCP 客户现在要根据服务器提供的租用期 T 设置两个计时器 T1 和 T2,它们的超时时间分别是 0.5T 和 0.875T。当超过时间到了就要请求更新租用期。
    • 租用期过了一半(T1时间到),DHCP 发送请求报文 DHCPREQUEST 要求更新租用期
    • DHCP 服务器若同意,则发回确认报文 DHCPACK。DHCP 客户得到了新的租用期,重新设置计时器。
    • DHCP 服务器若不同意,则发回否认报文 DHCPNACK。这时 DHCP 客户必须立即停止使用原来的 IP 地址,而必须重新申请 IP 地址(回到步骤 2)。若 DHCP 服务器不响应步骤 6 的请求报文 DHCPREQUEST,则在租用期过了 87.5% 时(T2时间到),DHCP 客户必须重新发送请求报文 DHCPREQUEST*重复步骤 6),然后又继续后面的步骤
    • DHCP 客户可以随时提前终止服务器所提供的租用期,这是只需向 DHCP 服务器发送释放报文 DHCPRELEASE 即可

      简单网络管理协议(SNMP)

  • 简单网络管理协议(SNMP)中的管理程序和代理程序按客户服务器方式工作。管理程序运行 SNMP 客户程序,代理程序运行 SNMP 服务器程序。

  • SNMP 的网络管理由三个部分组成,即 SNMP 本身、管理信息结构 SMI、管理信息库 MIB
  • SNMP 管理体系结构中的核心是 MIB,MIB 是由网管代理维护的

    应用进程跨越网络的通信

    系统调用和应用编程的接口

  • 大多数操作系统使用系统调用的机制在应用程序操作系统之间传递控制权

  • 由于应用程序在使用系统调用之前要编写一些程序,特别是需要设置系统调用中的许多参数,因此这种系统调用接口又称为应用程序接口 API
  • 套接字是应用进程和运输层协议之间的接口,是应用进程为了获得网络通信服务而与操作系统进行交互时使用的一种机制

套接字参数:

  • PF_INET或AF_INET:表示使用 Internet 的 TCP/IP 协议族
  • AF_INET4:IPv4 协议
  • AF_INET6:IPv6 协议
  • AF_ROUTE:路由套接字
  • AF_KEY:密钥套接字
  • SOCK_STREAM:流式套接字(TCP方式)
  • SOCK_DGRAM:数据包套接字(UDP方式)
  • SOCK_RAM:原始套接字
  • IPPROTO_TCP:TCP 传输协议
  • IPPROTO_UDP:UDP 传输协议
  • 创建 TCP 套接字:int tcp_socket = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
  • 创建 UDP 套接字:int udp_socket = socket(AF_INET, SCOK_DGRAM, IPPROTO_UDP);

    常用的系统调用

    连接建立阶段
    当套接字被创建后,它的端口号和 IP 地址都是空的,因此应用程序要调用 bind(绑定)来指明套接字的本地地址(本地端口号和本地 IP 地址)
    int bind ( int sock, struct sockaddr *addr, socklen_t addrlen)

  • sock 参数:sock 为 socket 描述符

  • addr:绑定的地址
  • addrlen:地址长度

服务器在调用 bind 后,还必须调用 listen(收听)把套接字设置为被动方式,以便随时接受客户端服务请求。UDP 服务器由于只提供无连接服务,不使用 listen 系统调用
int listen ( int sock, int backlog);

  • sock 参数:sock 为需要进入监听状态的套接字
  • backlog 参数:backlog 为请求队列的最大长度

服务器紧接着就调用 accept(接受),以便把远地客户进程发来的连接请求提取出来。系统调用 accept 的一个变量就是要指明是从哪一个套接字发起的连接
int accept (int sock, struct sockaddr adr, socklen_t addrlen);

  • sock 参数:sock 为服务器端套接字
  • addr 参数:addr 为 sockaddr_in 结构体变量
  • addrlen 参数:addrlen 为参数 addr 的长度,可由 sizeof() 求得
  • 返回值:一个新的套接字,用于与客户端通信

数据传送阶段
客户和服务器都在 TCP 连接上使用 send 系统调用传送数据,使用 recv 系统调用接收数据
通常客户使用 send 发送请求,而服务器使用 send 发送回答。服务器使用 recv 接收用户用 send 调用发送到请求。客户在发完请求后用 recv 接收回答
ssize_t recv (int sockfd, void buf, size_t len, int flags);
ssize_t send (int sockfd, void
buf, size_t len, int flags);

  • sockfd 参数:为要接收或发送数据的套接字
  • buf 参数:为要接收或发送数据的缓冲区地址
  • len 参数:为要接收或发送数据的字节数
  • flags 参数:为发送或接收数据的选项,常设为0

连接释放阶段
一旦客户或服务器结束使用套接字,就把套接字撤销。这时就调用 close 释放连接和撤销套接字
int close(int fd);
fd:要关闭的文件描述符

其他

  • 域名和 IP 地址不具有一一对应的关系,一台主机可以有多个 IP 地址,这些 IP 地址可以映射到同一个域名上。多台主机也可以映射到同一个域名上(如负载均衡),一台主机也可以映射到多个域名上(如虚拟主机)
  • 域名解析过程中,主机上请求域名解析的软件只需要知道本地域名服务器的 IP
  • 匿名 FTP 访问通常使用 anonymous 作为主机名

    无线网络和移动网络

    无线局域网 WLAN

    无线局域网可分为两大类:固定基础设施无线局域网无固定基础设施无线局域网

    IEEE 802.11

  • 802.11 是无线以太网的标准,它使用星形拓扑,其中心叫做接入点 AP,接入点 AP(AccessPoint)在 MAC 层 使用 CSMA/CA 协议。接入点 AP 就是基本服务内的基站。凡使用 802.111 系列协议的局域网又称为 Wi-Fi。

  • IEEE 802.11 标准规定无线局域网的最小构件是基本服务集 BSS,一个基本服务集 BSS 包括一个基站和若干个移动站
  • 接入点 AP 就是基本服务集内的基站。当网络管理员安装 AP 时,必须为该 AP 分配一个不超过 32 字节的服务集标识符 SSID 和一个通信通道
  • 一个基本服务集 BSS 所覆盖的地理范围叫做一个基本服务区 BSA
  • 一个基本服务集可以是孤立的,也可通过接入带你 AP 连接到一个分配系统 DS,然后再连接到另一个基本服务集,这样就构成了一个扩展的服务集 ESS

    移动自组网络

    另一类无线局域网是无固定基础设施的无线局域网,它又称做自组网络(AD Hoc Network)。这种自组网络没有上述基本服务集中的接入点 AP 而是由一些处于平等状态的移动站之间相互通信组成的临时网络。移动自组网络也就是移动分组无线网络

    CSMA/CA协议

    无线局域网不使用 CSMA/CD 协议的原因(特别是碰撞检测):

  • 接收信号强度往往会远小于发送信号的强度,且在无线介质上信号强度的动态变化范围很大,因此若要实现碰撞检测,则硬件上的花费就会过大

  • 在无线通信中,并非所有的站点都能听见对方,即存在“隐蔽站“的问题

802.11 把碰撞检测改为碰撞避免(CA),指尽量降低碰撞发生的概率
由于无线信道的通信质量远不如有线信道,所以使用链路层确认/重传(ARQ)方案,即每发送完一帧,收到对方的确认帧后才能继续发送下一帧
虚拟载波监听:让源站把它要占用信道的时间(包括目的站发回确认帧所需的时间)及时通知给所有其他站,以便其他站在这一段时间都停止发送数据,这样就大大减少了碰撞的机会

802.11 局域网的 MAC 帧

  • 802.11 帧共有三种类型,即控制帧、数据帧和管理帧

image.png

  • 数据帧由以下三大部分组成

    • MAC 首部,共 30 字节
    • 帧主体,也就是帧的数据部分,不超过 2312 字节
    • 帧检验序列 FCS 是 MAC 尾部,共 4 字节

      无线个人区域网 WPAN

      蓝牙系统
      低速 WPAN
      高速 WPAN

      无线城域网

      蜂窝移动通信网

      蜂窝移动通信又称为小区制移动通信。这种通信的特点是把整个的网络服务区划成许多小区(cell,也就是蜂窝),每个小区设置一个基站,负责本小区各个移动站的联络与控制。移动站的发送或接收都必须经过基站进行收发

      移动 IP

  • 移动 IP 技术是指移动结点以固定的网络 IP 地址实现跨越不同网段的漫游功能,并保证基于网络 IP 的网络权限在漫游过程中不发生任何改变。

  • 基于 IPv4 的移动 IP 定义三种功能实体:移动结点、归属代理(也称本地代理)和外埠代理(也称外部代理)
    • 移动结点:具有永久 IP 地址的移动结点
    • 本地代理:在一个网络环境中,一个移动结点的永久居所被称为归属网络,在归属网络中代表移动结点执行移动管理功能的实体称为归属代理(本地代理),它根据移动用户的转交地址,采用隧道技术转交移动结点的数据包
    • 外部代理:在外部网络中帮助移动结点完成移动管理功能的实体称为外部代理
  • 外地代理为移动站 A 创建的临时地址,称作转交地址(care of address)。转交地址的网络号必须和被访网络一致。
  • 移动站本身也可以充当外地代理,即移动站和外地代理是同一个设备时,这时的转交地址称为同址转交地址
  • 使用同址转交地址的好处是移动站可以移动到任何网络,而不必担心外地代理的可用性,但缺点是移动站需要有额外的软件,使之能充当自己的外地代理