网络(六)|应用层 HTTP&HTTPS:URL、请求响应、Cookie 与证书

HTTP/HTTPS

前言

上一篇传输层讲完 TCP&UDP、三次握手四次挥手。本篇落到应用层,讲解浏览器和服务器的通信协议 HTTP / HTTPS。

传输层TCP、UDP完成了主机上进程与进程的数据传输。但浏览器、后端服务之间,需要一套统一的格式约定:请求长什么样、响应长什么样、要携带哪些附加信息,这就是HTTP协议

HTTP是基于TCP的应用层协议,明文传输;HTTPS则是在HTTP基础上引入加密,解决窃听、篡改、中间人劫持问题。

本篇覆盖:报文格式、URL、请求方法GET/POST、请求头响应头、Cookie、状态码、HTTPS加密原理、证书。

HTTP基础概念

  1. HTTP:超文本传输协议,应用层协议,默认基于 TCP。
  2. 版本演进:
    (1)HTTP/1.0:每次请求新建 TCP 连接,请求完断开;
    (2)HTTP/1.1:长连接(默认),管线化,面试最常考;
    (3)HTTP/2:二进制帧、多路复用。
  3. 工作模式:一问一答,客户端发起请求,服务器返回响应。
  4. 抓包工具:Fiddler / Wireshark
    (1)Fiddler:代理抓 HTTP/HTTPS,观察请求响应报文
    (2)Wireshark:抓取底层 TCP/IP 数据包

URL

URL:唯一资源定位符,描述了一个资源在网络上的位置。

协议方案名://主机:端口/资源路径?query参数#片段

例如 http://blog.test.com:8080/network/article?chapter=6\&keyword=http#summary

  1. 协议方案名:http/https
  2. 主机+端口:定位服务器程序(哪个主机上的哪个程序)
  3. 资源路径:描述了要访问服务器的哪个资源
  4. query 查询字符串:key=value&key=value,键值对结构的数据,以?开头。是针对此次请求进行了补充说明。
  5. URL编码:中文、特殊符号要做urlencode,否则浏览器可能会解析失败,导致请求无法正常进行。

HTTP报文结构

请求报文

  1. 首行

    首行包含三部分信息:请求方法、URL、HTTP版本号,中间用空格分隔。

    例如:GET /index.html HTTP/1.1

  2. 请求头header

    一组key: value键值对,注意键和值之间用:+空格来分隔,每个键值对单独占一行。

    常见请求头:

    (1)Host:目标主机端口

    (2)User‑Agent:客户端浏览器 / 设备信息

    (3)Referer:从哪个页面跳转过来

    (4)Content‑Length:body 长度

    (5)Content‑Type:请求 body 的数据格式

  3. 空行

    请求头的结束标记,分割头部和正文。

  4. 正文body

    POST/PUT携带数据;GET一般没有body。

GET vs POST

GET和POST没有本质区别,双方可以替换对方的场景。

但在使用习惯上有差异:

  1. GET经常把传递给服务器的数据放到query string中;POST则经常放到body中。
    但上述情况并非绝对,GET也可以用body,POST也可以用query string,使用的前提是客户端/服务器都要按照一样的方式处理代码。
  2. 语义上有差异,GET大多数用来获取数据,POST大多数用来提交数据。

响应报文

  1. 首行
    包含HTTP版本+状态码+状态码描述,中间用空格分隔。
    状态码描述了请求的结果。
    例如:HTTP/1.1 200 OK
  2. 响应头 header
    键值对,返回服务器附加信息。
  3. 空行
    响应头的结束标记。
  4. 正文body
    返回给浏览器的数据 (html、json、图片等)

常见请求头&响应头重点

  1. User‑Agent:浏览器+操作系统的属性(版本)。以前用来区分新旧浏览器,现在用来区分PC端还是移动端。
  2. Referer:来源页面。
  3. Content‑Type:body 格式:application/json、text/html、form‑data等
  4. Content‑Length:body 字节长度
  5. Cookie
    Cookie 由服务器下发,保存在浏览器本地;后续每次请求自动携带 Cookie 发给服务器。
    作用:会话保持,记住用户状态。
    服务器通过响应头Set‑Cookie设置;浏览器请求头携带Cookie。

HTTP状态码

  1. 2xx 成功
    200 OK:正常成功返回
  2. 3xx 重定向
    301 永久重定向会被浏览器缓存;302 临时重定向不会缓存;响应头Location给出跳转地址
  3. 4xx 客户端错误
    400 参数错误;404 资源找不到;403 权限不足拒绝访问
  4. 5xx 服务端错误
    500 服务器内部异常;503 服务不可用

HTTPS

HTTP 是明文传输,存在窃听、篡改、中间人攻击风险;HTTPS = HTTP + TLS 加密。

两种加密方式

  1. 对称加密

同一个密钥,加密解密都用它。速度快,但是密钥传输容易泄露。

  1. 非对称加密

公钥加密、私钥解密。公钥公开,私钥服务器自己保存。加密解密速度慢。

中间人攻击问题

如果只用非对称加密传输对称密钥:客户端拿到的公钥有可能是黑客伪造的,无法辨别公钥真假。

数字证书CA机构

解决公钥真伪问题。

  1. 服务器向 CA 申请证书,证书包含服务器公钥、域名信息,CA 数字签名。
  2. 客户端拿到证书,用 CA 根证书校验签名,确认公钥是真实服务器的,不是黑客伪造。

HTTPS握手简单流程

  1. 客户端请求服务器,服务器返回 CA 数字证书。
  2. 客户端校验证书合法无误,取出服务器真实公钥。
  3. 客户端生成随机对称密钥,使用服务器公钥加密,发给服务器。
  4. 服务器用自己私钥解密,拿到对称密钥。
  5. 后续所有 HTTP 数据,全部使用这套对称密钥加密通信

非对称加密只用来安全传递对称密钥;真正业务数据传输使用对称加密兼顾安全与性能。

总结

  1. HTTP 作为应用层协议,定义了客户端与服务器之间请求响应的格式规范。
  2. GET/POST、请求响应头、Cookie、状态码是日常开发和面试高频。
  3. HTTP 明文不安全,HTTPS 结合对称加密、非对称加密、CA 数字证书,解决窃听篡改中间人劫持。
  4. 传输层 TCP 保证可靠传输,HTTP 约定数据语义,HTTPS 负责数据加密,三者配合完成网页、接口的网络通信。
    本篇是「Java后端编程系列」的连载内容,点击链接查看完整系列:

🔹 上一篇:网络(五)|别再死背三次握手!一文吃透 TCP 全底层原理

👉 点击直达 Java后端基础专栏合集

相关推荐
星恒讯工业路由器2 小时前
四张网协同演进:新一代通信网对工业通信设备意味着什么?
网络·物联网·智能路由器·工业路由器·工业物联网·5g-a·新一代通信网
小程序设计2 小时前
校园网络资产自动探测与安全状态评估系统设计与实现
网络·安全
新时代牛马2 小时前
PCI与PCIe 完整篇:硬件拓扑→ 报文协议→配置/BAR → Linux 驱动(一条主线讲透)
linux·运维·网络
筝筝ba2 小时前
如何跳过FFDC
xml·linux·运维·服务器·网络
●VON3 小时前
Flutter 鸿蒙插件适配实战:用 network_status_bridge 0.0.5 查询并监听默认网络
网络·flutter·华为·harmonyos·鸿蒙
u0109053593 小时前
NAS远程访问内网穿透方案之使用神卓N600实现不限速方法
服务器·网络·数据库
tachibana23 小时前
WebSocket 和 SSE 通信的区别及局限性
网络·人工智能·websocket·网络协议·ai·llm·agent
闲云自留地3 小时前
Neutron 实战教程:物理 vs 虚拟网络,OVN 环境创建网络与安全策略
服务器·网络·openstack
为思念酝酿的痛3 小时前
传输层协议UDP
linux·网络·udp