计算机网络:应用层

应用层概述

客户端/服务器架构

  • 服务器:一直开机并在线,IP地址是固定的,一般都位于数据中心
  • 客户端:发起联系,客户端之间不直接通信

P2P架构

点对点,网络里每个节点(peer)既可以当客户端也可以当服务器,节点之间直接交换数据/提供服务,而不是全部依赖中心服务器。

进程通信(IPC)

进程:拥有独立内存的一个正在运行的程序 进程通信:就是不同进程之间交换数据与同步的机制

Socket

应用通过它把数据发给另一端进程/从另一端收数据 IP + 端口 标识服务端进程 包括TCP和UDP

TCP和UDP

  • TCP:需要连接,可靠,有序,适合http网站
  • UDP:不需要连接,可能丢包,不可靠,适合游戏,DNS 为什么DNS用UDP:快,可换服务器重试来应对丢包,服务器不用维护大量TCP连接

TCP三次握手

  • 第一次:客户端->服务端
  • 第二次:服务端->客户端
  • 第三次:客户端->服务端

为什么是三次:

  • 第一次:服务端知道此客户端
  • 第二次:客户端知道服务端能收到,但是服务端不知道客户端能否收到
  • 第三次:服务端知道客户端能收到,至此双方都能开始正常收发

Web 和 HTTP

Web服务三件套:浏览器,web服务器,HTTP

Web页面上的对象

包括HTML文件,图片,JavaScript,CSS文件,视频等

  • HTML:超文本标记语言,作用:描述页面结构与语义(标题 <h1>、段落 <p>、链接 <a>、图片 <img>等)
  • CSS:网页的“样式表”,用来控制页面长什么样。,作用:定义颜色、字体、大小、间距、布局等。
  • JavaScript:网页的“脚本/逻辑”,用来控制页面怎么动、怎么交互、怎么请求数据。

URL

一个资源地址(协议://主机/对象路径) 例如:https://www.szu.edu.cn/images/logo.png https://yaoyablog.xyz/2026/03/28/GGJ%E9%A1%B9%E7%9B%AE%E5%A4%8D%E7%9B%98/#%E7%BB%AA%E8%AE%BA //这里这样显示是因为是中文

HTTP

超文本传输协议,通常在 TCP 上,客户端发 Request(方法+URL+头+可选 body),服务器回 Response(状态码+头+可选 body)。

方法:

请求的“动作/意图”,

  • GET 获取资源
  • POST 提交数据/创建
  • PUT 整体替换更新
  • PATCH 局部更新
  • DELETE 删除
  • HEAD 只要响应头
  • OPTIONS 询问服务器支持哪些能力

头(请求头/响应头):一组“键:值”的元数据,用来描述这次请求/响应的条件、格式、身份、缓存等

请求头例子:

  • Host: 访问哪个域名(同一 IP 上区分不同网站)
  • User-Agent: 客户端信息(浏览器/版本)
  • Accept: 期望返回的数据类型(如 text/html, application/json)
  • Content-Type: 你发出去的 body 是什么格式(如 application/json)
  • Authorization: 身份认证信息(如 Bearer token)
  • Cookie: 携带会话/登录态 响应头例子:
  • Content-Type: 返回内容类型
  • Content-Length: 内容长度
  • Set-Cookie: 让客户端保存 cookie
  • Cache-Control: 缓存策略
  • Location: 重定向地址(配合 301/302)

状态码:

  • 200 OK
  • 400 Bad Request 无法解析
  • 301 Moved Permanently 对象转移
  • 404 Not Found
  • 505 HTTP Version Not Supported 服务器不支持你当前使用的 HTTP 协议版本

HTTP vs HTTPS:HTTPS = HTTP + TLS 加密(防窃听/篡改/伪装),默认端口 443;HTTP 默认 80。

HTTP传输速度相关概念

持续 HTTP vs 非持续 HTTP

  • 非持续HTTP:每个对象都要重新进行TCP连接
  • 持续HTTP: 同一个 TCP 连接上可以连续发送多个 HTTP 请求/响应,用完才关闭连接。

传输时延 vs 传播时延

  • 传输时延:把整份数据“推”到链路上需要的时间。即从数据的第一个包上链路到最后一个包上链路的时间 跟链路带宽、数据长度有关,和两点距离无关
  • 传播时延:第一个信号从 A 端“跑”到 B 端 所要的时间。 跟物理距离、介质(光纤/铜线)有关,和数据大小无关

RTT(往返时延)

RTT 包含:一次去程传播时延 + 一次回程传播时延 + 双端的排队 / 处理时间。也包含传输时延,但是相对小,常被近似忽略。 一轮TCP三次握手建立连接花一个RTT,发请求+回应花一个RTT

流水线工作方式

在一个 TCP 连接上,不等前一个响应回来,就把多个请求连续发出去。 好处:多个请求共享一次RTT,减少等待时间。

Email

用户->(HTTP,SMTP)->邮件服务器->(SMTP)->邮件服务器->(IMAP,POP3,HTTP)->用户 使用TCP

DNS

把人类好记的域名(如 www.qq.com)解析成网络通信需要的IP 地址 www.szu.edu.cn ——> 210.39.4.1

域名的层级结构:

最右边第一级,点间隔级,向左递增,最多有128个层级。

区分域名,网址,URL

  • 域名(Domain name):主机的“名字”,用于标识一台/一组服务器,比如 qq.comwww.qq.com。它本身不包含协议、路径,需要 DNS 把它解析成 IP。
  • URL:资源的“完整定位符”,描述用什么协议到哪个主机访问哪个资源,如 https://www.qq.com/news?id=1。URL 里通常包含域名(在 host 位置)。
  • 网址:日常口语里一般指“网站地址”,多数情况下就是指一个 URL(很多人把“网址=URL”用)。有时也会被用来泛指“域名”,但不严谨。

IP地址

32位,4字节 点分十进制计法 11011111 00000001 00000001 00000001 223 . 1 . 1 . 1

DNS分层分布式系统

分层:根域、顶级域、权威 DNS

分布:根服务器不是一台,TLD/权威服务器也不是一台,同ip,不同mac

DNS 域名解析

迭代查询

被询问的服务器返回下一步询问的服务器地址 迭代查询

递归查询

被询问的服务器去查询 递归查询

DNS记录

分布式数据库中的记录,四个字段:name, value, type, ttl

记录类型:

  • A记录:name:主机名(如 www.example.com),value:IPv4 地址(如 93.184.216.34),作用:把“主机名 → IPv4”
  • NS记录:name:某个域(zone)的域名(如 example.com)value:这个域的权威 DNS 服务器的主机名(如 ns1.example-dns.com) 作用:告诉别人“要问 example.com 这片域名,去找哪台权威服务器”(用于分层“指路”)
  • CNAME记录:name:别名(如 cdn.example.com)value:规范名/真名(如 example.cdnprovider.net) 作用:把一个名字映射到另一个名字(再继续解析目标名字的 A/AAAA 等)
  • MX记录:name:域名(如 example.com)value:负责该域邮件投递的邮件服务器主机名(如mail.example.com) 作用:别人给 @example.com 发邮件时,先查 MX 决定“投递到哪台邮件服务器”

计算机网络:应用层
https://yaoyablog.xyz/2026/03/31/study/计算机网络/计算机网络:应用层/
作者
Yaoyawen
发布于
2026年3月31日
许可协议