0%

【Network#0x00】自顶向下笔记#Ch1

1.1 What is Internet

软硬件实现角度:各种各样的终端设备 end system通过线路和 packet switch 链接在一起,中间有一张大网——因特网核心。终端设备通过 ISP(Internet Service Provider)与这张大网连接在一起,ISP 之间也互相连接。
在 end system、packet switch 等网络设备上进行传输的,是遵守协议 Protocal的数据包,作为所有设备间的约定来规范网络上的数据形式。这些规则大部分由 IETF 制定,称为 RFCs,也有由 IEEE 等组织指定的标准。

功能角度:在终端的眼中,网络是提供服务和应用的基础设施。终端可以借助网络接口来使用或构建分布式应用。

1.2 The Network Edge

在网络的边缘,有各式各样的网络的终端设备,比如 PC、服务器、移动设备、以及越来越多的各式智能联网设备(The Internet Of Things),它们都可以被称为 host。
不过很多时候,这些 host 有着 client 或者 server 的差异。

1.2.1 Access Internet

接入网络 access internet 是指从终端设备到达第一个 router(edge router)的这一段网络,通常是 ISP 假设的。接入网络有很多物理实现:

Home Access

DSL(Digital subscriber line):在国内也叫做 ADSL(asymmetric 非对称),是一种复用电话线作为网络传输的技术。数字信号经过 DSL Modem 转换为高频声音信号,和相对低频的电话信号一起传输。在用户家里,有个 Splitter 会把两种信号分隔开或组合起来;在 ISA 那里(电话服务提供商兼 ISA)的 Central Office,也有称为 DSLAM 的设备来做这项工作。

Cable Internet Access:使用同轴线和光纤混合连接,是一种复用有线电视线的技术。数字信号经过 cable modem 转换为模拟信号,在 HFC hybrid fiber-coaxial 线路上传播,在 CMTS Cable modem termination systems 上再次转换为数字信号并进入网络。
数以百计甚至千计的家庭通过同轴线连到 Fiber node,再通过光纤连到 CMTS。

FTTH(Fiber to the home):光纤入户,纯粹的网络连接。在用户家里,数字信号经过 ONT 处理转换为光信号,很多户的信号在一个 Optical splitter 处汇总(分隔)后通过一条光纤连接到 CO 的 OLT,接入网络。

除了上面三种方式,还有面向偏远地区的卫星接入方式,以及和 DSL 技术一样但速度慢得多的拨号上网。

Access in Enterprise (and the Home): Ethernet and WiFi

企业内部会使用局域网 LAN Local Area Network,而以太网 Ethernet 是最广泛的局域网实现。
无线局域网 Wireless LAN 通常使用 IEEE802.11,也叫做 WiFi 技术。典型的家庭会使用 WLAN 和 Internet 的结合。

Wide-Area Wireless Access

广域无线接入,如 5G,基于分布于各处的基站来提供服务。

1.2.2 Physical Media

许多房子在建设的时候就会同时埋好铜线、同轴线、光纤,这样以后更换 ISP 接入方法的时候就不用重新装(线缆的价格比网络设备便宜得多)。

1.3 The Network Core

网络核心是及其复杂的,由包交换机(主要是 router 和 link-layer switch 两种)互相连接而成。

1.3.1 Packet Switching

包交换机有以下的特点:

  1. Store-and-Forward Transmission:接受完一个完整的数据包之后,再开始传输。这会使数据包在每个包交换器那边产生 L/R 的延迟,式中 L 表示数据包大小、R 表示线路的比特传输速度。
  2. Queuing Delay:对每个出口,包交换器都有个缓冲区,等待发送的数据包会在这里排队。等候的实践就叫做排队延迟。
  3. Packet Loss:超过缓冲区的数据包,包交换器会直接丢弃,造成丢包。这里体现了网络设计的 Best Effort 原则。
  4. Forwarding Table and Routing Protocals:路由器根据每个数据包的目的 IP 信息,查询 Forwarding Table 来决定向哪里转发数据包。Forwarding table 根据 routing protocal 路由协议来进行维护。

1.3.2 Circuit Switching

当今的 Internet,是一个分组交换的网络。电路交换在历史上曾是网络实现的有力的竞争者,但最后还是不敌分组交换技术。
电路交换的最大特点就是为两端的用户提供持续稳定的连接,不允许其他的用户借用其资源。

电路交换有两种实现方式,重点在于如何复用一根线缆来支持多个连接:

  1. FDM Frequency-division Multiplexing:每个连接独享一小段频谱;
  2. TDM Time-division Multiplexing:将整个时间轴分成一个个 Frame,有 N 个连接就把 Frame 切成 N 段 Slot,这样每个连接都会在每 Frame 时间段中占用线路 Slot 时间。

电路交换的最大缺陷在于:无法很好地利用起用户静默时段的线路资源(silent period);在用户数量大的时候性能比包交换差。具体例子参考书 p30.

1.3.3 A Network of Networks

网络核心的复杂性并非是最初设计带来的复杂性,而是不断发展而带来的复杂性。
最简单的网络显然是一个 ISP 统一全世界,所有终端都连接到这个 Global ISP 上。
但是这就造成了垄断,不利于市场的发展,于是由于市场因素有了多个竞争的 ISP。
国际性的 ISP 往往无法深入当地,因此很多地方有了本地的 Local ISP,比如上海电信。
国际性和本地的 ISP 形成了 Provider ISP 和 Client ISP 的关系,Provider ISP 会建立 PoP(Points of presence)以供 client ISP 接入。
为了防止有的连接从本地转到国际再转回本地,本地 ISP 之间会建立 IXP(Internet Exchange Point)来互相连接,加速网络。
一些大厂(Content Provider)为了给自己的服务加速,也会建立全球的网络,并连接到 tier1 ISP、IXP、access ISP 等处。

1.4 Delay, Loss, and Throughput in Packet-Switched Network

刚刚提到这是包交换器的三大特点(缺点),下面是对于它们的详细分析。

1.4.1 Overview of Delay in Packet-Switched Networks

考虑数据包在一个包交换器那边的延迟,可以分为四种:

  1. nodal processing delay:包交换器中的程序处理数据包并计算出其转发口所需要的时间,取决于路由器本身的计算性能。
  2. queuing delay:数据包在出口缓冲区中排队的时间,比较难以计算,取决于实际网络交通情况。
  3. transmission delay:数据包被装载到线路上,或者被完整接受所需要的时间(这两段时间是相同的)公式为 $L/R$.
  4. propagation delay:数据包在线路上传输的时间,由于所有的线缆信号传输速度都是光速量级($210^8m/s$ ~ $310^8m/s$),通常可以忽略这一延迟。

计算公式为:$d_{nodel}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$

注意 transmission delay 和 propagation delay 的区别。transmission delay 取决于传输技术所设计的比特速率(用多长的信息来表示一个 bit?),而 propagation delay 取决于线缆本身的材料。

1.4.2 Queuing Delay and Packet Loss

计算排队延时用到了一个指标 $La/R$,式中 L 表示平均包长度,a 表示包接受速率(包每秒),R 表示比特输出速率(比特每秒)。
平均的排队延时和 $La/R$ 之间成正相关,且后者越大斜率越大,到 $La/R$ 接近 1 时,平均的排队延时将会趋向无穷大。(根据 P40 的图看出……)

由于 La 和 R 其实都是设计者可以预计并控制的数字,设计者应该小心地设计网络设备来防止其比值过大导致排队甚至丢包。

1.4.3 End-to-End Delay

从一个终端到另一个终端,到底经过多少延迟?可以用这个公式来估算:
$d_{end-end}=N(d_{proc}+d_{trans}+d_{prop})$

为了实测延迟,可以使用 traceroute 工具,它会向路径上的每个节点发送并接受一个数据包,从而拿到到达每个节点的延迟。有趣的是,有时后面的节点反而延迟比前面的节点要小,这多是由于不可估算的排队延迟所造成的。

1.4.4 Throughout in Computer Networks

在下载大文件时,比起延迟我们更关心的是吞吐量,也就是下载软件显示的 Mb/s。
实际上,ISP 假设的核心网络是 over-provisioned 的,有着极高速的链路,很少会产生拥堵。
吞吐量主要受到两方面的限制:

  1. 整个链路中最慢的线路(一般是接入网络)
  2. Traffic 情况,即使是快速线路,在流量大的时候也会产生拥堵

1.5 Protocol Layers and Their Service Model

1.5.1 Layered Architecture

整个计算机网络系统是复杂的,但通过将系统划分层次的结构化方法,可以将局部复杂度大大降低的同时也使允许的总体复杂度增加,这就是网络的层次结构。

在网络的层次结构中,每一层都为其上的层提供一种服务(这叫做 Service Model),通过:

  1. 在本层内执行某些操作
  2. 使用其下一层所提供的服务
    通过一层一层服务的叠加,便最终有了丰富多彩的各种互联网应用。

互联网从设计时就采用这样的结构化设计,好处在于概念清晰、可以允许不同的实现(更易优化);但也有人批评这种做法可能出现多个层次之间有重复工作降低效率,或者不利于某些跨层次的操作(如在应用层需要更低层的数据)。

具体来说,Internet 协议栈分为五层:

  1. Application Layer
  2. Transport Layer
  3. Network Layer
  4. Link Layer
  5. Physical Layer
    每个协议都会在特定的层次上运行,类似于层次概念的实际实现,因此这个层次架构会被称为协议栈。
Application Layer

提供服务:取决于想象力
常见的协议:HTTP、SMTP、FTP、DNS
应用层数据包被称为 message。

Transport Layer

提供服务:可靠、有流量控制机制的数据传输(TCP)或不可靠的传输(UDP)
常见的协议:TCP、UDP
传输层数据包被称为 segment。

Network Layer

提供服务:将数据包从一个主机发往另一个主机
常见的协议:IP(only one)、routing protocal(很多种)
传输层数据包被称为 datagram。

提供服务:将数据包从链路一端发往另一端
常见的协议:Ethernet、WiFi
传输层数据包被称为 frame。

Physical Layer

提供服务:将 bit 从链路一端发往另一端
常见的协议:铜线、同轴线、光纤
取决于介质,由 modem 使用。

OSI 7 层模型最早提出,不过那时候还没有实现 Internet,所以其实是纯理论依据的模型。不过教学时经常采用这个模型。
至于我们要用哪个模型?OSI 多出来的两层有没有用?这取决于应用的开发者用不用这两层功能。

1.5.2 Encapsulation

考虑上层与下层的关系:上层的数据包作为 payload,下层协议将自己的信息作为 header 附加到数据包上,从而完成对上层数据包的封装,成为了本层的数据包。可以类比把信装到信封中。

因此一个任意层的数据包都由两个部分组成:header field 以及 payload field。
其中,payload field 或许又可以这样拆分为两个部分。

此外,某些层的封装并不是简单的往数据包上面叠加信息,比如传输层的 TCP 协议会将应用层的数据包拆分成很多个部分分别进行封装,从而把一个应用层 message 封装成多个传输层 segment。

1.6 Network Under Attack

网络的本质是多台计算机之间的数据交换,在远古时期,用计算机的都是友好的研究人员,他们不会想到网络需要有恶意者的假设。
然而现代,网络攻击可谓层出不穷。计算机网络方向的一个主要研究课题,就是设计防御攻击的方法,甚至设计出对攻击免疫的协议。

带有恶意的黑客可以通过以下几种方式对网络进行攻击:

  1. 利用网络来传输恶意软件(malware),如利用用户不警惕心的 Virus,或者利用计算机系统漏洞的 Worm
  2. 攻击服务器和网络基础设施,来让网络瘫痪(Denial-of-Service)。可以分为三类:漏洞攻击、带宽攻击(流量攻击)、connection flooding。后两种往往会使用 Distributed DoS,借助 botnet 进行攻击。
  3. 数据包嗅探:互联网最容易的就是监听了……
  4. 伪造正常数据包、伪装正常的用户。黑客完全可以手动构造一个数据包,只要填入各个字段就可以了。伪造来源 IP 就是一种常见的手法。