跳至主要內容
2024 春 互联网计算 课程笔记

2024 春 互联网计算 课程笔记

Neonscape大约 54 分钟notesComputer Network

2024 春 互联网计算 课程笔记

第一章 计算机网络与因特网

1 什么是主机?什么是端系统?

所有连接到因特网的设备都称为主机或端系统。

2 什么是分组?什么是协议?

当一台端系统要向另一台端系统发送数据时,发送端系统将数据分段并为每段数据加上首部字节。这样包含首部字节的的数据包称为分组。

协议(protocol)定义了在两个或多个通信实体之间交换的报文的格式和顺序,以及报文发送和/或接收一条报文或其他事件所采取的动作。

3 什么是客户、服务器?

客户和服务器是两种不同类型的主机;客户一般是桌面 PC、移动 PC 和智能手机等,而服务器通常是更为强大的计算机。

4 电路交换、分组交换及对比

通过网络链路和交换机传输数据有两种基本方法:分组交换和电路交换。

分组交换

报文分组(packet)通过通信链路和**分组交换机(packet switch)**传送。

分组交换机主要有两类: 路由器链路层交换机

大多数分组交换机在链路的输入端使用 存储转发传输(store-and-forward transmission)。这种机制使得交换机在开始分组的转发之前必须先接收到整个分组的内容

通过NN条速率均为RR的链路串联组成的路径发送一个长度为LL的分组,端到端时延为

dp2p=NLR d_{p2p} = N \frac{L}{R}

此外,在网络较拥堵的情况下,分组交换还可能出现因为传输速率较低而导致的排队时延,和分组交换机缓存有限而出现的丢包。

转发表

每台路由器都拥有一个转发表,其中存储了数个(IP 地址,出链路)对,用于搜索转发分组的出链路。

电路交换

电路交换在两个端系统进行通信期间,预留了通信所需要的资源(带宽等),并为之建立一条专门的连接。

电路交换网络中有两种复用形式, 频分复用(FDM)时分复用(TDM).

对于 FDM,链路为每条链接专用一个频段。这个频段的宽度称为带宽。

对于 TDM,时间被划分为固定大小的时间帧,每个时间帧又被划分为等大小的若干时隙。当建立连接时,网络为该条链接指定每一帧中一个特定的时隙。

分组交换与电路交换的对比

  • 分组交换
    • 优点
      • 带宽共享效率高于电路交换
      • 灵活性强
      • 比电路交换更加简单有效,成本更低
    • 缺点
      • 端到端时延不确定
      • 传输可靠性较低
  • 电路交换
    • 优点
      • 端到端时延很小
      • 连接稳定,不存在丢包、失序问题
      • 连接建立之后可以随时进行通信,实时性强
      • 既适用于传输模拟信号,也适用于传输数字信号
      • 设备控制比较简单
    • 缺点
      • 带宽共享效率低
      • 灵活性差
      • 成本较高

5 节点处理时延、排队时延、传输时延、传播时延、吞吐量

时延

  • 节点处理时延:路由器检查分组首部,并决定将分组导向何处所需要的时间(也可能包括检查错误的时间)
  • 排队时延:分组在等待需要使用的链路传输其他分组所需要的时间
  • 传输时延:分组在某条链路上传输所需要的时间(分组从路由器中被推出的时间按)
  • 传播时延:分组中每个比特从链路起点到下一个路由器传播的时间。传播速率一般接近光速。
  • 某个节点的总时延等于上述时延的总和

吞吐量

  • 瞬时吞吐量:在某一时刻某个主机接收文件的速率。
  • 平均吞吐量:某个主机在某一段时间内接收数据的量和时间的比值。
  • 一般来说,某台主机通过某条链路接收数据的吞吐量取决于链路各个环节吞吐量中的最小值(瓶颈链路)。

6 因特网协议栈

应用层

包含网络应用程序和它们的应用层协议,如 HTTP, SMTP, FTP, DNS 等。

应用层协议分布在多个端系统上;多个端系统上的应用程序之间使用应用协议交换信息分组。

这种位于应用层的信息分组称为 报文(message).

运输层

运输层在应用程序端点之间传送应用层报文。因特网中的运输协议有两种,TCP(确保传递,有流量和拥塞控制)和 UDP(不确保传递,没有流量和拥塞控制)。

这种位于运输层的信息分组称为 报文段(segment).

网络层

位于网络层的信息分组称为 数据报(datagram).

运输层协议会将运输层报文段和目的地址递交给网络层,由网络层负责运输。

网络层包括网际协议 IP。IP 协议定义了数据报中的各个字段和作用。

链路层

链路层负责将网络层的数据报从网络中的一个节点移动到路径上的下一个节点。

网络层负责端系统到端系统的可靠传输,而链路层负责一段链路上的两个节点之间的可靠传输。

位于链路层的信息分组称为 帧(frame).

物理层

物理层负责将链路层帧的每个比特从一个节点移动到下一个节点。

第二章 应用层

1 应用程序体系结构

现代网络应用程序通常有两种体系结构: 客户-服务器体系结构对等(P2P)体系结构.

客户-服务器体系结构

在 客户-服务器体系结构 中,有一个总是打开的主机,称为 服务器。它服务于来自其他许多主机(称为 客户 )的请求。

在客户-服务器体系结构中,

  • 客户之间并不直接互相沟通。
  • 服务器有一个固定、周知的 IP 地址。

采用客户-服务器体系结构的典型应用程序有 FTP, Web, Telnet 和电子邮件。

对等体系结构

在 对等体系结构 中,应用程序在 间断连接的主机对 之间使用直接通信。 这些主机对被称为 对等方(peer).

这种对等方通信不需要通过专门的服务器。

在应用对等体系结构的网络程序中,通常会有服务器被用于跟踪用户的 IP 地址;但用户到用户的数据不需要通过中间服务器发送。

采用对等体系结构的典型应用程序有 文件共享(BitTorrent),P2P 下载器,网络电话和视频会议。

P2P 体系结构的最大特性是 自扩展性

2 TCP 和 UDP 的区别

  • TCP 提供面向连接的服务和可靠的数据传输服务——一条 TCP 连接是 全双工(可同时双向传输) 且 可靠(保证送达) 的。
  • TCP 还提供拥塞和流量控制。
  • UDP 只提供一种不可靠的数据传输服务,它不保证报文能够到达接收方,也不保证接收方接受的报文都是有序的。

3 HTTP

HTTP(HyperText Transfer Protocol, 超文本传输协议) 是 Web 的应用层协议,也是 Web 的核心。

HTTP 由两个程序实现:一个客户程序和一个服务器程序,它们通过交换 HTTP 报文进行会话。

HTTP 使用 TCP 作为运输协议。

首先,HTTP 客户端先发起一个和服务器的 TCP 连接;在连接建立之后,客户会通过自身的 TCP 套接字向服务器发送 HTTP 请求报文和接收 HTTP 响应报文,服务器也通过自身的套接字接受请求报文,发送响应报文。

HTTP 本身是一个无状态协议;它不会保存关于客户的任何信息,而是使用 cookie 来保存用户的相关信息。

关于 URL

每个 URL 由两部分组成: 存放对象的服务器主机名对象的路径名

例如,https://yafengnju.github.io/InternetComputing/%E6%80%BB%E5%A4%8D%E4%B9%A0.pdf中,https://yafengnju.github.io就是主机名,而/InternetComputing/%E6%80%BB%E5%A4%8D%E4%B9%A0.pdf就是对象的路径。

4 因特网电子邮件

电子邮件系统一般由三部分组成:

  • 用户代理
  • 邮件服务器
  • 简单邮件传输协议(SMTP)

用户通过 用户代理 来将邮件发送到接收方的邮件服务器上,和从自己的邮件服务器上获取发给自己的邮件;

邮件服务器负责将发送方的报文发送给接收方的邮件服务器。

如果发送方的邮件服务器不能将邮件交付给接收方的邮件服务器(比如接收方的邮件服务器发生了故障),那么它会将这封邮件保存在一个报文队列中并再次尝试发送。如果多次发送均失败,发送方的邮件服务器则会通过电子邮件的形式通知发送方。

SMTP 的基本操作

  • 发送方调用邮件代理程序并提供接收方的邮件地址,编写报文,然后通过用户代理发送报文。
  • 发送方的用户代理将报文发送至发送方的邮件服务器,并被放在报文队列中。
  • 发送方的邮件服务器上的 SMTP 客户端发现了该报文,并创建一条到接收方邮件服务器的 SMTP 服务器的 TCP 连接。
  • 经过 SMTP 握手后,发送方服务器通过该 TCP 连接发送报文。
  • 接收方邮件服务器接收该报文,并放入接收方邮箱中。
  • 接收方调用用户代理阅读这条报文。

5 推协议和拉协议

如果一个协议中 TCP 连接是想要接收文件的主机发起的,那么这个协议就是拉协议。反之,如果一个协议中 TCP 连接是由想要发送文件的主机发起的,那么这个协议就是推协议。

6 域名系统(DNS)

一台因特网上的主机既可以用 IP 地址进行标识,也可以用 主机名 进行标识。

DNS 的作用:

  • 将便于识记的主机名转换为便于路由器使用的 IP 地址。
  • 提供主机别名(将多个主机名解析到同一个 IP 地址)。
  • 提供邮件服务器别名。
  • 负载分配(将对于部署在多个主机上的繁忙网站的请求解析到不同的主机上)。

DNS 由两部分组成:

  • 一个由分层的 DNS 服务器实现的分布式数据库
  • 一个使得主机能够查询上述数据库的 应用层协议

分布式 DNS 服务器

DNS 服务器一般分为如下几种:

  • 根 DNS 服务器
    • 提供顶级域 DNS 服务器的 IP 地址。
  • 顶级域(TLD) DNS 服务器
    • 负责各个顶级域名和国家的顶级域名,如.com, .org, .edu, .uk等。
    • 提供权威 DNS 服务器的 IP 地址。
  • 权威 DNS 服务器
    • 负责 某个组织机构公共可访问主机 的域名解析。
  • 本地 DNS 服务器
    • 不属于 DNS 服务器的层次结构
    • 每个 ISP 都拥有自己的本地 DNS 服务器。
    • 负责代理本地主机的 DNS 请求。

递归查询和迭代查询

  • 递归查询:每一级 DNS 服务器都以自身的名义去查询自己的上一级服务器,在得到 DNS 结果后将回复层层向下传递。
  • 迭代查询:某个主机(或服务器)不断地向不同的 DNS 服务器查询下一个需要查询的 DNS 服务器,直到获得 DNS 结果为止。

第三章 运输层

多路复用、多路分解

一台主机上可能有多个网络应用,每个应用都有一个或多个套接字来访问网络。

  • 多路复用:运输层从所有套接字中收集数据块,并为每个数据块封装首部信息后生成报文段,然后传递到网络层。
  • 多路分解:运输层从网络层接收到报文段之后,通过首部信息(源端口号、目的端口号)来将报文段中的数据交付到正确的套接字中。

UDP / TCP 套接字

一台主机上的一个 UDP 套接字由(源端口号,目的端口号)唯一标识,而 TCP 套接字则由(源端口号,源 IP 地址,目的端口号,目的 IP 地址)标识;(除非 TCP 报文段携带了创建初始链接的请求,)两个源 IP 地址不同的 TCP 报文将被发送到两个不同的 TCP 套接字。

UDP 报文的结构:


| 16-bit src port | 16-bit dest port |
|     UDP len     |     checksum     |
|               Data                 |

使用 UDP 而非 TCP 的原因

为什么有些应用使用 UDP 而不使用 TCP?

  • 在发送什么数据、何时发送的应用层控制,UDP 更加精细。
  • 一些不需要建立连接的应用适合使用 UDP。(降低延时——不用建立连接)
  • 一些不需要维护连接状态的应用适合使用 UDP。(不需要管理拥塞控制——可以支持更多流量)
  • UDP 的分组首部(8bytes)开销小于 TCP(20bytes)。

UDP 检验和的计算

UDP 首先将报文段按照 16 比特分为数个字,然后将所有的字相加。

注意:

UDP 计算检验和的时候使用循环加法,也就是将加法中首位溢出的部分加到尾部

假如有如下三个字:

0110011001100000
0101010101010101
1000111100001100

那么计算检验和的过程就是:

      0110011001100000
+     0101010101010101
----------------------
=     1011101110110101
+     1000111100001100
----------------------
=    *0100101011000010
~     (取反)
----------------------
=     1011010100111101

// *: 发生了溢出,将溢出的1加到末尾

因此最后的检验和值(checksum)是1011010100111101

接收方接收到含有检验和的报文之后,按照同样的方式将所有的字相加。因为检验和在计算的时候进行了取反,所以正确的计算结果应当全部为 0。

如果 UDP 检测到了报文段发生错误,则它将丢弃该报文段。

注意:UDP 的检验和无法校验偶数位的错误。

TCP 的肯定确认、否定确认与自动重传请求协议

  • 肯定确认:接收方在确认接收信息无误后发送一条肯定信息,表明确认信息收到。
  • 否定确认:接收方在接收到模糊不清/有错误的信息后发送一条否定信息,表明需要重新传输该信息。
  • 自动重传请求协议(ARQ):基于上述两种重传机制实现的可靠数据传输协议。

具体来说,ARQ 中有三种协议功能来处理比特差错:

  • 差错检测(包括检验和等方法) // TODO:差错检测方法
  • 接收方反馈(包括 ACK(肯定确认)和 NAK(否定确认))
  • 重传

停等协议、比特交替协议

  • 停等协议:发送方发送一个分组后将停止发送并等待接收方的 ACK / NAK。
  • 比特交替协议:
    • 是一种停等协议
    • 加入了分组序号以区分重传和正常传输
    • 加入了定时器(冗余风阻)功能以解决丢包问题

回退 N 步

回退 N 步协议(GBN)将所有分组分为 4 部分:


|已发送、已确认|已发送、还未确认|可发送、还未发送|不可发送|

其中,已发送、还未确认可用、还未发送 的分组数量之和不能超过某个特定数值 N。 这个数值被称为 窗口长度;GBN 协议也因此经常被称为 滑动窗口协议.

当出现超时事件时,GBN 协议将回退到 出现超时的分组 ,并从该分组开始 重传所有已经发送的分组

在使用 GBN 协议的传输中,接收方会丢弃所有失序分组。

GBN 的缺陷:有时可能会导致大量的重传(当发送窗口和时延都较大时)。

选择重传

在使用选择重传协议的传输中,接收方会逐个确认被正确接收的分组,并缓存失序的分组直到所有丢失分组都被收到为止。

选择重传也使用一个滑动的窗口来限制分组的发送,但不同的是选择重传的窗口起始位于第一个已发送但未收到确认的分组;发送窗口中可能会同时存在已经确认了的分组、已发送但还未确认的分组和可用但还未发送的分组。

在选择重传中,每个分组都有自己的逻辑定时器,并在定时器触发后只重传该分组。

关于滑动窗口大小

在流水线传输协议中,一般窗口大小应当小于等于序号空间的一半(以避免接收方将重传的序号当成新分组的序号(进行模运算之后)).

// TODO

TCP 发送数据的过程

对于发送方来说,TCP 会将应用程序发送来的数据存入握手时建立的发送缓存中,并定期从发送缓存中取出数据,包装成 TCP 报文并传递到网络层。

TCP 一次性从缓存中取出的数据量受限于 最大报文段长度(Max Segment Size),而 MSS 又通常根据最初确定的 本地主机发送的 最大链路层帧长度,即 最大传输单元(Max Transmission Unit). 二者之间一般的关系是 MSS + 40 (TCP/IP 首部长度) = MTU.

对于接收方来说,TCP 会将接收到的 TCP 报文段提取出数据并放置在该 TCP 连接的接收缓存中,供应用程序取用。

TCP 报文段结构

TCP 报文段的组成如下:

|Src Port Number| Dest Port Number|
|              Seq                |
|        Acknowledge Number       | // 用于接收方发给发送方时标志 “期望收到的下一字节的序号”。
|Header Len|Reserved|*|Recv Window| // 接收窗口用于流量控制。
|    Checksum   | Urgent Data Ptr |
|            Options              | // 可选、变长;一般为空。
|             Data                |

*: 标志字段(flags)。包括ACK(确认字段有效), RST, SYN, FIN(用于连接建立和拆除), CWR, ECE(明确拥塞通告), URGPSH。在实践中,紧急数据指针、URGPSH并不使用。

关于序号

注意 TCP 连接是全双工的;也就是说,双方可以同时发送和接收数据。因此,从一方到另一方的传输和反向的传输 可能使用不同的序号

流量控制、拥塞控制

流量控制是一个速度匹配服务:将发送方的发送速率和接收方的接收速率相匹配。

拥塞控制则是指发送方的行为因 IP 网络的拥塞而被遏制。

TCP 的三次握手

两台主机建立 TCP 连接的过程如下:

  • 首先,客户端的 TCP 向服务端 TCP 发送 SYN 报文段
    • 这个报文段中不包含应用数据,但 SYN标志为 1
    • 客户还将随机选择一个初始序号(client_isn)并放置在序号字段中。
  • 来自客户端的 SYN 报文段到达服务器后,服务器会为该 TCP 链接分配 TCP 缓存和各个变量,并向客户端发送 SYNACK 报文段
    • SYNACK 报文段中不包含应用层数据,但
      • SYN标志为 1
      • 确认号会被置为 client_isn + 1.
      • 服务器会随机选择自身的初始序号(server_isn)并放置在序号中。
  • 客户端收到 SYNACK 报文段后,为该 TCP 链接分配缓存和变量,并发送对 SYNACK 报文段的确认。
    • 该确认报文中,确认字段为server_isn + 1.
    • SYN标志为 0(连接已经建立)。

TCP 的拥塞控制

一个 TCP 连接会维护如下几个变量:

  • LastByteRead:接收方从缓存读出的最后一个字节的编号。
  • LastByteRcvd:接收方放入缓存的最后一个字节编号。
  • rwnd: 接收窗口。
  • LastByteAcked:发送方收到确认的最后一个字节的编号。
  • LastByteSent:发送方发送的最后一个字节的编号。

以上变量满足如下关系:

  • LastByteRcvd - LastByteRead <= RcvBuffer (禁止缓存溢出)
  • rwnd = RcvBuffer - (LastByteRcvd - LastByteRead) (接收窗口 = 接收方缓存剩余空间)
  • LastByteSent - LastByteACKed <= rwnd (发送方保证不造成接收方缓存溢出)

此外,发送方额外维护一个变量cwnd(拥塞窗口),并引入如下规则:

LastByteSent - LastByteACKed <= min {rwnd, cwnd}

假设接收方缓存大小无穷大,则上述规则约束了 TCP 发送方在每个往返时间(RTT)中最多发送cwnd字节的数据——发送数据的速率大约是 cwnd / RTTB/s.

以下条件会被发送方判断为出现丢包(标志此时链路已经出现拥塞)。

  • 超时
  • 收到 三个冗余 ACK (一个初始 ACK 和三个重复的 ACK)

TCP 的拥塞控制算法按照以下原则进行:

  • 出现丢包事件意味着出现拥塞,此时应当降低发送速率。
  • 接收到一个(非冗余的)确认报文段意味着“一切顺利”,此时应当增加发送速率。
  • TCP 将不断增加传输速率,直到出现丢包才减少。

1 慢启动

当一条 TCP 连接开始时,cwnd 通常被设置为一个较小的值(如一个 MSS),并为每个被确认的报文段将 cwnd 增加一个 MSS。

注意:这种增长方式是指数而非线性的(每次增加上次发送的报文段数量的 MSS)。

出现一个由超时指示的丢包事件, TCP 发送方就将cwnd重置为 一个 MSS ,并将另一个变量ssthreshold(慢启动阈值)设置为cwnd / 2(出现丢包前的最大 cwnd 的一半)。

此后,当 cwnd 到达或超过ssthreshold的值时,结束慢启动并转移至拥塞避免模式。

2 拥塞避免

当进入拥塞避免模式后,TCP 在每个 RTT 时间内 只会将cwnd增加一个 MSS。(按照 时间 增加,区别于慢启动阶段按照 确认数量 增加)。

当出现 由超时指示的丢包 时,TCP 将把 cwnd 设置为一个 MSS,并将ssthreshold更新为 发生丢包前cwnd的一半,然后进入快速恢复状态。

当出现 由 3 个冗余 ACK 指示的丢包 时,

  • TCP Reno 仅将cwnd的值 减半 (并为 3 个已经接收到的 ACK 加上 3 个 MSS),并将ssthreshold更新为 发生丢包前cwnd的一半,然后进入 快速恢复 状态。
  • TCP Tahoe 将cwnd再次设置为一个 MSS,将ssthreshold更新为 发生丢包前cwnd的一半,并进入 慢启动 状态。

3 快速恢复

在进入快速恢复时,TCP 会将cwnd设为 (ssthreshold + DuplicateACKs * MSS),然后立即重传它认为丢失的报文。

此后,每当收到一次对于上述报文的冗余 ACK(说明之前发送了其他的报文且被接收了),就将cwnd增加一个 MSS。

维持上述状态,直到收到一个对新的报文段的 ACK,转入拥塞控制模式。

第四章 网络层:数据平面

网络层数据平面和控制平面的作用与区别?

  • 数据平面:数据平面功能是 每一台路由器的功能——决定到达路由器输入链路的数据报应当如何转发,被转发到哪条输出链路。
  • 控制平面:控制平面功能是 整个网络范围的逻辑——控制数据报从源主机到目的主机的端到端路径中选择路由的方式。

转发和路由选择

转发和路由选择都是网络层的功能。

  • 转发:当一个分组到达路由器的某一条输入链路时,该路由器必须将这个分组移动到适当的输出链路。将分组从输入链路端口移动到输出链路端口的动作称为转发。
  • 路由选择:当分组从发送方流向接收方时,网络层必须决定这些分组所采用的路径——计算这些路径的算法被称为路由选择算法,确定选择的路由的过程被称为路由选择。

路由器的组成

路由器主要由如下组件组成:

  • 输入端口
    • 终结入物理链路的物理层功能。
    • 和入链路远端的数据链路层交互,以执行数据链路层功能。
    • 查找转发表,决定路由器的输出端口
  • 交换结构
    • 将路由器的输入端口连接到它的输出端口
  • 输出端口
    • 存储从交换结构接收的分组
    • 在输出链路上传输这些分组
    • 当一条链路为双向链路,输入端口和输出端口通常成对出现在同一线路卡上
  • 路由选择处理器
    • 执行控制平面功能
      • 在传统路由器中,执行路由选择协议;
      • 在 SDN(软件定义网络)中,负责与远程控制器通信,接收远程控制器计算的转发表项,并在输入端口安装这些表项。

最长前缀匹配规则

路由器使用 最长前缀匹配规则 来将目的地址和转发表中的地址进行匹配。

// TODO:添加更多信息

三种交换方式

  • 经内存交换
    • 在早期路由器中使用
    • 当某个分组到达输入端口时,向 CPU 发送中断。CPU 将该分组复制到内存中,从中提取目的地址,查找适当的输出端口,并将分组复制到输出端口的缓存中。
    • 不能同时转发两个分组——共享系统总线一次只能传输一个分组。
  • 经总线交换
    • 在这种方法中,输入端口通过一根共享总线直接传送到输出端——总线将分组转发到所有输出端口,但只有有特定标签的输出端口会保存该分组。
    • 总线中同时只能存在一个分组。
  • 经互联网络交换
    • 对于具有 N 个输入和输出端口来说的路由器,交换结构采用 2N 条相互垂直且相交的总线,并在交叉点采用交换结构控制器开启和闭合。
    • 可以并行转发多个 目的端口不同的 分组,是 非阻塞的

分组调度

  • 先进先出(FIFO)
    • 简单的将所有分组按照到达次序排队并依次转发;如果队列已满,则丢弃最新到达的分组。
  • 优先权排队
    • 在该规则下,到达输出链路的分组被分类放入不同优先级的输出队列。当需要传输分组时,路由器会从非空的优先级最高的队列中选择一个分组并传输。
    • 非抢占式优先权排队 中,分组的传输一旦开始,就不能被打断(即便是优先权更高的分组)。
  • 循环排队
    • 在该规则下,分组被放入不同编号的队列中;调度器会在这些队列之间循环提供服务,且不允许链路在仍有待传输分组时保持空闲。
  • 加权公平排队
    • 所有分组被放入分配了不同权值的队列中
    • 调度器会保证用于服务权值为w队列的时间占比为 w / w_total

IPv4

IP 地址

每个 IPv4 地址长度为 32bit,按照字节分隔。

例:

十进制记法:10.54.33.110
二进制记法:00001010 00110110 00100001 01101110

子网

我们通常会将主机和路由器的端口分开,产生几个互相隔离的网络岛,并用接口连接这些隔离网络的端点。每个被隔离的网络都是一个子网。

IP 编址会为子网分配一个形如xxx.xxx.xxx.xxx/yy的地址,代表着该子网中的所有端系统的 IPv4 地址都具有相同的前 y 位前缀(已经给出)。y 也被称为子网掩码,意味着 32 比特中左 y 位定义了子网地址。

无类别域间路由选择(Classless InterDomain Routing)

因特网一般采用 CIRD 来分配地址。

当使用子网寻址时,形如a.b.c.d/x的 32 比特的地址会被划分为两部分,其中第一部分具有x个比特。

一个组织通常会被分配一段连续的地址(也就是共享相同前缀的一段地址)。 当组织外的主机想要向组织内的一个地址转发数据报时,只需要考虑该地址的前 x 个比特即可。

动态主机配置协议 (Dynamic Host Configuration Protocol)

DHCP 允许连接到子网的主机被自动分配一个固定/随机的地址且不需要手动配置。

一台主机使用 DHCP 获取地址需要四个步骤:

  • DHCP 服务器发现
    • 客户向整个网络广播 DHCP 发现报文
  • DHCP 服务器提供
    • DHCP 服务器收到发现报文后,同样使用广播地址 向客户发送 DHCP 提供报文(因为可能该子网中存在多个 DHCP 服务器)。 DHCP 提供报文中包含:
      • 发现报文的事务 ID
      • 向客户推荐的 IP 地址
      • 网络掩码
      • IP 租用期
  • DHCP 请求
    • 客户从(收到了 DHCP 提供报文的)多个 DHCP 服务器中选择一个,并向其发送 DHCP 请求报文来回显(前文中)配置的参数。
  • DHCP ACK
    • 服务器向客户发送 DHCP ACK 报文来确认参数正确。

网络地址转换 (Network Address Translation)

NAT 普遍应用于 分配的 IP 地址不够子网中所有设备使用 的情景。

在一个使用 NAT 的网络中,存在着一个 NAT 使能路由器。整个 NAT 网络上只有该路由器拥有广域网侧的 IP 地址。所有子网中的分组经过该 NAT 使能路由器,使用同一个广域网 IP 地址向外发送。

工作原理:

  • 子网内的主机 A 为一个数据报指派了端口号 x,并将该数据报发送至 LAN 中
  • NAT 路由器接收到该数据报,为其指派一个新端口号 y,将源 IP 替换为自身广域网一侧的接口地址,并向广域网发送。
    • 通过这种方式,NAT 路由器产生了一个端口号->子网IP地址+子网端口号的 NAT 转换表。
    • NAT 路由器最多可支持 6 万多个设备(共有 6 万多个端口)。
  • web 服务器发送一个回复数据报,目的 IP 是 NAT 广域网一侧的 IP,端口号为 y
  • NAT 路由器接收该数据报后,将目的 IP 地址和端口号根据 NAT 转换表中的数据重写并发送到家庭网络中。

IPv4 向 IPv6 迁移中的 建隧道 (tunneling) 方法

假如两个使用 IPv6 的节点要使用 IPv6 数据报,通过 IPv4 路由器互联的中间网络交互,我们将两台 IPv6 路由器之间所有的 IPv4 路由器的集合称为一个 隧道

在隧道口,IPv6 节点将 IPv6 数据报放在一系列 IPv4 数据报的 数据字段 中,并通过 IPv4 路由器组成的隧道传输。

在隧道末尾,IPv6 节点在确定收到的 IPv4 数据报载荷中有一个 IPv6 数据报(协议号字段为 41)后,将该 IPv6 数据报取出,再转发。

第五章 网络层:控制平面

每路由器控制、逻辑集中式控制(转发表、流表的维护)

  • 每路由器控制
    • 在每台路由器中都运行一种路由选择算法,每台路由器都包括转发和路由选择功能。
    • 每台路由器中都含有一个路由选择组件,用于和其他路由器中的路由选择组件通信,以计算转发表的值。
  • 逻辑集中式控制
    • 存在一个逻辑集中式控制器,负责计算并分发转发表给每台路由器使用。
    • 可以执行多种功能。

路由选择算法(链路状态算法、距离向量算法)

我们将网络表示成有权的无向图,其中节点代表路由器,边代表物理链路,边的权重代表物理链路的长度。

那么,我们往往需要寻找两个节点之间的最小开销路径(最短路问题)。

路由选择算法可以按照算法的集中式/分散式来划分。其中集中式使用全局的网络知识来计算路径——算法在开始之前必须知道整个网络的状态;而在分布式中,路由器以迭代、分布式的方法计算出最短路径, 每个节点只需要直到何其直接相连的链路的信息即可工作

集中式算法的代表是 链路状态算法 (Link State), 分散式算法的代表是 距离向量算法 (Distance Vector)

链路状态算法 (Dijkstra 算法)

Dijkstra 算法分为以下几个步骤:

    1. 初始化
    • 初始化未访问节点列表N为除原点外的所有节点。
    • 初始化距离列表dis[],源点dis[u] = 0, 其他dis[x] = inf.
    • 对于 u 的每一条相邻边(u, v, w), 初始化dis[v] = w.
    1. N中选择dis最小的节点k.
    1. 对于k的每个邻居m,若dis[k] + w(k, m) < dis[m], 则令dis[m] = dis[k] + w(k, m).
    1. 在遍历完k的邻居后,将kN中取出。
  • 重复 1 ~ 3 直至N为空集。

距离向量算法

距离向量算法 对于每个节点x,维护:

  • 一个距离向量dis
    • 其中dis[y]代表节点y到节点x的预估最短距离。
    • 与 x 通过边(x, y, w)直接相连的节点 y 的最短距离为w.
  • 每个邻居的距离向量.

在距离向量算法中,每个节点定期向周围所有直接相连的节点发送自身的距离向量。每当节点 x 从任意一个邻居 v 接收到距离向量dis_v时,它做如下更新:

对于任意一个节点 y,dis_x[y] = min{dis_v[y] + c(x, v)}

当 x 的距离向量因为上述更新而改变后,x 将向每个邻居都发送自己更新后的距离向量。

原理

x 需要知道的其实只是到y的最短路径上的 下一跳节点;因此,只需要接收 x 的邻居的距离向量即可。

自治系统内部的路由选择算法:OSPF

在实践中,一般将相当规模的路由器组织进一个 自治系统 (AS) 中。在 AS 内部运行的路由选择算法称为 自治系统内部路由选择协议, 其中一种是 OSPF。

在 OSPF 中,每台路由器都在本地运行一个 Dijkstra 算法来确定以自身为根的最短路径树,并在链路状态发生变化时用 OSPF 报文广播链路状态信息。此外,即便链路状态没有发生变化,路由器也会定时广播链路状态信息。

BGP

BGP (Border Gateway Protocol) 是自治系统间路由选择协议的一种。

BGP 将分组路由到一个特定的前缀(一个子网 / 子网集合)。因此,在 BGP 路由器中,转发表的形式为(前缀, (路由器某个接口的)接口号)

BGP 提供如下服务:

  • 从邻居 AS 获得某前缀是否可达的信息。
  • 确定转发到某个前缀的最佳路由。

在 BGP 中,路由器之间使用一条半永久 TCP 连接交换路由选择信息。每条这样的连接及所有通过该连接发送的 BGP 报文称为 BGP 连接

跨越两个 AS 的 BGP 连接称为 外部 BGP 连接 (eBGP) , 在同一个 AS 内部的 BGP 连接称为 内部 BGP 连接 (iBGP)

使用 BGP 通告前缀

当路由器使用 BGP 通告前缀时,它会在前缀中包含 BGP 属性:

  • AS-PATH:当前这个前缀已经通过的所有 AS 的(编号)列表。
    • 如果一台路由器在AS-PATH中看到了自己的 AS,那它将拒绝通告该前缀(防止环路)。
  • NEXT-HOPAS-PATH起始的路由器接口的 IP 地址。

BGP 路由选择算法

  • 热土豆路由选择
    • 从 AS 间协议(OSPF,...)学习到可以经过多个网关到达前缀 x
    • 使用 AS 内部协议的路由选择信息(Dijkstra)来决定到上一步中每个网关的最低开销
    • 选择具有最低开销的网关
    • 从转发表确定通往最低开销网关的接口 I, 并在转发表中加入表项(x, I).
    • 主要思想是:尽量减少自身在 AS 内部的开销,而无视 AS 外部的开销——因此它是一种自私的算法。
  • 路由器选择算法
    • 用于当到目的前缀有多条路径时,选择一条路径。
    • 每条路径额外具有一个 本地偏好 属性。
    • 选择步骤:当仅剩余一条路径时停止。
      • 从所有可用的路径中选择具有最高本地偏好属性的路径。
      • 从上一步选择的路径中进一步选择具有最短 AS-PATH 的路径。
      • 从上一步选择的路径中使用热土豆路由选择。
      • 从上一步选择的路径中使用 BGP 标识符来选择路由。

SDN 体系结构的关键特征

  • 基于流的转发
    • 分组的转发工作能够基于运输层、网络层、链路层等任意层首部中任意数量的首部字段值进行。
  • 数据平面和控制平面分离
    • 数据平面由交换机组成,相对简单、快速;控制平面由服务器及决定和管理交换机流表的软件组成。
  • 网络控制功能位于交换机的外部
    • 采用 控制应用程序-服务器-交换机 的三级模式。
  • 网络可编程
    • 可以执行多种功能,如决定端到端路径、访问控制、负载均衡等。

因特网控制报文协议 (ICMP)

ICMP 被用于在 主机和路由器之间 彼此沟通 网络层 的信息,通常用于差错报告(不可达,...)等。

网络管理的关键组件

  • 管理服务器:一个运行在网络管理工作站上的、有人参与的、管理网络活动的应用程序。
  • 被管理设备:所有位于被管理的网络中的联网设备。
    • 其中含有多个被管理对象;每个被管理对象都是 被管理设备中 硬件 的实际部分(网卡等)和用于这些组件的配置参数。
  • 管理信息库 (MIB):收集被管理设备中每个被管理对象的关联信息,如被丢弃的 IP 数据报数量、软件版本信息等。
  • 网络管理代理:运行在被管理设备中的一个进程。
    • 和管理服务器通信并根据命令在被管理设备中采取本地动作。
  • 网络管理协议:运行在管理服务器和被管理设备之间的协议。
    • 允许管理服务器查询被管理设备的状态,并经过管理代理在被管理设备上采取行动。
    • 允许被管理设备通过管理代理向管理服务器通告异常事件。

简单网络管理协议 (SNMP)

一个用于 在管理服务器和管理代理之间 传递 网络管理控制和信息报文应用层 协议。

包含 请求响应(用于查询/修改某被管理设备的 MIB 值) 和 陷阱 (用于向服务器通告某被管理设备的异常情况)。

第六章 链路层和局域网

节点、链路

  • 节点(node):所有运行链路层协议的任何设备(主机、路由器、交换机、WiFi 接入点等)。
  • 链路(link):沿着通信路径连接相邻节点的通信信道。

链路层提供的服务

  • 成帧
    • 将网络层数据报用 链路层帧 封装起来,准备进行发送。
  • 链路接入
    • 使用 媒体访问控制(MAC) 协议规定 帧在链路上传输的规则
  • 可靠交付
    • 保证无差错的将网络层数据报在链路层上移动。
    • 有些(差错率较低的)有线连接并不会提供可靠交付服务。
  • 差错检测和纠正
    • 链路层的发送节点会在链路层帧中包含差错检测比特,以让接收节点进行差错检查。
    • 通常使用硬件实现。

链路层在何处实现?

链路层的主体是在网络适配器(网络接口卡)中实现的。

差错检测和纠正

奇偶校验

单位奇偶校验

最基本的奇偶校验是向数据中添加一位奇偶校验位。

在偶校验中,发送方只需要使包含校验位的数据比特之和为偶数即可,奇校验同理。

然而采用单个奇偶校验位无法检测出发生了一部分多个比特错误的情况(奇校验只能检测出发生了偶数个比特错误,偶校验只能检测出发生了奇数个比特的错误)。

二维奇偶校验

将发送的信息划分成 i 行 j 列,每一行、每一列都计算出和并附加在行、列的末尾(附加的行和列也需要计算检验和!)。

二维奇偶校验能够检测并矫正一位比特错误,能检测但不能矫正两位比特错误。

如同单位和二维奇偶校验这样在接收方检测(和纠正)错误的能力被称为 前向纠错(FEC)

检验和 (checksum)

检验和的计算方法参见这里

UDP 和 TCP 都需要对整个报文计算检验和。

检验和和循环冗余检测相比,提供了一种相对较弱的差错保护.

循环冗余检测 (Cyclic Redundancy Check)

CRC 编码是一种多项式编码。

CRC 编码采用如下方法检测错误:

  • 采用 CRC 编码的双方约定一个r位长的二进制数G(生成多项式).
  • 发送方用d位数据和G进行 二进制除等效于异或),得到余数为rem.
  • 发送方将rem附加至数据后,发送至接收方。
  • 接收方在收到数据后,将数据(和余数)除以G,检查余数。
  • 如果余数为 0 则说明没有出现差错,反之说明出现差错。

每个 CRC 标准都能检测小于等于r位比特的差错。

多路访问协议

当多个节点共享一个广播信道时,我们需要多路访问协议来协调它们之间的访问行为。

当多个节点同时传输帧时,传输的帧可能会在接收方发生 碰撞 (所有的节点同时接收到了多个帧);在这种情况下,几乎没有节点能正确的接收到传输的帧。

共有三种多路访问协议:信道划分协议、随机接入协议和轮流协议。

通过这些协议,我们应当能够在一条速率为R的广播信道上达成:

  • 当有M个节点同时发送数据时,每个节点的吞吐量为R / M(非瞬时速率)。
  • 协议是分散的,不会因为某个节点故障而导致系统崩溃。
  • 协议简单且实现容易。

信道划分协议

信道划分协议分为 时分多路复用(TDM)频分多路服用(FDM)码分多址(Code Division Multi Access).

时分多路复用、频分多路复用的基本原理见电路交换

TDM 的主要缺陷在于:

  • 节点的速率被限制在R / N(N 为复用数)。
  • 节点必须等待轮到它发送的时间段。

FDM 的主要缺陷在于:

  • 节点的速率被限制在R / N(N 为复用数)。

CDMA 对每个节点分配一个不同的编码,这些节点使用分配的编码来发送数据。

CDMA 具有较强的抗干扰性,且允许不同的节点同时传输。

CDMA 的具体工作原理见CDMA

CSMA / 载波侦听多路访问协议

CSMA 具有如下两个特征:

  • 载波侦听:它要求一个节点在开始传输之前先侦听信道是否被占用; 如果被占用则等待,直到它检测到一小段时间内没有传输。(CSMA)
  • 碰撞检测:它要求传输的节点在传输过程中不停的监听本信道,如果检测到另一个节点正在干扰自身的传输,则停止传输,等待一段随机时间后再进入尝试侦听状态。(CSMA/CD)

为什么 CSMA 会发生碰撞?

信息在信道中传输的时间(端到端信道传播时延)并不是零。因此,可能会出现一个节点检测信道没有被占用,开始传输;在该节点传输的信息还未到达另一个节点前,另一个节点也检测到“该信道没有被占用”,从而也开始在该信道中传输,从而造成碰撞。

CSMA 的工作步骤:

  • 适配器从网络层获得数据报,准备链路层帧并放入缓存中。
  • 如果适配器侦听到信道空闲,开始传输帧。
  • 在传输过程中,持续检测是否有来自其他使用该信道的适配器的能量。
  • 如果适配器传输完了整个帧而为检测到其他能量,则该帧完成传输;反之终止传输。
  • 在终止后,适配器等待一个时间量,然后继续传输。

MAC 地址

MAC 地址的长度通常为 6 个字节,每个字节表示为一对十六进制数。

例:34-6F-24-E9-D3-CF

地址解析协议(ARP)

ARP 为位于同一个子网中的主机和路由器接口解析 IP 地址(到对应的 MAC 地址)。

每台路由器/主机都在内存中保存一个 ARP 表,其中包含 IP 地址到 MAC 地址的映射关系。每个 ARP 表项还包含一个寿命值(TTL),指示了从 ARP 表中删除该表项的时间。

如果发送方的 ARP 表中没有目的 IP 地址对应的表项,则发送方将会使用 ARP 协议解析该地址:

  • 构造一个 ARP 查询分组,包含发送方、接收方的 IP 地址和 MAC 地址,并将该帧发送到子网中。
    • 查询分组的接收方 MAC 地址应该是广播地址(FF:FF:FF:FF:FF:FF).
  • 该 ARP 分组会被子网上的所有主机接收到;每台主机都会检测自身的 IP 地址是否与该分组中的接收方 IP 地址相等。
  • 检测到相等的主机会构造一个响应 ARP 分组,并发送给查询主机。
  • 查询主机接收到响应 ARP 分组,并更新自身的 ARP 表。

交换机和路由器的区别

  • 交换机是第二层(链路层)的分组交换机,路由器是第三层(网络层)的分组交换机。
  • 交换机是即插即用的,而路由器不是。
  • 交换机只需要处理第二层的链路层帧,因此具有较高的分组过滤和转发速度,而路由器需要处理到第三层的网络层分组,因此处理时间较长,转发速率较慢。
  • 交换网络的活跃拓扑限制为一棵生成树,而网络层的分组并不会。
  • 交换网络并不会对广播风暴(因为误配置导致的链路循环)做任何限制,而路由器则有广播风暴控制功能。

多协议标签交换技术

多协议标签交换技术(Multi Protocol Label Switching) 是用于 改善 IP 路由器转发速度 的技术;

其主要思想是在 保留 根据目的地 IP 数据报转发 的基础设施的同时, 当可能时 通过 选择性的标识数据报 并 允许路由器 基于固定长度的标签转发数据报 来提高速度。

MPLS 技术通常会在链路层帧中(在以太网首部和 IP 首部之间)加入 MPLS 首部,其中包括:

  • 标签
  • 实验(3bit)
  • S(1bit)
  • TTL

加入 MPLS 首部的链路层帧只能在两个 MPLS 使能路由器(称为 标签交换路由器)之间发送。

数据中心网络的等级拓扑

小型数据中心通常只需要一台边界路由器(连接因特网)、一台负载均衡器和机架(搭载主机)。

大型数据中心通常应用路由器和交换机等级结构:(以下列表的顺序是从顶层向底层)

  • 边界路由器(连接互联网)
  • 接入路由器
  • 第一层交换机 (连接负载均衡器)
  • 第二层交换机
  • TOR(机架顶部)交换机
  • 机架(多台主机)

第七章 无线网络和移动网络

基本概念

  • 无线主机:运行应用程序的端设备。主机本身可能移动,也可能不移动。
  • 无线链路:无线主机连接到基站/另一台无线主机的通信链路。
  • 基站:在无线网络中负责和无线主机发送和接收数据,并协调多个与其相关联的无线主机的传输。
    • 和基站“相关联”指的是:
      • 主机位于基站的无线通信覆盖范围内。
      • 主机使用基站来中继主机和更大范围网络之间的数据。

基础设施模式、自组织网络

和基站相关联的主机通常被称为 以基础设施模式运行——因为所有网络服务都由基站提供。

反之,在自组织网络中,无线主机并没有这样的基础设施相连。

多径传输、信噪比

多径传输:电磁波的一部分受到物体、地面等的反射,导致这部分电磁波在发送方和接收方 以不同路径传播,从而使得接收信号变得模糊的现象 称为 多径传输。

信噪比(Signal-to-Noise Ratio, SNR):设备 收到的信号 和 噪声强度 的相对测量,单位为分贝。

有如下公式:

SNR=lgAsignallgAnoise20 SNR = \frac{\frac{\lg{A_{signal}}}{\lg{A_{noise}}}}{20}

隐藏终端问题

现在有三个终端 A, B, C. 其中,AC 的信号范围都覆盖了 B,但 AC 互相并不在对方的信号范围之内。

现在假设A正在向B传输。由于C并不在A的信号范围内,C会认为信道空闲,从而也开始向B传输,导致AC的传输在B处发生碰撞。

这种现象被称为 隐藏终端问题

CDMA

在 CDMA 中,每个数据比特(在这里定义为 1 / -1)都需要乘以一串编码的比特再进行发送。

接收方在接收到传输之后,会使用同样的编码再次乘以传输数据以得到原始信号。

这串编码的变化速率通常比数据比特的变化速率快得多——它被称为码片速率。

例:

data:    -1 1
encoding:     1 1 1 -1 1 -1 -1 -1
transmission: -1 -1 -1 1 -1 1 1 1 | 1 1 1 -1 1 -1 -1 -1
decoded:      -1 -1 -1 -1 -1 -1 -1 -1 | 1 1 1 1 1 1 1 1 => -1 1

在 CDMA 中,定义按这种方式每传输一个数据比特所需要的时间为 1 比特时隙

在仔细选择 CDMA 编码的基础上,CDMA 可以同时接收两个发送方的数据。(假设两个发送方的传输信号是加性(-1 + 1 = 0)的)

例:

data1:        -1 1
data2:        1 1
encoding1:    1 1 1 -1 1 -1 -1 -1
encoding2:    1 -1 1 1 1 -1 1 1
encoded1:     -1 -1 -1 1 -1 1 1 1 | 1 1 1 -1 1 -1 -1 -1
encoded2:     1 -1 1 1 1 -1 1 1 | 1 -1 1 1 1 -1 1 1
transmission: 0 -2 0 2 0 0 2 2 | 2 0 2 0 2 -2 0 0
decoded1:     0 -2 0 -2 0 0 -2 -2 | 2 0 2 0 2 2 0 0 => -1 | 1
decoded2:     0 2 0 2 0 0 2 2 | 2 0 2 0 2 2 0 0 => 1 | 1

被动 / 主动扫描

802.11 标准要求所有无线接入点周期性的主动发送 信标帧, 其中包含 SSID 和 MAC 地址。

终端扫描信道、监听信标帧的过程被称为 被动扫描

终端也可以进行主动扫描:主动向范围内的所有 AP 广播 探测帧;AP 在接收到探测帧之后会发送一个 探测响应帧

CSMA/CA 的工作原理

CSMA / CA 是 802.11 的随机访问协议,使用碰撞避免(CD)和链路层确认/重传方案(ARQ).

CSMA / CA 的工作步骤如下。

  • 1 如果站点检测到信道空闲,则经过一个 分布式帧间时间间隔(DIFS) 后发送该帧。
  • 2 否则,选取一个随机回退值(fallback),并在侦测到信道空闲时递减该值;
  • 3 当计数值减为 0 时,站点发送整个数据帧。
  • 4 如果站点收到确认,则该帧发送完毕。
  • 5 如果要发送第二个帧,重新从第二步开始。如果未收到确认,进入第二步并从更大的范围中选取回退值。

4G LTE 架构的部件

4G LTE 网络大致分为两部分:E-UTRANEPC.

  • E-UTRAN: 负责UE和核心网之间的无线接入。
    • UE: 用户网关——指用户的无线设备。
    • eNodeB: 无线电网络控制器。
      • 数据平面:在UEP-GW之间经过 LTE 无线接入网转发数据报。
      • 控制平面:代表 UE 处理注册和移动性信令流量。
  • EPC:负责UE和外部网络之间的连接和数据传输。
    • P-GW:分组数据网络网关
      • UE 分配 IP 地址,保证服务质量的实施
      • 在从/向 UE 转发流量时,执行数据报的封装/解封装。
    • S-GW:服务网关
      • 是数据平面移动性锚点。
      • 所有来自 UE 的流量都将通过 S-GW 转发到 P-GW
      • 执行收费/记账功能和流量拦截。
    • MME:移动性管理实体
      • 代表位于其控制中的 UE,执行连接和移动性管理。
      • HSS 接收 UE 订购信息。
    • HSS:归属地用户服务器
      • 包含 UE 信息(包括漫游接入、服务质量配置文件、鉴别信息)

到移动设备的间接 / 直接路由

  • 归属网络:一个移动节点的“永久居所”。实际中通常为 SIM 卡提供商的网络。
  • 归属代理:在归属网络中,代表移动节点执行移动管理功能的路由器。
  • 外部网络:移动节点当前所在的、非归属网络的网络。
  • 外部代理:在外部网络中代表移动节点执行移动管理功能的路由器。

移动设备会在归属网络中有一个 永久地址

当移动设备离开归属网络并加入外部网络时,外部代理会为它分配一个临时的 转交地址 (Care-Of Address, COA)——有时又称 外部地址。同时,外部代理会告诉归属代理,移动节点在其网络中并具有给定的 COA。

间接路由选择

通信者和移动设备通信的步骤:

  • 通信者会将数据报寻址到移动节点的永久地址,并把数据报发送至网络中——节点的移动性对于通信者是完全透明的
  • 归属代理监视到达的数据报,并截获寻址为移动节点的数据报。
  • 归属代理将截获的数据报 封装在一个新的数据报中,并转发给外部代理。
  • 外部代理拆封数据报,并将原始数据报转发给移动节点。
  • 移动设备可以用自己的永久地址作为源地址,直接将自己要发送的数据报寻址到通信者。

三角路由选择问题

间接路由选择存在低效问题——即便通信者和移动设备之间可能存在一条效率更高的路径,法网移动节点的数据报也需要先转发到归属代理,再发往外部网络。

直接路由选择

在直接路由选择中,通信者和移动节点的通信过程如下:

  • 通信者通过其所在网络中一个通信者代理(通过查询归属代理,使用 移动用户定位协议 )获取该节点的 COA。
  • 通信者代理使用隧道技术,直接将数据报发往移动节点的 COA。

移动设备如何在会话进行中向通信者告知更新后的 COA

我们将 首次发现移动节点 的外部网络中的外部代理称为 锚外部代理

每当移动节点到达一个新网络时,

  • 移动节点向新的外部代理注册
  • 移动节点通过新的外部代理向锚外部代理提供自己的新 COA。

通过这种机制,当锚外部节点收到一个发往已经离开的移动节点的数据报时,它将通过更新的 COA 向移动节点转发该数据报。

移动设备在基站之间切换的步骤

移动交换中心(MSC):是 GSM/CDMA 网络中的核心组件,控制着整个网络的通信和数据交换。

信令:用于在网络中的不同节点之间传递控制信息的一系列消息——区别于用户数据。

  • 旧基站通知被访问 MSC 即将进行切换,通知用户即将切换到的(可能的)基站。
  • 被访问 MSC 建立到新基站的路径,分配资源,并发出信令通知新基站即将出现切换。
  • 新基站分配并激活一个新信道共用户使用。
  • 新基站发出信令返回被访问的 MSC 和旧基站——此时已经建立了新基站到 MSC 的连接,应当告知用户接下来会发生切换。
  • 新基站向用户提供和基站关联所需的信息。
  • 用户被告知需要进行切换。
  • 用户和新基站交换报文以激活新的信道。
  • 用户向新基站发送切换完成报文,该报文被转发给被访问 MSC。
  • 沿旧基站的路径分配的资源被释放。

第八章 计算机网络中的安全

安全通信的四个性质

  • 机密性:只有发送方和希望的接收方能够理解报文的内容。
    • 需要对报文进行加密。
  • 报文完整性:通信内容再传输过程中不被改变。
  • 端点鉴别:发送方和接收方应该都能证实通信另一方的身份。
  • 运行安全性。

对称密钥系统、公开密钥系统及区别

加密的过程如下:

假设通信的两方是 A 和 B,两方都具有自己的密钥KAK_AKBK_B,并采用一定的加密算法对报文进行加密。

A 使用自己的密钥和加密算法对报文mm进行加密生成密文KA(m)K_A(m),并发送给 B;

B 使用自己的密钥和加密算法对密文进行解密KB(KA(m))=mK_B(K_A(m)) = m

  • 对称密钥系统(公钥系统):A 和 B 的密钥相同且秘密。
  • 公开密钥系统:使用一对(公钥,密钥),其中公钥为所有人所知,而密钥只有 A 和 B 知道.

RSA 算法的原理

RSA 算法基于以下式子:

(amodn)dmodn=admodn (a \mod n)^d \mod n = a ^ d \mod n

和一个结论:

如果ppqq是素数,且满足n=pqn = pqz=(p1)(q1)z = (p-1)(q-1),则

xymodn=xymodzmodn x^y \mod n = x^{y \mod z} \mod n

使用 RSA 算法加密传输内容的发送方需要先获取接收方的公钥。

RSA 算法的加密过程如下:(假设发送方发送一个由整数mm表示的比特组合,且满足m<nm < n

  • 选择两个大素数ppqq
    • ppqq的值越大越难以破解。
  • 计算n=pqn = pq, z=(p1)(q1)z = (p - 1)(q - 1).
  • 选择e<ne < ngcd(e,z)=1gcd(e, z) = 1.
  • 求一个数dd,使得edmodz=1ed \mod z = 1.
  • 接收方 B 的公钥KB+K_B^+(n,e)(n, e), 私钥KBK_B^-(n,d)(n, d).
  • 发送方计算c=memodnc = m^e \mod n,得到密文cc
  • 接收方计算m=cdmodnm = c^d \mod n,得到原文mm.

要证明上述过程成立,本质上是证明

medmodn=m m^{ed} \mod n = m

运用前述结论可得

medmodn=medmodzmodn=m1modn=m m^{ed} \mod n = m^{ed \mod z} \mod n \\ =m^1 \mod n \\ =m

密码散列函数的性质

在计算上不可能找到两个报文x,yx, y使得H(x)=H(y)H(x) = H(y)——也就是说,入侵者在计算上不可能找到其他报文来替换某个原报文。

数字签名的基本原理

数字签名可以用于证明文件创建者的身份。

签名者会使用自己的 私钥 KBK_B^- 来计算加密后的文档KB(m)K_B^-(m)

加密后的文档通过公钥再次解密KB+(KB(m))=mK_B^+(K_B^-(m)) = m便可以得到原文档mm

证明的有效性:

  • 无论是谁创建的加密文档,在创建过程中必定会使用私钥。
  • 私钥只有私钥的持有者知道。
  • 篡改后的文档无法还原出原文档。

因此,文件的创建者身份得到了验证。

鉴别协议及安全性

鉴别协议用于在网络通信中鉴别通信双方。

一种可能的鉴别协议:

  • A 向 B 发送身份。
  • B 选择一个不重数(在整个协议使用中不会出现第二次的数)R,并发给 A。
  • A 使用和 B 共享的对称密钥 K 加密 R,并发回给 B。
  • B 使用对称密钥解密信息,如果等于 R 则确认身份。

IPsec 协议族中的两个重要协议

  • AH(鉴别首部)协议:提供源鉴别和数据完整性服务,不提供机密性服务
  • ESP(封装安全性载荷)协议:提供源鉴别、数据完整性和机密性服务。

三类防火墙

防火墙包括三类:

  • 传统分组过滤器
    • 检查每个数据报,根据设定的规则决定是否丢弃
  • 状态分组过滤器
    • 使用连接表和规则来过滤分组。
    • 分组在满足规则后还需要证明自己属于某条连接的一部分。
  • 应用程序网关
    • 除了根据分组首部以外,还基于应用数据做决定。
    • 一个 应用程序特定的服务器。

入侵检测系统

入侵检测系统不仅能够检查所有通过它传递的分组的首部,还能执行 深度分组检查,检查分组所携带的应用数据;当它认为某个分组可疑时,它将拦截该分组,或是向管理员发出警告。

防火墙和入侵检测系统的区别

  • 防火墙是一种主动防御系统,而入侵检测系统是一种被动防御系统。
  • 防火墙控制流量,而入侵检测系统只检测流量,在发现异常时才采取行动。
  • 防火墙可能会妨碍合法的流量,而入侵检测系统不会。