HTTP的报文格式
1. URL的基本结构
一个标准URL通常包含以下部分(以https://www.example.com:443/path/to/page?key=value#section 为例):
- 协议(Scheme) :
https://
表示访问资源的协议(如http、ftp、mailto)。 - 域名(Host) :
www.example.com
资源所在服务器的地址,也可用IP(如192.168.1.1)。 - 端口(Port) :
:443(可选)
默认隐藏(HTTP默认80,HTTPS默认443)。 - 路径(Path) :
/path/to/page
资源在服务器上的具体位置。 - 查询参数(Query) :
?key=value(可选)
以?开头,用&分隔多个参数(如?id=1&lang=en)。 - 片段(Fragment) :
#section(可选)
指向页面内的特定锚点(如HTML的<div id="section">)。
请求报文的请求行
响应报文的状态行
HTTP和HTTPS的区别
HTTP
- 无状态:协议对客户端没有状态存储,没有物理记忆能力,访问一个网站需要反复进行登陆操作
- 无连接:HTTP/1.1之前,由于无状态的特点,客户端每次请求都需要进行三次握手四次挥手,和服务器重新建立连接,服务器并不能区分是否已经响应过用户的请求。
- 基于请求和响应:由客户端发起请求,服务端进行响应。
- 通常使用明文,请求和响应不会对通信方进行确认,无法保证数据的完整性。
HTTPS
- 内容加密:采用混合加密技术,中间者无法直接查看明文内容。
- 客户端使用对称加密生成的密钥对传输的数据进行加密,再使用非对称加密的公钥再对密钥进行加密。
- 验证身份:需要通过证书验证客户端访问的是自己的服务器。
- 保护数据的完整性:防止传输的内容被中间人冒充或篡改。