计算机网络——应用层
应用层概述
应用层是计算机网络结构的最顶层,包括域名DNS系统,动态主机配置协议DHCP,HTTP,FTP以及WWW等。
当然,我们手机和PC上经常使用的一些应用软件,他们的进程也都是跑在应用层的。当两个不同设备上的进程想要进行通信时需要将应用数据交给传输层。
而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。
HTTP
HTTP 常见字段
-
Host 字段: 很多网站会共享同一台服务器的 IP 地址(即 “虚拟主机” 技术)。例如,一台服务器的 IP 是1.2.3.4,但可能同时托管了example.com、blog.example.com、test.com等多个域名的网站。
-
Content-Length 字段:服务器在返回数据时,会有 Content-Length 字段,表明本次回应的数据长度。
-
Connection 字段:控制TCP连接的生命周期策略
keep-alive长连接:这是HTTP/1.1的默认模式,旨在解决非持久连接的效率问题。它实现了连接复用 (Connection Reuse)。
close 短连接:每个HTTP请求/响应事务都遵循“一来一回就关闭”的原则。
HTTP常用方法
HTTP 方法 主要操作 CRUD 映射 作用的URL示例 数据位置
GET 读取资源 Read /users/123 URL查询参数
POST 创建新资源 Create /users 请求体 (Body)
PUT 完整替换资源 Update /users/123 请求体 (Body)
DELETE 删除资源 Delete /users/123 无
HTTP缓存
了减少不必要的网络请求,加快网页加载速度,降低服务器负载。浏览器在请求一个资源(如图片、CSS、JS文件)时,会按照这两种缓存的规则来决定是从本地缓存读取还是向服务器发起请求。
-
强制缓存:浏览器说了算。只要本地缓存没过期,就直接用,根本不问服务器。
-
协商缓存:浏览器和服务器商量着来。浏览器问服务器本地缓存还能不能用,服务器来决定是用旧的还是返回新的。
HTTP特性

HTTP/1.0
HTTP/1.0 是第一个被广泛应用的HTTP版本,它的设计非常简单,基本解决了网页内容从服务器到客户端的传输问题。
主要特点:
-
短连接 (Short-lived Connections):这是HTTP/1.0最核心的特征。每个HTTP请求都需要建立一个新的TCP连接,请求完成后立刻断开。例如,一个包含HTML、CSS和10张图片的网页,需要建立 1 + 1 + 10 = 12 次TCP连接。
-
无状态:请求与请求之间是完全独立的,服务器不记录客户端之前的状态。
-
基本的请求方法:定义了 GET, POST, HEAD 等核心请求方法。
-
基本的缓存机制:通过 Expires 和 Last-Modified 响应头来进行缓存控制。
HTTP/1.1
HTTP/1.1 是至今为止使用最广泛的版本,它针对HTTP/1.0的性能问题做了大量关键改进,可以说是HTTP协议的一个里程碑。
关键改进:
-
持久连接 (Persistent Connections) / Keep-Alive:这是最重要的改进。在一个TCP连接上可以传送多个HTTP请求和响应,从而避免了频繁创建连接的开销。连接默认是持久的,除非明确用 Connection: close 关闭。
-
管道化 (Pipelining):在同一个TCP连接上,客户端可以连续发送多个请求,而无需等待前一个请求的响应返回。这在一定程度上改善了性能。
-
Host 请求头:允许一台物理服务器上托管多个不同域名的网站。客户端在请求时通过 Host 字段指明要访问哪个域名,服务器据此返回对应的网站内容。这是虚拟主机技术的基石。
-
更强的缓存控制:引入了 Cache-Control, ETag, If-None-Match 等更灵活、更强大的缓存控制字段,取代了HTTP/1.0中功能单一的 Expires。
-
分块传输编码 (Chunked Transfer Encoding):允许服务器在响应内容长度未知的情况下(例如动态生成的内容),将数据分割成多个“块”来发送。客户端收到所有块后,再将它们组装起来。
-
新增了更多请求方法:如 PUT, PATCH, OPTIONS, DELETE 等。
HTTP/2.0
为了彻底解决HTTP/1.1的队头阻塞问题并进一步提升性能,HTTP/2应运而生。它没有修改HTTP的应用层语义(请求方法、状态码等保持不变),但对底层的传输机制进行了彻底的革新。
核心特性:
-
二进制分帧 (Binary Framing):HTTP/2将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式编码。这与HTTP/1.1的纯文本形式不同,使得协议解析更高效、更不容易出错。
-
多路复用 (Multiplexing):这是解决队头阻塞的关键。在单个TCP连接上,多个请求和响应可以同时、并行地传输,它们被拆分成独立的帧,在到达对端后再重新组装。这样,某个请求的阻塞将不会影响到其他请求。这好比超市开了多个收银台,顾客可以同时结账,互不干扰。
-
头部压缩 (Header Compression / HPACK):由于HTTP请求中常常包含大量重复的头部信息(如 User-Agent, Accept 等),HTTP/2使用HPACK算法对头部进行压缩,极大地减少了请求的体积和网络开销。
-
服务器推送 (Server Push):服务器可以在客户端请求之前,主动将它认为客户端会需要的资源(如CSS、JS文件)推送过去。例如,客户端请求了index.html,服务器可以主动将style.css一并发送,减少了后续请求的延迟。
HTTP/3.0
为了解决TCP层面的队头阻塞问题,HTTP/3做出了最大胆的变革:放弃TCP,转向使用QUIC协议。
革命性变化:
-
基于QUIC协议:QUIC (Quick UDP Internet Connections) 是一个基于UDP的、集成了TLS加密、流量控制和多路复用等功能的全新传输层协议。
-
彻底解决队头阻塞:QUIC实现了在单个连接上的多个独立的数据流(Stream)。每个流之间是完全独立的,如果某个流中的一个数据包丢失了,它只会阻塞该流,而不会影响其他流的数据传输。这相当于超市的货物现在由多架无人机分别配送,一架出问题了,其他无人机依然可以正常送达。
-
更快的连接建立:QUIC将TCP的三次握手和TLS的加密握手(通常需要1-2个RTT)结合在了一起,大多数情况下只需要1个RTT(Round-Trip Time)即可建立安全连接,甚至在会话复用时可以实现0-RTT连接。
-
连接迁移 (Connection Migration):当用户的网络环境发生变化时(例如从Wi-Fi切换到4G/5G蜂窝网络),IP地址会改变。在TCP上,这意味着连接必须中断重连。而QUIC使用一个64位的连接ID来标识连接,而不是IP地址和端口。因此,即使网络切换,只要连接ID不变,连接就可以无缝地迁移,保持不断线。
![image]()

HTTP、RPC以及MCP

动态主机配置协议DHCP
DHCP在运输层使用UDP协议,在实践中不会为每个网络都设置一个DHCP服务器,而是每个网络设置一个DHCP中继代理(通常是一个路由器),作为各个网络中主机与DHCP服务器的桥梁


WWW万维网 并非特殊的计算机网络,而是运行在因特网上的分布式应用。
WWW万维网 并非特殊的计算机网络,而是运行在因特网上的分布式应用。
WWW 是互联网上最具影响力的信息交互系统,通过统一的技术标准(URL、HTTP、HTML 等)和超链接机制,让全球资源成为一个相互关联的 “网络”,是我们日常 “上网” 体验的核心载体。



浙公网安备 33010602011771号