上一节HTTP中简单介绍了一些基本知识,本节继续介绍HTTP内内容,希望帮助大家复习和启发,那么就让我们开始这节课的学习吧!
之前学习过HTTP知识的同学一定知道HTTP非常像大头儿子,接下我们来看看具体大头儿子是怎么组成的。
1. 报文结构
HTTP协议的核心之一就是报文内容,HTTP是在TCP/IP基础之上的,所以我们先来看一下TCP的报文结构,TCP的报文结构,TCP的报文比较简单,TCP头会包含发送的端口和发送的目的地,去掉TCP头就可以拿到具体的数据。示意图如下:
而HTTP也是类似的逻辑,但是更加复杂,HTTP的请求和响应是类似的以请求为例,主要分为三部分:起始行、头部字段和消息正文,在头部字段和消息正文之间还有固定的空行分隔,将起始行和头部字段统称为请求头。示意图如下:
1.1 请求行/状态行
请求行主要三部分组成:请求方法+请求目标+版本号
响应报文的起始行称为状态行,同意由三部分组成:版本号+状态码+原因
1.2 头部字段
头部字段可以大体分为四类:通用字段、请求字段、响应字段、实体字段。头部字段是按照键值对方式,用:分隔,同时不区分大小写,顺序没有规定,它可以通过添加字段实现功能的扩展。
2. HTTP的特点
问起HTTP的特点有哪些,大家会想到什么?这里主要介绍这几个特点:灵活扩展性、可靠传输、无状态、不安全、明文。
2.1 灵活扩展
这个特点我们联系上面介绍的知识就可以理解,HTTP在设计的时候没有严格规定,而是给开发者可扩展的空间,在请求字段中可以添加自定义的头部字段;并且实体中可传输图片,视频等都是基于HTTP的可扩展性。
2.2 可靠传输
这个特点需要联系上一节内容的网络分层模型,因为HTTP协议是基于TCP/IP协议实现的,TCP协议我们知道是可靠传输,所以HTTP用于具备这个特点。
2.3 无状态
HTTP几乎没有记性可言,即使上一秒刚向服务器请求过资源的小刘,下一秒服务器还是不认识,服务器必须重新认证身份。所以这也成了HTTP初的一个弊端,试想一下你在淘宝每次下单的时候都需要你登陆认证,才能下单这是多么麻烦,所以后面就有了Cookie技术和Session技术。
2.4 明文
在HTTP中使用明文来传输,一方面非常便于我们了解传输的内容,方便了开发者,但是这也让别有用心的人有了可乘之机,所以为了安全考虑有了HTTPS。