2、网络基础回顾(上):OSI七层模型与TCP/IP四层模型、IP地址与端口、DNS解析过程

2.1 为什么还要回头看网络基础?

做网络加速器,说白了就是在跟网络协议打交道。你连基础都不懂,怎么去加速?

我记得刚入行那会儿,有个同事写了个UDP加速模块,结果跑在某个运营商网络里死活不通。查了三天,最后发现是中间某个节点把UDP包给丢了——这就是典型的传输层问题。从那以后,我养成了一个习惯:任何网络优化工作,先定位问题在哪个层级

所以这一节,咱们把最核心的三个概念捋一遍。别嫌基础,这些都是后面实战的根基。

核心观点:网络加速的本质,就是在不同层级上做优化。你越清楚每一层在干什么,就越知道该从哪里下手。

2.2 OSI七层模型与TCP/IP四层模型

2.2.1 两个模型,一个目标

OSI七层模型是理论上的"完美方案",TCP/IP四层模型是实际用的"干活方案"。我个人习惯把两者对照着记,这样理解起来特别顺。

OSI七层 TCP/IP四层 典型协议/设备 一句话理解
应用层 应用层 HTTP, DNS, FTP 用户直接打交道的东西
表示层 SSL/TLS, JPEG 数据格式转换、加密
会话层 NetBIOS, RPC 建立/管理会话
传输层 传输层 TCP, UDP 端到端的可靠/不可靠传输
网络层 网络层 IP, ICMP, 路由器 寻址和路由选择
数据链路层 网络接口层 以太网, MAC地址, 交换机 相邻节点间的传输
物理层 网线, 光纤, 集线器 比特流的物理传输

你想想看,一个数据包从你的浏览器发出去,要经过多少层?应用层打包数据,传输层加端口号,网络层加IP地址,链路层加MAC地址...每一层都在做封装。加速器要做的,就是想办法让这个过程更快、更稳。

2.2.2 我在项目中踩过的坑

我曾经接手过一个跨国加速项目,延迟总是降不下来。一开始我盯着网络层优化,换路由、调BGP,效果都不明显。后来仔细一查,发现是应用层的TLS握手太慢——每次连接都要来回好几趟。最后我们在传输层做了连接复用,延迟直接砍掉40%。

这个教训告诉我:问题出在哪一层,就要在哪一层解决。别拿着网络层的锤子,看什么都像钉子。

实战技巧:做加速器开发时,我建议你先把TCP/IP四层模型刻在脑子里。遇到性能问题,按层排查:应用层→传输层→网络层→链路层。90%的问题都能在这个框架里找到答案。

2.3 IP地址与端口

2.3.1 IP地址:网络世界的门牌号

IP地址分两种:IPv4和IPv6。IPv4是32位的,写成四个数字,比如192.168.1.1。IPv6是128位的,写成八组十六进制,比如2001:db8::1

但说实话,做加速器开发,你更常打交道的是公网IP私网IP的区别。公网IP全球唯一,私网IP只在局域网内有效。NAT(网络地址转换)就是干这个活的——把私网IP映射成公网IP。

注意:NAT是加速器的大敌。它会让P2P连接变得极其困难,也会增加延迟。很多加速方案的核心,就是想办法绕过NAT的限制。后面我们会专门讲NAT穿透技术。

2.3.2 端口:同一台机器上的不同服务

IP地址找到了机器,端口号找到了机器上的哪个程序。端口范围是0-65535,其中:

  • 0-1023:知名端口,比如HTTP用80,HTTPS用443,DNS用53
  • 1024-49151:注册端口,给应用程序用
  • 49152-65535:动态/私有端口,客户端临时使用

我记得有一次调试加速器,发现某个游戏连不上服务器。抓包一看,客户端随机分配了一个端口,但服务器只认固定端口。这就是典型的端口不匹配问题。嗯,这里要注意:加速器必须能正确处理端口映射,否则游戏、视频这些应用全都会出问题。

2.4 DNS解析过程

2.4.1 从域名到IP的旅程

你在浏览器里输入www.example.com,回车。背后发生了什么?

  1. 浏览器缓存检查:先看看本地有没有存过这个域名的IP。有就直接用,没有就下一步。
  2. 操作系统缓存检查:浏览器没找到,问操作系统。操作系统也查一下自己的缓存。
  3. 本地DNS服务器:操作系统也没找到,就发给配置的DNS服务器(通常是运营商给的,或者你手动设的8.8.8.8)。
  4. 根DNS服务器:本地DNS不知道?它去问根服务器。根服务器说"我不知道具体IP,但你去问.com的顶级域名服务器"。
  5. 顶级域名服务器:.com服务器说"你去问example.com的权威DNS服务器"。
  6. 权威DNS服务器:终于,这个服务器知道www.example.com的IP是多少,把结果返回。
  7. 缓存并返回:本地DNS拿到结果,缓存起来,然后返回给操作系统,再返回给浏览器。

整个过程看起来繁琐,但实际也就几十毫秒。不过,DNS解析是网络加速的关键环节之一。为什么?因为DNS劫持、DNS污染、DNS延迟,都会直接影响你的上网体验。

2.4.2 加速器如何优化DNS

我做过一个实验:用运营商的DNS解析一个国外网站,耗时800ms。换成公共DNS(比如1.1.1.1),降到200ms。再配合DNS缓存和预解析,直接压到50ms以内。

所以,好的加速器一定会做这几件事:

  • 智能DNS选择:自动选最快的DNS服务器
  • DNS缓存:减少重复查询
  • DNS预解析:提前解析你可能要访问的域名
  • 防DNS劫持:用加密DNS(DoH/DoT)防止被篡改

一句话总结:DNS解析是网络请求的第一步,也是加速器最容易出效果的地方。把DNS优化好了,用户体验能提升一大截。

2.5 本章知识体系

下面这张图,把这一节的核心逻辑串起来了。你可以看到,从模型到地址再到解析,每一步都是环环相扣的。

网络基础核心知识体系 OSI七层 / TCP/IP四层 分层模型与协议栈 IP地址与端口 寻址与服务标识 DNS解析 域名到IP的转换 网络加速器核心应用 协议优化 · 路由加速 · DNS加速 · NAT穿透 核心逻辑 理解分层模型 → 掌握寻址方式 → 优化DNS解析 → 实现网络加速

学习建议:这一节的内容,我建议你反复看三遍。第一遍通读,第二遍对照着抓包工具(比如Wireshark)看实际数据,第三遍自己画一遍知识体系图。三遍下来,这些概念就刻在脑子里了。


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