文章目录
- 初识HTTP协议
- 一、基本概念
- 二、挑出来的几个重点
- (一)资源
- (二)事务
- (三)报文
- 三、写在后面
-
HTTP协议是什么?
HTTP协议是web浏览器与web服务器之间的通信协议。 -
为什么B(browser)/S(server)之间需要通信?
当然是分享“学习资料”了,好吧,是访问服务器里的资源。 -
B/S之间都聊啥?
资源是server里很重要的一部分,那么B/S对于资源有怎样的诉求呢?这就是B/S之间聊的东西,称之为事务。
一个HTTP事务由一条(从客户端发往服务器的)请求命令和一个(从服务器发回客户端的)响应结果组成。 -
B/S之间处理事务的规范是啥?
写信有格式规范,开会也有议事流程,自然而然,处理事务也有流程规范,这种格式规范称之为报文。
初识HTTP难免会有一些疑问,从第一部分的问答之间我们不难可以提取出几个关键点,比如资源、事务、报文。
(一)资源-
资源千千万,该怎么分类呢?
给资源打上标签就可以区分出资源的类型了,这个标签就叫做MIME。它的格式为: type/subtype
type 表示可以被分多个子类的独立类别。subtype 表示细分后的每个类型。
- HTML 格式的文本文档由 text/html 类型来标记。
- 普通的 ASCII 文本文档由 text/plain 类型来标记。
- JEPG 版本的图片为 image/jpeg 类型。
- Apple 的QuickTime 电影为 video/quicktime 类型。
- 微软的 PowerPoint 演示文件 application/vnd.ms-powerpoint 类型。
详细内容参见这里
-
资源在哪儿?
资源怎么定位呢?用URI(统一资源标识符)来定位,有URL和URN两种形式。- URL
统一资源定位符,其格式包含三部分
1.第一部分为方案,即协议的类型,如HTTP协议。https://
2.第二部分为网址,如www.baidu.com
3.其余部分指定web服务器上的某个资源。/img/flexible/logo/pc/result.png
将以上3部分组合在一起就是资源的定位符https://www.baidu.com/img/flexible/logo/pc/result.png
定位的是百度首页的logo图片。 - URN
统一资源名,(略。。。没怎么遇见过)。
- URL
事务是由一条请求命令和一个响应结果组成的。
- 请求命令?
请求命令又叫HTTP方法,HTTP方法如下所示:
| HTTP方法 | 描述 |
|---|---|
| GET | 从服务器向客户端发送命名资源 |
| PUT | 将从来自客户端的数据存储到一个命名的服务器资源中去 |
| DELETE | 从服务器中删除命名资源 |
| POST | 将客户端数据发送到一个服务器网关应用程序 |
| HEAD | 仅发送命名资源响应中的HTTP首部 |
- 状态码?
每条HTTP响应结果中会携带一个状态码,状态码是3个数字,告知用户请求是否成功。一些常见的状态码如下:
| HTTP状态码 | 描述 |
|---|---|
| 200 | OK。文档正确返回 |
| 302 | Redirect(重定向)。到其他地方去获取资源 |
| 404 | Not Found(没找到)。无法找到到这个资源 |
上面提到的事务是由一条请求和一条响应组成,那么请求和响应是什么养的结构呢?
例如,上文提到状态码,响应包含状态码,但绝不是只包含状态码,还有其他什么东西呢?
这就涉及到了报文的概念,即请求和响应的规范。
HTTP 报文包含以下三个部分。
| 组成 | 描述 |
|---|---|
| 起始行 | 报文的第一行,请求报文中说明做什么,响应报文中说明出现什么情况 |
| 首部字段 | 起始行后面有0个或多个首部字段,每个首部字段都由一个名字和一个值组成,两者用冒号隔开,首部以空行结束 |
| 主体 | 空行之后是报文主体,包含所有类型的数据。包含二进制数据(照片,视频,音轨,程序),也可以是文本。 |
下面是报文格式范例,摘自《HTTP权威指南》
下面是用 wireshark 软件抓包的 http协议包
请求报文
响应报文
初识HTTP协议,脑子里留有一个初步印象,资源,资源标识、定位符,事务,请求,响应,方法,状态码,报文等等。
还有的HTTP协议下面的TCP/IP协议,毕竟HTTP属于应用层。还有一些web结构组件,傻傻分不清楚,暂且留个小尾巴吧。



