超文本传输协议HTTP

2019-12-08  本文已影响0人  Cubery

 超文本传输协议HTTP是一个请求响应模式的无连接无状态的应用层协议,基于TCP连接。HTTP协议目前处于多个版本共存的状态,HTTP1.0、HTTP1.1和HTTP2.0。HTTP1.1主要是在1.0版本的基础上增加了一个长连接(keep-alive)特性,是目前使用最广泛的版本。

特点

 HTTP协议的主要特点如下:

HTTP请求结构

HTTP请求格式.jpg

HTTP响应结构

HTTP响应格式.png

请求/响应的步骤

响应状态码

状态码 信息 解释
200 OK 正常返回信息
400 Bad Request 客户端请求有语法错误,不能被服务器所理解
401 Unauthorized 请求未经授权,这个状态码必须和WWW-Authenticate报头域一起使用
403 Forbidden 服务收到请求,但是拒绝提供服务
404 Not Found 请求资源不存在
500 Internal Server Error 服务器发生不可预期的错误
503 Server Unavailable 服务器当前不能处理客户端的请求,一段时间后可能恢复正常

GET请求和POST请求的区别

 从HTTP标准来说,以上区别是存在的,但是从报文的角度来说,GET请求和POST请求没有本质区别,只要服务器支持,参数怎么传都无所谓。

  1. GET参数的写法并不固定。
  2. POST方法几乎不比GET安全多少(明文传输)。
  3. HTTP本身没有限制URL的长度,是浏览器和服务器基于性能和安全考虑限制的。
  4. POST报文不一定会发送两个TCP报文,这是部分浏览器和框架的行为。

Cookie和Session的区别

 HTTP是无状态的,Cookie和Session让HTTP具备了状态。

Cookie

 Cookie是由服务器发送给客户端的特殊信息,以文本的形式存放在客户端。例如,客户端向一个支持Cookie的服务器发送用户名和密码后,服务器在响应的同时,会把这些信息放在Response header(Set-Cookie)中返回给客户端,客户端会把这些信息存放在统一的位置。当客户端再次请求时,会在Request header(Cookie)中把Cookie回发。服务器接收到后,会解析Cookie生成与客户端相对应的内容。

Session

 Session是服务器端的一种机制,在服务器上保存的信息(类似于hash的结构)。服务器解析客户端的请求中是否包含session id,如果存在session id,说明服务器以前已经为客户端创建过session,把这个session检索出来使用,如果检索不到,就新建一个session。如果客户端请求不包含session id,则为此客户端新建一个session,并生成一个对应的session id,在响应中会发给客户端进行保存。
 Session可以通过Cookie实现,即通过Cookie保存JSESSIONID。也可以通过URL回写来实现,服务器在发送给浏览器页面的所有链接中都携带JSESSIONID的参数,客户端点击任何一个链接都可以把JSESSIONID会发给服务器,但如果不是点击的而是输入的URL,Session是匹配不到的。

区别

HTTPS

 HTTPS在HTTP协议和TCP协议之间增加了一个SSL(安全套接字层)或TLS(安全传输层),从而提供了保证交换数据隐私和数据完整性,以及网站服务器身份认证的功能。

SSL

 Security Sockets Layer,安全套接字层

加密的方式

数字签名过程.png

HTTPS数据传输流程

 HTTPS采用了证书和加密结合的方式。


HTTPS数据传输过程.png

HTTP和HTTPS的区别

HTTPS真的很安全吗

Socket

 本地进程可以用进程号PID唯一标识,网络进行需要IP + 协议 + 端口号来唯一标识。Socket是对TCP/IP协议的抽象,是操作系统对外开放的接口。Socket通信流程如下:


socket通信流程.jpg
上一篇下一篇

猜你喜欢

热点阅读