cen's blog cen's blog
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)

cen

十年饮冰,难凉热血
首页
  • 编程文章

    • markdown使用
  • 学习笔记

    • C++学习
    • C++数据结构
    • MySQL
    • Linux
    • 网络编程
算法
  • Git
  • ProtoBuf
  • 分类
  • 标签
  • 归档
关于
GitHub (opens new window)
  • 网络基础
  • 套接字和UDP
  • 套接字和TCP
  • 网络协议
  • HTTP协议
    • URL
      • 格式
      • urlencode 和 urldecode
    • HTTP 协议格式
    • HTTP 方法
    • HTTP 状态码
    • HTTP 常见 Header
    • HTTPS
  • UDP协议
  • TCP协议
  • IP协议
  • 数据链路层
  • DNS、ICMP、NAT
  • 网络
cen
2025-09-06
目录

HTTP协议

HTTP(超文本传输协议,HyperText Transfer Protocol) 是一个用于传输超媒体文档的应用层协议。

# URL

# 格式

https://john:doe@www.example.com:8080/path/to/myfile.html?key1=value1&key2=value2#SomewhereInTheDocument
scheme:[//[user[:password]@]host[:port]][/path][?query][#fragment]
   |        |                |      |       |       |         |
  协议    认证信息      服务器地址  端口号  文件路径  查询参数   片段
1
2
3
4

# urlencode 和 urldecode

  • 编码(URLEncode)

URL 编码是一种机制,用于将 URL 中不允许或有特殊用途的字符(空格、中文、&, %, =, ?, #, + 等字符)都需要被转换转换为一种以 % 开头、后跟两个十六进制数字表示的格式。

例如:Bing 搜索C++&?@=//,网址为https://cn.bing.com/search?q=C%2B%2B%26%3F%40%3D%2F%2F&qs=...,可以看出了编码

  • 解码(URLDecode)

解码C%2B%2B%26%3F%40%3D%2F%2F可以得到C++&?@=//

# HTTP 协议格式

# HTTP 方法

方法 说明 支持的 HTTP 版本
GET 获取指定的资源 1.0、1.1
POST 传输实体主体,通常用于提交数据 1.0、1.1
PUT 传输文件,用于替换整个目标资源 1.0、1.1
HEAD 获得报文首部,不返回响应体 1.0、1.1
DELETE 删除指定的文件或资源 1.0、1.1
OPTIONS 询问服务器支持的方法 1.1
TRACE 追踪请求路径,用于诊断和测试 1.1
CONNECT 要求用隧道协议连接代理 1.1
  • GET 方法是通过 url 传参的,http://1.15.148.63:8080/login/?name=zhangsan&password=12345
  • POST 方法是通过正文传参的(私密)

POST 方法能传递更多的参数,因为 url 的长度是有限制的,POST 方法通过正文传参就可以携带更多的数据。

# HTTP 状态码

类别 原因短语 描述
1XX Informational(信息性状态码) 接收的请求正在处理
2XX Success(成功状态码) 请求正常处理完毕
3XX Redirection(重定向状态码) 需要进行附加操作以完成请求
4XX Client Error(客户端错误状态码) 服务器无法处理请求
5XX Server Error(服务器错误状态码) 服务器处理请求出错

# HTTP 常见 Header

  • Content-Type: 数据类型(text/html 等)
  • Content-Length: Body 的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • Location: 搭配 3xx 状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能
  • Connection: keep-alive 和 close,表示 http 请求的是否保持长连接,即链接是否复用

# HTTPS

HTTPS = HTTP + SSL/TLS 加密层

其中加密层本身也是属于应用层的,它会对用户的个人信息进行各种程度的加密。HTTPS 在交付数据时先把数据交给加密层,由加密层对数据加密后再交给传输层。

  • 对称加密

加密和解密使用同一把密钥,采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密。
例如,简单的对称加密:按位异或

  • 非对称加密

采用公钥和私钥来进行加密和解密,用其中一个密钥进行加密就必须用另一个密钥进行解密,这种加密方法称为非对称加密。

  • 引入证书

上次更新: 2025/11/11, 22:03:54
网络协议
UDP协议

← 网络协议 UDP协议→

最近更新
01
动态规划
11-08
02
ProtoBuf
09-28
03
Git
09-28
更多文章>
Theme by Vdoing | Copyright © 2024-2025 京ICP备2020044002号-3 京公网安备11010502056119号
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式