打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
HTTP详细介绍

      本文参考 wiki百科、陶辉老师《Web协议详解与抓包实战》 和 作者在一线多年的运维工作总结希望对大家有所帮助。

常见osi模型(7层)    

发起组织:    国际电信联盟电信标准化部门,与国际标准组织(ISO)

TCP/IP参考模型(4层) 

发起人 :       文顿·瑟夫          罗伯特·卡恩 

本人主要介绍处于应用层的HTTP

      HTTP的发展是由蒂姆·伯纳斯-李于1989年在欧洲核子研究组织(CERN)所发起。HTTP的标准制定由万维网协会(World Wide Web Consortium,W3C)和互联网工程任务组(Internet Engineering Task Force,IETF)进行协调,最终发布了一系列的RFC,其中最著名的是1999年6月公布的 RFC 2616,定义了HTTP协议中现今广泛使用的一个版本——HTTP 1.1。

1、HTTP请求方法

HTTP/1.1协议中共定义了八种方法(也叫“动作”)来以不同方式操作指定的资源:

 GET

     向指定的资源发出“显示”请求。使用GET方法应该只用在读取数据,而不应当被用于产生“副作用”的操作中,例如在网络应用程序中。其中一个原因是GET可能会被网络蜘蛛等随意访问。参见安全方法

  HEAD

     与GET方法一样,都是向服务器发出指定资源的请求。只不过服务器将不传回资源的本文部分。它的好处在于,使用这个方法可以在不必传输全部内容的情况下,就可以获取其中“关于该资源的信息”(元信息或称元数据)。

  POST

     向指定资源提交数据,请求服务器进行处理(例如提交表单或者上传文件)。数据被包含在请求本文中。这个请求可能会创建新的资源或修改现有资源,或二者皆有。

  PUT

     向指定资源位置上传其最新内容。

  DELETE

     请求服务器删除Request-URI所标识的资源。

  TRACE

     回显服务器收到的请求,主要用于测试或诊断。

  OPTIONS

     这个方法可使服务器传回该资源所支持的所有HTTP请求方法。用'*'来代替资源名称,向Web服务器发送OPTIONS请求,可以测试服务器功能是否正常运作。

  CONNECT

     HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。通常用于SSL加密服务器的链接(经由非加密的HTTP代理服务器)。

     方法名称是区分大小写的。当某个请求所针对的资源不支持对应的请求方法的时候,服务器应当返回状态码405(Method Not Allowed),当服务器不认识或者不支持对应的请求方法的时候,应当返回状态码501(Not Implemented)。

HTTP服务器至少应该实现GET和HEAD方法,其他方法都是可选的。当然,所有的方法支持的实现都应当符合下述的方法各自的语义定义。此外,除了上述方法,特定的HTTP服务器还能够扩展自定义的方法。

2、HTTP版本

   2.1 各种版本的版本说明

      HTTP/0.9

      已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。

      HTTP/1.0

      这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。[来源请求]

      HTTP/1.1

      持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。

       HTTP/2

   2.2 版本对比 及 解决的问题

      HTTP/2 相比 HTTP/1.1 的修改并不会破坏现有程序的工作,但是新的程序可以借由新特性得到更好的速度。

      HTTP/2 保留了 HTTP/1.1 的大部分语义,例如请求方法、状态码乃至URI和绝大多数HTTP头部字段一致。而 HTTP/2 采用了新的方法来编码、传输 客户端<——>服务器 间的数据。

      HTTP/1.1与SPDY的区别

      SPDY (发音为'speedy') 是一个由 Google 主导的研究项目发明的HTTP替代协议。SPDY一开始主要关注降低延迟,采用了TCP通道,但是使用了不同的协议来达到此目的。

     其与HTTP/1.1相比,主要的改变有

实现无需先入先出的多路复用为简化客户端和服务器开发的消息—帧机制强制性压缩(包括HTTP头部)优先级排序

        HTTP/2与SPDY的比较

        HTTP/2的开发基于SPDY进行跃进式改进。在诸多修改中,最显著的改进在于,HTTP/2使用了一份经过定制的压缩算法,基于霍夫曼编码,以此替代了SPDY的动态流压缩算法,以避免对协议的Oracle攻击——这一类攻击以CRIME为代表。此外,HTTP/2禁用了诸多加密包,以保证基于TLS的连接的前向安全。

      HTTP/2的关键功能主要来自SPDY技术,换言之,SPDY的成果被采纳而最终演变为HTTP/2 。

      2015年9月,Google 宣布了计划,移除对SPDY的支持,拥抱 HTTP/2,并将在Chrome 51中生效。

    HTTP/3

    HTTP/3 是即将到来的第三个主要版本的HTTP协议,使用于万维网。在HTTP/3中,将弃用TCP协议,改为使用基于UDP协议的QUIC协议实现。QUIC(快速UDP网络连接)是一种实验性的传输层网络传输协议,由Google开发,该协议旨在取代TCP协议,使网页传输更快。

3、HTTP状态码

3.1、什么是HTTP状态码 有谁来维护 

             英语:HTTP Status Code)是用以表示网页服务器超文本传输协议响应状态的3位数字代码。它由 RFC 2616 规范定义的,并得到 RFC 2518、RFC 2817、RFC 2295、RFC 2774 与 RFC 4918 等规范扩展。

             所有状态码的第一个数字代表了响应的五种状态之一。所示的消息短语是典型的,但是可以提供任何可读取的替代方案。除非另有说明,状态码是HTTP / 1.1标准(RFC 7231)的一部分。

             HTTP状态码的官方注册表由互联网号码分配局(Internet Assigned Numbers Authority)维护。

3.2、状态码的大致可以分为哪些

    1×× Informational    2×× Success    3×× Redirection    4×× Client Error    5×× Server Error

3.3、各种状态的详细解释

    https://httpstatuses.com/

1×× Informational 100 Continue 101 Switching Protocols 102 Processing 2×× Success 200 OK 201 Created 202 Accepted 203 Non-authoritative Information 204 No Content 205 Reset Content 206 Partial Content 207 Multi-Status 208 Already Reported 226 IM Used 3×× Redirection 300 Multiple Choices 301 Moved Permanently 302 Found 303 See Other 304 Not Modified 305 Use Proxy 307 Temporary Redirect 308 Permanent Redirect 4×× Client Error 400 Bad Request 401 Unauthorized 402 Payment Required 403 Forbidden 404 Not Found 405 Method Not Allowed 406 Not Acceptable 407 Proxy Authentication Required 408 Request Timeout 409 Conflict 410 Gone 411 Length Required 412 Precondition Failed 413 Payload Too Large 414 Request-URI Too Long 415 Unsupported Media Type 416 Requested Range Not Satisfiable 417 Expectation Failed 418 I'm a teapot 421 Misdirected Request 422 Unprocessable Entity 423 Locked 424 Failed Dependency 426 Upgrade Required 428 Precondition Required 429 Too Many Requests 431 Request Header Fields Too Large 444 Connection Closed Without Response 451 Unavailable For Legal Reasons 499 Client Closed Request 5×× Server Error 500 Internal Server Error 501 Not Implemented 502 Bad Gateway 503 Service Unavailable 504 Gateway Timeout 505 HTTP Version Not Supported 506 Variant Also Negotiates 507 Insufficient Storage 508 Loop Detected 510 Not Extended 511 Network Authentication Required 599 Network Connect Timeout Error

4.4、需要约束程序中的状态码?

       需要、每个公司都需要定义好 或者 公司自己约束好各种状态的返回情况

笔者当年随便返回状态码,让前端同学或者后端接口调用的时候 抛错的无法理解。

         另外移动端开放同学  可能会报出更加准确的错误信息。

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
HTTP2协议规范详述
HTTP 2.0 ,有点炸 !
HTTP/3 发布!
一分钟预览 HTTP2 特性和抓包分析
Google打算用QUIC协议替代TCP/UDP | 36氪
超文本传输协议
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服