漫游计算机网络之情景篇

QoS 的一个例子:保证转发

  1. 所有的业务被划分为4个优先级;
  2. 通过 Traffic Policer 的令牌桶机制进行流量整形;
  3. 在经过 Traffic Policer 时,每个优先级下又被分类为3种优先级,或者说丢弃优先级,即丢包的可能性大小;
  4. 所以最终实际上有12种服务等级;
  5. 在每个 Packet 的 IP Header 的 ToS 字段(Type of Service 服务类型) 会携带 DSCP(6bits) + ECN(2bits),其中:
    • DSCP(Differentiated Services Code Point 服务等级)
    • ECN(Explicit Congestion Notification 拥塞控制)
  6. 路由器接收到被划分后的包,根据以下2种机制进行分组调度:
    • WFQ(Weighted Fair Queuing 加权公平队列):按照优先级进行公平调度;
    • RED(Random Early Detection 随机早期检测):采用主动丢弃机制,这里被丢弃的概率就是前面划分的丢弃优先级;

PSTN 公用交换电话网

PSTN ,即 Public Switched Telephone Network ,公用交换电话网。

1. 本地环路 Local Loop

  • 进行模拟信号传输;
  • 使用双绞线,从家到端局;
  • 设备包括 CodeC, Modem or ADSL Modem ;
  • 早期只包括电话线(300 Hz ~ 3400 Hz),即模拟信号的传输;后期由于加入用户电脑等设备,需要传送数字信号,所以先通过 Modem ,再通过 CodeC ,如下图所示;

比较点 Modem(拨号) ADSL Modem
功能 拨号上网,将数字信号调制成适合带宽传输的模拟信号 拨号上网,将数字信号调制成适合带宽传输的模拟信号
传输介质 UTP 3 ,即普通电话线 UTP 3 ,即普通电话线
信道带宽 整个电话线频段 3100 Hz(需要引入滤波器,将带宽限制在语音范围) 1.1 MHz(无需滤波器)
工作层次 物理层 物理层
通信方式 全双工,以字符为单位 全双工,以字符为单位,PPP 协议
调制速率 2400 Baud 4000 Baud
调制技术 QAM DMT-离散多音调制技术(QAM 的升级版)
信号 模拟信号 模拟信号
复用技术 无复用 频分复用 FDM

2. 中继 Trunk

交换局和交换局之间,使用光纤连接。

中继线上传输的是数字信号,其中用到了时分复用技术,包括:

项目 T1 E1
标准组织 Bell Labs(美国) ITU-T(国际电信联盟)
使用地区 美国、日本、加拿大 欧洲、中国等大部分其他地区
传输速率 1.544 Mbps 2.048 Mbps
时隙数量 24 个时隙(channels) 32 个时隙
每个时隙速率 64 Kbps(语音标准) 64 Kbps(语音标准)
可传语音通道数 24 路 30/32 路(其中 2 个为控制与同步)
帧结构 每帧 193 bit(8×24 + 1) 每帧 256 bit(8×32)

3. 综述


用户家里的电话和电脑都通过电话线,其中,电脑的数字信号先经过 ADSL Modem 转换为模拟信号,然后和语音信号一起经过 Splitter ,将频段分离,经过用户线后,到达端局,和其他 DSL 用户的信号一起经过 DSLAM 集中汇集,再转发到互联网。

数据包分片过程

数据链路层(以太网)、网络层(IP 协议)、传输层(TCP 协议)事实上都涉及分片的操作。

图源:小林 coding

上图很好的展示了层与层之间的封装过程:

  1. 应用层的数据交给传输层后,这部分数据即 TCP 的有效载荷;
  2. TCP 是面向字节流的,故有效载荷不能超过 MSS Bytes ;TCP 首先对数据进行了一次分片,分成不同的 TCP 报文;
  3. TCP 并对其进行封装,加上至少 20 Bytes 的 TCP Header ;
  4. 交给网络层后,网络层同样对其进行封装,加上 20 Bytes ~ 60 Bytes 的IP Header ;
  5. 这样,IP Header + TCP Header + Payload 已经完成封装,交给数据链路层,作为 Frame 的 Data 部分;
  6. 数据链路层为其加上 18 Bytes 的控制字段,封装成帧,最终在物理层中实际传输;

我们知道,对于以太网,MTU = 1500 Bytes ,即最大传输单元(不包含控制字段),所以反推出 MSS 不能超过 1500 - 20 - 20 = 1460 Bytes ;

问题:MSS 似乎并没有必要,只需 MTU 即可?

并非如此,网络层是不可靠的,服务尽力而为,并没有像 TCP 一样高效的重传机制。不考虑 MTU ,让 IP 层直接负责对 TCP 报文的分片,会发生什么呢?

一个 TCP 报文,直接被 IP 层划分为多个 IP 包,传输过程中,如果其中 1 个 IP 包分片丢失,根据 IP 协议,就需要重传所有的 IP 包分片;

看起来好像没什么问题,但是 IP 协议哪里有重传这一说,重传是通过上层,即 TCP 协议来控制的,由于某个分片丢子,IP 包无法进行重组,自然不会交给上层,接收方的传输层根本不知道,所以发送方的传输层需要在超时后才能进行重传。那么效率是可想而知的低的。

引入 MSS 后,事实上确保了一个 TCP 报文不会被 IP 协议分片,即 1 个 IP 包对应 1 个 TCP 报文。往往在 TCP 建立连接的过程中,双方会协商好 MSS 的大小;


漫游计算机网络之情景篇
https://blog.yokumi.cn/2025/06/10/漫游计算机网络之情景篇/
作者
Yokumi
发布于
2025年6月10日
许可协议
CC BY-NC-SA 4.0