本文主要是介绍HTTP知识点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
各种协议在通信过程中的用处
HTTP 1.1
1. http协议规定,请求从客户端发出,最后服务器响应该请求并且返回。换句话说,一定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。
2. http请求报文的构成
3. http响应报文的构成
4. http是无状态协议。
使用http协议,每当有新的请求发送是,就有对应的新响应产生。协议本身不保留之前一切的请求或者响应报文的信息。但是有些场景是需要保持状态的,于是引入了cookie技术(后面再说)。
5. http的请求方法:
- get:从指定的资源请求数据
- post:向指定的资源提交要被处理的数据
- put:上传文件
- head: 请求头部
6. get和post的区别:
|
get |
post |
url可见性 |
url参数可见,拼接在url后面进行传参 |
url参数不可见,通过body体传参 |
缓存性 |
可以缓存 |
不可以缓存 |
后退页面的反应 |
不产生影响 |
重新提交请求 |
传输数据的大小 |
一般不超过2k-4k |
根据php.ini 配置文件设定,也可以无限大 |
安全性 |
不安全 |
比较安全 |
7. http的keep alive:
http协议的初始版本中,每进行一次http通信就要断开一次TCP连接,导致增加通信量的开销。HTTP/1.1 和一部分的 HTTP/1.0 想出了持久连接(HTTP Persistent Connections,也称为 HTTP keep-alive 或HTTP connection reuse)的方法。持久连接的特点是,只要任意一端没有明确提出断开连接,则保持 TCP 连接状态。持久连接的好处:
- 减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器的负载;
- 减少开销的这部分时间,使得http请求和响应能够更早的结束,提高web页面的显示速度。
8. http管线化(pipelining):发送请求之后,不用等待响应亦可直接发送下一个请求。
9. cookie: Cookie 技术通过在请求和响应报文中写入 Cookie 信息来控制客户端的状态。
-
通过服务器端发送的响应报文内的Set-cookie首部字段,通知客户端保存cookie;
-
客户端下次就会自动在请求报文中加入cookie值;
-
服务端发现客户端发来的cookie后,会查找对应的客户端,得到状态信息;
10. 状态码:
1xx:信息状态码:接收的请求正在处理
2xx:成功状态码:请求正常处理完毕
- 200 ok:表示从客户端发来的请求在服务器端被正常处理了
- 204 no content:代表服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体部分
- 206 Partial Content:表示客户端进行了范围请求(请求一部分资源),而服务器成功执行了这部分的GET 请求
3xx:重定向状态码:需要进行附加操作以完成要求
- 301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的 URI,以后应使用资源现在所指的 URI
- 302 Found:临时重定向。该状态码表示请求的资源已被分配了新的 URI,希望
用户(本次)能使用新的 URI 访问
- 304 Not Modified: 服务端资源无变化,可使用缓存资源
4xx:客户端错误状态码:服务器无法处理请求
- 400 Bad Request:表示请求报文中存在语法错误
- 401 Unauthorized:表示发送的请求需要有通过 HTTP 认证(BASIC 认证、DIGEST 认证)的认证信息。另外若之前已进行过 1 次请求,则表示用户认证失败
- 403 Forbidden:表明对请求资源的访问被服务器拒绝了
- 404 Not Found:表明服务器上无法找到请求的资源
5xx:服务器错误状态码:服务器处理请求出错
- 500 Internal Server Error:表明服务器端在执行请求时发生了错误。也有可能是 Web应用存在的 bug 或某些临时的故障
- 503 Service Unavailable:表明服务器暂时处于超负载或正在进行停机维护,现在无法处理请求
11. 首部字段
通用首部字段
请求首部字段
响应首部字段
实体首部字段
12. HTTP的缺点
- 通信使用明文(不加密),内容有可能被窃听
- 不验证通信方的身份,因此有可能遭遇伪装
- 无法证明报文的完整性,所以有可能已遭篡改
HTTPS
1. HTTP+ 加密 + 认证 + 完整性保护=HTTPS
通过和 SSL(Secure Socket Layer,安全套接层)或TLS(Transport Layer Security,安全层传输协议)的组合使用,加密 HTTP 的通信内容。
用 SSL 建立安全通信线路之后,就可以在这条线路上进行 HTTP通信了。与 SSL 组合使用的 HTTP 被称为 HTTPS(HTTP Secure,超文本传输安全协议)或 HTTP over SSL。
2. https的混合加密
- 对称加密:用相同的密钥加密解密--->不安全,容易被窃听
- 非对称加密:有一对公钥和私钥,发送方用公钥加密,接收端用私钥解密。(速度慢)
- 混合加密:使用非对称加密来加密传输密钥,然后之后就用该密钥进行对称加密传输
3. https建立ssl连接的过程
- 客户使用 https url 访问服务器,则要求 web 服务器建立 ssl 链接。
- web 服务器接收到客户端的请求之后,会将网站的证书(证书中包含了公钥),返回或者说传输给客户端。
- 客户端和 web 服务器端开始协商 SSL 链接的安全等级,也就是加密等级。
- 客户端浏览器通过双方协商一致的安全等级,建立会话密钥,然后通过网站的公钥来加密会话密钥,并传送给网站。
- web 服务器通过自己的私钥解密出会话密钥。
- web 服务器通过会话密钥加密与客户端之间的通信。
这篇关于HTTP知识点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!