HTTP协议


一、HTTP协议简介

    HTTP即超文本传输协议,它定义了客户端与服务端之间交换报文的格式的方法,默认使用80端口。
    HTTP具有以下优点:

  • 支持客户端/服务端模式。
  • 简单快速:客户端向服务端请求服务时,只需传送请求方法和路径。
  • 无连接:每次连接只处理一个请求,服务器处理完客户请求并收到客户应答后即断开连接。
  • 灵活:HTTP允许传输任意类型的数据对象,由Content-Type进行标记。
        HTTP具有以下缺点:
  • 无状态:HTTP的每个请求都是完全独立的,请求包含了处理请求所需的完整的数据,协议对务处理没有记忆能力。
  • 不安全:协议报文使用文本格式明文传输,内容可能被窃听或篡改;HTTP不验证通信方身份,可能遇到伪装。

二、HTTP状态码

2XX(Success 成功状态码)

    状态码2XX表示请求被正常处理。

  • 200 OK:客户端发送的请求被服务端正常处理。
  • 204 No Content:客户端发送的请求已被服务器端正常处理,但是没有返回的内容,响应报文中不包含实体的主体部分。
  • 206 Partical Content:客户端进行了范围请求,而服务器端执行了这部分的GET请求。

3XX(Redirection 重定向状态码)

    状态码3XX表示浏览器需要执行某些特殊的处理以正确处理请求。

  • 301 Moved Permanently:请求的资源被分配了新的URL。
  • 302 Found:请求的资源被临时性地分配到了新的URL。
  • 303 See Other:请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。
  • 304 Not Modified:告知客户端资源存在缓存。
  • 307 Temporary Redirect:临时重定向,且不会将POST变为GET。

4XX(Client Error 客户端错误状态码)

    状态码4XX表示客户端是发生错误的原因所在。

  • 400 Bad Request:表示请求报文中存在语法错误。
  • 401 Unauthorized:表示请求的信息需要有通过认证的信息。
  • 403 Forbidden:表明请求资源的访问被服务器拒绝了。
  • 404 Not Found:表明服务器上无法找到请求的资源。
  • 405 Method Not Allowed:表示客户端请求的方法虽然被服务器识别,但是浏览器禁止使用该方法。

5XX(Server Error 服务器错误状态码)

    状态码5XX表示服务器端本身发生错误。

  • 500 Internal Server Error:表明服务器在执行请求时发生了错误。
  • 502 Bad Gateway:表面扮演网关或代理角色的服务器,从上游服务器中受到的响应是无效的。
  • 503 Service Unavailable:表明服务器暂时处于超负载或停机维护,现在无法处理请求。
  • 504 Gateway Timeout:表示网关或代理的服务器无法在规定时间内获得想要的响应。

三、长连接与keep-alive

    HTTP1.1规定了默认保持长连接,即数据传输完成时保持TCP连接不断开,等待在同域名下继续使用这个通道传输数据。
    长连接具有以下好处:

  • 统一客户端可以使用这个长连接处理其他请求,避免HTTP重新连接和断开所耗费的时间。
  • 服务端可以利用这个连接主动推送消息到客户端。
        HTTP头部有了Connection: Keep-Alive代表客户端期望此次请求是长连接罢了。

四、HTTP与HTTPS

    HTTPS是在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信在传输层上加密。
    HTTP与HTTPS的区别主要体现在以下部分:

  • HTTPS协议需要到CA申请证书或自制证书。
  • HTTP是明文传输是明文传输,HTTPS是具有安全性的SSL加密。
  • HTTP直接在TCP上传输数据,HTTPS运行在SSL/TLS之上。
  • HTTP的连接是无状态的,HTTPS是由SSL+HTTP协议构建的,可进行加密传输、身份认证的网络协议,安全性更高。

五、HTTP1.1/HTTP2/HTTP3

HTTP1.1

  • 缓存处理:HTTP1.1引入了Entity tag等更多可供选择的缓存头来控制缓存策略。
  • 带宽优化:HTTP1.1默认支持断电续传。
  • Host头处理:HTTP1.1的请求消息和响应消息都默认支持Host头域,且在请求消息中如果没有Host头域会报错。
  • 长连接:HTTP1.1默认支持长连接。
  • 新增请求方式:PUTDELETEOPTIONSCONNECT等。

HTTP2.0

  • 二进制分帧:HTTP1.x的解析是基于文本,而HTTP2.0会将所有传输的信息分割为更小的消息和帧,并对它们采用二进制格式的编码。
  • 多路复用:多路复用允许同时通过单一的HTTP2.0连接发起多重的请求-响应信息,即连接共享。
  • header压缩:HTTP2.0采用HPACK算法对header的数据进行压缩。
  • server push:服务端可以在发送页面HTML时主动推送其他资源。

HTTP3

    HTTP3原称QUIC,是基于UDP开发出的新协议,用于提高传输速率,它具备以下特性:

  • 零RRT建立连接:缓存Server Conifg后零RTT即可进行数据传输。
  • 连接迁移:HTTP3采用Connect ID对连接保持。
  • 队头阻塞:HTTP3基于UDP的连接,不保证连接可靠性,也就没有队头阻塞的后果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值