网络协议学习笔记 · 14

本文深入解析HTTP协议的基础知识,包括ABNF格式定义、请求与响应消息结构、URL编码及多种请求方法(如GET、POST等)。此外,还介绍了如何利用Xshell与telnet工具发送HTTP请求并接收响应。

学习笔记系列文章


ABNF

ABNF(Augmented BNF)
是BNF(Backus-Naur Form,译为:巴科斯-瑙尔范式)的修改、增强版
在 RFC 5234 中表明:ABNF用作 internet 中通信协议的定义语言
ABNF是最严谨的HTTP报文格式描述形式,脱离ABNF谈论HTTP报文格式,往往都是不严谨的

关于HTTP报文格式的定义:
RFC 2616 4.HTTP Message(旧)
RFC 7230 3.Message Format(新)

核心规则

图01

报文格式

整体

图02

request-line、status-line

图03

header-filed、message-body

图04

URL编码

URL中一旦出现了一些特殊字符(比如中文、空格),需要进行编码
在浏览器地址栏输入URL时,是采用 UTF-8 进行编码。

比如:
编码前:https://www.baidu.com/s?wd=百度
编码后:https://www.baidu.com/s?wd=%E7%99%BE%E5%BA%A6

Xshell + telnet

安装一个 Xshell(安全终端模拟软件),在 Xshell 中使用 telnet

  • 可以直接面向HTTP报文与服务器交互
  • 可以更清晰、直观地看到请求报文、响应报文的内容
  • 可以检验请求报文格式的正确与否

图05
图06

请求方法

RFC 7231, section 4: Request methods:描述了 8 种请求方法:
GET、HEAD、POST、PUT、DELETE、CONNECT、OPTIONS、TRACE

RFC 5789, section 2: Patch method:描述了 PATCH 方法


GET:常用于读取的操作,请求参数直接拼接在URL的后面(浏览器对URL是有长度限制的)

POST:常用于添加、修改、删除的操作,请求参数可以放到请求体中(没有大小限制)

HEAD:请求得到与GET请求相同的响应,但没有响应体

  • 使用场景举例:在下载一个大文件前,先获取其大小(HEAD),再决定是否要下载(GET)。以此可以节约带宽资源。

OPTIONS:用于获取目的资源所支持的通信选项,比如服务器支持的请求方法

  • OPTIONS * HTTP/1.1

图07

PUT:用于对已存在的资源进行整体覆盖

PATCH:用于对资源进行部分修改(资源不存在,会创建新的资源)

DELETE:用于删除指定的资源

TRACE:请求服务器回显其收到的请求信息,主要用于HTTP请求的测试或诊断

CONNECT:可以开启一个客户端与所请求资源之间的双向沟通的通道,它可以用来创建隧道(tunnel)

  • 可以用来访问采用了 SSL (HTTPS) 协议的站点

头部字段(Header Field)

图08

请求头字段

图09
图10
图11

响应头字段

图12
图13
图14

上一篇:13. DNS · DHCP · HTTP
下一篇:15. 状态码 · form提交

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值