Java教程

HTTP知识点

本文主要是介绍HTTP知识点,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

各种协议在通信过程中的用处

image

HTTP 1.1

1. http协议规定,请求从客户端发出,最后服务器响应该请求并且返回。换句话说,一定是从客户端开始建立通信的,服务器端在没有接收到请求之前不会发送响应。

2. http请求报文的构成

image

3. http响应报文的构成

image

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):发送请求之后,不用等待响应亦可直接发送下一个请求。

  • 通过服务器端发送的响应报文内的Set-cookie首部字段,通知客户端保存cookie;

  • 客户端下次就会自动在请求报文中加入cookie值;

  • 服务端发现客户端发来的cookie后,会查找对应的客户端,得到状态信息;

    image

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. 首部字段

通用首部字段

image

请求首部字段

image

响应首部字段

image

实体首部字段

image

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知识点的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!