Fork me on GitHub

计算机网络——超文本传送协议HTTP

简述


  每个万维网网点都有一个服务器进程,它不断地监听TCP的端口80,以便发现是否有浏览器向它发出连接建立请求。一旦监听到连接建立请求并建立了TCP连接之后,浏览器就向万维网服务器发出浏览某个页面的请求,服务器接着就返回所请求的页面作为响应。最后,TCP连接就被释放了。

  HTTP协议的底层传输默认使用的是可靠的TCP协议。

  在浏览器和服务器之间的请求和响应的交互,必须按照规定的格式和遵循一定的规则。

  这些格式和规则就是超文本传送协议HTTP。

  HTTP协议是应用层协议,在TCP/IP协议接收到数据之后需要通过HTTP协议来解析才可以使用。

报文结构


  HTTP协议中的报文结构非常重要。

  HTTP中报文分为请求报文(request message)和响应报文(response message)两种类型,这两种类型都包括三部分:

    • 首行
    • 头部
    • 主体

  主体保存具体内容,请求报文中主要保存POST类型的参数,响应报文中保存页面要显示的结果。

  首行、头部和主体以及头部的各项内容用回车换行(\r\n)分割,另外头部和主体之间多一个空行,也就是有两个连续的回车换行。它们的接口如下图所示:

 

请求


  HTTP请求由三部分组成,分别是:请求行、消息报头、请求正文

  HTTP请求报文的方法:

  • GET 请求获取Request-URI所标示的资源
  • POST 在Request-URI所标示的资源后附加新的数据
  • HEAD 请求获取由Request-URI所标示的资源的响应消息报头
  • PUT 请求服务器存储一个资源,并用Request-URI作为其标示
  • DELETE 请求服务器删除Request-URI所标识的资源
  • TRACE 请求服务器回送收到的请求信息,主要用于测试或诊断
  • CONNECT 用于代理服务器
  • OPTIONS 请求查询服务器的性能,或者查询与资源相关的选项和需求

响应


  每个请求报文发出后,都能收到一个响应报文。响应报文的第一行就是状态行。

  状态行包括三项内容,即HTTP的版本,状态码,以及解释状态码的简单短语。

  状态码都是三位数字的,分为5大类共33种:

  • 1XX:表示通知信息,如请求收到了或正在进行处理
  • 2XX:表示成功,如接受、理解
  • 3XX:表示重定向,如要完成请求还必须采取进一步的操作
  • 4XX:表示客户的错误,如请求中有错误的语法或不能完成
  • 5XX:表示服务器的差错,如服务器失效无法完成请求

  常见状态代码:

  • 200 OK //客户端请求成功
  • 400 Bad Request //客户端请求有语法错误,不能被服务器所理解
  • 401 Unauthorized //请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用
  • 403 Forbidden //服务器收到请求,但是拒绝提供服务
  • 404 Not Found //请求资源不存在,eg:输入了错误的URL
  • 500 Internal Server Error //服务器发生不可预期的错误
  • 503 Server Unavailable //服务器当前不能处理客户端的请求,一段时间后可能恢复正常
posted @ 2016-06-22 16:06  郑斌blog  阅读(617)  评论(0编辑  收藏  举报