【计算机网络】第六章:应用层

本篇笔记课程来源:王道计算机考研 计算机网络

【计算机网络】第六章:应用层

  • 一、网络应用模型
    • [1. 应用层概述](#1. 应用层概述)
    • [2. 客户 / 服务器模型](#2. 客户 / 服务器模型)
    • [3. P2P 模型](#3. P2P 模型)
  • [二、域名系统 DNS](#二、域名系统 DNS)
    • [1. 域名](#1. 域名)
    • [2. 域名服务器](#2. 域名服务器)
    • [3. 域名解析过程](#3. 域名解析过程)
  • [三、文件传输协议 FTP](#三、文件传输协议 FTP)
    • [1. 协议概述](#1. 协议概述)
    • [2. FTP 工作原理](#2. FTP 工作原理)
    • [3. 控制连接与数据连接](#3. 控制连接与数据连接)
  • 四、电子邮件
    • [1. 电子邮件系统概述](#1. 电子邮件系统概述)
    • [2. 简单邮件传送协议 SMTP](#2. 简单邮件传送协议 SMTP)
    • [3. 邮局协议 POP3](#3. 邮局协议 POP3)
    • [4. 网际报文存取协议 IMAP](#4. 网际报文存取协议 IMAP)
  • [五、万维网 WWW](#五、万维网 WWW)
    • [1. 万维网的概念](#1. 万维网的概念)
    • [2. 万维网的组成](#2. 万维网的组成)
    • [3. 超文本传输协议 HTTP](#3. 超文本传输协议 HTTP)
      • [Ⅰ. HTTP 报文结构](#Ⅰ. HTTP 报文结构)
      • [Ⅱ. HTTP 工作过程与工作方式](#Ⅱ. HTTP 工作过程与工作方式)
      • [Ⅲ. Cookie 的作用](#Ⅲ. Cookie 的作用)

一、网络应用模型

1. 应用层概述

  • 应用层对应用程序的通信提供服务

  • 应用层协议定义:

    • 应用进程交换的报文类型,请求还是响应
    • 各种报文类型的语法,如报文中的各个字段及其详细描述
    • 字段的语义,即包含在字段中的信息的含义
    • 时序(同步):进程何时、如何发送报文,以及对报文进行响应的规则
  • 应用层的常用功能:

    协议 端口 功能
    FTP 21(控制)、20(数据) 用于网络中文件的上传与下载。
    SMTP 25 负责电子邮件从发件服务器向收件服务器的发送。
    POP3 110 供用户从邮件服务器下载邮件到本地设备。
    HTTP 80 用于万维网中超文本数据(如网页)的传输。
    DNS 53 将域名解析为对应的IP地址,实现网络通信寻址。

2. 客户 / 服务器模型

  • 客户 / 服务器(Client / Server,C/S)模型特点:
    • 客户、服务器地位不平等
    • 客户之间不直接通信
    • 如果服务器损坏,影响全局
    • 服务器负载较大
  • 服务器:提供计算服务的设备,本质上也是一台主机。特点有:
    1. 永久提供服务
    2. 永久性访问地址 / 域名
  • 客户机:请求计算服务的设备。提点有:
    1. 与服务器通信,使用服务器提供的服务
    2. 间歇性接入网络
    3. 可能使用动态 IP 地址
    4. 不与其他客户机直接通信
  • C/S 模型的应用:Web、FTP、远程登陆、电子邮件

3. P2P 模型

  • P2P(Peer-To-Peer)模型,也叫对等模型,特点:
    • 每个主机既可以提供服务,也可以请求服务,主机之间地位平等
    • 任意端系统 / 节点之间可以直接通讯
    • 不存在永远在线的节点,节点间歇性接入网络,也可能改变 IP 地址,因此单个节点损坏不影响全局
    • 各节点可以分摊负载,可扩展性好,网络健壮性强

二、域名系统 DNS

  • 域名系统(Domain Name System,DNS)基于 UDP,端口号 53,主要用于将人类易于记忆的域名解析为计算机能够识别的 IP 地址,从而实现网络设备之间的通信寻址。

1. 域名

  • 顶级域名:
    • 国家顶级域名:以国家或地区代码为后缀,如 .cn(中国)、.us(美国)、.jp(日本),用于标识域名所属的国家或地区。
    • 通用顶级域名:不局限于特定国家/地区,面向全球通用,如 .com(商业机构)、.org(非营利组织)、.net(网络服务机构)、.edu(教育机构)等。
    • 基础结构域名 / 反向域名:arpa,主要用于互联网的反向域名解析(将IP地址转换为域名),是特殊的顶级域名。
  • 二级域名:
    • 类别域名:我国在国家顶级域名.cn下划分的分类,如.com.cn(商业)、.gov.cn(政府机构)、.edu.cn(教育机构),用于标识机构类型。
    • 行政区域名,用于我国各省、自治区、直辖市:bj(北京)、js(江苏)、gd(广东)等,标识地域所属。
    • 自定义域名:由机构或个人自行注册的二级域名,如在.com下的baidu.com在.cn下的qq.cn,用于区分具体实体。

2. 域名服务器

  • 根域名服务器:使用固定 IP 地址,共有 13 台根域名服务器,存储所有顶级域名服务器的 IP 地址
  • 顶级域名服务器:管理该顶级域名服务器注册的所有二级域名,存储所管理的权限域名服务器的 IP 地址
  • 权限域名服务器:负责一个区的域名服务器,存储与自己域名对应网址的 IP 地址
  • 本地域名服务器:也可称为默认域名服务器,缓存近期被查询过的域名和 IP的映射关系,当一个主机发出 DNS 查询请求时,这个查询请求报文首先发给本地域名服务器

3. 域名解析过程

  • 递归查询:
    • 请求顺序:本地域名服务器 → 根域名服务器 → 顶级域名服务器 → 权限域名服务器
    • 本地域名服务器只需要发送一次 DNS 请求报文
  • 迭代查询
    • 本地域名服务器依次请求根域名服务器、顶级域名服务器、权限域名服务器
    • 本地域名服务器需要发送多次 DNS 请求报文

三、文件传输协议 FTP

1. 协议概述

  • 文件传输协议(File Transfer Protocol,FTP):是基于 C/S 模型和 TCP 的协议,提供不同种类主机系统(硬、软件体系等都可以不同)之间的文件传输能力(上传、下载)。
  • 简单文件传输协议(Trivial File Transfer Protocol,TFTP):基于 UDP 协议,在网络中传输小型文件,协议设计简洁,无需复杂的身份验证。

2. FTP 工作原理

  • FTP 客户端:连接 FTP 服务器,遵循 FTP 协议与服务器传送文件的计算机
    • 用户通过一个客户机程序,使用 FTP 服务器地址、用户名、密码连接至远程计算机上运行的服务器程序
    • 匿名登录:不需要用户事先在服务器中进行登记注册,也不用取得 FTP 服务器的授权,就可以访问主机上公开的文件
  • FTP 服务器:依照 FTP 协议提供服务,进行文件传送的计算机
    • 一个 FTP 服务器的进程可以同时为多个客户进程提供服务
    • 一个 FTP 服务器进程包含 1 个主进程、多个从属进程
    • 控制进程和数据传送进程都属于从属进程
  • FTP 传输模式:
    • 文本模式:ASCII 模式,以文本序列传输数据
    • 二进制模式:Binary 模式,以二进制序列传输数据

3. 控制连接与数据连接

  • 控制连接:
    • 端口号:21
    • 传请求:在整个会话始终保持连接,FTP 客户端发送的传送请求都要通过控制连接发送给服务器端的控制进程。
  • 数据连接
    • 主动方式下,端口号为 20;被动方式由服务器和客户端自行协商决定(端口>1024)
    • 传文件:用于传送文件的连接,服务器端在收到 FTP 客户端发来的文件传输请求后创建数据连接和数据传送进程,文件传输完毕就终止连接和进程。

四、电子邮件

1. 电子邮件系统概述

  • 电子邮件信息格式
    • 信封:收件人邮箱
    • 内容:
      • 首部:发件人邮箱、收件人邮箱、主题、日期等
      • 主体
  • 组成结构:
    • 用户代理:
      • 用户和电子邮件系统的接口,通常是运行在客户机上的程序,因此被称为电子邮件客户端软件
      • 功能:撰写、显示、处理(收发)、通信(传输)
    • 邮件服务器
      • 不间断工作,大容量的邮件信箱来容纳大量的邮件,可以自由切换客户 / 服务器角色
      • 功能:发送和接收邮件、向发件人报告邮件传送结构
    • 协议:
      • SMTP:发送邮件
      • POP3、IMAP:接收邮件

2. 简单邮件传送协议 SMTP

  • 简单邮件传送协议(Simple Mail Transfer Protocol,SMTP)

    • 基于 C/S 模型和 TCP 的协议,端口号为 25,规定了在两个相互通信的 SMTP 进程之间应如何交换信息
    • 负责发送邮件的 SMTP 进程称为SMTP 客户,负责接收邮件的 SMTP 进程称为 SMTP 服务器
  • SMTP 三个阶段:连接建立 → 邮件传送 → 连接释放

    状态码 短语 含义 性质 处理方式
    220 "Service ready" 服务器已就绪,可以开始SMTP会话 成功 客户端可继续发送命令
    250 "Requested mail action okay, completed" 请求的操作成功完成 成功 客户端可继续下一步操作
    421 "Service not available, closing transmission channel" 服务不可用,关闭传输通道 临时错误 稍后重试
    452 "Requested action not taken: insufficient system storage" 系统存储空间不足,无法完成请求 临时错误 等待服务器释放资源后重试
    500 "Syntax error, command unrecognized" 命令语法错误,服务器无法识别 永久错误 检查命令格式并重试
    550 "Requested action not taken: mailbox unavailable" 邮箱不可用(如不存在或被禁用) 永久错误 检查收件人地址是否正确
    354 "Start mail input; end with ." 开始输入邮件内容,以.结束 中间状态 客户端应继续发送邮件内容
    221 "Service closing transmission channel" 服务关闭传输通道,会话结束 成功 客户端应关闭连接
  • SMTP 的缺点

    1. SMTP 不能传送可执行文件或其他二进制对象
    2. SMTP 仅限于传送 7 位 ASCII 码,不能传送其他非英语国家的文字
    3. SMTP 服务器会拒绝超过一定长度的邮件
  • 因为 SMTP 的缺点,诞生了 多用途互联网邮件扩展(Multipurpose Internet Mail Extensions,MIME)

    • 将非 ASCII 码转为 7 位 ASCII 码
    • 使电子邮件系统可以支持声音、图像、视频、多种国家语言等等,传输内容丰富多彩

3. 邮局协议 POP3

  • 邮局协议(Post Office Protocol 3,POP3):基于 C/S 模型和 TCP 的协议,端口号 110
  • POP3 的工作方式
    • 下载并保留(在服务器)
    • 下载并删除

4. 网际报文存取协议 IMAP

  • 网际报文存取协议(Internet Message Access Protocol,IMAP)
  • IMAP 协议比 POP 协议复杂,当用户 PC 上的 IMAP 客户程序打开 IMAP 服务器的邮箱时,用户可以看到邮箱的首部,若用户需要打开某个邮件,该邮件才上传到用户的计算机上
  • IMAP 可以让用户在不同的地方使用不同的计算机随时上网阅读处理邮件,还允许只读取邮件中的某一个部分

五、万维网 WWW

1. 万维网的概念

  • 万维网(World Wide Web,WWW):是一个全球范围的、分布式、联机式的信息存储空间,各种 "资源" 通过 HTTP 协议传送给用户。
  • 一个网页 = 1 1 1 个 HTML 文件 + n n n 个网页元素(本质上是文件)
  • 浏览器访问一个网页的过程:
    1. 用户输入网址(域名)
    2. 浏览器通过 DNS 服务器查询域名对应的 IP 地址,查到后,浏览器会将查询结果(域名和 IP 的映射)缓存在本地
    3. 浏览器与 <Web 服务器 IP 地址:80 端口> 建立 TCP 连接
    4. 浏览器在 ++握手 ③++ 中携带 HTTP 请求报文(指明要访问那个 HTML 网页)
    5. 服务器返回 HTTP 响应报文(携带 HTML 文件)
    6. 如果 HTML 引用了其他 n n n 个元素,还需要 n n n 组 HTTP 请求&响应(持续、非持续工作方式有所区别)

2. 万维网的组成

  • 统一资源定位符 URL
    • URL = <协议>://<主机>:<端口>/<路径>,指向万维网上的某个特定资源
    • 端口、路径可以省去,因为有默认值(Web 服务器 HTTP 默认 80 端口,默认首页资源 index.html
  • 超文本传输协议 HTTP
  • 超文本标记语言 HTML:一种文档结构的标记语言,使用一些约定的标记对页面上的各种信息(包括文字、图像、视频等)、格式进行描述

3. 超文本传输协议 HTTP

  • 超文本传输协议(Hypertext Transfer Protocol,HTTP):应用层协议,基于 TCP,默认端口 80

Ⅰ. HTTP 报文结构

  • 请求报文:

    • HTTP 请求报文通常很小,因此通常不考虑 TCP 报文段传输时延

    • HTTP 常用方法:

      方法 意义
      GET 请求读取由 URL 标识的信息
      HEAD 与GET类似,但仅返回响应头,不返回响应体,常用于获取资源元信息
      POST 给服务器发送待处理数据(如账号、密码)
      PUT 向服务器发送数据,用于更新指定资源(完整替换),若资源不存在则可能创建
      DELETE 请求服务器删除指定资源
      OPTIONS 用于请求服务器支持的HTTP方法,常用于跨域资源共享(CORS)预检请求
      PATCH 用于部分更新指定资源,仅发送需要修改的部分数据,区别于PUT的完整替换
      CONNECT 建立与目标资源的隧道连接,主要用于HTTPS协议中的代理服务器
      TRACE 回显服务器收到的请求,用于诊断或测试,生产环境中通常禁用
    • 常见请求字段

      请求字段 作用 示例值
      Accept 告知服务器客户端能够处理的内容类型(MIME类型),用于内容协商。 text/html,application/json
      Connection 控制当前连接的管理方式,如是否持久化。 keep-alive(持续连接)或close(非持续连接)
      Cookie 携带客户端存储的Cookie信息,用于会话跟踪或身份验证。 session_id=12345; user=john
      Host 指定请求资源的服务器域名和端口(HTTP/1.1强制要求),用于虚拟主机识别。 www.example.com:8080
  • 响应报文:

    • HTTP 响应报文通常较大(如图片、视频),因此通常要考虑 TCP 报文段传输时延

    • 状态码:

      状态码 意义
      1xx 信息
      2xx 成功
      3xx 重定向
      4xx 客户端错误
      5xx 服务器错误

Ⅱ. HTTP 工作过程与工作方式

  • HTTP 工作过程:
    • 先从服务器获得 HTML 文件,才能知道其他 n n n 个被引用的网页元素的 URL
    • 每个文件的获取都需要经过一组 HTTP 请求&响应
  • HTTP 工作方式
    • 非持续连接
      • 特点:每建立一次 TCP 连接,仅完成一组 HTTP 请求&响应。因此每请求一个文件至少需要 2 × R T T 2 × RTT 2×RTT
      • 可以通过 "并行 TCP 连接" 加快获取 n n n 个网页元素的速度
      • HTTP/1.0 默认采用非持续连接
    • 持续连接
      • 特点:每建立一次 TCP 连接,可以完成多组 HTTP 请求&响应。TCP 连接再传输结束后不会立即断开,可以多保持一段时间(由 Web 服务器设置持续时间参数)
      • HTTP/1.1 默认次啊用持续连接(除非在 HTTP 请求报文中设置参数 Connection: Close
      • 又可分为非流水线与非流水线
        • 非流水线:只有上一次 HTTP 请求收到响应后,才能发出下一次 HTTP 请求
        • 流水线:可以连续发出多个 HTTP 请求
  • Cookie:Cookie 识别码需要分别缓存在 Web 服务器、客户端,相当于给网站的访客制作一张 "临时身份证"(一段时间后会过期)。
  • Cookie 的工作流程:
    1. 浏览器发起 HTTP 请求(POST):例如登录个人账号
    2. Web 服务器生成 Cookie 识别码,并存储在服务器。相当于一个临时身份证(有效期内可用)
    3. 通过 HTTP 响应报文(携带 Cookie 字段)返回给客户端
    4. 浏览器获取 Cookie 并缓存在本地,每次发出 HTTP 请求时携带 Cookie,亮明身份
相关推荐
超浪的晨22 分钟前
Java 单元测试详解:从入门到实战,彻底掌握 JUnit 5 + Mockito + Spring Boot 测试技巧
java·开发语言·后端·学习·单元测试·个人开发
Tipriest_1 小时前
ubuntu 多网络路由优先级问题
网络·ubuntu·路由·多网络
云飞云共享云桌面1 小时前
制造工厂高效出图新技术——共享云桌面
运维·服务器·网络·3d·自动化·制造
飞翔的佩奇2 小时前
OpenTelemetry学习笔记(十二):在APM系统中,属性的命名空间处理遵循规则
笔记·学习·springboot·sdk·apm·opentelemetry
序属秋秋秋3 小时前
《C++初阶之STL》【vector容器:详解 + 实现】
开发语言·c++·笔记·学习·stl
Brookty3 小时前
【Java学习】匿名内部类的向外访问机制
java·开发语言·后端·学习
快乐肚皮3 小时前
Zookeeper学习专栏(十):核心流程剖析之服务启动、请求处理与选举协议
linux·学习·zookeeper·源码
ATaylorSu4 小时前
Kafka入门指南:从零开始掌握分布式消息队列
笔记·分布式·学习·kafka
CarmenHu5 小时前
RNN学习笔记
笔记·rnn·学习
钊兵6 小时前
mysql时间处理函数和操作笔记
数据库·笔记·mysql