什么是http协议?
客户端用户主机给服务端服务器的请求,然后服务端响应。
客户端主机发什么?
发送请求
GET 是请求服务器的资源,我想要***,当然除了GET还有别的
POST 是修改原有的数据,或者提交你自己输入的数据,最常见的例如注册账号,或者在CSDN修改原有的一篇文章。
PUT 是用来传输文件,但是不带验证机制,存在一定的安全问题。
DELETE 用来删除文件也是不带验证机制,存在一定的安全问题。
OPTIONS 用来查询针对URL指定的资源支持方法。比如服务器返回:GET POST OPTIONS这三种资源支持方法。
TRACE 是用来查询之前的请求通信是如何被修改的;
CONNECT 是隧道协议连接代理,实现用隧道协议进行TCP通信。主要使用SSL和TLS协议把通信内容加密后经过网络隧道传输。
CONNECT 代理服务器名:端口号 HTTP版本
例如 请求:CONNECT proxy.hackr.jp:8080 HTTP/1.1
Host:proxy.hackr.jp
响应:HTTP/1.1 200 OK(之后进入网络隧道)
GET / HTTP/1.1
Host: test.cn
服务器进行响应
HTTP/1.1 200 OK
Date: Tue, 10 Jul 2024 06:50:15 GMT
Content-Length:362
Content-Type:text/html
<html>
....................................
持久连接节省通信量
在http协议初始版本之中,每进行一次通信都会断开一次TCP的连接,但是随着时代的发展,网站的内容也不只是单纯的文字,会有视频,多个图片。这时候每次向服务器进行通信比如我请求一张图片之后又要断开,重新请求第二张图片。这时候会增加通信量。所以在http/1.1和一部分http/1.0 有一种功能就是:只要没有明确提出断开的需求就不会进行TCP的断开。这样减少了服务器端的负载,另外也减少了开销的那部分时间。
管线化
当持续连接成为可能,管线化也成为可能,从前是只要发送请求后需要等待服务器进行响应,才能发送下一个请求。而管线化技术不用等待上一次的请求结束,就能又发送一个新的请求。
cookie技术
为什么要引进cookie技术,因为服务器永远记不住上一次请求的信息,举个例子:如果没有cookie技术,当你用你的账户登录一个网页的时候,然后在这个网页上随便点击一个连接,连接打开之后的窗口就不会保留你之前在上一个窗口的登录信息,这时候你又要重新登录,是不是很麻烦?所以要引进cookie技术。
cookie技术工作原理:客户端发送请求,服务器接受请求然后返给客户端报文并且附加上发送一个cookie(记录了谁哪台主机发送的),这时候客户端再次发送就会把上次服务器端发送的cookie给带上发送给服务器,服务器检查cookie信息,然后通过cookie信息在进行有关cookie信息相关的响应。