第二章:网络基础回顾

做低延迟交易系统,网络基础是绕不开的坎。我见过不少团队,一上来就追最新的硬件、最牛的FPGA,结果连最基本的网络原理都没吃透。嗯,今天我们就来把这块地基夯实。

核心观点:低延迟交易的本质,就是跟物理定律赛跑。你越懂网络底层,就越知道在哪里能抠出那几微秒。

2.1 OSI七层模型:别把它当八股文

很多人觉得OSI模型就是面试用的。其实不然。我在做行情网关时,遇到过数据包莫名其妙丢了一半的情况。排查到最后,发现是会话层的一个状态机出了问题。你看,理论真的能救命。

OSI七层,从上到下分别是:

  • 应用层 – 你写的交易程序就在这层
  • 表示层 – 数据加密、压缩,比如FIX协议的编解码
  • 会话层 – 建立、管理、终止会话。我踩过坑的地方
  • 传输层 – TCP/UDP,交易系统最纠结的一层
  • 网络层 – IP路由,决定你的数据走哪条路
  • 数据链路层 – 以太网帧,MAC地址
  • 物理层 – 网线、光纤、信号

实战建议:做低延迟系统,重点关注传输层往下。应用层以上的优化,收益远不如底层来得直接。

2.2 TCP/IP协议栈:现实世界的选择

OSI是理论,TCP/IP才是实战。为什么?因为互联网就是跑在TCP/IP上的。你想想看,你的交易数据从上海到纽约,中间经过几十台路由器,每台都在用IP协议做转发。

TCP/IP四层模型:

  1. 应用层 – HTTP、FIX、OUCH等交易协议
  2. 传输层 – TCP(可靠但慢)、UDP(快但不可靠)
  3. 网络层 – IP协议,负责寻址和路由
  4. 网络接口层 – 以太网、Wi-Fi等物理实现

这里有个关键点:TCP的拥塞控制。我曾经在回测系统里发现,明明网络带宽够用,但交易延迟突然飙升。查了半天,原来是TCP的慢启动算法在作祟。说白了,TCP为了保证可靠性,会主动降低发送速度。这在交易场景下是致命的。

避坑指南:我曾经因为没关Nagle算法,导致小订单延迟增加了200微秒。如果你做高频交易,记得设置TCP_NODELAY。

2.3 以太网帧结构:每一比特都值钱

以太网帧,就是数据在网线上真正的样子。我习惯把它拆成五部分来看:

字段 长度(字节) 说明
前导码 7 同步时钟用,接收端靠它对齐
帧起始定界符 1 表示帧正式开始
目标MAC + 源MAC 12 谁发给谁
类型/长度 2 标识上层协议,比如0x0800是IP
数据 + 填充 46-1500 真正的交易数据在这里
帧校验序列 4 CRC校验,检测传输错误

为什么我要强调这个?因为最小帧长64字节这个限制,直接影响你的交易效率。如果你的订单数据只有20字节,以太网会自动填充到46字节。这多出来的26字节,就是浪费的带宽和延迟。

优化思路:有些交易所支持Jumbo Frame(巨型帧),MTU可以到9000字节。但要注意,不是所有网络设备都支持。我建议先做兼容性测试。

2.4 IP路由原理:数据包的奇幻漂流

IP路由,说白了就是数据包怎么从A点到B点。每个路由器都维护着一张路由表,里面写着:要去某个网段,下一跳该走哪个接口。

路由决策的核心步骤:

  • 收到一个IP包,提取目标IP地址
  • 查路由表,找最长前缀匹配
  • 找到匹配项,从对应接口转发出去
  • 没找到?丢弃,并返回ICMP不可达

这里有个容易被忽略的点:路由缓存。我记得有一次做延迟测试,发现同样的路径,第一次走要100微秒,第二次只要50微秒。为什么?因为第一次路由器在做路由查询,第二次直接命中缓存了。

实战技巧:在交易网络中,尽量用静态路由代替动态路由协议(如OSPF、BGP)。动态路由的收敛时间,足够让你的订单错过行情了。

2.5 本章知识体系总览

下面这张图,是我自己梳理的网络基础核心逻辑。你看一遍,应该能对整章有个全局把握。

网络基础核心知识体系 OSI七层模型 应用层 表示层 会话层 传输层 网络层 数据链路层 物理层 TCP/IP协议栈 应用层(FIX/OUCH) 传输层(TCP/UDP) 网络层(IP) 网络接口层 以太网帧结构 前导码(7B) + SFD(1B) 目标MAC(6B) + 源MAC(6B) 类型(2B) + 数据(46-1500B) FCS(4B) IP路由原理 最长前缀匹配 路由表查询 下一跳转发 路由缓存优化 低延迟交易重点关注:传输层 → 数据链路层 → 物理层

这张图把四个核心知识点串在了一起。你从上往下看,OSI是理论框架,TCP/IP是实际实现,以太网帧是数据在网线上的真实形态,IP路由决定了数据怎么走。四者缺一不可。

总结一句话:网络基础不是背概念,而是理解每一层在做什么、为什么这么做、以及你能在哪里做优化。做低延迟交易,尤其如此。


公众号:蓝海资料掘金营,微信deep3321