转载请注明出处:https://blog.csdn.net/zwjemperor/article/details/80719427
主页:https://blog.csdn.net/zwjemperor
前言
网络请求是应用开发的基础,在开发过程中经常需要通过抓包来分析网络问题,了解HTTP基础知识和HTTPS通信机制对提高开发效率来说必不可少。在这篇文章里,我将介绍三部分的内容:
- HTTP基础知识:URL和报文结构
- 浅谈HTTPS通信机制,HTTPS是如何进行安全通信的?
- 浅谈HTTPS抓包原理,为什么Charles能够抓取HTTPS报文?
1. HTTP基础知识:URL和报文结构
1.1 URL
统一资源定位符(Uniform Resource Locator)是网络资源的位置和访问方法的简洁表示。
常见的url包括4个部分,结构如下图:
组件 | 含义 |
---|---|
方案 | 使用的协议,如http或https |
主机 | 服务器的域名或IP地址 |
路径 | 服务器上资源的本地名,用(/)与前面的scheme分隔开来 |
查询字符串 | 通过查询字符串来减小请求资源类型的范围,如参数 |
url的详细介绍可参考:统一资源定位符
1.2 报文
HTTP报文就是网络传输的信息,包括3个部分:起始行、首部(Header)、主体。
报文分2类:发送请求的报文称为请求报文,响应请求的报文称为响应报文
1.2.1 请求报文
1.2.1.1 请求行
请求报文的起始行称为请求行,包含 请求方法、地址、HTTP版本 3个部分,格式为:
[空格][空格]
请求行以CRLF字符结束,请求方法、地址、HTTP版本之间以空格隔开。
如上面的请求报文中,请求方法为GET,地址为/static/search/baiduapp_icon.png,HTTP版本为1.1。
http最常用请求方法为GET和POST。
方法 | 作用 |
---|---|
GET | 从服务器获取资源 |
POST | 向服务器发送需要处理的数据,如提交表单 |
1.2.1.2 请求首部(Header)
起始行后