Roxy's Library

Back

本文内容基于 2025 秋季《计算机网络》课程讲述,如有差错,欢迎指正

应用层概述#

应用层的核心概念#

应用层软件运行在端系统 (Host) 中,负责与网络通信,并屏蔽底层的网络细节

进程利用 Socket (套接字) 发送和接收消息,它就像应用程序和网络之间的“门” ,应用程序只需处理应用层逻辑,Socket 负责将数据交给传输层

通过IP+端口号唯一标识一个进程

应用程序的架构模型

下面对比了两种主要的组织架构

特性客户/服务器 (C/S)对等 (P2P)
角色区分明显的客户端 (请求方) 和服务器 (服务方)不区分,每个节点既是客户端也是服务器
服务器要求必须始终在线,通常有固定 IP节点可随时加入或退出,IP 可动态变化
客户端关系客户端之间不直接通信任意两个实体可直接通信
扩展性受限于服务器性能,需扩容服务器易于扩展,每个新节点都带来计算资源
典型应用Web, EmailBitTorrent, Skype

传输层提供的服务#

应用层需要传输层提供不同类型的支持,主要看应用对以下四个方面的需求:

  • 可靠性:数据是否允许丢失?(文件传输要求 100% 可靠,语音通话可容忍丢包)
  • 延迟:是否对时间敏感?(在线游戏、电话会议敏感)
  • 吞吐量:是否有最低带宽要求?(视频流需要最低带宽)
  • 安全性:是否需要加密?

TCP 与 UDP 的区别

TCP (面向连接):

  • 提供可靠传输 (不丢包)、有序传输、流量控制 (防止接收方过载) 和 拥塞控制 (防止网络过载)
  • 无法保证延迟和吞吐量

UDP (无连接):不可靠传输 (可能丢包、乱序)

  • 简单、速度快、开销小

注意:UDP 本身不提供加密,但可以通过应用层实现(如 QUIC 或在应用层加密)

应用层好处#

  • 屏蔽底层细节

    • 应用层屏蔽TCP与UDP的差异
    • 应用程序无需为下层网络设备编写代码
    • 无需考虑端系统上的网卡设备与其他网络软件
    • 无需考虑网络核心中的路由器交换机
  • 抽象

    • 许多网络应用有相同的通信模式
    • 网络应用层封装这些共同模式
  • 提供额外的功能

    • 安全性、服务质量

Web和HTTP#

Web基本概念#

WWW体系结构与协议

构成:

  • HTTP服务器和客户端
  • Web对象(网页,多媒体资源,动态对象与服务),通过URLs定位
  • 服务器与客户端之间执行的HTTP协议

架构:客户/服务器模型 (C/S)

  • 客户端:浏览器,请求、接收、展示 Web 对象
  • 服务器:存储 Web 对象,响应请求

URL:统一资源定位符 (Uniform Resource Locator),用于定位 Web 对象

URL

Web对象:

  • 静态对象:HTML 文件、图片、视频等
  • 动态对象:交互信息,比如,用户注册信息、登录信息
  • 超链接(HyperLinks):指向其他对象的URLs

HTTP :访问Web资源的协议#

超文本传输协议HTTP( HyperText Transfer Protocol)在传输层通常使用TCP协议,缺省使用TCP的80端口

是一种无状态协议,服务器端不保留之前请求的状态信息

  • 无状态协议:效率低、但简单
  • 有状态协议:维护状态相对复杂,需要维护历史信息,在客户端或服务器出现故障时,需要保持状态的一致性等

HTTP 发展#

HTTP/1.0(1996)

非持久连接 (Non-persistent)

  • 机制:每个 TCP 连接只传输一个请求/响应对。传输完一个对象后,TCP 连接立即关闭。
  • 开销:每个对象都需要经过 TCP 三次握手。如果一个网页包含 1 个 HTML 和 10 个图片, 需要建立 11 次 TCP 连接。执行效率较低

HTTP/1.1(1999)

持久连接 (Persistent)

  • 机制:服务器发送响应后保持 TCP 连接打开。后续的请求/响应可以通过同一个连接传输
  • 流水线 (Pipelining):客户端可以连续发送多个请求,而无需等待前一个响应返回
  • 优势:只需建立一次 TCP 连接,大幅降低延迟 (RTT)

HTTP 1.x比较:

HTTP1.x

HTTP/2(2015)

  • 多路复用:允许请求/响应交错传输,还可以自定义优先级。
  • 首部压缩:减小报文体积。
  • 服务端推送:服务器主动推送资源,可以确认客户端是否存活,可以预测资源请求
  • 流量控制:允许应用层进行控制(HTTP/1.x 只能依赖 TCP 流量控制)

HTTP/3(2022)

基于 UDP + QUIC,不再使用 TCP

HTTPS

HTTP+TLS(2008)

增加SSL/TLS(TLS 1.2)层,在TCP之上提供安全机制

HTTP 报文结构#

HTTP 有两种报文:请求报文和响应报文。

请求报文 (Request Message)

由三部分组成:开始行(请求行)、首部行、实体主体

HTTP请求报文

请求行 (Request Line):包含 方法 (Method)、URL、版本

方法是对所请求的对象进行的操作,实际上也就是一些命令,请求报文的类型是由它所采用的方法决定的

URL中的参数以“?”开始,每个参数的形式为“name=value”,参数之间以“&”隔开

实体主体 (Body):POST 请求时存放提交的数据,GET 请求通常为空

响应报文 (Response Message)

与请求报文类似,也由三部分组成:开始行 (状态行)、首部行、实体主体

HTTP响应报文

状态行 (Status Line):包含版本、状态码、短语。

典型状态码:

  • 200 OK:请求成功,此时实体主体包含请求的资源
  • 301 Moved Permanently:对象永久移动(重定向)
  • 304 Not Modified:资源未修改(用于缓存控制)
  • 400 Bad Request:请求语法错误
  • 404 Not Found:找不到资源
  • 505 Version Not Supported:服务器不支持该 HTTP 版本

Web 缓存技术 (Web Caching)#

Web技术一个很常见的优化就是缓存,可以有效减少网络流量和延迟

浏览器缓存

本地保存副本,不必再从服务器获取

浏览器缓存

代理服务器 (Proxy Server) 缓存

ISP安装Web代理缓存服务器,保存ISP客户访问过的服务器Web页副本, 副本可以供ISP的所有客户访问,提高访问服务器的Web页效率

用户浏览器通过代理服务器进行Web访问,如果缓存中有被请求的对象,则直接返回对象, 否则,代理服务器向原始服务器请求对象,再将对象返回给客户端

Web代理服务器缓存性能分析

假设:

  • 平均每个Web页对象大小: 1M bits
  • 校园网络内用户向原始服务器请求对象速率为平均每秒15个请求:15/sec
  • 互联网访问原始Web页的平均往返时延为2秒
  • 接入链路速率为15Mbps
  • 机构网络内部带宽很大

结果:

  • 机构网络内带宽使用率1.5%,接入链路的使用率接近1,成为主要瓶颈 ,延迟很大可能到分钟级别
  • 总的时延= 互联网时延+接入链路时延+ 机构网络时延 = 2 sec + minutes + msecs (校园网络时延以毫秒记)

缓存性能分析

引入缓存后:

假设:缓存代理访问命中率为40%

结果:

  • 机构网络内带宽使用率1.5%,接入链路的使用率接近0.6
  • 总的时延:= 0.6×0.6 \times (互联网延迟) +0.4×+0.4 \times (Web代理命中率的延迟) =0.6× 0.6 \times(2秒+计10毫秒机构网络内延迟) + 0.4×0.4\times (计10毫 秒校园网络内延迟) \approx1.2 secs

公式逻辑:总延迟 = 命中率 ×\times 局域网延迟 + 未命中率 ×\times (局域网延迟 + 互联网延迟)。

缓存一致性问题

如何保证缓存是最新的?

机制:

  • 启发式缓存更新策略(服务器发起):服务器响应包含Last-Modified字段和Expires字段

    • 少用,原因:服务器难以预测什么时候Web对象更新
  • 询问式缓存更新策略(客户端发起):通过特殊的关键字头If-modified-since询问原始服务器,Web副本是否已更新

    • 如果服务器上的对象未修改,返回 304 Not Modified(不带实体主体,节省带宽)
    • 如果已修改,返回 200 OK 和新内容

HTTP是无状态协议,而服务器又希望能了解用户状态,因此服务器使用cookies保持用户状态

工作流程 :

  • 服务器响应中包含 Set-Cookie: ID 头部,服务器分配的Cookie内容具有唯一性
  • 浏览器在本地保存 Cookie 文件
  • 后续请求中,浏览器自动携带 Cookie: ID 头部
  • 服务器根据 ID 查询后端数据库,识别用户状态

Cookie一般包含五个字段:

  • 域 : 指明Cookie 来自哪里
  • 路径:用于标识服务器哪些路径下的资源可以接收该 Cookie
  • 内容: Cookie 存放内容的地方,内容为name = value形式
  • 过期时间
  • 安全标志

Cookie 简化了用户操作(比如登录),减少开销

Cookie 也会导致用户隐私泄露问题,攻击者可以通过多种方式窃取 Cookie,从而冒充用户

计算机网络应用层 lecture 1
https://astro-pure.js.org/blog/csnet_app_chap1
Author GreyRat
Published at December 5, 2025
Comment seems to stuck. Try to refresh?✨