计算机网络学习笔记
系统学习 计网原理 0 368

计网体系结构

计算机网络概述

组成:

功能:

分类:

标准化工作:

  • 标准分类:
    • 法定标准: OSI
    • 事实标准: TCP/IP
  • RFC(Request For Comments): 所有的因特网标准都要符合RFC,成为标准要经过四个阶段
    1. 因特网草案
    2. 建议标准(变成RFC)
    3. ~~草案标准~~[已取消]
    4. 因特网标准
  • 相关组织:
    1. 国际标准化组织ISO: OSI参考模型、HDLC协议
    2. 国际电信联盟ITU: 制定通信规则
    3. 国际电气电子工程师协会IEEE: 学术机构、IEEE302系列标准、5G
    4. Internet工程任务组IETF: 负责因特网相关标准制定(审核RFC)

性能指标:

  1. 速率(数据率/数据传输率/比特率): 【注意速率单位与存储容量中k的区别】
  2. 带宽: 原本指的是信号的频带宽度,在计网中指的是"最高速度率"
  3. 吞吐量: 单位时间内通过某个网络(或信道、接口)的数据量
  4. 时延: 指数据(报文/分组/比特流)从网络(或链路)的一端传送到另一端所需的时间。也叫延迟或迟延, 单位是s。分为四类:
  5. 时延带宽积(以比特为单位的链路长度): 传播时延 X 带宽【某段链路当前的数据容量】
  6. 往返时间(Round Trip Time, RTT): 从发送方发送数据开始,到发送方收到接收方的确认(接收方收到数据后立即发送确认),总共经历的时延。
    • RTT越大,在收到确认之前,可以发送的数据越多。
    • RTT = 往返传播时延(传播时延*2) + 末端处理时间
  7. 利用率:
    1. 信道利用率: (有数据通过时间/总时间)
    2. 网络利用率: 信道利用率加权平均值

体系结构与参考模型

分层结构

  1. 实体: 第n层中的活动元素称为n层实体。同一层的实体叫对等实体。
  2. 协议: 为进行网络中的对等实体数据交换而建立的规则、标准或约定称为网络协议。【水平】
    • 语法: 规定传输数据的格式
      • SDU服务数据单元: 为完成用户所要求的功能而应传送的数据。
      • PCI协议控制信息: 控制协议操作的信息。
      • PDU协议数据单元: 对等层次之间传送的数据单位。
    • 语义: 规定所要完成的功能
    • 同步: 规定各种操作的顺序
  3. 接口(访问服务点SAP): 上层使用下层服务的入口。
  4. 服务: 下层为相邻上层提供的功能调用。【垂直】

参考模型

ISO/OSI参考模型:

  • 应用层: 所有能和用户交互产生网络流量的程序
    • 协议: HTTP, SMTP(简单邮件传输协议), POP3(邮箱协议) FTP, DNS
  • 表示层: 用于处理在两个通信系统中交换信息的表示方式(语法和语义)
    • 协议: JPEG
    • 功能:
      1. 数据格式变换【e,g. 二进制比特流 -> 图片文件】
      2. 数据加密解密
      3. 数据压缩和恢复
  • 会话层: 向表示层实体/用户进程提供建立连接并在连接上有序地传输数据。【会话不会影响彼此】
    • 协议: ADSP, ASP
    • 功能:
      1. 建立、管理、终止会话
      2. 使用校验点可使会话在通信失效时从校验点/同步点继续恢复通信,实现数据同步。
  • 传输层: 负责主机中两个进程的通信,即端到端的通信。传输单位是报文段或用户数据报。
    • 协议: TCP, UDP
    • 功能:
      1. 可靠传输、不可靠传输
      2. 差错控制
      3. 流量控制
      4. 复用分用【通过端口号实现】
        • 复用: 多个应用层进程可同时使用下面运输层的服务。
        • 分用: 运输层把收到的信息分别交付给上面应用层中相应的进程。
  • 网络层: 主要任务是把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。
    • 协议: IP, IPX, ICMP, IGMP, ARP, RARP, OSPF
    • 功能:
      1. 路由选择: 寻找最佳路径
      2. 流量控制: 考虑的是对方的缓存
      3. 差错控制
      4. 拥塞控制: 考虑的是网络中的拥塞
  • 数据链路层: 主要任务是把网络层传下来的数据报组装成帧。
    • 协议: SDLC, HDLC, PPP, STP
    • 功能:
      1. 成帧: 定义帧的开始和结束
      2. 差错控制【帧错+位错】
      3. 流量控制
      4. 访问控制: (在广播式网络中)控制对信道的访问
  • 物理层: 主要任务是在物理媒体上实现比特流的透明传输【指不管所传数据是什么样的比特组合,都应当能够在链路上传送(为光/电信号)】
    • 协议: Rj45, 802.3
    • 功能:
      1. 定义接口特性
      2. 定义传输模式(单工、半双工、双工)
      3. 定义传输速率
      4. 比特同步
      5. 比特编码

TCP/IP参考模型:

TCP/IP 对比 ISO/OSI

  • 相同点:
    1. 都分层
    2. 基于独立的协议栈的概念
    3. 可以实现异构网络互联
  • 不同点:
    1. OSI定义三点:服务、协议、接口
    2. OSI先出现,参考模型先于协议发明,不偏向特定协议
    3. TCP/P设计之初就考虑到异构网互联问题,将IP作为重要层次
    4. 网络层与传输层的问题: | | ISO/OSI | TCP/IP | | ------- | ------- | -------- | | 网络层 |无连接+面向连接|无连接 | | 传输层 | 面向连接 |无连接+面向连接|

      • 面向连接分为三个阶段: 第一是建立连接,在此阶段,发出一个建立连接的请求。只有在连接成功建立之后,才能开始数据传输,这是第二阶段。接着,当数据传输完毕,必须释放连接。
      • 无连接没有这么多阶段,它直接进行数据传输。

五层参考模型: 综合OSI与TCP/IP的优点

分层:

协议栈:

数据封装: Bit -> Frame -> Datagram -> Segment -> Message【Package是统称】

物理层

物理层接口特性:

数据通信基础知识

典型的数据通信模型:

数据通信相关术语:

设计数据通信系统要考虑的3个问题:

  1. 采用单工通信/半双工/全双工通信方式
  2. 采用串行传输/传输通信方式【根据成本和速度要求选择】
  3. 采用同步通信/异步通信方式
    • 同步通信(Synchronous Communication):
      • 时钟同步: 在同步通信中,发送方和接收方需要在数据传输之前进行时钟同步,以确保它们使用相同的时钟频率和时间基准。这意味着数据传输的时机受到时钟信号的控制。
      • 等待响应: 在同步通信中,发送方通常需要等待接收方的响应,然后才能继续发送更多的数据。这意味着发送方和接收方的操作是彼此同步的。【这种方式确保了数据的顺序和一致性,但也可能造成发送端的等待时间增加。】
      • 应用: 同步通信常用于数据少、高速率和对时序要求较高的应用,如音视频传输、数据总线传输、等。
      • 应用: [数据量小、同步要求高]传统的电话通话就是一种同步通信的例子,因为通话双方需要按照相同的时钟来交换声音数据,并且在对方说完之后才能回应。
    • 异步通信(Asynchronous Communication):
      • 独立时钟: 在异步通信中,发送方和接收方可以使用独立的时钟,它们不需要严格的时钟同步。每个数据单元通常都包含了足够的信息来确定数据的开始和结束,以及数据位之间的定时。
      • 不等待响应: 异步通信中,发送方可以在不等待接收方响应的情况下发送数据。这意味着发送方和接收方的操作是相对独立的。
      • 应用: [数据量大、高并发]计算机之间的串口通信通常是异步的,因为计算机可以以不同的速度发送和接收数据,而且不需要严格的时钟同步。

码元: 指用一个固定时长的信号波形(数字脉冲),代表不同离散数值的基本波形,是数字通信中数字信号的计量单位,该时长称为码元宽度。当码元的离散状态有\(M\)个时(\(M\)大于 2),此时码元为\(M\)进制码元。

数据传输速率: 速率也叫数据率,是指数据的传输速率,表示单位时间内传输的数据量。可以用码元传输速率和信息传输速率表示。

  1. 码元传输速率: 别名码元速率、波形速率、调制速率、符号速率等,它表示单位时间内数字通信系统所传输的码元个数,也可称为脉冲个数或信号变化的次数,单位是波特(Baud)。1波特表示数字通信系统每秒传输一个码元。
  2. 信息传输速率: 别名信息速率、比特率等,表示单位时间内数字通信系统传输的二进制码元个数(即比特数),单位是比特/秒(b/s)。

带宽:

  1. 模拟信号系统: 当输入的信号频率高或低到一定程度,使得系统的输出功率成为输入功率的一半时(即\(-3dB\)),最高频率和最低频率间的差值就代表了系统的通频带宽,其单位为赫兹(Hz)。
  2. 数字信号系统: 表示在单位时间内从网络中的某一点到另二点所能通过的“最高数据率”/单位时间内通过链路的数量,常用来表示网络的通信线路所能传输数据的能力。单位是比特每秒(bps)。

奈氏准则和香农定理

失真:

影响因素:

  1. 码元传输速率
  2. 信号传输距离
  3. 噪声干扰
  4. 传输媒体质量

原因分析:

  • 频率过低: 不满足信道带宽(最高频率和最低频率之差),导致衰减严重
  • 频率过高: 码间串扰(接收端收到的信号波形失去了码元之间清晰界限的现象)

奈奎斯特定理:(波特率) 在理想低通(无噪声,带宽受限)条件下,为了避免码间串扰,极限码元传输速率为2W Baud,W是信道带宽,单位是Hz。

  1. 在任何信道中,码元传输的速率是有上限的。若传输速率超过此上限,就会出现严重的码间串扰问题,使接收端对码元的完全正确识别成为不可能。
  2. 信道的频带越宽(即能通过的信号高频分量越多),就可以用更高的速率进行码元的有效传输。
  3. 奈氏准则给出了码元传输速率的限制,但并没有对信息传输速率给出限制。
  4. 由于码元的传输速率受奈氏准则的制约,所以要提高数据的传输速率,就必须设法使每个码元能携带更多个比特的信息量,这就需要采用多元制的调制方法。

香农定理:(比特率) 在带宽受限且有噪声的信道中,为了不产生误差,信息的数据传输速率有上限值。

  • 信噪比 \((\mathrm{dB})= 10 \log _{2}(\mathrm{~S} / \mathrm{N})\)

  • 信道的极限数据传输速率 \((\mathrm{b} / \mathrm{s})=\mathrm{W} \log _2(1+\mathrm{S} / \mathrm{N})\)

相关推论:

  1. 信道的带宽或信道中的信噪比越大,则信息的极限传输速率就越高。
  2. 对一定的传输带宽和一定的信噪比,信息传输速率的上限就确定了。
  3. 只要信息的传输速率低于信道的极限传输速率,就一定能找到某种方法来实现无差错的传输。
  4. 香农定理得出的为极限信息传输速率,实际信道能达到的传输速率要比它低不少。
  5. 从香农定理可以看出,若信道带宽w或信噪比S/N没有上限(不可能),极限信息传输速率也就没有上限。

编码与调制

信道:

  • 定义: 信号的传输媒介。一般用来表示向某一个方向传送信息的介质,因此一条通信线路往往包含一条发送信道和一条接收信道。
  • 分类:
    • 传输信号来分: 模拟信道(传输模拟信号)、数字信道(传输数字信号)
    • 传输介质来分: 无线信道、有线信道

基带信号与宽带信号:

  • 基带信号:
    • 定义: 信源直接发出的信号【计算机网络中是指数字信道】。
    • 场景: 近距离传输
  • 宽带信号:
    • 定义: 将基带信号进行载波调制(把信号的频率范围搬移到较高的频段)后形成的频分复用模拟信号,再传送到模拟信道上去传输(宽带传输)。
    • 场景: 远距离传输

数字数据编码为数字信号:

  1. 非归零编码(NRZ):
    • 实现: 高1低0
    • 特点: 容易实现,无检错功能,难以同步
  2. 归零编码(RZ):
    • 实现: 保持低电平代表0,从高到低代表1
  3. 曼彻斯特编码
    • 实现: 由高到低表示1,由低到高表示0
    • 特点: 可以实现自同步,频带宽度是原始基带宽度的两倍【数据传输速率只有调制速率的一半】
  4. 差分曼彻斯特编码
    • 实现: 第一位满足曼彻斯特,之后1相反0复制
    • 特点: 抗干扰性更强

数字数据调制为模拟信号:

QAM(调幅+调相):

某通信链路的波特率是1200Baud,采用4个相位,每个相位有4种振幅的QAM调制技术的信息传输速率是多少?

码元数: \(4\times 4 = 16\)
进制数: \(\log_216 = 4\text{bit}\)
信息率: \(1200 \times 4 = 4800b/s\)

模拟数据编码为数字信号-PCM(脉冲调制编码):

  1. 抽样: 对模拟信号周期性扫描,把时间上连续的信号变成时间上离散的信号。【\(f_{采样频率}>2f_{信号最高频率}\)
  2. 量化: 把抽样取得的电平幅值按照一定的分级标度转化为对应的数字值,并取整数,这就把连续的电平幅值转换为离散的数字量。
  3. 编码: 把量化的结果转换为与之对应的二进制编码。

模拟数据调制为模拟信号:

  • 作用:
    • 频谱效率: 载波调制允许在有限的频谱范围内传输更多的信息。
    • 抗干扰性: 大多数干扰通常存在于低频范围

数据交换方式

  • 电路交换(Circuit Exchanging)
    • 原理: 在数据传输期间,源结点与目的结点之间有一条由中间结点构成的专用物理连接线路,在数据传输结束之前,这条线路一直保持。
    • 特点: 独占资源,用户始终占用端到端的固定传输带宽。适用于远程批处理信息传输或系统间实时性要求高的大量数据传输的情况。
  • 报文交换(Message Exchanging)
    • 原理: 无需在两个站点之间建立一条专用通躁传输的单位是报文,传送过程采用存储转发方式
  • 分组交换(Packet Exchanging)
    • 分组: 大多数计算机网络都不能连续地传送任意长的数据,所以实际上网络系统把数据分割成小块,然后逐块地发送,这种小块就称作分组(Packet)
    • 原理:分组交换与报文交换的工作方式基本相同,都采用存储转发方式,形式上的主要差别在于,分组交换网中要限制所传输的数据单位的长度,一般选128B。发送节点首先对从终端设备送来的数据报文进行接收、存储,而后将报文划分成一定长度的分组,并以分组为单位进行传输和交换。接收结点将收到的分组组装成信息或报文。
    • 方式:
      • 数据报式分组交换(Datagram Switching):
        • 特点:
          • 每个数据包独立传输("无连接"),可能经过不同的路径到达目的地。
          • 不保证数据包的顺序和可靠性,可能导致乱序或丢失。
          • 每个分组在传输过程中都必须携带源地址和目的地址,以及分组号。
          • 分组在交换结点存储转发时,需要排队等候处理,这会带来一定的时延。当通过交换结点的通信量较大或网络发生拥塞时,这种时延会大大增加,交换结点还可根据情况丢弃部分分组。
          • 网络具有冗余路径,当某一交换结点或一段链路出现故障时,可相应地更新转发表,选招另一条路径转发分组对故障的适应能力强,适用于突发性通信,不适于长报文、会话式通信。
      • 虚电路式分组交换(Virtual Circuit Switching):
        • 虚电路: 一条源主机到目的主机类似于电路的路径(逻辑连接),路径上所有结点都要维持这条虚电路的建立,都维持一张虚电路表,每一项记录了一个打开的虚电路的信息。
        • 特点:
          • 为网络层提供连接服务。源节点与目的结点之间建立一条逻辑连接,而非实际物理连接。
          • 一次通信的所有分组都通过虚电路顺序传送,分组不需携带源地址、目的地址等信息,包含虚电路号,相对数据报方式开销小,同一报文的不同分组到达目的结点时不会乱序、重复或丢失。
          • 分组通过虚电路上的每个节点时,节点只进行差错检测,不需进行路由选择。
          • 每个节点可能与多个节点之间建立多条虚电路,每条虚电路支持特定的两个端系统之间的数据传输,可以对两个数据端点的流量进行控制,两个端系统之间也可以有多条虚电路为不同的进程服务。
          • 致命弱点: 当网络中的某个结点或某条链路出故障而彻底失效时,川所有经过该结点或该链路的虚电路将遭到破坏

选择方式:

  1. 传送数据量大,且传送时间远大于呼叫时,选择电路交换。电路交换传输时延最 小。
  2. 当端到端的通路有很多段的链路组成时,采用分组交换传送数据较为合适。
  3. 从信道利用率上看,报文交换和分组交换优于电路交换,其中分组交换比报文交 换的时延小,尤其适合于计算机之间的突发式的数据通信。

物理层传输介质

  • 导向性传输介质: 电磁波被导向沿着固体媒介(铜线/光纤)传播。
    • 双绞线
    • 同轴电缆(基带同轴电缆和宽带同轴电缆)
    • 光纤
      • 特点:
        • 传输损耗小,中继距离长,对远距离传输特别经济。
        • 抗雷电和电磁干扰性能好。
        • 无串音干扰,保密性好,也不易被窃听或截取数据。
        • 体积小,质量轻。
  • 非导向性传输介质: 自由空间,介质可以是空气、真空、海水等。
    • 无线电波(所有方向): 较强穿透能力,可传远距离,广泛用于通信领域(如手机通信)。
    • 微波(固定方向): 微波通信频率较高、频段范围宽,因此数据率很高。
    • 红外线、激光(固定方向): 把要传输的信号分别转换为各自的信号格式,即红外光信号和激光信号,再在空间中传播。

物理层设备

  • 中继器:
    • 诞生原因: 由于存在损耗,在线路上传输的信号功率会逐渐衰减,衰减到一定程度时将造成信号失真,因此会导致接收错误。
    • 功能: 对信号进行再生和还原,对衰减的信号进行放大,保持与原数据相同,以增加信号传输的距离,延长网络的长度。
    • 中继器的两端:
      • 两端的网络部分是网段,而不是子网,适用于完全相同的两类网络的互连,且两个网段速率要相同。
      • 中继器只将任何电缆段上的数据发送到另一段电缆上,它仅作用于信号的电气部分,并不管数据中是否有错误数据或不适于网段的数据。
      • 两端可连相同媒体,也可连不同媒体。
      • 中继器两端的网段一定要是同一个协议。
    • 5-4-3规则:网络标准中都对信号的延迟范围作了具体的规定,因而中继器只能在规定的范围内进行,否则会网络故障。
  • 集线器:
    • 功能: 对信号进行再生放大转发,对衰减的信号进行放)发到其他所有(除输入端口外)处于工作状态的端口上,以增加信号传输的距离,延长网络的长度。不具备可传送能力,是一个共享式设备。
    • 特点:
      • 不能分割冲突域
      • 连接在集线器上的工作主机平分带宽

数据链路层

定义:

  1. 数据链路:网络中两个结点之间的逻辑通道,把实现控制数据传输协议的硬件和软件加到链路上就构成数据链路。
  2. 帧:链路层的协议数据单元,封裝网络层数据报。

功能:

  1. 为网络层提供服务: 无确认无连接服务,有确认无连接服务同连接服务。
  2. 链路管理,即连接的建立、维持、释放(用于面向连接的服务)。
  3. 封装成帧: 就是在一段数据的前后部分添加首部和尾部。
    1. 帧同步:接收方应当能从接收到的二进制比特流中区分出帧的起始和终止。
    2. MTU: 最大传送单元
    3. 透明传输: 不管所传数据是什么样的比特组合,都应当能够在链路上传送。当所传数据中的比特组合恰巧与某一个控制信息完全一样时,就必须采取适当的措施,使收方不会将这样的数据误认为是某种控制信息。这样才能保证数据链路层的传输是透明的。
  4. 差错控制(帧错/位错)
  5. 可靠传输: 发送端发啥,接收端收啥【以前是链路层,现在是传输层】
  6. 流量控制:【也转移到传输层了】

两种链路:

  • 点对点链路: 两个相邻节点通过一个链路相连,没有第三者。
    • 应用: PPP协议,常用于广域网。
  • 广播式链路: 所有主机共享通信介质。
    • 应用: 早期的总线以太网、无线局域网,常用于局域网。
    • 典型拓扑结构: 总线型、星型(逻辑总线型)

组帧方法

  1. 字符计数法: 帧首部使用一个计数字段(第一个字节)来标明帧内字符数
  2. 字符(节)填充法
    1. 当传送的帧是由文本文件组成时(文本文件的字符都是从键盘上输入的,都是ASCI码)不管从键盘上输入什么字符都可以放在帧里传过去,即透明传输。
    2. 当传送的帧是由非ASCi码的文本文件组成时(二进制的程序或图像等),就要采用字符填充方法实现透明传输。
  3. 零比特插入法/填充法
    1. 在发送端,扫描整个信息字段,只要连续5个1,就立即填入1个0。
    2. 在接收端收到一个帧时,先找到标志字段确定边界,再用硬件对比特流进行扫描。发现连续5个1时,就把后面的0删除。
  4. 违规编码法 可以用“高-高”,“低-低”来定界帧的起始和终止。

由于字节计数法中Count字段的脆弱性(其值若有差错将导致灾难性后果)及字符填充实现上的复杂性和不兼容性,目前较普遍使用的帧同步法是零比特填充和违规编码法。

差错控制

差错来源:

  • 全局性: 随机噪声
  • 局部性: 冲击噪声

差错类型:

  • 位错:
  • 帧错: 丢失、重复、失序

服务类型:

  • 无确认无连接服务: 通信质量好、有线传输链路
  • 有确认无连接服务
  • 有确认面向连接服务

差错控制方法:

  • 检错编码:
    • 奇偶校验码: n-1个信息元之后加上一位,使得"1"的个数为奇数/偶数
    • 循环冗余码(CRC):
      • 原理: 接受后检查余数,为0代表无差错
      • 效果: 以接近1的概率认为凡是接收端数据链路层接收端帧无差错。【并不是可靠传输】
  • 纠错编码:
    • 海明码: 能发现双比特错误,只能纠正单比特错误
      • 海明距离: 两个合法编码(码字)的对应比特取值不同的比特数称为这两个码字的海明距离(码距),一个有效编码集中,任意两个合法编码(码字)的海明距离的最小值称为该编码集的海明距离(码距)。
        • 要检n位码的错,码距至少是n+1
        • 要纠n位码的错,码距至少为2n+1
      • 编码: 以7,4海明码为例
      • 检错并纠错: 找到不满足奇/偶校验的分组取交集,并于符合校验的分组取差集

可靠传输

特点: 点到点【传输层则是端到端】

手段: 接收方收不下就不回复确认(帧)【传输层是接收端给发送端一个窗口公告,告知缓冲区等信息】

方法:

  • 停止-等待协议(Stop-and-Wait, SAW): 每发送一个帧就等待回复,收到确认后再发送下一个帧
    • 过程:
      • 每次发送一个帧就启动一个超时计时器。
      • 超时计时器设置的重传时间应当比帧传输的平均RTT更长一些。
      • 超时后会自动重传【发完一个帧后,必须保留它的副本;数据帧和确认帧必须编号(0/1)】。
    • 缺点: 信道利用率太低【(帧长度L/发送速率C)/往返时延RTT】
  • 滑动窗口协议: 收到一个确认,发送窗口前进一格
    • 提高信道利用率即增加发送时间的占比,需要做到:
      • 必须增加序号范围
      • 发送发需要缓存多个分组
    • 具体实现:
      • 后退N帧协议(Go-Back-N, GBN): 发送窗口大小>1, 接受窗口大小=1
        • 过程:
          • 发送方必须响应:
            • 上层的调用: 上层要发送数据时,发送方先检查发送窗口是否己满,如果未满,则产生一个帧并将其发送;如果窗口己满,发送方只需将数据返回给上层,暗示上层窗口己满。上层等一会再发送。【实际实现中,发送方可以缓存这些数据,窗口不满时再发送帧】
            • 收到一个ACK: 对n号帧的确认采用累积确认的方式,表明接收方已经收到n号帧和它之前的所有帧。
            • 超时事件: 就像在停等协议中一样,定时器将再次用于恢复数据帧或确认帧的丢失。如果出现超时,发送方重传所有己发送但末被确认的帧。
          • 接受方要做的事:
            • 如果正确收到n号帧,并且按序,那么接收方为n帧发送一个ACK,并将该帧中的数据部分交付给上层。
            • 其余情况都丢弃帧,并为最近按序接收的帧重新发送ACK。接收方无需缓存任何失序帧,只需要维护一个信息: expectedseqnum(下一个按序接收的帧序号)。
        • 要点:
          • 累积确认(偶尔捎带确认)
          • 接收方只按顺序接收帧,不按序无情丢弃
          • 确认序列号最大的、按序到达的帧
          • 滑动窗口长度: 若采用n个比特对帧编号,那么发送窗口的尺寸\(W_T\)应满足:\(1\le W_T \le 2^n-1\)。因为发送窗口尺寸过大,就会使得接收方无法区别新帧和旧帧。
        • 优缺点:
          • 优点: 通过连续发送帧提高了信道利用率
          • 缺点: 在重传时会把原来已经正确传送的帧重传,降低了传送效率
      • 选择重传协议(Selective-Repeat, SR): 发送窗口大小>1, 接收窗口大小>1
        • 过程:
          • 发送方必须响应:
            • 上层的调用: 从上层收到数据后,SR发送方检查下一个可用于该帧的序号,如果序号位于发送窗口内,则发送数据帧;否则就像GBN一样,要么将数据缓存,要么返回给上层之后再传输。
            • 收到一个ACK: 如果收到ACK,假如该帧序号在窗口内,则SR发送方将那个被确认的帧标记为已接收。如果该帧序号是窗口的下界(最左边第一个窗口对应的序号),则窗口向前移动到具有最小序号的未确认帧处。如果窗口移动了并且有序号在窗口内的未发送帧,则发送这些帧。
            • 超时事件: 每个帧都有自己的定时器,一个超时事件发生后只重传一个帧。
          • 接收方:
            • 确认每一个正确接收的帧而不管其是否按序。失序的帧将被缓存,并返回给发送方一个该帧的确认帧【收谁确认谁】,直到窗口内序号更小的帧被收到为止,这时才可以将一批帧按序交付给上层,然后向前移动滑动窗口。
            • 如果收到了窗口序号外(小于窗口下界)的帧,就返回一个ACK。
        • 要点:
          • 滑动窗口长度: 发送窗口最好等于接收窗口(大了会溢出,小了没意义),满足\(W_{Tmax}=W_{Rmax}=2^{(n-1)}\),不满足会出现如下情况
          • 对数据帧逐一确认,收一个确认一个,同加大接收窗口
          • 只重传出错帧
          • 接收方有缓存,缓存乱序到达的帧

(广播式链路的)介质访问控制

定义:(MAC, Medium Access Control)采取一定的措施,使得两对节点之间的通信不会发生互相干扰的情况。

方法:

  • 静态划分信道--信道划分介质访问控制: 基于多路复用技术划分资源。
    • 方法:
      • 频分复用FDM--"并行" 充分利用传输介质带宽,系统效率较高;由于技术比较成熟,实现也比较容易。
      • 时分复用TDM--"并发" 统计时分复用STDM: 动态分配时隙,时隙数小于用户数
      • 波分复用WDM: 光的频分多路复用,在一根光纤中传输多种不同波长(频率)的光信号,由于波长(频率)不同,所以各路光信号互不干扰,最后再用波长分解复用器将各路波长分解出来。
      • 码分复用CDM【重点是CDMA(Code-division multiple access)】
        1. 1个比特分为多个码片/芯片(chip),每一个站点被指定一个唯一的m位的芯片序列。发送1时站点发送芯片序列,发送0时发送芯片序列反码(通常把0写成-1)。
        2. 多个站点同时发送数据时,站点芯片序列相互正交,规格化内积为0
        3. 两个向量到了公共信道上,线性相加。
        4. 数据分离:合并的数据和源站规格化内积。
    • 特点:
      • 网络负载重: 共享信道效率高,且公平
      • 网络负载轻: 共享信道效率低
  • 动态划分信道--动态媒体接入控制/多点接入:
    • 随机访问MAC协议: 所有用户可随机发送信息,发送信息时占全部带宽。
      • 方法:
        • ALOHA协议【"不听就说"】:
          • 方案:
            • 纯ALOHA协议: 不监听信道,不按时间槽发送,随机重发。
            • 时隙ALOHA协议: 把时间分成若干个相同的时间片,所有用户在时间片开始时刻同步接入网络信道,若发生冲突,则必须等到下一个时间片开始时刻再发送。
          • 对比:
            1. 纯ALOHA比时隙ALOHA吞吐量更低,效率更低。
            2. 纯ALOHA想发就发,时隙ALOHA只有在时间片段开始时才能发。
        • CSMA协议(载波监听多路访问协议, carrier sense multiple access)【"先听再说"】: 发送帧之前,监听信道。
          • 方案:
            • 1-坚持CSMA思想: 信道忙则一直监听,直到空闲马上传输;如果有冲突,则等待一个随机长的时间再监听,重复上述过程。
              • 优点: 只要媒体空闲,站点就马上发送,避免了媒体利用率的损失。
              • 缺点: 假如有两个或两个以上的站点要发送,冲突就不可避免。
            • 非坚持CSMA思想: 信道忙就等待一个随机的时间之后再进行监听。
              • 优点: 采用随机的重发延迟时间可以减少冲突发生的可能性。
              • 缺点: 可能存在大家都在延迟等待过程中,使得媒体仍可能处于空闲状态,媒体使用率降低。
            • p-坚持CSMA思想: 空闲则以p概率直接传输,概率1-p等待到下一个时间槽再传输;忙则持续监听直到信道空闲再以p概率发送;若冲突则等到下一个时间槽开始再监听并重复上述过程。
              • 优点: 既能像非坚持算法那样减少冲突,又能像1-坚持算法那样减少媒体空闲时间的这种方案。
          • 分析:
            这三种算法发生冲突后还是要坚持把数据帧发送完,造成了浪费。
        • CSMA/CD协议(载波监听多点接入/碰撞检测, carrier sense multiple access with collision detection)【先听再说,边听边说;用于总线式以太网】:
          • 截断二进制指数规避算法
            1. 确定基本退避(推迟)时间为争用期\(2\tau\)
            2. 定义参数k,它等于重传次数,但k不超过10,即k=min[重传次数,10]。
            3. 从离散的整数集合[0,1,...\(2^k-1\)]中随机取出一个数r,重传所需要退避的时间就是r倍的基本退避时间,即\(2r\tau\)
            4. 当重传达16次仍不能成功时,说明网络太拥挤,认为此帧永远无法正确发出,抛弃此帧并向高层报告出错。
          • 最小帧长(希望检查出碰撞时,帧还没发完): 帧的传输时延至少要两倍于信号在总线中的传播时延。【最小帧长=总线传播时延x数据传输速率x2】 > 以太网规定最短帧长为64B,凡是长度小于64B的都是由于沖突而异常终止的无效帧。
        • CSMA/CA协议(载波监听多点接入/碰撞避免, carrier sense multiple access with collision avoidance)【用于无线局域网】:
          • 无线局域网不用CSMA/CD:
            • 无法做到360°全面检测碰撞
            • 隐蔽站问题: 当A和C都检测不到信号,认为信道空闲时,同时向终端B发送数据帧,就会导致冲突.
          • 工作原理:
            • 发送数据前,先检测信道是否空闲。空闲则发出RTS(request to send),RTS包括发射端的地址、接收端的地址、下一份数据将持续发送的时间等信息;信道忙则等待。
            • 接收端收到RTS后,将响应CTS(clear to send)
            • 发送端收到CTS后,开始发送数据帧(同时预约信道: 发送方告知其他站点自己要传多久数据)。
            • 接收端收到数据帧后,将用CRC来检验数据是否正确,正确则响应ACK帧。
            • 发送方收到ACK就可以进行下一个数据帧的发送,若没有则一直重传至规定重发次数为止(采用二进制指数退避算法来确定随机的推迟时间)【由于无线环境中存在信号衰减、随机噪声等因素,CSMA/CA无法完全消除碰撞】
          • 要点: 预约信道、ACK帧、RTS/CTS帧(可选)
      • 特点:
        • 网络负载重: 产生冲突开销
        • 网络负载轻: 共享信道效率高,单个结点可利用信道全部带宽
    • 轮询访问MAC协议/轮流协议: 既要不产生冲突,又要发送时占全部带宽。
      • 轮询协议: 主结点轮流"邀请"从属结点发送数据
        • 优缺点:
          • 优点: 无冲突、独占带宽
          • 缺点: 轮询开销、等待延迟、单点故障(主节点故障)
      • 令牌传递协议: 【用于负载较大的令牌环网】 > 令牌: 一个特殊格式的MAC控制帧,不含控制信道的使用,确保同一时刻只占信道。每个结点都可以在一定的时间内(令牌持有时间)获得发送数据的权利,并不是无限制地持有令牌。
        • 缺点: 令牌开销、等待延迟、单点故障(令牌环断裂)

冲突检测: 发送方在一定时间内收不到确认就判断发生冲突 监听信道: 电压摆动值(有线), 能量检测(无线) 先听后发仍有冲突: 传播时延对载波监听的影响

局域网 & 应用

局域网的基本概念和体系结构

定义: 局域网(Local Area Network, LAN)是指在某一区域内由多台计算机互联成的计算机组,使用广播信道。

特点:

  • 覆盖的地理范围较小,只在一个相对独立的局部范围内联,如一座或集中的建筑群内
  • 数据传输速率高(10Mb/s~10Gb/s)
  • 通信延迟时间短,误码率低,可靠性较高
  • 各站为平等关系,共享传输信道
  • 多采用分布式控制和广播式通信,能进行广播和组播

主要要素: 网络拓扑,传输介质与介质访问控制方法。

  • 拓扑结构:
  • 传输介质:
    • 有线局域网: 双绞线、同轴电缆、光纤
    • 无线局域网: 电磁波
  • 介质访问控制:
    • CSMA/CD: 常用于总线型局域网,也用于树型网络
    • 令牌总线: 常用于总线型局域网,也用于树型网络 它是把总线型或树型网络中的各个工作站按一定顺序如按接口地址大小排列形成一个逻辑环。只有令牌持有者才能控制总线,才有发送信息的权力。
    • 令牌环: 用于环形局域网,如令牌环网

分类:

  • 以太网(Ethernet): 以太网是应用最为广泛的局域网,包括标准以太网(10Mbps)、快速以太网(100Mbps),千兆以太网(1000 Mbps)和10G以太网。逻辑拓扑总线型,物理拓扑是星型或拓展星型。使用CSMA/CD。
  • 令牌环网(Token-Ring): 物理上采用了星形拓扑结构,逻辑上是环形拓扑结构。已是"明日黄花"。
  • FDDI网(Fiber Distributed Data Interface): 物理上采用了双环拓扑结构,逻辑上是环形拓扑结构。
  • ATM网(Asynchronous Transfer Mode): 较新型的单元交换技术,使用53字节固定长度的单元进行交换。
  • 无线局域网(Wirelless Local Area Network, WLAN)

IEEE 802系列标准是IEEE 802 LAN/MAN 标准委员会制定的局域网、城域网技术标准(1980年2月成立)。其中最广泛使用的有以太网(802.3)、令牌环网(802.5)、FDDI网(802.8)、无线局域网(802.11)等。

MAC子层和LLC子层:

  • LLC子层: 负责识别网络层协议,然后对它们进行封装。LLC报头告诉数据链路层一旦帧被接收到时,应当对数据包做何处理。为网络层提供服务: 无确认无连接、面向连接、带确认无连接、高速传送。
  • MAC子层: MAC子层的主要功能包括数据帧的封装/卸装,帧的寻址和识别,帧的接收与发送,链路的管理,帧的差错控制等。MAC子层的存在屏蔽了不同物理链路种类的差异性。

以太网

以太网(Ethernet)指的是一种基带总线局域网规范,是当今现有局域网采用的最通用的通信协议标准,包含物理层、LLC子层和MAC子层。

优点:

  1. 造价低廉(以太网网卡不到100元)
  2. 是应用最广泛的局域网技术
  3. 比令牌环网、ATM网便宜,简单
  4. 满足网络速率要求: 10Mb/s ~ 10Gb/s

标准:

  1. DIX Ethernet V2: 第一个局域网产品(以太网)规约
  2. IEEE 802.3

服务:

  1. 无连接: 发送方和接收方之间无 握手过程
  2. 不可靠: 不对发送方的数据帧编号,接收方不向发送方进行确认,差错帧直接丢弃,差错纠正由高层负责
  3. 以太网只实现无差错接受,不实现可靠传输

以太网传输介质 & 拓扑的发展:

介质: 粗同轴电缆 -> 细同轴电缆 -> 双绞线+集线器

拓扑: 总线型 -> 星型

使用集线器的以太网在逻辑上仍是一个总线网,各站共享逻辑上的总线,使用的还是CSMA/CD 协议。

10BASE-T: 传输基带信号,传输速率为10Mb/s的双绞线以太网。

  • 物理上采用星型拓扑,逻辑上总线型,每段双绞线最长为100m。
  • 采用曼彻斯特编码
  • 采用CSMA/CD介质访问控制

网卡与MAC地址: 计算机与外界有局域网的连接是通过网络接口卡NIC(network interface card)的。 网卡上装有处理器和存储器(包括RAM和ROM),其中ROM里包含硬件地址(MAC地址、物理地址),一共48位,前24位代表厂家。

如果蓝牙地址和MAC地址的前24位相同,那么它们对应的公司标识符通常也是相同的

以太网MAC帧:

  • 物理层不需要后导码,因为已经用了曼彻斯特编码
  • 与IEEE802.3的区别:
    1. 第三个字段是长度/类型
    2. 当长度/类型字段值小于0x0600(表示长度)时,数据字段就是一个LLC帧(包含LLC头部)。

高速以太网:

无线局域网

WIFI标准: 802.11b, 802.11g

帧分类:

帧头格式:

相关概念:

  • BSS(Basic Service Set)是一个基础服务单元,一般包含一个或多个客户端设备和一个AP,每个AP对应一个BSSID。
  • 一个BSS对应一个SSID(Service Set Identifier),可以理解为无线局域网的名称。
  • 一个BSS也可以包含多个AP或者不包含AP。不包含AP的就是IBSS(Independent Basic Service Set),也叫"自主模式"或"Ad-hoc模式",在IBSS中,设备直接通过无线连接彼此通信,而无需依赖中央的接入点。这种情况下的BSSID就是设备自己的MAC地址。

分类:

  1. 有固定基础设施无线局域网
  2. 无固定基础设施无线局域网的自组织网络

虚拟局域网

传统局域网的局限:

  • 缺乏流量隔离: 即使把组流量局域化到一个单一交换机中,广播流量仍会跨越整个机构网络(ARP、RIP、 DHCP协议)
  • 管理用户不便: 如果一个主机在不同组间移动,必须改变物理布线,连接到新的交换机上。
  • 路由器成本较高:局域网内使用很多路由器花销较大。

定义:

虚拟局域网(Virtual Local Area Network, VLAN)是一种将局域网内的设备划分成与物理位置无关的逻辑组的技术,这些逻辑组有某些共同的需求。每个VLAN是一个单独的广播域/不同的子网。

标准: IEEE802.1Q

实现方法

  1. 基于端口/接口的VLAN技术
  2. 基于MAC地址的VLAN技术
  3. trunk端口: 可发送带标签(后12位,取值范围1~4094)的数据帧

Router-on-a-Stick: 如果不同的VLAN需要进行互联通信,通常需要一台支持VLAN的路由器。这种配置通常称为Router-on-a-Stick,其中路由器的接口配置为Trunk,能够处理多个VLAN。

广域网及相关协议

介绍:

广域网(Wide Area Network, WAN)通常跨接很大的物理范围,所覆盖的范围从几十公里到几千公里,它能连接多个城市或国家,或横跨几个洲并能提供远距离通信,形成国际性的远程网络。

广域网的通信子网主要使用分组交换技术。广域网的通信子网可以利用公用分组交换网、卫星通信网和无线分组交换网,它将分布在不同地区的局域网或计算机系统互连起来,达到资源共享的目的。如因特网(Internet)是世界范围内最大的广域网。

PPP协议

点对点协议(Point-to-Point Protocol, PPP)是目前使用最广泛的数据链路层协议,通常用于串行通信,例如拨号连接或通过专线连接两个设备。只支持全双工链路。

需要满足的要求:

  1. 要求: 对于链路层的帧,无需纠错,无需序号,无需流量控制。
  2. 封装成帧: 需要帧定界符
  3. 透明传输: 与帧定界符一样比特组合的数据应该如何处理【异步线路用字节填充,同步线路用零比特填充】
  4. 支持多种网络层协议: 封装的IP数据报可以采用多种协议。
  5. 支持多种类型链路: 串行/并行,同步/异步,电/光
  6. 差错检测: 错即丢弃
  7. 检测连接状态: 链路是否正常工作
  8. 最大传送单元: 数据部分最大长度MTU
  9. 网络层地址协商: 知道通信双方的网络层地址
  10. 数据压缩协商

不需要满足的要求: 纠错、流量控制、序号、不支持多点线路

组成部分:

  1. 一个将IP数据报封装到串行链路(同步串行/异步串行)的方法。
  2. 链路控制协议LCP: 建立并维护数据链路连接【身份验证】。
  3. 网络控制协议NCP: PPP可支持多种网络层协议,每个不同的网络层协议都要一个相应的NCP来配置,为网络层协议建立和配置逻辑连接。

状态图:

帧格式:

HDLC协议

介绍:

高级数据链路控制(High-Level Data Link Control, HDLC),是一个在同步网上传输数据、面向比特的数据链 路层协议,它是由国际标准化组织(ISO)开发而成的。

特点:

  • 数据报文可透明传输,用于实现透明传输的零比特插入法易于硬件实现。
  • 所有帧采用CRC检验,对信息帧进行顺序编号,可防止漏收或重份,传输可靠性高。

缺点: 不符合网络速率要求(因为提前实现了可靠传输,增大了处理复杂度)

链路层设备

扩展以太网:

  • 物理层扩展
  • 链路层扩展
    • 网桥: 根据MAC帧的目的地址对帧进行转发和过滤。当网桥收到一个帧时,并不向所有接口转发此帧,而是先检查此帧的目的MAC地址,然后再确定将该帧转发到哪一个接口,或者泛洪。
      • 优点:
        • 过滤通信量,增大吞吐量
        • 扩大了物理范围
        • 提高了可靠性
        • 可互连不同物理层、不同MAC子层和不同速率的以太网。
      • 透明网桥: "透明"指以太网上的站点并不知道所发送的帧将经过哪几个网桥,是一种即插即用设备(自学习)。
      • 源路由网桥:在发送帧时,把详细的最佳路由信息(路由最少/时间最短)放在帧的首部中。
        • 方法: 源站以广播方式向欲通信的目的站发送一个发现帧。
    • 以太网交换机: 多接口网桥
      • 直通式交换机: 查完目的地址(6B)就立刻转发。延迟小,可靠性低,无法支持具有不同速率的端口的交换。
      • 存储转发式交换机: 将帧放入高速缓存,并检查否正确,正确则转发,错误则丢弃。延迟大,可靠性高,可以支持具有不同速率的端口的交换。

冲突域与广播域:

  • 冲突域: 在同一个冲突域中的每一个节点都能收到所有被发送的帧。简单的说就是同一时间 内只能有一台设备发送信息的范围。
  • 广播域: 网络中能接收任一设备发出的广播帧的所有设备的集合。简单的说如果站点发出一 个广播信号,所有能接收收到这个信号的设备范围称为一个广播域。

网络层

主要任务: 把分组从源端传到目的端,为分组交换网上的不同主机提供通信服务。 传输单位: 数据报

功能:

  1. 路由选择与分组转发
  2. 异构网络互联
  3. "拥塞控制": 若所有结点都来不及接受分组,而要丢弃大量分组的话,网络就处于拥塞状态。因此要采取一定措施,缓解这种拥塞。【与流量控制不同,是个全局概念】
    • 解决方法:
      • 开环控制(静): 网络设计之初考虑
      • 闭环控制(动): 通过运行中的路由选择控制

IP数据报(Datagram)

分片: 传输过程中,如果数据报过大,就需要分片,形成分组

格式:

  • 版本: IPv4/IPv6
  • 首部长度: 0-15个4B(首部最长60B,最少20B)
    • 填充字段: 填充首部长度为4的倍数
  • 区分服务/服务类型: 指示期望获得哪种类型的服务【例如优先级】
  • 总长度: 单位是1B
  • 生存时间(Time To Live, TTL): 分组的保质期(每过一个路由器就减一)
  • 协议: 数据部分使用的协议
  • 首部检验和: 只检验首部(因为传播过程中首部经常变)
  • 源地址、目的地址: IPv4的32位
  • 可选字段: 0~40B, 用来支持排错、测量以及安全等措施。
  • 标识: 同一数据报的分片使用同一标识。
  • 标志: 一共三位,只有2位有意义
    • 中间位DF(Don't Fragment): DF=1,禁止分片;DF=0,允许分片
    • 最低位MF(More Fragment): MF=1,后面还有分片;MF=O,代表最后一片/没分片
  • 片偏移: 指出较长分组分片后,某片在原分组中的相对位置。以8B位单位。【意味着每个分片(除了最后一个)的长度一定是8B的整数倍】

IP地址

IP地址: 标识路由器和主机的接口

分类的IP地址 -> 子网的划分 -> 无分类编址(构成超网)

分类的IP地址

特殊的IP地址:

私有IP地址:

可用网络数:

  • A类: 排除0.x.x.x(代表A类本网络)和127.x.x.x
  • B类: 排除128.0.x.x(现已不用排除)
  • C类: 排除192.0.0.x(代表C类本网络)

我猜测是因为192.0.0不能用只浪费了一个C,而128.0不能用,却整整浪费了一个B,在IPv4地址紧缺的情况下无疑有些过于浪费了。而当时这个网络位全0的问题实际上在子网掩码出现后已经解决,并没有实际的意义,所以就重新把128.0这段地址放出来了。

网络地址转换

网络地址转换(Network Address Translation, NAT): 在专用网连接到因特网的路由器上安装NAT软件,安装了NAT软件的路由器叫NAT路由器【它至少要有一个有效的外部全球IP地址】。

子网划分和子网掩码

分类的IP地址的弱点:

  1. IP地址空间的利用率有时很低。
  2. 两级的IP地址不够灵活。

子网划分:

某单位划分子网后,对外仍表现为一个网络,即本单位外的网络看不见本单位内子网的划分。

子网掩码:

使用子网时分组的转发:

  1. 提取目的IP地址
  2. 是否直接交付
  3. 特定主机路由
  4. 检测路由表中有无路径
  5. 默认路由 0.0.0.0/0

无分类编址

原因:

  1. B类地址很快将分配完毕!
  2. 路由表中的项目急剧增长!

无分类编址(Classless Inter-Domain Routing,CIDR):

  1. 消除了传统的A类,B类和c类地址以及划分子网的概念。
  2. 融合子网地址与子网掩码,方便子网划分。

  1. CIDR把网络前缀都相同的连续的IP地址组成一个"CIDR地址块"
  2. 地址掩码就类似子网掩码

构成超网: 将多个子网聚合成一个较大的子网,叫做构成超网,或路由聚合。

最长前缀匹配: 使用CIDR时,查找路由表可能得到几个匹配结果,应选择具有最长网络前缀的路由。前缀越长,地址块越小,路由越具体。

IPv6

原因:

  1. 32位IPv4地址空间己分配殆尽
  2. CIDR、NAT等技术无法从根本上解决地址耗尽问题
  3. 改进数据报首部格式,从而快速处理/转发数据报
  4. 支持QoS > QoS(Quality of Service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。

数据报格式:

  • 优先级: 数据报的类别和优先级
  • 流标签: "流"是互联网络上从特定源点到特定终点的一系列数据报。所有属于同一个流的数据报都具有同样的流标签【相当于IPv4中的"标识"】。
  • 有效载荷长度: 扩展首部+数据的长度
  • 下一个首部: 指向扩展首部1
  • 跳数限制: 相当于IPv4的TTL
  • 源地址/目的地址: 128位
  • 扩展首部: 提供其他功能

IPv6对比IPv4:

  1. IPV6将地址从32位(4B)扩大到128位(16B),更大的地址空间。
  2. IPv6将IPv4的校验和字段彻底移除,以减少每跳的处理时间。
  3. IPv6将IPv4的可选字段移出首部,变成扩展首部,成为灵活的首部格式,路由器通常不对扩展首部进行检查,大大提高了路由器的处理效率。
  4. IPv6支持即插即用(即自动配置),不需要DHCP协议。
  5. IPv6首部长度必须是8B的整数倍,IPv4首部是4B的整数倍。
  6. IPv6只能在主机处分片,IPv4可以在路由器和主机处分片。
  7. ICMPv6: 附加报文类型"分组过大"
  8. IPv6支持资源的预分配,支持实时视像等要求,保证一定的带宽和时延的应用。
  9. IPv6取消了协议字段,改成下一个首部字段。
  10. IPv6取消了总长度字段,改用有效载荷长度字段。
  11. IPv6取消了服务类型字段。

地址表示:

  • 一般形式: 冒号十六进制记法
  • 压缩形式: 删掉每段前面的0;连续的零可以被一对冒号取代(只能一次)

地址类型:

  • 单播: 一对一通信,可做源地址+目的地址
  • 多播/组播: 一对多通信,可做目的地址
  • 任播(Anycast): 一对多中的一个通信(通常是最近的一个),可做目的地址

过渡策略:

  1. 双协议栈: 双协议栈技术就是指在一台设备上同时启用IPv4协议栈和IPv6协议栈。这样的话,这台设备既能和IPv4网络通信,又能和IPv6网络通信。
    • 如果这台设备是一个路由器,那么这台路由器的不同接口上,分别配置了IPv4地址和IPv6地址,并很可能分别连接了IPV4网络和IPv6网络。
    • 如果这台设备是一个计算机,那么它将同时拥有IPv4地址和IPv6地址,并具备同时处理这两个协议地址的功能。
  2. 隧道技术: 通过使用互联网络的基础设施在网络之间传递数据的方式。使用隧道传递的数据(或负载)可以是不同协议的数据帧或包。隧道协议将其它协议的数据帧或包重新封装然后通过隧道发送。

ARP协议

原因: 在实际网络的链路上传送数据帧时,最终必须使用MAC地址。

ARP协议: 完成主机或路由器IP地址到MAC地址的映射。

ARP高速缓存: 局域网内的IP地址与MAC地址的映射

ARP协议使用过程: 检查ARP高速缓存,有对应表项则写入MAC帧,没有则用目的MAC地址为FF-FF-FF-FF-FF-FF的帧封装并广播ARP请求分组,同一局域网中所有主机都能收到该请求。目的主机收到请求后就会向源主机单播一个ARP响应分组,源主机收到后将此映射写入ARP缓存(10-20min更新一次)。

ARP协议的典型情况:

  1. 判断目的IP是否在当前网段内
  2. 如果不在,发送报文到默认网关,然后跳回第一步;如果在,直接查询ARP高速缓存,发送报文到本地主机。

MAC地址转为IP地址使用RARP(Reverse Address Resolution Protocol, 逆地址解析协议),但目前已经淘汰,被DHCP替代

DHCP协议

主机的IP配置方法:

  1. 静态配置: 配置IP地址、子网掩码、默认网关
  2. 动态配置: DHCP

动态主机配置协议DHCP: 应用层协议,使用客户/服务器方式,客户端和服务端通过广播方式进行交互,基于UDP

DHCP提供即插即用联网的机制,主机可以从服务器动态获取IP地址、子网掩码、默认网关、DNS服务器名称与IP地址,允许地址重用,支持移动用户加入网络,支持在用地址续租。

流程:

  1. 主机广播DHCP发现报文: 试图找到网络中的服务器
  2. DHCP服务器广播DHCP提供报文: 服务器拟分配给主机一个IP地址及相关配置,先到先得
  3. 主机广播DHCP请求报文: 主机向服务器请求提供IP地址
  4. DHCP服务器广播DHCP确认报文: 正式将|P地址分配给主机

ICMP协议

网际控制报文协议ICMP: 支持主机或路由器进行差错(或异常)报告与网络探询

分类:

  1. 差错报文
  2. 询问报文

报文格式:

应用:

  1. PING: 测试两个主机之间的连通性,使用了回送请求和回答报文
  2. Traceroute: 跟踪一个分组从源点到终点的路径,使用了ICMP时间超过差错报告报文。
    • 方法: 从源主机发送数个TTL不等的数据报至目的主机

ICMP差错报文

报文数据部分:

报文类型(共5种):

  1. 终点不可达: 当路由器或主机不能交付数据报时就向源点发送终点不可达报文。【无法交付】
  2. 源点抑制: 当路由器或主机由于拥塞而丢弃数据报时,就向源点发送源点抑制报文,使源点知道应当把数据报的发送速率放慢。【基本不用。。】
  3. 时间超过:
    • 当路由器收到生存时间TTL=0的数据报时,除丢弃该数据报外,还要向源点发送时间超过报文。
    • 当终点在预先规定的时间内不能收到一个数据报的全部数据报片时,就把己收到的数据报片都丢弃,并向源点发送时间超过报文。
  4. 参数问题: 当路由器或目的主机收到的数据报的首部中有的字段的值不正确时,就丢弃该数据报,并向源点发送参数问题报文。
  5. 改变路由(重定向): 路由器把改变路由报文发送给主机,让主机知道下次应将数据报发送给另外的路由器(可通过更好的路由)。

不发送ICMP差错报文的情况:

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

ICMP询问报文

  1. 回送请求和回答报文: 主机或路由器向特定目的主机发出的询问,收到此报文的主机必须给源主机或路由器发送ICMP回送回答报文。【测试目的站是否可达以及了解其相关状态。】
  2. 时间戳请求和回答报文: 请某个主机或路由器回答当前的日期和时间。【用来进行时钟同步和测量时间】
  3. 掩码地址请求和回答报文【不再使用。。】
  4. 路由器询问和通告报文【不再使用。。】

路由算法

最佳路由: "最佳"只能是相对于某一种特定要求下得出的较为合理的选择而己。

分类:

  • 静态路由算法(非自适应路由算法): 管理员手工配置路由信息。
    • 算法分析:
      • 优点: 简便、可靠,在负荷稳定、拓扑变化不大的网络中运行效果很好,广泛用于高度安全性的室事网络和较小的商业网络。
      • 缺点: 路由更新慢,不适用大型网络。
  • 动态路由算法(自适应路由算法): 路由器间彼此交换信息,按照路由算法优化出路由表项。
    • 算法分析:
      • 优点: 路由更新快,适用大型网络,及时响应链路费用或网络拓扑变化。
      • 缺点: 算法复杂,增加网络负担。
    • 分类:
      • 全局性: 链路状态路由算法【OSPF】,所有路由器掌握完整的网络拓扑和链路费用信息。
      • 分散性: 距离向量路由算法【RIP】,路由器只掌握物理相连的邻居及链路费用。

分层次的路由选择协议:

  • 原因:
    1. 因特网的规模很大
    2. 许多单位不想让外界知道自己的路由选择协议,但还想连入因特网
  • 实现方法
    • 自治系统AS: 在单一的技术管理下的一组路由器,而这些路由器使用一种AS内部的路由选择协议和共同的度量以确定分组在该AS内的路由,同时还使用一种AS之间的路由协议以确定在AS之间的路由。一个AS内的所有网络都属于一个行政单位来管辖。
      • AS内部的协议--内部网关协议IGP: RIP、OSPF
      • AS之间的协议--外部网关协议EGP: BGP

RIP协议和距离向量算法

RIP(Routing Information Protocol, 路由信息协议): 一种分布式的基于距离向量的路由选择协议,是因特网的协议标准,最大优点是简单。要求网络中每一个路由器都维护从它自己到其他每一个目的网络的唯一最佳距离记录(即一组距离)。

距离: 通常为"跳数",即从源端口到目的端口所经过的路由器个数,经过一个路由器跳数+1。特别的,从一路由器到直接连接的网络距离为1。RIP允许一条路由最多只能包含15个路由器,因此距离为16表示网络不可达。【只适用于小互联网】

交换信息:

  1. 仅和相邻路由器交换信息【依据"边"】
  2. 路由器交换的信息是自己的路由表
  3. 每30秒交换一次路由信息,然后路由器根据新信息更新路由表。若超过180s没收到邻居路由器的通告,则判定邻居没了,并更新自己路由表

工作流程: 路由器刚开始工作时,只知道直接连接的网络的距离(距离为1),接着每一个路由器也只和数目非常有限的相邻路由器交换并更新路由信息。经过若干次更新后,所有路由器最终都会知道到达本自治系统任何一个网络的最短距离下一跳路由器的地址,即"收敛"。

RIP报文: 包含路由表的所有信息,是应用层协议,使用UDP传送数据【所以是应用层协议】

距离向量算法(Bellman-Ford算法的变体):

  1. 修改相邻路由器发来的RIP报文中所有表项
  2. 对修改后的RIP报文中的每一个项目,进行以下步骤:
    • R1路由表中若没有Net3,则把该项目填入R1路由表;
    • R1路由表中若有Net3,则查看下一跳路由器地址:
      • 若下一跳是X,则用收到的项目替换源路由表中的项目;
      • 若下一跳不是X,原来距离比从x走的距离远则更新,否则不作处理。
  3. 若180s还没收到相邻路由器x的更新路由表,刚把X记为不可达的路由器,即把距离设置为16。
  4. 返回第一步

RIP协议缺点: 当网络出现故障时,要经过比较长的时间(例如数分钟)才能将此信息传送到所有的路由器,"慢收敛"。

OSPF协议

OSPF协议: 开放最短路径优先协议, Open Shortest Path First

  • "开放"标明OSPF协议不是受某一家厂商控制,而是公开发表的;
  • "最短路径优先"是因为使用了Dijkstra提出的最短路经算法SPF。

分布式的链路状态协议:

  1. 和谁交换: 使用洪泛法向自治系统内所有路由器发送信息,即路由器通过输出端口向所有相邻的路由器发送信息,而每一个相邻路由器又再次将此信息发往其所有的相邻路由器。【广播】-> 最终整个区域内所有路由器都得到了这个信息的一个副本。
  2. 交换什么: 发送的信息就是与本路由器相邻的所有路由器的链路状态(本路由器和哪些路由器相邻,以及该链路的度量/代价一一费用、距离、时延、带宽等)。
  3. 多久交换: 只有当链路状态发生变化时,路由器才向所有路由器洪泛发送此信息。

最后,所有路由器都能建立一个链路状态数据库,即全网拓扑图。

链路状态路由算法:

  1. 每个路由器用问候分组(HELLO)发现它的邻居结点,并了解邻居节点的网络地址。【每隔十秒】
  2. 设置到它的每个邻居的成本度量(metric)。
  3. 构造数据库描述分组(DD),向邻站给出自己的链路状态数据库(LSDB)中的所有链路状态项目的摘要信息。
  4. 如果DD分组中的摘要自己都有,则邻站不做处理;如果有没有的或者是更新的,则发送链路状态请求分组(LSR)请求自己没有的和比自己更新的信息。
  5. 收到邻站的LSR分组后,发送链路状态更新分组(LSU)进行更新。
  6. 更新完毕后,邻站返回一个链路状态确认分组(LSAck)进行确认。
  7. 使用Dijkstra根据自己的链路状态数据库构造到其他节点间的最短路径。

只要有一个路由器的链路状态发生变化,都会泛洪发出LSU进行更新;更新完成后,其他站返回LSAck进行确认。

OSPF的区域: 为了使OSPF能够用于规模很大的网络,OSPF将一个自治系统再划分为若干个更小的范围,叫做区域。每一个区域都有一个32位的区域标识符(用点分十进制表示)。区域也不能太大,在一个区域内的路由器最好不超过200个。【虽然算法更复杂了,但是提高了运行效率】

OSPF分组: 可以看出,是传输层协议

其他特点:

  1. 每隔30min,要刷新一次数据库中的链路状态。
  2. 由于一个路由器的链路状态只涉及到与相邻路由器的连通状态,因而与整个互联网的规模并无直接关系。因此当互联网规模很大时,OSPF协议要比距离向量协议RIP好得多。
  3. OSPF不存在坏消息传的慢的问题,它的收敛速度很快。

BGP协议

BGP(边界网关协议, Border Gateway Protocol):

  1. 和谁交换: 与其他AS的邻站BGP发言人(一般是边界路由器)交换信息。
  2. 交换什么: 交换的网络可达性的信息,即要到达某个网络所要经过的一系列AS。
  3. 多久交换: 发生变化时更新有变化的部分。

当BGP发言人互相交换了网络可达性的信息后,各BGP发言人就根据所采用的策略从收到的路由信息中找出到达各AS的较好路由。

信息交换过程:

报文格式:

一个BGP发言人与其他自治系统中的BGP发言人要交换路由信息,就要先建立TCP连接,然后在此连接上交换BGP报文以建立BGP会话(session),利用BGP会话交换路由信息【应用层协议】

报文类型

  1. OPEN(打开)报文: 用来与相邻的另一个BGP发言人建立关系,并认证发送方。
  2. UPDATE(更新)报文: 通告新路径或撤销原路径。
  3. KEEPALIVE(保活)报文: 在无UPDATE时,周期性证实邻站的连通性;也作为OPEN的确认。
  4. NOTIFICATION(通知)报文: 报告先前报文的差错;也被用于关闭连接。

协议特点:

  • BGP支持CIDR,因此BGP的路由表也就应当包括目的网络前缀、下一跳路由器,以及到达该目的网络所要经过的各个自治系统序列。
  • 在BGP刚刚运行时,BGP的邻站是交换整个的BGP路由表。但以后只需要在发生变化时更新有变化的部分。这样做对节省网络带宽和减少路由器的处理开销都有好处。

路由协议对比

  • RIP是一种分布式的基于距离向量的内部网关路由选择协议,通过广播UDP报文来交换路由信息。
  • OSPF是一个内部网关协议,要交换的信息量较大,应使报文的长度尽量短,所以不使用传输层协议(如UDP或TCP),而是直接采用IP报文。
  • BGP是一个外部网关协议,在不同的自治系统之间交换路由信息,由于网络环境复杂,需要保证可靠传输,所以采用TCP。

IP组播

IP数据报的传输方式:

  • 单播: 用于发送数据包到单个目的地,且每发送一份单播报文都使用一个单播IP地址作为目的地址。是一种点对点传输方式。

  • 广播: 指发送数据包到同一广播域或子网内的所有设备的一种数据传输方式,是一种点对多点传输方式。

  • 组播/多播(Multicast): 当网络中的某些用户需要特定数据时,组播数据发送者仅发送一次数据,借助组播路由协议为组播数据包建立组播分发树,被传递的数据到达距离用户端尽可能近的节点后才开始复制和分发,是一种点对多点传输方式。

组播地址: IP组播地址让源设备能够将分组发送给一组设备。属于多播组的设备将被分配一个组播组IP地址(一群共同需求主机的相同标识)。

组播地址范围为224.0.0.0~239.255.255.255(D类地址),一个D类地址表示一个组播组。只能用作分组的目标地址。源地址总是为单播地址。

  1. 组播数据报也是"尽最大努力交付",应用于UDP,不提供可靠交付。
  2. 对组播数据报不产生ICMP差错报文。
  3. 并非所有D类地址都可以作为组播地址。

IP组播的两个情况: 局域网上的硬件组播、因特网范围内的组播

硬件组播: 同单播地址一样,组播IP地址也需要相应的组播MAC地址在本地网络中实际传送帧。组播MAC地址以十六进制值01-00-5E打头,余下的6个十六进制位是根据ip组播组地址的最后23位转换得到的。TCP/IP协议使用的以太网多播地址的范围是从01-00-5E-00-00-0001-00-5E-7F-FF-FF

这里存在一个漏洞: 有可能后面相同但前面不同担组播IP在一个局域网内,因此,需要在IP层利用软件进行过滤,把不是本主机要接收的数据报丢弃。

IGMP协议

IGMP协议: (网际组管理协议, Internet Group Management Protocol)一种用于管理多播组成员关系的协议。

功能:

  1. 多播组成员管理: IGMP主要用于主机和路由器之间的通信,以管理主机对多播组的成员关系。主机使用IGMP向路由器报告其对特定多播组的兴趣,而路由器利用这些信息来维护关于哪些主机位于哪些多播组中的状态。
  2. 多播组成员查询: 路由器可以通过向网络中的主机发送IGMP查询消息来了解哪些主机对哪些多播组感兴趣。这些查询消息有助于路由器了解网络上多播组成员的动态变化。
  3. 多播路由决策: IGMP协议的信息有助于路由器在网络中确定如何有效地传递多播流量。路由器使用IGMP的信息来构建多播组成员的状态表,然后使用这些信息来进行多播路由决策,确保多播流量仅传递到对其感兴趣的主机。

工作阶段:

  1. 某主机要加入组播组时,该主机向组播组的组播地址发送一个IGMP报文,声明自己要称为该组的成员。本地组播路由器收到IGMP报文后,要利用组播路由选择协议把这组成员关系发给因特网上的其他组播路由器。
  2. 本地组播路由器周期性探询本地局域网上的主机,以便知道这些主机是否还是组播组的成员。只要有一个主机对某个组响应,那么组播路由器就认为这个组是活跃的【一个响应了,其他就不会响应,以降低通信量】;如果经过几次探询后没有一个主机响应,组播路由器就认为本网络上的没有此组播组的主机,因此就不再把这组的成员关系(是否有组播组的成员)发给其他的组播路由器。

组播路由选择协议

组播路由选择协议目的是找出以源主机为根节点的组播转发树。

  • 构造树可以避免在路由器之间兜圈子。
  • 对不同的多播组对应于不同的多播转发树;同一个多播组,对不同的源点也会有不同的多播转发树。

三种算法:

  1. 基于链路状态的路由选择
  2. 基于距离-向量的路由选择
  3. 协议无关的组播(稀疏/密集): 建立转发树不一定要用相同的单播路由选择协议。

移动IP

移动IP技术: 移动结点(计算机/服务器等)以固定的网络IP地址,实现跨越不同网段的漫游功能,并保证了基于网络IP的网络权限在漫游过程中不发生任何改变。【设备移动,IP不变】

意义: 让移动设备到新地方后仍然能跟归属地通信(安全通知、服务控制)

现象: 漫游费(手机到了别人的地盘上使用时所产生的费用)

术语:

  • 移动结点: 具有永久IP地址的移动设备。
  • 归属代理(本地代理): 一个移动结点的永久“居所”称为归属网络,在归属网络中代表移动节点执行移动管理功能的实体叫做归属代理。
  • 永久地址(归属地址/主地址): 移动站点在归属网络中的原始地址。
  • 外部代理(外地代理): 在外部网络中帮助移动节点完成移动管理功能的实体称为外部代理。
  • 转交地址(辅地址): 可以是外部代理的地址或动态配置的一个地址。
  • 临时地址: 这是设备在当前所连接网络中动态分配的地址,反映了设备在新网络中的位置。

通信过程:

  1. 移动节点获得外部代理的转交地址【外部代理广播报文】。
  2. 移动节点通过外部代理发送注册报文给归属代理(包含永久地址与转交地址)。
  3. 归属代理接收请求,并将移动节点的永久地址和转交地址绑定(以后到达该归属代理的数据报且要发往移动节点的数据报将被封装并以隧道方式发给转交地址),并返回一注册响应报文。
  4. 外部代理接收注册响应,并转发给移动节点。

网络层设备

路由器

路由器是一种具有多个输入端口和多个输出端口的专用计算机,其任务是转发分组。

  • 路由选择处理机: 根据所选定的路由选择协议构造出路由表,同时经常或定期地和相邻路由器交换路由信息而不断地更新和维护路由表。
  • 交换结构: 根据转发表(路由表得来)对分组进行转发。
    • 若收到RIP/OSPF分组等,则把分组送往路由选择处理机
    • 若收到数据分组,则查找转发表并输出
  • 输入/出端口: 路由器中的输入或输出队列产生溢出是造成分组丢失的重要原因。

三层设备的区别:

  • 路由器: 可以互联两个不同网络层协议的网段。
  • 网桥: 可以互联两个物理层和链路层不同的网段。
  • 集线器: 不能互联两个物理层不同的网段。

SDN

网络层设备功能:

  • 分组转发: 达到路由器输入链路之一的数据报如何转发到该路由器的输出链路之一。
  • 路由选择: 控制数据报沿着从源主机到目的主机的端到端路径中路由器之间的路由方式。

组件分工:

  • 数据平面: 数据平面对于数据处理过程中各种具体处理转发过程。数据平面执行的主要功能是根据转发表进行转发,这是路由器的本地动作。
  • 控制平面: 控制平面用于控制和管理网络协议的运行,比如OSPF协议、RIP协议、BGP协议。

网络层架构:

  • 传统方法/每路由器法: 路由选择算法运行在每台路由器中,并且在每台路由器中都包含转发和路由选择两种功能。
    • 在一台路由器中的路由选择算法与其他路由器中的路由选择算法通信(通过交换路由选择报文),计算出路由表和转发表。
  • SDN(Software-Defined Networking, 软件定义网络)方法: 控制平面从路由器物理上分离。路由器仅实现转发,远程控制器计算和分发转发表以供每台路由器所使用。【一般由ISP或第三方管理】
    • 路由器通过交换包含转发表和其他路由选择信息的报文与远程控制器通信。因为计算转发并与路由器交互的控制器是用软件实现的,所以网络别"软件定义的"。
    • SDN控制平面由网络控制应用程序和SDN控制器和受控网络设备组成。SDN控制器又包括对于网络控制应用程序的接口(北向接口)、网络范围状态管理层(实现新协议)和通信层(南向接口、采用OpenFlow协议)。

传输层

功能:

  1. 传输层提供进程和进程之间的逻辑通信。
  2. 复用和分用
  3. 传输层对收到的报文进行差错检测【这样网络层就不用检测数据部分】
  4. 传输层的两种协议
    • TCP协议: 面向连接的传输控制协议
      • 传送数据前必须建立连接,传送后要释放连接
      • 不提供多播或广播服务
      • 提供可靠的面向连接的传输服务【开销增大,时延增大】
    • UDP协议: 无连接的用户数据报协议
      • 传送前不需要建立连接
      • 收到报文不需要给出确认

逻辑端口/软件端口: 端口是传输层的SAP(服务访问点, SAP),标识主机中的应用进程。

  • 端口号只有本地意义,在因特网中不同计算机的相同端口是没有联系的。
  • 端口号长度为16bit,能表示65536个不同的端口号。
  • 端口号分类:
    • 服务端-熟知端口号: 0~1023
    • 服务端-登记端口号: 1024~49151
    • 客户端端口号: 49152~65534【仅在客户进程运行时才动态选择】
  • 套接字: (主机IP地址,端口号) 唯一标识了网络中的一个主机和它上面的一个进程。
应用程序 FTP SSH Telnet SMTP DNS TFTP HTTP POP3 IMAP SNMP
端口号 21 22 23 25 53 69 80 110 143 161

UDP协议

UDP只在IP数据报服务之上增加了很少功能,即复用分用和差错检测功能。

主要特点:

  1. UDP是无连接的,减少开销和发送数据之前的时延。
  2. 数据大小限制在64k以内。
  3. UDP使用最大努力交付,即不保证可靠交付。【由应用层保证】
  4. UDP是面向报文的,适合一次性传输少量数据的网络应用。【UDP每次发送完整报文: 太长了要IP要分片降低效率,太短了IP报文首部太长效率也低】
  5. UDP无拥塞控制,适合很多实时应用。
  6. UDP首部开销小,只有8B【TCP20B】。

UDP报文格式

  • 如果不需要回复,源端口号可以为空
  • 分用时,找不到对应的目的端口号,就丢弃报文,并给发送方发送ICMP"端口不可达"差错报告报文。

UDP校验

TCP协议

特点:

  1. TCP是面向连接(虚连接)的传输层协议。
  2. 每一条TCP连接只能有两个端点,每一条TCP连接只能是点对点的。
  3. TCP提供可靠交付的服务,无差错、不丢失、不重复、按序到达。【可靠有序,不丢不重】
  4. TCP提供全双工通信。
    • 发送缓存: 准备发送的数据&己发送但尚未收到确认的数据
    • 接收缓存: 按序到达但尚未被接受应用程序读取的数据&不按序到达的数据
  5. TCP面向字节流: TCP把应用程序交下来的数据看成仅仅是一连串的无结构的字节流。 > 流: 流入到进程或从进程流出的字节序列。

TCP报文格式

  • 序号: 在一个TCP连接中传送的字节流中的每一个字节都按顺序编号,本字段表示本报文段所发送数据的第一个字节的序号。
  • 确认号: 期望收到对方下一个报文段的第一个数据字节的序号。若确认号为N,则证明到序号N-1为止的所有数据都己正确收到。【很像流量控制中的滑动窗口协议】
  • 数据偏移(首部长度): TCP报文段的数据起始处距离TCP报文段的起始处有多远,以4B位单位。
  • 控制位:
    • 紧急位URG: URG=1时,标明此报文段中有紧急数据,是高优先级的数据,应尽快传送,不用在缓存里排队,配合紧急指针字段使用【配合紧急指针使用】。
    • 确认位ACK: ACK=1时确认号有效,在连接建立后所有传送的报文段都必须把ACK置为1。
    • 推送位PSH: PSH=1时,接收方尽快交付接收应用进程,不再等到缓存填满再向上交付。
    • 复位RST: RST=1时,表明TCP连接中出现严重差错,必须释放连接,然后再重新建立传输连接;也可以用来拒绝连接。
    • 同步位SYN: SYN=1时,表明是一个连接请求/连接接受报文。
    • 终止位FIN: FIN=1时,表明此报文段发送方数据己发完,要求释放连接。
  • 窗口: 指的是发送本报文段的一方的接收窗口,即现在允许对方发送的数据量。
  • 检验和: 检验首部+数据,检验时要加上12B伪首部,第四个字段为6。
  • 紧急指针: URG=1时才有意义,紧急数据的字节数。
  • 选项: 最大报文段长度MSS、窗口扩大、时间戳、选择确认...

TCP连接管理

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

连接建立:

  1. 客户端发送连接请求报文段,无应用层数据。
    • SYN: SYN=1, seq=x(随机)
  2. 服务器端为该TCP连接分配缓存和变量,并向客户端返回确认报文段;允许连接,无应用层数据。
    • SYN-ACK: SYN=1, ACK=1, seq=y(随机), ack=x+1【ACK置1后,ack有效】
  3. 客户端为该TCP连接分配缓存和变量,并向服务器端返回确认的确认,可以携带数据
    • ACK: SYN=O, ACK=1, seq=x+1, ack=y+1

SYN洪泛攻击: 这种方式利用TCP协议的三次握手的特性。攻击者发送TCP SYN,而当服务器返回ACK后,该攻击者就不对其进行再确认,那这个TCP连接就处于挂起状态(半连接状态)。攻击者就对服务器发送非常大量的这种TCP连接,由于每一个都没法完成三次握手,所以在服务器上,这些TCP连接会因为挂起状态而消耗CPU和内存,最后服务器可能死机,就无法为正常用户提供服务了。解决办法有: TCP连接限制、IP黑名单、专业DDoS防御软件、SYN cookie【在没有维护连接状态的情况下完成连接的建立】

为什么非要三次握手,而不是两次? 需要协定两边的序号并确认

连接释放:

参与一条TCP连接的两个进程中的任何一个都能终止该连接,连接结束后,主机中的"资源"(缓存和变量)将被释放。

  1. 客户端发送连接释放报文段,停止发送数据,主动关闭TCP连接。
    • FIN=1, seq=u
  2. 服务器端回送一个确认报文段,客户到服务器这个方向的连接就释放了一一半关闭状态。
    • ACK=1, seq=v, ack=u+1
  3. 服务器端发完数据,就发出连接释放报文段,主动关闭TCP连接。
    • FIN=1, ACK=1, seq=w, ack=u+1
  4. 客户端回送一个确认报文段,再等到时间等待计时器设置的2MSL(最长报文段寿命)后,连接彻底关闭。【避免最后一个报文丢失】

TCP可靠传输

可靠: 保证接收方进程从缓存区读出的字节流与发送方发出的字节流是完全一样的。

TCP实现可靠传输的机制:

  1. 校验: 与UDP类似,唯一区别是伪首部中的协议标识
  2. 序号: 按字节编号
  3. 确认: 默认使用累计确认
  4. 重传:
    • 超时重传【超时的标准不是定值,而是采用自适应算法,动态改变重传时间RTTs(加权平均往返时间, 平滑往返时间)】
    • 快速重传: 每当比期望序号大的失序报文段到达时,发送一个冗余ACK(冗余确认),指明下一个期待字节的序号。连续收到三个冗余确认就重传。

TCP流量控制

定义: 控制发送速率,使接收方有足够的缓冲空间来接收每一个帧。

原因:

  1. 较高的发送速度和较低的接收能力的不匹配,会造成传输出错
  2. 除了比特出差错,底层信道还会出现丢包问题

机制: 在通信过程中,接收方根据自己接收缓存的大小,动态地调整发送方的发送窗口大小,即接收窗口rwnd(接收方 设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值

  • 接收窗口: 接收方根据接受缓存设置的值,并告知给发送方,反映接收方容量。
  • 拥塞窗口: 发送方根据自己估算的网络拥塞程度而设置的窗口值,反映网络当前容量。

解决零窗口可能存在的死锁: TCP为每一个连接设有一个持续 计时器,只要TCP连接的一方收到对方的零窗口通知,就启动 持续计时器。若持续计时器设置的时间到期,就发送一个零窗口探测报文段。接收方收到探测报文段时给出现在的窗口值。若窗口仍然是0,那么发送方就重新设置持续计时器。

TCP拥塞控制

拥塞: 网络中有许多资源同时呈现供应不足->网络性能变坏-> 网络吞吐量将随输入负荷增大而下降(对资源需求的总和>可用资源)

关键: 防止过多的数据注入到网络中【全局性】

相关算法:(假定: 数据单方向传送,而另一个方向只传送确认; 接收方总是有足够大的缓存空间,因而发送窗口大小取决于拥塞程度; )

  • 慢开始 与 拥塞避免
    • 传输轮次: 发送了一批报文段并收到它们的确认
    • 网络拥塞: 出现丢包现象
    • 拥塞窗口的变化时刻: 超时
  • 快重传 与 快恢复

应用层

功能: 对应用程序的通信提供服务

应用层协议定义:

  • 应用进程交换的报文类型,请求还是响应?
  • 各种报文类型的语法,如报文中的各个字段及其详细描述。
  • 字段的语义,即包含在字段中的信息的含义。
  • 进程何时、如何发送报文,以及对报文进行响应的规则。

常见应用层协议功能:

  • 文件传输、访问和管理: FTP
  • 电子邮件: SMTP、POP3
  • 万维网服务: HTTP
  • 查询服务: DNS
  • 远程作业登录: SSH

网络应用模型

客户/服务器模型(Client/Server)

服务器: 提供计算服务的设备。

  1. 永久提供服务
  2. 永久性访问地址/域名

客户机: 请求计算服务的主机。

  1. 与服务器通信,使用服务器提供的服务
  2. 间歇性接入网络
  3. 不与其他客户机直接通信

应用: Web、FTP、远程登录,电子邮件

P2P 模型(Peer-to-peer)

  1. 不存在永远在线的服务器
  2. 每个主机既可以提供服务,也可以请求服务
  3. 任意端系统/节点之间可以直接通讯
  4. 节点间歇性接入网络
  5. 可扩展性好
  6. 网络健壮性强

域名系统(DNS)

功能: 将域名转换为IP地址

域名

  • 顶级域名
    • 国家顶级域名: cn,us,uk
    • 通用顶级域名: com, net, org, gov; int, aero, museum, travel
    • 基础结构域名/反向域名: arpa【ip地址到域名的解析】
  • 二级域名
    • 类别域名: ac, com, edu, gov, mil, net, org
    • 行政区域名(用于我国各省、自治区、直辖市): bj, js
    • 其他可注册域名

DNS服务器:

  • 根域名服务器
  • 顶级域名服务器: 管理该顶级域名服务器注册的所有二级域名
  • 权限域名服务器: 由注册域名时选择的域名注册商提供
  • 本地域名服务器/默认域名服务器: 当一个主机发出DNS查询请求时,这个查询请求报文就发给本地域名服务器。【它提供了高速缓存(包括顶级域名服务器的IP)】

域名解析过程: (递归查询/迭代查询) 本地 | 根 -> 顶级 -> 权限

文件传输协议

常见协议:

  • 文件传送协议(File Transfer Protocol, FTP): 提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力。【基于TCP】
    • 工作模式
      • 主动方式使用TCP20端口,服务端主动【可能会被防火墙拦截】
      • 被动方式由服务器和客户端自行协商决定(端口>1024),客户端主动
    • FTP传输模式
      • 文本模式: ASCI模式,以文本序列传输数据:
      • 二进制模式: Binary模式,以二进制序列传输数据。
  • 简单文件传送协议(Trivial File Transfer Protocol, TFTP): 比较容易实现,面向小文件。【基于UDP】

电子邮件系统

简单邮件传送协议(SMTP)

SMTP规定了在两个相互通信的SMTP进程之间应如何交换信息。SMTP规定了14条命令和21种应答信息。

缺点:

  1. SMTP不能传送可执行文件或者其他二进制对象。
  2. SMTP仅限于传送7位ASCl码,不能传送其他非英语国家的文字。
  3. SMTP服务器会拒绝超过一定长度的邮件。

通用因特网邮件扩充MIME: 使电子邮件系统可以支持声音、图像、视频、多种国家语言等等。

邮局协议(POP3)

工作方式:

  • 下载并保留(在服务器)
  • 下载并删除

网际报文存取协议IMAP

IMAP协议比POP协议复杂。当用户的IMAP客户程序打开IMAP服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上。

IMAP可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分(先看正文,有WiFi的时候再下载附件)。

基于万维网的电子邮件

万维网与HTTP协议

万维网: (World Wide Web, WWW) 是一个大规模的、联机式的信息储藏所/资料空间,是无数个网络站点和网页的集合。用统一资源定位符URL唯一定位资源(文字、视频、音频...)

URL一般形式: <协议>://<主机>:<端口>/<路径> 【不区分大小写】

HTTP协议: 定义了浏览器(万维网客户进程)怎样向万维网服务器请求万维网文档,以及服务器怎样把文档传送给浏览器。

HTTP协议特点: 协议本身无状态,但可以通过cookie等来保持状态

HTTP协议连接方式:

HTTP报文格式:

状态码:

  • 1xx表示通知信息的,如请求收到了或正在处理。
  • 2xx表示成功,如接受或知道了。
  • 3xx表示重定向,如要完成请求还必须采取进一步的行动。
  • 4xx表示客户的差错,如请求中有错误的语法或不能完成。
  • 5xx表示服务器的差错,如服务器失效无法完成请求。

补充知识

防火墙

定义: (Firewall)是一种软件程序或硬件设备,可以用来屏蔽试图通过互联网攻击您的计算机的黑客、病毒和蠕虫【软件防火墙是安装在个人电脑上的程序,硬件防火墙是放置在您的网络和不受信任的互联网之间的设备】

任务: 调节不同信任级别的计算机网络之间的流量

分类:

  • 包过滤防火墙(Packet Filtering Firewalls):
    • 原理: 基于网络数据包的源地址、目标地址、端口号和协议类型等信息,决定是否允许或拒绝通过防火墙【通过访问控制列表(ACL)实现】
    • 特点: 简单、高效,但不能深入检查数据包的内容。
  • 状态检测防火墙(Stateful Inspection Firewalls):
    • 原理: 不仅考虑单个数据包的信息,还维护有关连接状态的信息表,允许或拒绝数据包的同时检查连接状态。
    • 特点: 具有更高的安全性,能够识别和处理复杂的网络连接。
  • 代理防火墙(Proxy Firewalls):
    • 原理: 在防火墙和内部网络之间充当中间人,代表内部系统与外部系统通信,检查和过滤流经它的所有数据。
    • 特点: 提供高级的内容过滤和应用层代理,但可能引入一些性能开销。
编写
预览