一.HTTP的概述
1.定义
HTTP协议(超文本传输协议),定义了浏览器怎样向万维网服务器请求万维网文档。
2.应用场景
1)网页和服务器之间的交互
2)手机app和服务器之间的交互
3)实际应用场景:HTTP的应用场景就是经典的客服端服务器场景,我们使用的电脑和手机就是客户端,向服务器端发起请求,由服务器端返回一个web页面。就比如说我想看一场NBA球赛的时候,我在百度搜索NBA,百度服务器端就会返回给我一个页面,这个页面包含了很多NBA比赛,然后我可以选择一场我喜欢的比赛看。
3.HTTPS
虽然说我们往往使用的都是http协议,但是往往更大概率使用的是https协议。这里s代表单词security 安全的。因此https是安全的协议。
4.HTTP是典型的一问一答模式的协议
一般来说有一问一答模式,多问一答模式往往用于上传大文件 ,一问多答用于下载大文件,多问多答用于远程操作。TCP和UDP支持上述这四种方式
二.HTTP请求报文的组成
1)首行
起始行包含了请求方法(GET和POST)、请求目标(URL路径)、HTTP协议版本等信息
GET /path HTTP/1.1
2)请求头(header)
在这里header可以包含若干行的数据,此处本质上是一个键值对的结构,每一行的键值对都是以:来分割的。
Host: www.example.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Accept: text/html,application/xhtml+xml
Accept-Language: en-US,en;q=0.9
Connection: keep-alive
3)空行
在最后一个header后面,存在一个空行,类似于链表,使用null作为结尾。
4)正文body
可选的,有些情况下有正文,有的时候没有正文
{
"name": "John Doe",
"email": "johndoe@example.com"
}
在这里因为http是明文传输密码,而https是加密传输因此https是比较安全的网络协议,因此我查阅了一些资料总结了他们在密码传输的不同之处。
在密码(敏感数据)上,HTTP和HTTPS有以下不同:
-
加密性:HTTP是明文传输协议,不对数据进行加密,而HTTPS使用SSL/TLS协议对数据进行加密传输,确保数据在传输过程中的机密性。
-
安全性:由于HTTP是明文传输,密码在传输过程中容易被窃听和篡改,因此不适合传输敏感信息(如密码)。而HTTPS通过加密和身份验证提供更高的安全性,可以安全地传输敏感数据。
-
加密算法:HTTPS使用公钥加密来加密数据,使用私钥解密数据。加密算法通常包括对称加密和非对称加密。对称加密用于加密大量数据,而非对称加密用于在通信开始时建立安全通道并进行密钥交换。
-
证书验证:HTTPS使用数字证书来验证服务器的身份。客户端会验证服务器的证书是否有效、可信和与预期的域名匹配。这有助于防止中间人攻击。
这里应该解释一下,为什么不要连公共场合的wifi呢,原因就是如果连接公共场合的Wi-Fi,就有可能被黑客部署抓包程序,有可能泄露一些敏感信息。
三 .HTTP响应报文的组成
与HTTP请求报文相似,HTTP响应报文也有四个部分。
1)响应的首行
一般来说 如果成功返回
HTTP/1.1 200 OK
如果不成功则返回
HTTP/1.1 404 Not Found
这里包含的是 a)版本号 b)状态码 c)状态码描述
2)响应的报头header
HTTP/1.1 200 OK
Content-Type: text/html
Content-Length: 1024
Date: Wed, 20 May 2024 12:00:00 GMT
Server: Apache/2.4.29 (Unix)
3)空行
4)正文body
HTTP响应报文的正文(Response Body)部分包含了实际的响应数据。具体的响应正文内容取决于服务器处理请求的结果和应用程序的逻辑。
响应正文可以包含各种类型的数据,如文本、HTML页面、JSON数据、XML文档、图像、视频等。它的内容格式和类型取决于服务器和应用程序的设计和实现。