目录
- [HTTP 基本概念](#HTTP 基本概念)
-
- 啥是HTTP,有什么用?
- 一次HTTP请求的过程
- [当你在浏览器中输入一个浏览器地址,它会发送什么 ?---(底层流程)](#当你在浏览器中输入一个浏览器地址,它会发送什么 ?---(底层流程))
- HTTP的协议头
- HTTPS
HTTP 基本概念
啥是HTTP,有什么用?
HTTP(HyperTextTransferProtocol,超文本传输协议)是用于客户端和服务器之间数据传输的应用层协议,主要用在Web浏览器和服务器之间的通信。HTTP最初是为传输HTML文档设计的,但现在支持多种类型的数据,如图片、视频、文本等。
举个咱们最熟悉的例子:
- Web浏览:浏览器使用HTTP从服务器获取网页和资源,如图片和CSS文件。
- 数据传输:开发者使用HTTP在客户端和服务器之间发送和接收数据,特别是在WebAPI和REST服务中。你看当你通过浏览器访问一个网页的时候。你往往会输入:http://www.baidu.com.
无状态性:每个HTTP请求都是独立的,不记录之前的任何请求信息,请求一次,就返回一次。这简化了协议的实现,但可能会需要使用其他方式(如Cookies或Sessions)来保存状态。
一次HTTP请求的过程
- 建立连接:
客户端(如浏览器)与服务器之间建立TCP连接。对于HTTPS请求,建立 SSL/TLS安全连接。 - 发送请求:
客户端向服务器发送一个HTTP请求,包括请求行(如GET/index.html HTTP/1.1)、请求头(如Host、User-Agent等)和可选的请求主体(如 POST数据)。 - 服务器处理请求:
服务器接收并解析请求,根据请求路径和参数决定返回的数据或页面内容。 - 发送响应:
服务器向客户端发送HTTP响应,包括状态行(如HTTP/1.1 200 OK)、响应头(如Content-Type等)和响应主体(如网页内容)。 - 关闭连接:
连接可以被立即关闭,或保持一段时间(使用Connection:keep-alive)。 - 客户端处理响应:
客户端解析并展示网页或处理数据。
当你在浏览器中输入一个浏览器地址,它会发送什么 ?---(底层流程)
HTTP的协议头
HTTP协议分为请求头和响应头
请求头(对应客户端)
HTTP请求包含三部分:请求行(构建请求阶段),请求头,请求体。
一些请求头
- Host:指定服务器的域名和端口号(例如:Host:www.example.com)。
- User-Agent:描述客户端应用程序的名称和版本(例如:User-Agent:Mozilla/5.0)。
- Accept:指示客户端可以处理的媒体类型(例如:Accept:text/html)。
- Content-Type:指示请求主体的数据类型,常见于POST或PUT请求(例如:Content-Type:applic ation/json)。
- Authorization:包含认证凭据,用于保护的资源访问(例如:Authorization:Basic)。
请求方法
响应头(对应服务端返回)
服务器端接收到客户端的请求,将作出处理并返回相应数据,包含响应行,响应头,响应体。
POST与GET的区别
- 数据传输方式
- GET请求:参数通过URL传递,数据包含在URL的查询字符串中(如?name=John&age=30)。URL长度有限,传输的数据量较小,适用于不敏感数据的请求。
- POST请求:参数在请求主体中传输,适合发送较大数据量或敏感信息,如表单数据或文件上传。
- 安全性
- GET请求:不适合传输敏感数据,因为参数会暴露在URL中,可能被缓存或记录。
- POST请求:更安全,参数不会显示在URL中,但仍需通过加密(如HTTPS)来保护数据。
- 缓存
- GET请求:可被浏览器缓存,适合可重复访问的请求。
- POST请求:默认不被缓存,一般用于提交数据。
HTTP状态码
状态码 | 类别 | 含义 |
---|---|---|
1xx | 信息状态码 | |
2xx | 成功状态码 | |
3xx | 重定向状态码 | |
4xx | 客户端错误状态码 | |
404 | Not Found | 资源未找到,服务器无法提供请求资源 |
5xx | 服务器错误状态码 |
HTTPS
什么是https?
HTTPS(HyperTextTransferProtocolSecure)是HTTP协议的安全版本,用于在客户端(如浏览器)和服务器之间安全地传输数据。HTTPS通过加密机制来保护用户和网站之间传输的信息,确保数据的机密性和完整性。
早期很多公司刚起步的时候,使用的应用层协议都是HTTP,而HTTP无论是用GET方法还是POST方法传参,都是没有经过任何加密的,因此早期很多的信息都是可以通过抓包工具抓到的。
为了解决这个问题,于是出现了HTTPS协议,HTTPS实际就是在应用层和传输层协议之间加了一层加密层(SSL&TLS),这层加密层本身也是属于应用层的,它会对用户的个人信息进行各种程度的加密。HTTPS在交付数据时先把数据交给加密层,由加密层对数据加密后再交给传输层。
https要解决两个问题
- 加密防篡改
- 通过证书来验证服务端是可靠的
https特点
- 数据加密:
HTTPS使用SSL(Secure Sockets Layer)或TLS(Transport Layer Security)协议来加密数据。即使数据被第三方拦截,拦截者也无法读耳改数据内容,因为它们是加密的。 - 数据完整性:
数据在传输过程中不会被篡改或损坏。加密协议会对数据进行校验,过程中没有被意外或恶意修改。 - 身份验证:
HTTPS使用数字证书来验证服务器的身份,确保用户连接到的是真正的服务器,而不是被冒充的网站。这种身份验证可以防止"中间人攻击",提高信任。
https工作流程
- 握手过程:
- 当你在浏览器中访问一个HTTPS网站时,浏览器和服务器会进行一个加密"握手"过程。
- 握手的目的是交换加密密钥,并建立一个安全的加密连接。这个过程会使用SSL/TLS协议,并涉及验证服务器的数字证书。
- 加密传输:
- 握手成功后,浏览器和服务器之间的所有数据都将通过加密通道传输,确保数据的安全性。
- 使用数字证书:
- 网站通过使用由可信的证书颁发机构(CA)签发的数字证书来证明自已的身份。浏览器会检查证书的有效性,并显示安全锁图标,提示用户这是一个安全的连接。