Web服务(03)——HTTP协议

      最后更新:2022-07-21 14:54:57 手机定位技术交流文章

      文章目录

      • Web服务(03)-HTTP协议
        • 前言
        • 1.HTTP的工作原理
        • 二、HTTP的版本
        • 三、客户端请求信息
        • HTTP请求方法
          • 1.GET方式
          • 2.POST方式
          • GET和 POST之间的区别
        • 五、服务器响应消息
        • 七、HTTP状态码
          • 1,HTTP状态代码分类
          • 2.HTTP状态代码列表

      Web服务(03)-HTTP协议

      前言

      HTTP协议是Hyper Text Trasfer Protocol(超文本传输协议)的缩写。用于从通用网络服务器传输超文本到本地浏览器的传输协议.HTTP是一个基于TCP/IP的通信协议,用于传输数据(HTML文件,图片文件,查询结果等)。

      HTTP/HTTPS是应用层上的协议,建立在传输层TCP之上,客户端通过与鼓舞短进行TCP链接之后发送HTTP请求与接收HTTP响应都是通过访问Socket接口来调用TCP协议实现。

      默认的HTTP端口编号为80,根据中间人的需求可以更改为8080或其他端口。

      1.HTTP的工作原理

      HTTP协议工作于客户端-服务端架构上。浏览器作为HTTP客户端通过URL向HTTP服务端即WEB服务器发送所有请求。Web服务器根据接收到的请求之后,向客户端发送响应信息。

      注意事项:

      ①HTTP是无连接的,限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。

      ②HTTP是媒体独立的,只要哭护短和服务器知道图和处理的数据内容,任何类型的数据都可以通过HTTP发送。客户端以及服务器指定使用合适的MIME-type内容类型。

      3HTTP无状态,该协议没有处理事务的内存容量.缺乏状态意味着,如果后续行动需要事先的资料,则必须重传,这可能导致每次链接时发送的数据数量增加。另一方面,当服务器不需要以前的信息时,它会更快地响应。发送的请求和相应的通信状态不会被单独永久处理。目的在于维护HTTP协议的简单性,因此能够快速处理大量交易,提高效率。然而,在许多应用场景中,我们需要保持用户登录或记录用户购物车中的货物。因为HTTP是一个无状态的协议,因此必须引进一些技术来记录管理状况,例如,cookie(浏览器缓存)和 सत्र(服务端缓存)。

      HTTP协议通信流程图:

      二、HTTP的版本

      HTTP协议的版本有:HTTP 0.9(已过时)、HTTP 1.0、HTTP 1.1、HTTP 2.0。而目前使用最多的版本是1.0和1.1版本。

      HTTP1.0和1.版本的区别是:

      ①缓存处理

      HTTP1.0主要使用 If-Modified-Since, 作为缓冲区判断标准,在标题中终止。

      HTTP1.1则引入了更多的缓存控制策略例如Entitytag,If-Unmodified–Since,If-Match,If-None-Match等更多可供选择的缓存头来控制缓存策略。

      2宽带优化和网络连接的使用

      HTTP1.0中,存在一些浪费带宽的现象,例如客户端只是需要某个对象的一部分,而服务器却将整个对象送过来了,并且不支持断点续传功能。

      HTTP1.1在请求标题中引入范围标题,允许请求的资源只有一部分,即返回代码为206(PartialContent),从而使得开发人员可以自由选择充分使用带宽和连接。

      ③错误通知的管理

      在HTTP1.In 1中,增加了24个错误状态响应代码,例如409表示请求的资源与资源的当前状态冲突; 410表示服务器上的资源被永久删除。

      ④Host头处理

      在HTTP1.0中,每个服务器都被绑定到一个唯一的IP地址,因此请求消息中的RZ不会传递主机名称。 但随着虚拟主机技术的发展,多个虚拟主机可以在物理服务器上存在,并且它们共享一个IE地址。

      HTTP1.1的请求信息和响应消息应该支持主机头条,如果请求消息中没有inost头条,则将报告400个错误。

      ⑤长链接

      HTTP1.1支持长链接和请求的流线处理,多个HTTP请求和响应可以在一个TCP连接上传输,减少建立和关闭连接的消耗和延迟,在HTTP1.1中默认开启connection:keep-alive,一定程度上弥补了HTTP1.0每次请求都要创建连接的缺点。

      三、客户端请求信息

      客户端发送一个HTTP请求到服务器的请求消息包括一下格式:请求行(request line)、请求头部(header)、空行和请求数据(请求体)四个部分组成,如图:

      HTTP请求方法

      根据HTTP标准,HTTP请求可以使用多种请求方法,包括:

      HTTP1.0定义了三个请求方法:GET、 POST和HEAD。

      HTTP1.有五种新的请求方法: OPTIONS, PUT, DELETE, TRACE, and CONNECT。

      方法 描述
      GET 请求指定页面信息和返回实体主体
      POST 向指定的资源提交数据处理请求(例如提交表格或上传文件)。 数据包含在请求机构中。 发送请求可能导致创建新的资源和/或修改现有资源
      HEAD 类似于获取请求,但没有返回的响应中具体内容,用于获取标题
      PUT 从客户端发送到服务器的数据替换指定的文档内容。
      DELETE 请求服务器删除指定页面
      OPTIONS 允许客户端查看服务器性能
      TRACE 返回处收到的申请,主要用于测试或评判
      CONNECT HTTP1.协议保留了一个可以转换连接到管道模式的代理服务器

      Http协议的主要请求格式是GET和 POST方法。

      1.GET方式

      ①请求行

      请求方法;请求资源路径;请求版本协议号码

      ②请求头

      请求头 描述
      Accept 客户可接受的数据类型
      Accept-Language 客户端可接受的语言类型
      User-Agent 浏览器信息
      Accpect-Encoding 客户端可接受的编码格式
      Host 请求的ip和端口号码
      Connection 告诉服务器如何处理请求的连接
      Keep-Alive 通知服务器不要立即关闭,保持一个小链接
      Closed 马上关闭

      ③请求体

      发送给服务器的数据

      2.POST方式

      ①请求行

      请求方法;请求资源路径;请求版本协议号码

      ②请求头

      请求头 描述
      Accept 客户可接受的数据类型
      Accept-Language 客户端可接受的语言类型
      Content-Type 发送数据的类型
      Content-Length 发送数据的长度
      Referer 在请求启动时显示浏览器地址栏中的地址
      User-Agent 浏览器的信息

      GET和 POST之间的区别

      ①语言上的区别

      GET请求服务器的数据,并且按照HTTP协议, get用于请求数据。

      POST发送数据到服务器,根据HTTP协议, POST的语义是将数据添加到服务器,也就是说,根据 POST的语义,操作是修改服务器上的数据。

      ②服务器请求的区别

      例如,访问百度后的内容在浏览器中被缓存,并在短时间内被重新访问,获取缓存的内容。 此外,GET请求只能收到 ASCII代码的响应。

      POST请求不能缓存。 对于提出表格的 POST方法,新页面浏览器会显示“我是否再提交表格?”提示。 Post可以接受多种数据格式,如二进制,所以通常需要使用 POST进行文件上传。

      3参数的请求头与请求体之间的区别

      GET请求通常没有请求机构,并且只在TCP传输中传输一次,因此GET请求是非常有效的。

      POST请求将数据放在请求主体中,在实际传输中,请求主体首先传输,请求主体两次传输。 POST请求主体比GET小,请求主体在TCP包中更容易执行,从而更好地确保HTTP包的完整性。

      总结:

      GET方法:

      从指定服务器获取数据

      GET请求能被缓存

      GET请求存储在浏览器的cookie记录中

      GET请求有长度限制

      主要用于获取数据

      查询字符串将显示在URL中,不安全

      POST方法:

      向指定服务器提交数据处理

      POST请求无法缓存

      POST请求不会存储在浏览器的浏览记录中

      不限制长度的邮件请求

      查询字符串不会在URL中显示,这更安全

      五、服务器响应消息

      HTTP响应还包括四个部分:状态行、消息头条、空行和响应规则表达式。

      七、HTTP状态码

      当访客浏览网页时,查看器的浏览器向服务器发送该页面的位置请求。在浏览器接收和显示网页之前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。

      英文版本的HTTP状态代码是HTTP状态代码。

      1,HTTP状态代码分类

      HTTP状态代码由三个十进制数字组成,第一个十进制数字定义了国家代码的类型。答复分为五个类别:信息答复(100–199),成功反应(200-299),重定位(300-399),客户端错误(400-499)和服务器错误(500-599):

      分类 分类描述
      1** 服务器收到请求要求请求者继续执行操作的信息
      2** 操作成功接受并处理
      3** 重新定位需要进一步的操作完成请求
      4** 客户错误,包含语法错误的请求或无法完成请求
      5** 当服务器处理请求时发生服务器错误

      2.HTTP状态代码列表

      状态码 英文名称 含义
      100 Continue 继续下去。 客户应该继续要求
      101 Switching Protocols 切换协议。服务器根据客户端的请求切换协议。只能切换到更高级的协议,例如,切换到HTTP的新版本协议
      状态码 英文名称 含义
      200 Ok 请求成功。 一般用于GET和 POST请求
      201 Created 创建。 成功地请求并创建新的资源
      202 Accepted 请求接受,但未处理完成
      203 Non-Authoritative Information 请求成功,但返回的元数据不是来自原始服务器,而是一份副本
      204 No Content 无内容。服务器成功处理,但未返回内容。在未更新网页的情况下,可确保浏览器继续显示当前文档
      205 Reset Content 如果服务器正常处理,用户端口(例如浏览器)应该重新定位文件视图。 这个返回代码可以清除浏览器的表格字段
      206 Partial Content 内容的一部分。 服务器成功处理了一些GET请求
      状态码 英文名称 含义
      300 Multiple Choices 请求的资源可以包含多个位置,相应地返回用户终端(例如浏览器)选择的资源功能和地址列表
      301 Moved Permanently 请求资源已经永久移到一个新的URI,返回信息将包含一个新的URI,浏览器将自动导航到新的URI。 今后任何新的请求都应该被一个新的URI取代
      302 Found 它与301类似,但资源只能暂时移动。 用户应该继续使用原来的URI
      303 See Other 类似于301。 使用GET和 POST请求查看
      304 Not Modified 请求的资源未被修改,当服务器返回此状态代码时,服务器不会返回任何资源。 客户通常通过提供一个标记,表示客户只在指定日期后返回修改的资源,以缓存访问的资源
      305 Use Proxy 使用代理。 请求的资源必须通过代理访问
      306 Unused 已经丢弃的HTTP状态代码
      307 Temporary Redirect 临时重新定位。 类似于 302。 使用GET请求重新定位
      状态码 英文名称 含义
      400 Bad Request 客户端请求有一个语法错误,服务器无法理解
      401 Unauthorized 请求用户身份验证
      402 Payment Required 保留,将来使用
      403 Forbidden 服务器了解客户端的请求,但拒绝执行请求
      404 Not Found 服务器无法根据客户的要求找到资源(页面)。 通过这个代码,网站设计师可以设置个人页面“您请求的资源无法找到”
      405 Method Not Allowed 客户端请求中的方法被禁止
      406 Not Acceptable 服务器不能根据客户端请求的内容特性完成请求
      407 Proxy Authentication Required 请求要求代理人的认证,类似于401,但请求者应该使用代理人进行授权
      408 Request Time-out 服务器等待客户端发送请求太长,太晚
      409 Conflict 当服务器完成客户端PUT请求时,该代码可以返回,当服务器处理请求时发生冲突
      410 Gone 客户请求的资源不再存在。 410与404不同,如果以前使用的资源现在以410代码永久删除,网站设计师可以通过301代码指定资源的新位置
      411 Length Required 服务器无法处理客户端发送的不带Content-Length的请求信息
      412 Precondition Failed 客户请求信息的前提错误
      413 Request Entity Too Large 由于请求的实体太大,服务器无法处理请求,因此请求被拒绝。 为了防止客户端继续请求,服务器可能关闭连接。 如果服务器暂时无法处理,它将包含一个“再尝试后”响应
      414 Request-URI Too Large 请求的URI太长(URI通常是URL),服务器无法处理
      415 Unsupported Media Type 服务器无法处理请求附带的媒体格式
      416 Requested range not satisfiable 客户端请求的范围无效
      417 Expectation Failed 服务器无法满足预期请求标题信息
      状态码 英文名称 含义
      500 Internal Server Error 内部服务器错误,无法完成请求
      501 Not Implemented 服务器不支持请求函数,无法完成请求
      502 Bad Gateway 当服务器试图作为门户或代理执行请求时,远程服务器收到一个无效的响应
      503 Service Unavailable 由于过载或系统维护,服务器暂时无法处理客户端请求。 延迟的长度可以包含在服务器的“再尝试后”项中
      504 Gateway Time-out 作为门户或代理的服务器,不会及时从远程服务器接收请求。
      505 HTTP Version not supported 服务器不支持请求的HTTP协议版本,无法处理它

      END

      本文由 在线网速测试 整理编辑,转载请注明出处,原文链接:https://www.wangsu123.cn/news/30236.html

          热门文章

          文章分类