1969年11月美国国防部建立了一个名为ARPANET(Internet的雏形)的分组&交换网络,当前时间是2019年,50年过去了,如今的网络已经融入了社会的方方面面,其重要性不言而喻。本系列博客专注于计算机网络的核心概念和体系结构,并不涉及网络编程的概念。
1 标准化
计算机网络 由 节点(node : 计算机、集线器、交换机或路由器) 和连接它们的 链路(link) 组成。这些众多的设备之间如何通信?其中离不开各种各样的标准,标准的意义在于统一的规则,遵循相同标准的设备之间可以互联互通,从而避免一些不兼容的问题。IETF(Internet Engineering Task Force)1是负责标准化的一个重要机构,IP、TCP、UDP、DNS、HTTP等等众多协议都是由IETF标准化的。
2 常见的分类
按照地理上的区域位置来划分,有如下几个分类 :
LAN
: Local Area Network(局域网),比如连接家用路由器的所有设备就组成了一个LAN。WAN
: Wide Area Network(广域网),比如路由器经过PPPoE
连接到的宽带运营商的网络环境。WLAN
: Wireless LAN(无线局域网),比如WiFi或WAPI。
3 分组&交换(Packet Switching)
计算机网络没有采用传统的电话网络的 电路交换 的通信方式,而是采用了分组&交换。理解分组&交换是理解计算机网络最重要的一步(没有之一)。
电路交换: 核心原理是为通信双方建立一条可靠的专用的链路,供双方通信使用。- 分组&交换 : 核心原理是把原始数据拆分成一个个小的数据包,然后通过转发、转发、再转发的方式在通信双方传递。
也正是分组&交换这种设计思想(注意分组和交换是两个环节),才得以支撑互联网的爆炸式增长。
4 性能指标
计算机网络的性能表现在一下几个指标上。
4.1 速率(Bit Rate)
速率是数据传输的比特率(bit rate): 单位时间(秒)内传输的bit(0或1)数量。单位是bps
=b/s
=bit/s
=bit per second
,通常会采用bps
来表示。
Kbps
: 每秒 103 个bit,1千。Mbps
: 每秒 106 个bit,1百万。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万包/每秒
解释说明:
4.4 延迟(Delay)
延迟是指数据从链路的一端到另一端所消耗的时间。延迟由几个不同的部分组成 :
- 排队延迟 : 数据帧在节点上的排队等待被处理时所消耗的时间。
- 处理延迟 : 节点处理数据帧时所消耗的时间。
- 发送延迟 : 发送数据帧所消耗的时间(比如一共100个bit,从发送第1个bit开始到第100个bit发送完毕的时间)。发送延迟 =
数据帧长度(bit) / 发送速率(bit/s)
。 - 传播延迟 : 电磁波在信道中传播所需的时间。传播延迟 =
信道长度(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
。那么 :
- 发送延迟 =
10/1000
=10ms
。 - 往返传播延迟 =
(20mk / 200000km/s) * 2
=20ms
。 - 信道利用率 =
10ms / (10ms + 20ms)
=33.33%
。
5 分层的体系结构
在计算机领域解决复杂问题时,有两个屡试不爽的手段 : 抽象和分层。如今现实中的计算机网络通常是如下的一个层次结构。
其中每一层都有各自专注解决的一个问题。 每一层都有各自的协议,各自也都有各自的PDU(Protocol Data Unit)
。
- 物理层 : 依托下层的传输媒介,为上层提供
01
bit流。 - 链路层 : 依托下层的
01
bit流,为上层提供分组的数据帧,PDU=Frame
。 - 网络层 : 依托下层的数据帧,为上层提供虚拟的、无连接的、尽力交付的、分组&交换的互联路由网络,
PDU=Packet
。 - 传输层 : 依托下层的分组&交换的数据报,为上层提供传输通道,
PDU=Segment
。 - 应用层 : 依托下层的传输通道,为应用级别的提供专用的网络服务,
PDU=Data
。
6 字节序
网络上传输的是01
bit流。而上层的基本数据单元则是octet
4,即1个byte。当一个基本的字段有2个及以上的octet
构成时,这时由于历史原因,产生了两种字节序存储方式5。比如一个数字32bit的数字0xA1B2C3D4
。
0xA1B2C3D4
| - + 4 octets + |
| - + - + - + - |
| 0 1 2 3 | 内存增长方向
| - + - + - + - |
| 0xA1 0xB2 0xC3 0xD4| 大端模式/网络字节序:高位字节存储在低位
| - + - + - + - |
| 0xD4 0xC3 0xB2 0xA1| 小端模式/主机字节序:高位字节存储在高位
| - + - + - + - |
7 总结
以上简单的介绍了一下计算机网络的基础概念,以及核心的设计理念分组&交换和分层体系,后续则针对各层逐步展开。