# 计算机网络

计算机网络学习笔记,参考《计算机网络 - 自顶向下方法》。

# 计算机网络和因特网

这章内容涉及许多层,相当于一个大的概括,之后才会解析每个层次的内容。

# 计算机网络

# 因特网构成描述

因特网是一个世界范围的计算机网络,即它是一个互联了遍及全世界数十亿计算设备的网络,也被称为 “网中网”,我们现在使用的网络都是大网中的小网。

  • 接入网络的设备 —— 网络边缘

    网络边缘是靠近最终用户并直接连接到网络核心的子网。 网络边缘设备的示例包括 WiFi 接入点、带有配线间交换机的分支机构和个人计算机。

    • 与因特网相连的计算机和其他设备称为端系统(end system)也称为主机(host)
  • 通信链路(communication link)—— 接入网

    • 媒介:同轴电缆、铜线、光纤、无线电频谱
    • 传输速率:带宽 bps
    • 分组:一台端系统向另一台端系统发送数据时,发送端系统将数据分段,并为每段加上首部字节,由此形成的信息包用计算机网络的术语称为分组
  • 分组交换机(packet switch)—— 网络核心

    • 路由器(router)和 链路层交换机(link-layer switch)
  • 协议(protocol):控制发送、接收信息。比如,TCP, IP, HTTP 等等。每个层次有每个层次的协议。

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

  • 网络标准(因特网标准)

    • 由 ** 因特网工程任务组(IETF)** 制定网络标准
    • IETF 的标准文档称为请求评论(RFC)

    image-20221024162602370

# 因特网服务描述

此处有提到套接字接口(socket interface)。

  • 为应用程序提供服务的基础设施

    即用户使用应用。

  • 应用程序编程接口

    即编写应用。

# 网络边缘(Network Edge)

与因特网相接的计算机及其他设备位于因特网的边缘,称为端系统

端系统 = 主机,可以被划为下面两种:

  • 客户(client)
  • 服务器(server):比如有企业存储大量数据的大型数据中心(data centers)

# 接入网

接入网是将端系统物理连接到其边缘路由器(edge router)的网络。边缘路由器是端系统到任何其他远程端系统的第一台路由器。

image-20221024164006130

# 家庭接入:DSL、电缆、FTTH、拨号和卫星

这说的啥我也不知道,直接跳也没什么问题,可以去看看原书籍上的说明。

  • 数字用户线(digital subscriber line,DSL

    利用电话线路接入网络。其中 ADSL 是非对称的数字用户线,基本都用 ADSL,因为一般下行的数据量都远大于上行的数据量,所以要设计成非平衡的链路。

    采用独占频分多路复用来传输。因为利用的是原有的电话线路,所以需要将 DSL 传输的网络信号(上行、下行)和电话信号通过频分多路复用来区分开来。

频段传输信号
0~4K电话语音线路
4K~50K上行信号
50K~1M下行信号

image-20221024164532140

上行:上传的速度。

下行:下载的速度。

一般下行速度大于上行速度。

  • 电缆因特网接入(cable Internet access)

    利用有线电视网接入网络。结构上,通过粗的同轴电缆接入社区,再用细的同轴电缆接入每家每户。

    采用共享频分多路复用来传输。

  • 混合光纤同轴电缆HFC

# 企业(家庭)接入:以太网和 WiFi
  • 以太网:使用双绞铜线与一台以太网交换机相连,速率可达到 100Mbps、1Gbps、10Gbps。
  • WiFi:IEEE802.11 技术无线 LAN,范围在几十米内。

# 物理媒体(Physical Media)

  • 导引型媒体(guided media):信号在固体媒体中传输,比如光缆、双绞铜线和同轴电缆。
  • 非导引型媒体(unguided media):电波在空气中传播,比如无线局域网或数字卫星频道。

# 网络核心(Network Core)

网络核心:由端系统的分组交换机和链路构成的网状网络。下图画出来的部分即使网络核心。

一共有三种交换方式:报文交换(很少使用)、分组交换和电路交换。

image-20221024202908744

  • 报文(message):报文包含协议设计者需要的任何东西。
  • 分组:源端系统向目的地发送报文,源将长报文划分为较小的数据块,称为分组
  • 在源和目的地之间,每个分组都通过通信链路和分组交换机(packet switch)传送。
  • 分组交换机:交换机有两类:路由器(router)和链路层交换机(link-layer switch)。
# 分组交换
  1. 存储转发传输(Store-and-Forward Transmission)

    分组交换报文交换都采用了存储转发的传输形式。但分组交换的存储转发以分组为单位,即交换机接收到整个分组后才能输出该分组的数据;而报文交换的存储转发单位为报文,需要交换机接收到整个报文后才能输出。

image-20221024211644524

传输相同大小的数据包,分组交换比报文交换更快。下面是分组交换传输 3L 大小的报文的时间流,报文分为 3 个大小为 L 的分组,根据分组交换原理,一共耗费了 4L/R 时间完成传输(即存储转发时延)。而如果使用报文传输同样的 3L 大小的报文则需要耗费 6L/R 时间。

zkxt9eo4fQqmLRV

  1. 排队时延(Queuing Delay)和分组丢失(Packet Loss)

    分组交换机有有一个输出缓存(output buffer,也称为输出队列(output queue)),分组可能会在分组交换机上排队等待输出,造成排队时延。

    分组交换机的缓存空间是有限的,所以在过于拥堵时会产生分组丢失(丢包)。到达的分组或已经排队的分组之一将被丢弃。

    image-20221026213332992

  2. 转发表(Forwarding Table)和路由选择协议(Routing Protocol)

    • 路由:分组中包括 IP 地址;
    • 转发:路由器中将目的地址映射为输出链路。

    每台路由器具有一个转发表,用于将目的地址(或目的地址的一部分)映射成为输出链路。

# 电路交换

电路交换网络中,在端系统见通信会话期间,预留了端系统间沿路径通信所需要的资源(缓存,链路传输速率)。

端到端连接(end- to-end connection):在发送数据之前,必须先在发送和接收两端建立端到端连接,并预留一部分带宽。而分组交换不预留,所以会造成排队和丢包。

D91fBHdvxo24MFT

  1. 频分多路复用(Frequency- Division Multiplexing, FDM)

    特点: 链路中的每条连接专用一个频段。

    带宽:在电话网络中,这个 频段的宽度通常为 4kHz (即每秒 4000 周期)。毫无疑问,该频段的宽度称为带宽(band-width)。

  2. 时分复用 (Time-Division Multiplexing, TDM)

    远距离传输会有衰减,所以考虑用数字信号进行传输。在时域上对信号进行采样,接收时再将采样信号恢复。

    TDM 在时域上被划分为固定的(frame),每帧又被划分为固定数量的时隙(slot),链路中的每条连接专用一个时隙。

    例如,如果链路每秒传输 8000 个帧,每个时隙由 8 个比特组成,则每条电路的传输速率是 64kbps。

image-20221026222450427

# 分组交换 & 电路交换对比

分组交换的性能优于电路交换,适用于随机数据,可以满足更多用户。

电路交换需要预留带宽,相当于固定了链路用户的数量。而分组交换不需要预留带宽,用户使用网络是有一定概率的,在一个时刻较多人使用的概率其实相对较低,所以一条链路可以给更多的用户使用。

分组交换不适合实时服务(例如,电话和视频会议),因为它的端到端时延是可 变的和不可预测的(主要是因为排队时延的变动和不可预测所致)。

电路交换适用于特殊情况,比如要保障传输数据能力。

# 网络的网络

网络结构是网中之网,具有层次结构。

  • ISP:ISP 分为许多层级,如第一层 ISP(tier-1 ISP)、区域 ISP(regional ISP)、接入 ISP(access ISP)。端系统通过接入 ISP 与因特网相连,全球的 ISP 通过各个层级相连,形成了互联网的互联。
  • 因特网交换点(Internet Exchange Point,IXP):由第三方公司创建,IXP 是一个汇合点,多个 ISP 在此处对等。

下图是现今的因特网,网络结构 5。

image-20221027162234415

# 分组交换网中的时延、丢包和吞吐量

我们肯定做不到在任意两个端系统之间随心所欲地瞬间移动数据而没有任何数据丢失,不止无法做到,我们还需要限制传送的数据量。计算机网络必定要限制在端系统之间的吞吐量(每秒能够传送的 数据量),在端系统之间引入时延,而且实际上也会丢失分组。

# 分组交换网中的时延概述
  1. 时延:分组从一个节点 (主机或路由器) 沿着这条路径到后继节 点 (主机或路由器),该分组在沿途的每个节点经受了几种不同类型的时延

    • 节点处理时延 (nodal processing delay):检查分组首部和决定将该分组导向何处所需要的时间是处理时延的一部分。

    • 排队时延 (queuing delay):在队列中,当分组在链路上等待传输时,它经受排队时延。

    • 传输时延 (transmission delay):将所有分组的比特推向链路 (即传输,或者说发射) 所需要的时间。

      用 L 比特表示该分组的长度,用 R bps (即 b/s) 表示从路由器 A 到路由器 B 的链路传输速率。例如,对于一条 10M bps 的以太网 链路,速率 R = 10M bps;对于 100M bps 的以太网链路,速率 R = 100M bpso 传输时延是 L/R。

    • 传播时延 (propagation delay):一旦一个比特被推向链路,该比特需要向路由器 B 传播。从该链路的起点到路由器 B 传播所需要的时间是传播时延。

      该比特以该链路的传播速率传播。该传播速率取决于该链路的物理媒体(即光纤、双绞铜线等),其速率范围是 2×1083×108m/S2\times 10^8-3\times10^8m/S, 这等于或略小于光速。

      以上时延总体累加起来是节点总时延 (tolal nodal delay)。

  2. 传输时延和传播时延的比较:传输时延路由器推出分组所需要的时间,它是分组长度和链路传输速率的函 数,而与两台路由器之间的距离无关。传播时延是一个比特从一台路由器传播 到另一台路由器所需要的时间,它是两台路由器之间距离的函数,而与分组长度或链路传 输速率无关。

# 排队时延和丢包

此处讨论的是以上时延中的排队时延。

排队时延很大程度取决于流量到达该队列的速率、链路的传输速率和到达流量的性质,即流量是周期性到达还是以突发形式到达

  1. 流量强度:令 a 表示分组到达队列的平均速率(a 的单位是分组 / 秒,即 pkt/s)。R 是传输速率,即从队列中推出比特的速率(以 bps 即 b/s 为单 位)。然后我们假设每个分组都是 L 个比特组成。我们可以求出比特到达队列的平均速率为 La bps(这里用 bps 为单位)即分组的比特乘上分组的到达速率就是比特的到达速率。假定该队列非常大,因此它基本能容纳无限数量的比特。比率 La/R 被 称为流量强度(traffic intensity)。

    如果 La/R > 1,则比特到达队列的平均速率超过从该队列传输岀去的速率。该队列趋向于无限增加,并且排队时延将趋向无穷大。因此,流量工程中的一条金科玉律是:设计系统时流量强度不能大于 1。

    如果 La/R1La/R\leq1到达流量的性质影响排队时延。例如,如果分组周期性到达,即每 L / R 秒到达一个分组,则每个分组将到达一个空队列中,不会有排队时延。另一方面,如果分组以突发形式到达而不是周期性到达,则可能会有很大的平均排队时延。(这里内容好多啊,我不想写了😭)

    image-20221027171121799

  2. 丢包

    因为该排队容量是有限的,随着流量强度接近 1,排队时延并不真正趋向无穷大。相反,到达的分组将发现 一个满的队列。由于没有地方存储这个分组,路由器将丢弃 (drop) 该分组,即该分组将会丢失 (lost) 。

    可以使用计算机网络书籍提供的网站将 Transmission rate 调低,然后 Emission rate 调高会出现队列一直增加:Queuing and Loss Interactive Animation (pearsoncmg.com)

    分组丢失的比例随着流量强度增加而增加。

    # 1.4.3 端到端时延

    此处说的是从源到 目的地的总时延。前面所说的是节点时延也就是单台路由器上的时延。

    在 Windows power shell 里可以尝试自己追踪一下 tracert xxx

    Linux 中的话需要可能需要安装 traceroute

    # 1.4.4 计算机网络中的吞吐量

    除了时延和丢包,计算机网络中另一个至关重要的性能测度是端到端吞吐量。

    例如,主机 A 到主机 B 跨越计算机网络传送一个大文件,也许是从一个 P2P 文件共享系统中的一个对等方向另一个对等方传送一个大视频片段。在任何时间瞬间 的瞬时吞吐量(instantaneous throughput)是主机 B 接收到该文件的速率(以 bps 计)。

    如果该文件由 F 比特组成,主机 B 接收到所有 F 比特用去 T 秒,则文件传送的平均吞吐量(average throughput.)是 F/T bps。

    串联链路吞吐量取决于瓶颈链路(bottleneck link)。

    Throughput=minThroughput=min

    image-20221028220549406

# 协议层次(Protocol Layer)及其服务模型

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

协议三大要素:

  • 语法(Syntax):每一段内容符合一定规则的格式。
  • 语义(Semantics):每一段内容需要代表某种意义,比如原地址部分的二进制到底是指哪个地址。
  • 同步(Timing):通信的过程,即每一段任务的执行顺序。

# 分层的体系结构

# 五层因特网协议栈

因特网协议栈由 5 个层次组成:物理层、链路层、网络层、传输层和应用层。因特网协议栈是一个理想模型。

下层为上层提供服务。越下面的层,越靠近硬件;越上面的层,越靠近用户。

image-20221028221645796

这些层都是在后面会解释,这里放一个大概的内容。

层次功能
应用层(Application Layer)支持网络应用,应用协议仅仅是网络应用的一个组成部分,运行在不同主机上的进程则使用应用层协议进行通信。位于应用层的信息分组称为报文(message)
传输层(Transport Layer)因特网的运输层在应用程序端点之间传送应用层报文。负责为信源和信宿提供应用程序进程间的数据传输服务,这一层上主要定义了两个传输协议,传输控制协议即 TCP 和用户数据报协议 UDP。运输层的分组称为报文段 (segment) 。
网络层(Network Layer)负责将数据报独立地从信源发送到信宿,主要解决路由选择、拥塞控制和网络互联等问题。
链路层(Link Layer)负责将 IP 数据报封装成合适在物理网络上传输的格式并传输,或将从物理网络接收到的帧解封,取出 IP 数据报交给网络层。
物理层(Physical Layer)负责将比特流在结点间传输,即负责物理传输。该层的协议既与链路有关也与传输介质有关。
# OSI 模型

OSI 模型由国际标准化组织(ISO)制定,实际并没有应用,只有理论。

OSI 模型由 7 层组成:应用层、表示层、会话层、传输层、网络层、数据链路层、物理层。

# 封装

在发送主机端:

  1. 应用层:一个应用层报文(application-layer message)被传送到运输层。下图中的 M。
  2. 运输层:接收报文 M,附上传输层首部信息 Ht(包括差错检测位信息等),构成 传输层报文段(transport-layer segment),将其传递给网络层;运输层报文段因此封装了应用层报文。
  3. 网络层:网络层增加了如 源 和 目的端系统地址 等网络层首部信息。
  4. 链路层:接收网络层数据段,附上链路层首部信息 Hl,构成 链路层帧(link-layer frame),将其传递给物理层;
  5. 物理层:负责比特流物理传输。

在每一层,一个分组具有两种类型的字段:首部字段有效载荷字段(payload field) 。有效载荷通常是来自上一层的分组。

接收端则是反方向从底向上。

image-20221029163640090

# 面对攻击的网络

# 坏家伙能够经因特网有害程序放入你的计算机中

恶意软件:它们能够进入并感染我们的设备。这些恶意软件可以做许多不正当的事情,包括包括删除我们的文件,安装间谍软件来收集我们的隐私信息,如社会保险号、口令和击键,然后将这些(当然经因特网)发送给坏家伙。(坏家伙太坏了😤)。

多数恶意软件是自我复制(self-replicating)的:一旦它感染了一台主机,就会从那台主机寻求进人因特网上的其他主机,从而形成新的感染主机,再寻求进入更多的主机。

僵尸网络:坏家伙可以利用僵尸网络控制并有效地对目标主机展开垃圾邮件分发或分布式拒绝服务攻击

病毒:病毒(virus)是一种需要某种形式的用户交互来感染用户设备的恶意软件。

蠕虫:蠕虫(worm)是一种无须任何明显用户交互就能进入设备的恶意软件。

# 坏家伙能够攻击服务器和网络基础设施

拒绝服务攻击(Denial-of-Service ((DoS) attack) ,DoS 攻击使得网络、主机或其他基础设施部分不能由合法用户使用

多数 Dos 攻击属于以下三种类型:

  • 弱点攻击。这涉及向一台目标主机上运行的易受攻击的应用程序或操作系统发送
    制作精细的报文。如果适当顺序的多个分组发送给一个易受攻击的应用程序或操
    作系统,该服务器可能停止运行,或者更糟糕的是主机可能崩溃。
  • 带宽洪泛。攻击者向目标主机发送大量的分组,分组数量之多使得目标的接入链
    路变得拥塞,使得合法的分组无法到达服务器。
  • 连接洪泛。攻击者在目标主机中创建大量的半开或全开 TCP 连接 (将在第 3 章中
    讨论 TCP 连接)。该主机因这些伪造的连接而陷入困境,并停止接受合法的连接。

分布式 DoS (Distributed DoS,DDoS),攻击者控制多个源并让每个源向目标猛烈发送流量。

image-20221029172315357

# 坏家伙能够嗅探分组

分组嗅探器(packet sniffer):记录每个流经的分组副本的被动接收机。

Wireshark 这个软件就是一种分组嗅探器。好,我们也可以成坏家伙了(不行)。

# 坏家伙能够伪装成你信任的人

生成具有任意源地址、分组内容和目的地址的分组,然后将这个人工制作的分组传输到因特网中,因特网将忠实地将该分组转发到目的地,这些数据是虚假的,但是接收方并不知道这些数据是虚假的,然后执行这些分组内容中的命令。

IP 哄骗(IP spoofing):将具有虚假源地址的分组注入因特网的能力被称为 IP 哄骗(IPspoofing),它只是一个用户能够冒充另一个用户的许多方式中的一种。

# 应用层(Application Layer)