Http通信协议

Http协议是什么

协议是指计算机通信网络中两台计算机之间进行通信所必须共同遵守的法定活规则,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言文档从web服务器传送到客户端的浏览器。

HTTP协议的特点

  • 支持客户端/服务器模式
  • 无状态,此处的无状态是指对事务无记忆能力,如果后续需要这些信息,那么需要重新传递获取数据。
  • 简单快速,客户端只需要发送请求方法和路径到服务端,请求方式有get,post,head,put,delete,options,trace,关于此处的解释移步此处.
  • 无连接,指每次处理只限制处理一个连接.服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
  • 灵活,HTTP请求允许发送任意类型的数据。当前请求类型可以查看Content-Type

HTTP请求

1.Date头域
Date头域表示消息发送的时间,时间的描述格式由rfc822定义。例如,Date:Mon,31Dec200104:25:57GMT。Date描述的时间表示世界标准时,换算成本地时间,需要知道用户所在的时区。
2.Pragma头域
Pragma头域用来包含实现特定的指令,最常用的是Pragma:no-cache。在HTTP/1.1协议中,它的含义和Cache- Control:no-cache相同。
3.Host头域
Host头域指定请求资源的Intenet主机和端口号,必须表示请求url的原始服务器或网关的位置。HTTP/1.1请求必须包含主机头域,否则系统会以400状态码返回。
4.Referer头域
Referer 头域允许客户端指定请求uri的源资源地址,这可以允许服务器生成回退链表,可用来登陆、优化cache等。他也允许废除的或错误的连接由于维护的目的被 追踪。如果请求的uri没有自己的uri地址,Referer不能被发送。如果指定的是部分uri地址,则此地址应该是一个相对地址。
5.Cache-Control头域 指定请求和响应遵循的缓存机制
Cache- Control指定请求和响应遵循的缓存机制。在请求消息或响应消息中设置 Cache-Control并不会修改另一个消息处理过程中的缓存处理过程。请求时的缓存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached,响应消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age

  • Public指示响应可被任何缓存区缓存。
  • Private指示对于单个用户的整个或部分响应消息,不能被共享缓存处理。这允许服务器仅仅描述当用户的部分响应消息,此响应消息对于其他用户的请求无效。
  • no-cache指示请求或响应消息不能缓存
  • no-store用于防止重要的信息被无意的发布。在请求消息中发送将使得请求和响应消息都不使用缓存。
  • max-age指示客户机可以接收生存期不大于指定时间(以秒为单位)的响应。
  • min-fresh指示客户机可以接收响应时间小于当前时间加上指定时间的响应。
  • max-stale指示客户机可以接收超出超时期间的响应消息。如果指定max-stale消息的值,那么客户机可以接收超出超时期指定值之内的响应消息
    6.Range头域
    Range头域可以请求实体的一个或者多个子范围。例如:
  • 表示头500个字节:bytes=0-499
  • 表示第二个500字节:bytes=500-999
  • 表示最后500个字节:bytes=-500
  • 表示500字节以后的范围:bytes=500-
  • 第一个和最后一个字节:bytes=0-0,-1
  • 同时指定几个范围:bytes=500-600,601-999
  • 但是服务器可以忽略此请求头,如果无条件GET包含Range请求头,响应会以状态码206(PartialContent)返回而不是以200 (OK)。
    7.User-Agent头域
    User-Agent头域的内容包含发出请求的用户信息。HTTP- Version表示支持的HTTP版本,例如为HTTP/1.1。Status- Code是一个三个数字的结果代码。Reason-Phrase给Status-Code提供一个简单的文本描述。Status-Code主要用于机器自 动识别,Reason-Phrase主要用于帮助用户理解。Status-Code的第一个数字定义响应的类别,后两个数字没有分类的作用。浏览器类型,如果Servlet返回的内容与浏览器类型有关则该值非常有用。

HTTP响应

响应消息行:包含协议/版本,响应状态码,对响应状态码的描述(一切正常)
响应消息头:服务器与客户端通信的暗码,告诉客户端该怎么执行某些操作
响应消息正文:和网页右键“查看源码”看到的内容一样
1.状态行(HTTP/1.1 200 OK)

  • 协议版本号。
  • 状态代码:状态代码由3位数字组成,表示请求是否被理解或被满足。
    • 200 OK 客户端请求成功
    • 400 Bad Request 由于客户端请求有语法错误,不能被服务器所理解。
    • 301 (302) 重定向—要完成请求必须进行更进一步的操作。
    • 304 缓存
    • 401 Unauthonzed 请求未经授权。这个状态代码必须和WWW-Authenticate报头域一起使用
    • 403 Forbidden 服务器收到请求,但是拒绝提供服务。服务器通常会在响应正文中给出不提供服务的原因()
    • 404 Not Found 请求的资源不存在,例如,输入了错误的URL。
    • 500 Internal Server Error 服务器发生不可预期的错误,导致无法完成客户端的请求。
    • 503 Service Unavailable 服务器当前不能够处理客户端的请求,在一段时间之后,服务器可能会恢复正常。
  • 状态描述:状态描述给出了关于状态代码的简短的文字描述。
    2.响应头
    Location:响应报头域用于重定向接受者到一个新的位置。
    Server: 响应报头域包含了服务器用来处理请求的软件信息。0
文章目录
  1. 1. Http协议是什么
  2. 2. HTTP协议的特点
  3. 3. HTTP请求
  4. 4. HTTP响应