TCP/IP 网络模型各层职责详解(四层与代表协议)

从浏览器打开一个网页,到数据穿过网卡、交换机、骨干网,再到对方服务器原样重组,背后起约束作用的就是 TCP/IP 四层模型。它把复杂的网络通信拆成”应用层—传输层—网络层—网络接口层”四段,每一段只关心自己的职责,再通过标准接口把数据交给下一段。这种分层思想让不同厂商、不同操作系统的设备能互相对话,也成为互联网协议的通用骨架。

一、TCP/IP 模型为什么按四层划分

早期的网络协议是各家厂商自定的,设备之间互不兼容。TCP/IP 把”端到端通信”拆成可独立演进的几段,每段只暴露明确接口:上层交付”要传什么”,下层负责”怎么传、走哪条路”。这种思路让协议族既能从一台机器扩到全球,又能在某一层做技术替换(比如 IP 协议从 IPv4 升级到 IPv6)而不影响其他层。

四层的命名在不同教材里有出入:网络接口层有时被叫链路层或数据链路层,应用层有时包含表示层与会话层的功能。要点是记住每一层的”职责边界”和”代表协议”。

二、应用层:最贴近用户的一段

应用层是直接面向用户程序的一段,浏览器、邮件客户端、聊天软件的所有网络行为都从这里发起。它定义了不同业务场景下的数据格式与交互规则。

协议 端口 典型用途
HTTP / HTTPS 80 / 443 网页请求与响应
DNS 53 域名解析为 IP
FTP 20 / 21 文件传输
SMTP 25 邮件发送
SSH 22 加密远程登录

应用层只关心”这条消息想表达什么”,不关心”消息怎么送到对方手里”。比如 HTTP 定义了 GET、POST、PUT、DELETE 这几种语义,把”我要拿什么、我要改什么”说清楚就完成任务,剩下的交给传输层处理。

三、传输层:负责端到端的可靠通道

传输层在两台主机的”端口”之间建立通道,决定每条数据用 TCP 还是 UDP 传输。

  • TCP(传输控制协议):面向连接、可靠传输。通过三次握手建立连接、用序列号保证顺序、用确认应答与超时重传保证不丢,适合网页、文件、邮件等对完整性要求高的场景。
  • UDP(用户数据报协议):无连接、不保证到达。发出去就算完事,延迟低、开销小,适合直播、语音通话、在线游戏这类实时优先、可容忍少量丢包的业务。

传输层按端口号区分”哪个应用”接收数据。例如客户端访问百度首页时,目标端口是 80,操作系统根据这个端口号把数据交给浏览器进程,而不是聊天软件。

四、网络层:决定数据包的下一跳

网络层处理”跨网络”的路由问题,核心协议是 IP(Internet Protocol)。它给每台设备分配一个唯一 IP 地址,把数据切成 IP 数据包,再根据目标地址选择下一跳路由器,直到送达目的地。

辅助协议同样关键:ICMP 用于网络诊断(ping、traceroute 都依赖它),ARP 用于把 IP 地址解析为局域网里的 MAC 地址,IGMP 用于组播成员管理。

IPv4 地址是 32 位,理论上能编址约 43 亿台设备,已经接近耗尽。IPv6 把它扩到 128 位,地址空间几乎无限,是长期演进方向。两者通过双栈或隧道方式兼容过渡。

五、网络接口层:把数据送到物理介质上

网络接口层(也叫链路层)是协议栈的最底层,负责在同一段物理网络里把数据可靠送出。它处理 MAC 地址寻址、帧的封装与校验、冲突检测等工作,对应的物理介质包括以太网、Wi-Fi、光纤、PPP 等。

数据在这一层被称为”帧”,每帧有源 MAC、目的 MAC、类型字段、载荷、校验码。交换机根据 MAC 地址表做局域网内的精确转发,不会把无关流量广播出去,这和上层的 IP 路由是两个层级的转发逻辑。

六、四层协议对照与数据封装流程

下表把四层模型的关键信息浓缩在一起,方便对照查阅。

层级 数据单位 核心职责 代表协议 关键寻址方式
应用层 报文 定义业务语义 HTTP、DNS、FTP、SMTP、SSH 域名 / URL
传输层 段 / 数据报 端到端通道 TCP、UDP 端口号
网络层 包 跨网路由 IP、ICMP、ARP、IGMP IP 地址
网络接口层 帧 物理链路传输 Ethernet、Wi-Fi、PPP MAC 地址

数据从应用层向下,每经过一层就加上自己的头部,这个过程叫”封装”。到达目的地后,每经过一层就拆掉对应头部,叫”解封装”。一次 HTTP 请求的封装顺序如下:

  1. 应用层生成 HTTP 报文(含请求行、请求头、请求体);
  2. 传输层在报文前加 TCP 头(含源端口、目的端口、序列号),得到 TCP 段;
  3. 网络层在 TCP 段前加 IP 头(含源 IP、目的 IP、TTL),得到 IP 包;
  4. 网络接口层在 IP 包前加帧头、尾部加 FCS 校验,得到以太网帧;
  5. 帧被转为电信号或光信号发送到物理介质。

接收端按相反顺序逐层解封装,最终把 HTTP 报文交给浏览器进程。任何一层出错都会让整次通信失败,调试网络问题通常要按”物理层→链路层→网络层→传输层→应用层”逐层排查。

七、TCP/IP 与 OSI 七层模型的关系

OSI 是国际标准化组织提出的理论模型,把网络通信拆成七层;TCP/IP 是实际在互联网跑起来的协议族,更精简,只有四层。两者并非对立,而是”理论参考”与”工程实现”的关系。

维度 TCP/IP 四层模型 OSI 七层模型
层数 4 层 7 层
定位 工程实现,互联网事实标准 理论参考模型
应用层 应用层 应用层、表示层、会话层
传输层 传输层 传输层
网络层 网际层 网络层
底层 网络接口层 数据链路层、物理层
代表协议 TCP、UDP、IP、HTTP 不绑定具体协议

实际面试和技术讨论中常说”四层模型”或”五层模型”:四层就是 TCP/IP 体系,五层是把链路层再拆成”数据链路层 + 物理层”用于教学。掌握四层,再去看任何网络问题都不会迷路。

下面用一段极简的 Node.js 套接字代码,把「应用层协议 + 传输层 TCP」的关系落到能跑的程序里。代码本身只要 20 行,但它跑起来时正是四层模型在协作:

// server.js — 接收一次 HTTP 请求并回 200
const net = require('net');
const server = net.createServer(socket => {
  // 应用层:按 HTTP 协议解析客户端发来的字节流
  const chunks = [];
  socket.on('data', b => chunks.push(b));
  socket.on('end', () => {
    const req = Buffer.concat(chunks).toString('utf8');
    const firstLine = req.split('\r\n')[0];
    console.log('应用层收到:', firstLine);
    // 传输层:socket 关闭后,TCP 完成四次挥手
  });
  socket.write('HTTP/1.1 200 OK\r\nContent-Length: 2\r\n\r\nOK');
  socket.end();
});
server.listen(80);

// client.js
const net = require('net');
const s = net.createConnection(80, '127.0.0.1', () => {
  // 应用层:构造一段符合 HTTP 规范的字节
  s.write('GET / HTTP/1.1\r\nHost: localhost\r\n\r\n');
  // 传输层:三次握手由 net 自动完成
});
s.on('data', d => console.log('应用层收到响应:', d.toString().split('\r\n').pop()));
s.on('end', () => console.log('传输层连接关闭'));

跑一下 node server.js + node client.js,控制台会按顺序打印「应用层收到」和「传输层连接关闭」两条日志。这里的 net.createServer/createConnection 走的是传输层 TCP,应用层的 HTTP 字节流是开发者自己按规范拼的——分层不是抽象概念,是代码里看得见的两个接口。

常见问题(FAQ)

Q1:TCP/IP 是 TCP 和 IP 两个协议吗?

不是。它是一整个协议族的统称,TCP 和 IP 是其中最核心的两个,名字合在一起就成了协议族的代称。

Q2:传输层的端口号一共有多少个?

0 到 65535 共 65536 个,0-1023 是知名端口(如 80、443),1024-49151 是注册端口,49152-65535 是动态端口。

Q3:ping 命令工作在哪一层?

ping 基于 ICMP 协议,属于网络层,它不经过传输层,所以也叫”裸的连通性测试”。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 qiqicto@qq.com 举报,一经查实,本站将立刻删除。
赞 (0)
小其圈圈的头像小其圈圈运营团队

相关推荐

返回顶部