【必学基础】开天辟地第一篇,HTTP 了解一下~

admin 2022年4月13日22:47:50评论26 views字数 2261阅读7分32秒阅读模式

 HTTP 协议详解


一、概述


     HTTP(超文本传输协议)是应用层上的一种客户端/服务端模型的通信协议,它由请求和响应构成,且是无状态的。

  • 协议

   协议规定了通信双方必须遵循的数据传输格式,这样通信双方按照约定的格式才能准确的通信。

  • 无状态

   无状态是指两次连接通信之间是没有任何关系的,每次都是一个新的连接,服务端不会记录前后的请求信息。

Cookie的诞生就是用来解决HTTP无状态的特性导致无法满足交互式web的问题


  • 客户端/服务端模型


       HTTP 报文是面向文本的,报文中每一个字段都是一些 ASCII 码串,各个字段的长度是不确定的。HTTP 协议包括 2 类报文:请求报文响应报文

【必学基础】开天辟地第一篇,HTTP 了解一下~


二、HTTP 请求报文


       HTTP 请求报文由请求行请求头部空行请求数据4 部分组成,如图所示:

【必学基础】开天辟地第一篇,HTTP 了解一下~



(1)请求行


    请求行由请求方法字段URL 字段 HTTP 协议版本字段组成,它们用空格分隔,例如:GET /index.html  HTTP/1.1.

      其中URL具体为:

【必学基础】开天辟地第一篇,HTTP 了解一下~



       请求方法主要有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。这里介绍最常用的GET POST 方法。


− GET:当客户端要从服务器中读取某个资源时,使用GET 方法。GET 方法要求服务器将URL 定位的资源放在响应报文的数据部分,回送给客户端,即向服务器请求某个资源。使用GET 方法时,请求参数和对应的值附加在URL 后面,利用一个问号(“?”)代表 URL 的结尾与请求参数的开始,传递参数长度受限制。例如,/index.jsp?id=100&op=bind

− POST:当客户端给服务器提供信息较多时可以使用POST 方法,POST 方法向服务器提交数据,比如完成表单数据的提交,将数据提交给服务器处理。GET 一般用于获取/查询资源信息,POST 会附带用户数据,一般用于更新资源信息。POST 方法将请求参数封装在HTTP 请求数据中,以名称/值的形式出现,可以传输大量数据

其他的:

【必学基础】开天辟地第一篇,HTTP 了解一下~


(2)请求头部


      请求头部key/value 键值组成,每行一对,key value 用冒号":"分隔,请求头部通知服务器有关于Client 的请求信息,典型的请求头如下:


− User-Agent产生请求的浏览器类型。

− Accept客户端可识别的响应内容类型列表,星号*用于按范围将类型分组,用*/*表示可接受全部类型,用type/*  表示可接受type 类型的所有子类型。例如:

              − Accept-Language:客户端可接受的自然语言。

              − Accept-Encoding:客户端可接受的编码压缩格式。

             − Accept-Charset:可接受的应答的字符集。

− Host请求的主机名,允许多个域名同处一个 IP 地址,即虚拟主机。

− connection连接方式(close  keepalive)。

 Cookie存储于客户端扩展字段,向同一域名的服务端发送属于该域的 cookie


常见的请求头:


【必学基础】开天辟地第一篇,HTTP 了解一下~



(3)空行


      最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器请求头结束。空行对于一个完整的 HTTP 请求来说空行是必须的,否则服务器会任务本次请求的数据尚未完全发送到服务器,处于等待状态。


(4)请求数据


       请求数据不在 GET 方法中使用,而是在 POST 中使用。POST 方法适用于需要客户端填写表单的场合,与请求数据相关的最常用的请求头是Content-Type Content-Length


三、HTTP 响应报文


      HTTP 响应报文由状态行响应头部空行响应包体4 部分组成,如图所示:

【必学基础】开天辟地第一篇,HTTP 了解一下~


(1)响应行:由协议版本状态码状态码的描述部分组成,它们之间使用空格隔开。

− 状态码由三位数字组成,第 位数字表示响应的类型,常用的状态码有 大类:

【必学基础】开天辟地第一篇,HTTP 了解一下~


(2)响应头部。


响应头可能包括:

− LocationLocation 响应报头域用于重定向接受者到一个新的位置。例如:客户端所请求的页面已不存在原先的位置,为了让客户端重定向到这个页面新的位置,服务器端可以发回 Location 响应报头后使用重定向语句,让客户端去访问新的域名所对应的服务器上的资源。

− ServerServer 响应报头域包含了服务器用来处理请求的软件信息及其版本。它和 User-Agent 请求报头域是相对应的,前者发送服务器端软件的信息,后者发送客户端软件(浏览器)和操作系统的信息。

− Vary指示不可缓存的请求头列表。

− Connection连接方式。

− WWW-AuthenticateWWW-Authenticate 响应报头域必须被包含在401(未授权的)响应消息中,这个报头域和前面讲到的Authorization 请求报头域是相关的,当客户端收到401 响应消息,就要决定是否请求服务器对其进行验证。如果要求服务器对其进行验证,就可以发送一个包含了Authorization 报头域的请求。


常见的响应头:


【必学基础】开天辟地第一篇,HTTP 了解一下~


(3)空行


      最后一个响应头部之后是一个空行,发送回车符和换行符,通知客户端以下不再有响应头部。


(4)响应包体服务器返回给客户端的文本信息。


四、总结


        篇幅有限,自认为已经写得比较详细了,当然还有很多细节没有涉及,篇幅有限还需要以后进一步学习啊~


原文始发于微信公众号(学安全在路上):【必学基础】开天辟地第一篇,HTTP 了解一下~

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2022年4月13日22:47:50
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【必学基础】开天辟地第一篇,HTTP 了解一下~http://cn-sec.com/archives/596750.html

发表评论

匿名网友 填写信息