【计算机网络笔记五】应用层(二)HTTP报文

在这里插入图片描述

HTTP 报文格式

在这里插入图片描述

HTTP 协议的请求报文和响应报文的结构基本相同,由四部分组成:

  • ① 起始行(start line):描述请求或响应的基本信息;
  • ② 头部字段集合(header):使用 key-value 形式更详细地说明报文;
  • ③ 空行 + CRLF回车换行
  • ④ 消息正文(body):实际传输的数据,它不一定是纯文本,可以是图片、视频等二进制数据。

在这里插入图片描述

HTTP 是一个 “纯文本” 的协议,所以头数据都是 ASCII 码的文本,可以很容易地用肉眼阅读。

请求报文格式:

在这里插入图片描述

响应报文格式:

在这里插入图片描述

注:根据 RFC 2616(HTTP/1.1)规定,头部字段中,字段值的前面可以有一个或多个可选的空格,但是字段名中以及字段名和:之间不能有空格。这就是为什么浏览器的开发者工具和一些抓包工具得到的Http报文是可读性更好的带空格版本。

请求报文的请求行

请求行简要地描述了客户端想要如何操作服务器端的资源。

在这里插入图片描述

请求行由三部分组成:请求方法 + 空格 + URI + 空格 + 版本号 + CRLF回车换行

  • ① 请求方法:是一个动词,如 GETPOST,表示对资源的操作方式;
  • ② 请求目标:请求目标的路径 path,通常是一个 URI,标记了请求方法要操作的资源;
  • ③ 版本号:表示报文使用的 HTTP 协议版本,如 HTTP/1.1 。

这三个部分通常使用空格(space)来分隔:

在这里插入图片描述

URI:统一资源标识符(Uniform Resource Identifier)

响应报文的状态行

在这里它不叫“响应行”,而是叫“状态行”(status line),意思是服务器响应的状态。

在这里插入图片描述

状态行由三部分组成:版本号 + 空格 + 状态码 + 空格 + 原因 + CRLF回车换行

  • ① 版本号:表示报文使用的 HTTP 协议版本,如 HTTP/1.1;
  • ② 状态码:一个 3 位数字,表示处理的结果,比如 200-成功,500-服务器错误,404-资源不存在;
  • ③ 原因描述:作为数字状态码补充,是更详细的解释文字,帮助人理解原因。

头部字段

HTTP 协议规定了非常多的头部字段,实现各种各样的功能,但基本上可以分为四大类:

  • ① 通用字段:在请求头和响应头里都可以出现;比如 DateConnection

  • ② 请求字段:仅能出现在请求头里,进一步说明请求信息或者额外的附加条件;比如 HostAccept

  • ③ 响应字段:仅能出现在响应头里,补充说明响应报文的信息;比如 Server

  • ④ 实体字段它实际上属于通用字段,但专门描述 body 的额外信息。比如 Content-Length

对 HTTP 报文的解析和处理实际上主要就是对头字段的处理,理解了头字段也就理解了 HTTP 报文。

常用头字段 - Host 字段

  • Host 是一个请求字段,只能出现在请求头里。

  • Host 同时也是唯一一个 HTTP/1.1 规范里要求必须出现的字段,也就是说,如果请求头里没有 Host,那这就是一个错误的报文

  • Host 字段其实是在告诉服务器这个请求应该由哪个主机来处理。

    在这里插入图片描述

常用头字段 - User-Agent 字段

  • User-Agent 是一个请求字段,只出现在请求头里

  • 它使用一个字符串来描述发起 HTTP 请求的客户端,服务器可以依据它来返回最合适此浏览器显示的页面。

    在这里插入图片描述

常用头字段 - Date 字段

  • Date 字段是一个通用字段,但通常出现在响应头里表示 HTTP 报文创建的时间,客户端可以使用这个时间再搭配其他字段决定缓存策略。

常用头字段 - Server 字段

  • Server 字段是一个响应字段,只能出现在响应头里。 它告诉客户端当前正在提供 Web 服务的软件名称 和 版本号。

  • Server 字段也不是必须要出现的,因为这会把服务器的一部分信息暴露给外界,如果这个版本恰好存在bug,那么黑客就有可能利用 bug 攻陷服务器。所以,有的网站响应头里要么没有这个字段,要么就给出一个完全无关的描述信息。<

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

川峰

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值