HTTP1.1(一)HTTP协议

HTTP协议被定义在RFC7230中,特点是无状态和基于请求/响应模型。它允许扩展,并由浏览器发起请求。ABNF用于严格描述HTTP消息格式。通过telnet可以原汁原味地体验HTTP交互,但HTTPS因加密无法直接观察。HTTP消息包括通用规则,如Host头部,其格式受ABNF规范约束。
摘要由CSDN通过智能技术生成

一  HTTP协议定义

①  RFC7230定义

说明: 关注'红色关键字'

②  无状态

解读: 连续的'两个'请求,后续的请求'不能依赖'前一个请求,各个请求是'相互独立'

③  基于请求/相应

④  可扩展

⑤  浏览器发起http请求

⑥  协议协商

⑦  浏览器内核引擎的一些事情

⑧   浏览器发起 HTTP 请求的典型场景

二  HTTP协议的具体格式

①  口语化的HTTP消息格式

②  基于ABNF语义描述HTTP消息格式

1) 定义'协议格式'的时候常用'ABNF'范式,最为'严谨'

2) 包含两部分:'操作符'和'核心规则',这里介绍'常用的'

ABNF文档 

++++++++++++  基于 'ABNF' 描述的 HTTP 协议格式  ++++++++++++

说明: 这里'通用规则'来描述,我们每天都在'用的HTTP消息'遵循的ABNF规范

 ③  对HTTP的消息格式做演示

Host  --> '48 6f'

\r\n  --> '0d 0a'

Capture --> Options --> '选网卡' --> 'host nginx.wzj.com或 port 80' --> '抓包'

BPF'过滤器'的表示方法:host nginx.wzj.com 或 port 80

补充: 不要使用'https'协议,因为涉及'加密','无法'观察到

C语言解析HttpResponse

④  telnet ip port原汁原味

RFC规定: 如果请求中'没有携带Host'头部,一律返回'400 Bad Request',telenet需要自己指定

telnet退出:

 【1】先按 'Ctrl+ ]',再在telnet命令行输入'quit'就可以了
  
 【2】可以Ctrl+],然后再'close或q',退出

强调:telnet只是建立起了TCP连接,必须'显示'向服务器发送HTTP请求,才能得到HTTP响应

测试方法:

  GET / HTTP/1.1
  Host: www.wzj.com

 ⑤  ABNF的补充

ABNF作为元语言确实'很晦涩',不过'使用场景'到是特别多,在'grpc等应用层协议'中也能看到它的身影

RFC2616里有一个小节在介绍ABNF --> '2.1   Augmented BNF' 

BNF介绍

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值