前言
HTTP 网络通信协议在任何的开发工作中都非常重要
今天, 我将献上一份 HTTP 的说明指南, 希望你们会喜欢
ps: 最近在筹备一个 "和我一起写 Android" 的活动, 需要各大读者的帮忙, 希望能看文章参与哦: 我想邀请您和我一起写 Android(福利回赠)
目录
1. 储备知识
讲解 HTTP 协议前, 先了解一些基础的计算机网络相关知识
1.1 计算机网络体系结构
定义 计算机网络的各层 + 其协议的集合
作用 定义该计算机网络的所能完成的功能
结构介绍 计算机网络体系结构分为 3 种: OSI 体系结构, TCP / IP 体系结构, 五层体系结构
OSI 体系结构: 概念清楚 & 理念完整, 但复杂 & 不实用
TCP / IP 体系结构: 含了一系列构成互联网基础的网络协议, 是 Internet 的核心协议 & 被广泛应用于局域网 和 广域网
五层体系结构: 融合了 OSI 与 TCP / IP 的体系结构, 目的是为了学习 & 讲解计算机原理
TCP / IP 的体系结构详细介绍 由于 TCP / IP 体系结构较为广泛, 故主要讲解
1.2 HTTP 协议通信的基础模型
HTTP 协议传输信息的基础: TCP/IP 协议模型
HTTP 协议 属于 最高层的应用层
2. 简介
下面, 将简单介绍一下 HTTP
3. 工作方式
HTTP 协议采用 请求 / 响应 的工作方式
具体工作流程如下:
4. HTTP 报文详解
HTTP 在 应用层 交互数据的方式 = 报文
HTTP 的报文分为: 请求报文 & 响应报文
分别用于 发送请求 & 响应请求时
下面, 将详细介绍这 2 种报文
4.1 请求报文
4.1.1 报文结构
HTTP 的请求报文由 请求行, 请求头 & 请求体 组成, 如下图
下面, 将详细介绍每个组成部分
4.1.2 结构详细介绍
组成 1: 请求行
作用 声明 请求方法 , 主机域名, 资源路径 & 协议版本
结构 请求行的组成 = 请求方法 + 请求路径 + 协议版本
注: 空格不能省
组成介绍
此处特意说明 GET,PSOT 方法的区别:
示例 设: 请求报文采用 GET 方法, URL 地址 = HTTP1.1 版本
则 请求行是: GET /chn/yxsz/index.htm HTTP/1.1
组成 2: 请求头
作用: 声明 客户端, 服务器 / 报文的部分信息
使用方式: 采用 **"header(字段名):value(值)"** 的方式
常用请求头 1. 请求和响应报文的通用 Header
2. 常见请求 Header
举例: (URL 地址: Host:www.tsinghua.edu.cn (表示主机域名) User - Agent:Mozilla/5.0 (表示用户代理是使用 Netscape 浏览器)
组成 3: 请求体
作用: 存放 需发送给服务器的数据信息
可选部分, 如 GET 请求就无请求数据
使用方式: 共 3 种
至此, 关于请求报文的请求行, 请求头, 请求体 均讲解完毕.
4.1.3 总结
关于 请求报文的总结如下
请求报文示例
4.2 HTTP 响应报文
4.2.1 报文结构
HTTP 的响应报文包括: 状态行, 响应头 & 响应体
其中, 响应头, 响应体 与请求报文的请求头, 请求体类似
这 2 种报文最大的不同在于 状态行 & 请求行
下面, 将详细介绍每个组成部分
4.2.2 结构详细介绍
组成 1: 状态行
作用 声明 协议版本, 状态码, 状态码描述
组成 状态行有协议版本, 状态码 & 状态信息组成
其中, 空格不能省
具体介绍
状态行 示例 HTTP/1.1 202 Accepted(接受),HTTP/1.1 404 Not Found(找不到)
组成 2: 响应头
作用: 声明客户端, 服务器 / 报文的部分信息
使用方式: 采用 **"header(字段名):value(值)"** 的方式
常用请求头 1. 请求和响应报文的通用 Header
2. 常见响应 Header
组成 3: 响应体
作用: 存放需返回给客户端的数据信息
使用方式: 和请求体是一致的, 同样分为: 任意类型的数据交换格式, 键值对形式和分部分形式
4.2.3 响应报文 总结
4.3 总结
下面, 简单总结两种报文结构
5. 额外知识
下面将讲解一些关于 HTTP 的额外知识:
HTTP1.1 与 HTTP1.0 的区别
HTTP 与 HTTPS 的区别
HTTP 处理长连接的方式
5.1 HTTP1.1 与 HTTP1.0 的区别
Http1.1 比 Http1.0 多了以下优点:
引入持久连接, 即 在同一个 TCP 的连接中可传送多个 HTTP 请求 & 响应
多个请求 & 响应可同时进行, 可重叠
引入更加多的请求头 & 响应头
如 与身份认证, 状态管理 & Cache 缓存等机制相关的, HTTP1.0 无 host 字段
5.2 HTTP 与 HTTPS 的区别
5.3 HTTP 处理长连接的方式
6. 总结
本文全面总结了 HTTP 的基础知识.
接下来我会介绍继续 Android 开发中的相关知识, 有兴趣可以继续关注 Carson_Ho 的安卓开发笔记
ps: 最近在筹备一个 "和我一起写 Android" 的活动, 需要各大读者的帮忙, 希望能看文章参与哦: 我想邀请您和我一起写 Android(福利回赠)
来源: https://juejin.im/post/5c98306bf265da60ed6eedbc