Timetombs

泛义的工具是文明的基础,而确指的工具却是愚人的器物

66h / 117a
,更新于 2024-12-21T13:29:20Z+08:00 by   2255bb5

[计算机网络] 00 概述

版权声明 - CC BY-NC-SA 4.0

1969年11月美国国防部建立了一个名为ARPANET(Internet的雏形)的分组&交换网络,当前时间是2019年,50年过去了,如今的网络已经融入了社会的方方面面,其重要性不言而喻。本系列博客专注于计算机网络的核心概念和体系结构,并不涉及网络编程的概念。

1 标准化

计算机网络节点(node : 计算机、集线器、交换机或路由器) 和连接它们的 链路(link) 组成。这些众多的设备之间如何通信?其中离不开各种各样的标准,标准的意义在于统一的规则,遵循相同标准的设备之间可以互联互通,从而避免一些不兼容的问题。IETF(Internet Engineering Task Force)1是负责标准化的一个重要机构,IP、TCP、UDP、DNS、HTTP等等众多协议都是由IETF标准化的。

2 常见的分类

按照地理上的区域位置来划分,有如下几个分类 :

  1. LAN : Local Area Network(局域网),比如连接家用路由器的所有设备就组成了一个LAN。
  2. WAN : Wide Area Network(广域网),比如路由器经过PPPoE连接到的宽带运营商的网络环境。
  3. WLAN : Wireless LAN(无线局域网),比如WiFi或WAPI。

3 分组&交换(Packet Switching)

计算机网络没有采用传统的电话网络的 电路交换 的通信方式,而是采用了分组&交换。理解分组&交换是理解计算机网络最重要的一步(没有之一)。

  1. 电路交换 : 核心原理是为通信双方建立一条可靠的专用的链路,供双方通信使用。
  2. 分组&交换 : 核心原理是把原始数据拆分成一个个小的数据包,然后通过转发转发再转发的方式在通信双方传递。

也正是分组&交换这种设计思想(注意分组和交换是两个环节),才得以支撑互联网的爆炸式增长。

4 性能指标

计算机网络的性能表现在一下几个指标上。

4.1 速率(Bit Rate)

速率是数据传输的比特率(bit rate): 单位时间(秒)内传输的bit(0或1)数量。单位是bps=b/s=bit/s=bit per second,通常会采用bps来表示。

  1. Kbps : 每秒 103 个bit,1千。
  2. Mbps : 每秒 106 个bit,1百万。
  3. Gbps : 每秒 109 个bit,10亿。

4.2 频宽/带宽(Bandwidth)

带宽原指信号的频带宽度,比如300Hz~600Hz, 此时的单位是赫兹(Hz)

在计算机网络中,带宽通常指的是链路的最高速率,对,就是上面提到的# 4.1 速率(Bit Rate)

4.3 吞吐量(Throughput)

吞吐量是单位时间(秒)内通过某个链路的实际的数据量。它的单位通常也是和# 4.1 速率(Bit Rate)是一样的。

比如对于一个10Gb/s的网络,它的实际吞吐量可能是100Mb/s,但是最高不可能超过10Gb/s

4.3.1 包转发速率(Forwarding Rate)

衡量网络设备(交换机,路由器)的重要性能指标是packet per second=pps:每秒转发包的数量,通常指的是64byte的数据包。比如一个跑慢一个1Gb/s的网络需要的转发能力为:

1000000000/(8*(7+1+64)+96)=1488095=1.488Mpps=148万包/每秒

解释说明:

  1. 1000000000:1Gb。
  2. 8:一个byte=8bit。
  3. 7+1+64:7byte的Frame前导码,1byte的SOH2,64byte的最小Frame。
  4. 96:IFG3的最小bit数。

4.4 延迟(Delay)

延迟是指数据从链路的一端到另一端所消耗的时间。延迟由几个不同的部分组成 :

  1. 排队延迟 : 数据帧节点上的排队等待被处理时所消耗的时间。
  2. 处理延迟 : 节点处理数据帧时所消耗的时间。
  3. 发送延迟 : 发送数据帧所消耗的时间(比如一共100个bit,从发送第1个bit开始到第100个bit发送完毕的时间)。发送延迟 = 数据帧长度(bit) / 发送速率(bit/s)
  4. 传播延迟 : 电磁波在信道中传播所需的时间。传播延迟 = 信道长度(m) / 传播速度(m/s)。电磁波在真空中的的传播速度是光速300000km/s,在光纤中大概是200000km/s。比如光纤200km,那么延迟大约1ms = (200000km/s) / 200km

总延迟 = 排队延迟 + 处理延迟 + 发送延迟 + 传播延迟 。速率相同的情况下,延迟越低越好。在速率不同的情况下,有时候一个低速率 + 低延迟的网络也优于一个高速率 + 高延迟的网络。

4.5 往返时间(RTT)

一次往返通信所需的时间,粗略的等于2个(# 4.4 延迟(Delay))的时间。

4.6 信道利用率(Channel Utilization)

公式 : 信道利用率 = 发送延迟 / (发送延迟 + 往返传播延迟)。比如要发送10kb的数据, 发送速率是1000kb/s, 光纤长度20km。那么 :

  1. 发送延迟 = 10/1000 = 10ms
  2. 往返传播延迟 = (20mk / 200000km/s) * 2 = 20ms
  3. 信道利用率 = 10ms / (10ms + 20ms) = 33.33%

5 分层的体系结构

在计算机领域解决复杂问题时,有两个屡试不爽的手段 : 抽象分层。如今现实中的计算机网络通常是如下的一个层次结构。
计算机网络的分层体系

其中每一层都有各自专注解决的一个问题。 每一层都有各自的协议,各自也都有各自的PDU(Protocol Data Unit)

  1. 物理层 : 依托下层的传输媒介,为上层提供01bit流。
  2. 链路层 : 依托下层的01bit流,为上层提供分组的数据帧,PDU=Frame
  3. 网络层 : 依托下层的数据帧,为上层提供虚拟的、无连接的、尽力交付的、分组&交换的互联路由网络,PDU=Packet
  4. 传输层 : 依托下层的分组&交换的数据报,为上层提供传输通道,PDU=Segment
  5. 应用层 : 依托下层的传输通道,为应用级别的提供专用的网络服务,PDU=Data

6 字节序

网络上传输的是01bit流。而上层的基本数据单元则是octet4,即1个byte。当一个基本的字段有2个及以上的octet构成时,这时由于历史原因,产生了两种字节序存储方式5。比如一个数字32bit的数字0xA1B2C3D4

       0xA1B2C3D4
|  -  + 4 octets  +     |
|  -  +  -  +  -  +  -  |
|  0     1     2     3  | 内存增长方向
|  -  +  -  +  -  +  -  |
| 0xA1  0xB2  0xC3  0xD4| 大端模式/网络字节序:高位字节存储在低位
|  -  +  -  +  -  +  -  |
| 0xD4  0xC3  0xB2  0xA1| 小端模式/主机字节序:高位字节存储在高位
|  -  +  -  +  -  +  -  |

7 总结

以上简单的介绍了一下计算机网络的基础概念,以及核心的设计理念分组&交换分层体系,后续则针对各层逐步展开。

下一篇 : [计算机网络] 01 [Layer] Physical