模块一 · 应用层
网络应用如何通信
你点击一个网页,究竟是谁在和谁说话?先理解网络应用的参与者、入口和需求,再进入HTTP、DNS等具体协议。
本章要解决的问题:你点击一个网页,究竟是谁在和谁说话?先理解网络应用的参与者、入口和需求,再进入HTTP、DNS等具体协议。
本章的证据来源:《计算机网络:自顶向下方法(原书第8版)》§2.1,纸书53–62页。本章使用教学情境,不声称采集了本机连接或真实请求。
先从一个例子理解概念
你在浏览器点开一个页面。我们先假设浏览器已经知道服务器地址,只研究“向它请求页面、收到页面”这段通信。域名解析怎样得到地址,会在DNS章节展开。
应用、进程与客户端/服务器
应用是浏览器、聊天工具等软件;进程是程序运行中的实例。网络应用的通信发生在进程之间,不只是笼统的“两台电脑通信”。
本例中,主动请求页面的浏览器进程扮演客户端,响应请求的Web进程扮演服务器。这是这次通信的角色,不是电脑永久的身份;一台机器可同时运行两种角色。
套接字与端点
套接字(socket)是进程使用网络服务的通信对象。可以先把它想成进程收发数据的“门”;它是软件对象,不是电脑上插网线的物理接口。
端点表示通信的一个入口。以普通TCP/IP程序为例,需要IP地址帮助找到目标主机的网络位置,并用端口区分应用端点。协议类型也影响端点含义,端口不是全球唯一的应用身份证。
继续同一个网页例子
这里先看服务分工,不学习报文首部和握手细节:
浏览器进程 → 本地socket → 运输服务 → 网络 → 服务器socket → Web进程
浏览器说“请求页面” Web进程生成响应应用层协议规定请求和响应表达什么、怎样处理,例如HTTP。运输服务提供进程间传送数据的能力,例如TCP的字节流服务。它们处理不同的问题。
浏览器不是把一句人话直接交给网卡;它按应用协议形成消息,再通过接口使用运输服务。程序通常不需要自己决定每台中间路由器的出口。
先问应用需要什么,再选择服务
| 应用需求 | 问的是什么 | 一个例子 |
|---|---|---|
| 数据完整性 | 能否接受缺失、重复或错误 | 文件传输希望得到完整内容 |
| 吞吐量 | 每秒需要交付多少数据 | 视频需要满足所选码率等条件 |
| 时延 | 多晚收到还可用 | 通话中迟到的数据可能失去价值 |
| 安全 | 内容、来源和身份需要什么保护 | 登录需要加密和可靠身份认证 |
这些需求不是互斥选项。视频既需要足够吞吐,也可能有时延要求;应用“能容忍部分丢失”也不意味着应无条件丢弃所有恢复机制。
TCP和UDP先认识到什么程度
TCP向应用提供面向连接的可靠、有序字节流服务,但不直接保证固定时延、最低吞吐量或加密。连接遇到持续故障也可能以错误结束,不保证永远能够完成传输。
UDP提供数据报服务,协议本身不保证送达、顺序或去重;应用或上层协议可以在其上增加可靠性、安全等机制。UDP不是“绝对快”,TCP也不是“只能慢”。
本模块先把运输层当作提供服务的部分;下一模块才推导它内部如何实现。套接字编程章会把这些概念变成具体接口操作。
客户端/服务器之外还有什么
P2P(对等方式)让参与者也能彼此提供资源或服务。它不意味着完全没有协调服务器,也不意味着所有参与者在每时每刻能力相同。后续内容分发章节再比较它与客户端/服务器方式。
本章小结
| 概念 | 先记住的意思 |
|---|---|
| 进程 | 正在运行的程序实例,通信的参与者 |
| 客户端/服务器 | 当前通信中发起请求与提供服务的角色 |
| socket | 程序收发网络数据的通信对象 |
| 端点 | 用于通信的入口,需结合协议、地址与端口理解 |
| 应用协议 | 规定消息语义与处理规则 |
| 运输服务 | 给进程提供数据传送能力,具体机制之后学习 |
自测题
5 题 · 先自己答,再展开对照
“浏览器向服务器请求页面”,实际通信的参与者是什么?
浏览器进程和提供Web服务的进程,通过各自socket使用网络服务。两台机器只是承载这些进程的设备。客户端和服务器是机器永久不变的身份吗?
不是,它们是具体通信的角色;同一机器可以运行客户端和服务器进程,同一程序也可在不同通信中承担不同角色。socket、IP地址和端口在例子中分别起什么作用?
socket是进程使用网络服务的对象;IP地址用于网络寻址;端口帮助区分应用端点,还需结合协议理解,不能把端口单独当成唯一进程身份。为什么选择运输服务之前要先说明应用需求?
不同应用对完整性、吞吐、时延和安全有不同要求,知道需求才能判断某个服务提供了什么、还需应用补充什么。TCP直接保证加密与固定时延吗?UDP上能构建可靠通信吗?
TCP本身不保证加密、固定时延或最低吞吐。UDP本身不保证可靠,但应用或上层协议可增加可靠性和安全等机制,不能仅以TCP/UDP名称判断快慢。
参考资料与适用范围
- 《计算机网络:自顶向下方法(原书第8版)》§2.1.1–2.1.6,纸书53–62页(PDF72–81页):应用体系结构、进程、socket、寻址和运输服务需求。
- RFC 9293 §2:TCP提供的字节流服务
- RFC 768:UDP数据报与服务范围
修订核对日期:2026-10-13。本章是教学例子,没有本次或历史观察的具体测量值。TCP/IP端点说明限定在本章普通通信情境,不替代完整接口和协议规范。