http通信协议

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/feifuzeng/article/details/81672117

一、http基础:URL格式、HTTP请求、响应、消息

1、HTTP URL

      格式: http://host[:port][abs_path]
       其中http表示要通过HTTP协议来定位网络资源。
       host表示合法的Internet主机域名或IP地址(以点分十进制格式表示);
       port用于指定一个端口号,拥有被请求资源的服务器主机监听该端口的TCP连接。
       如果port是空,则使用缺省的端口80。当服务器的端口不是80的时候,需要显式指定端口号。
       abs_path指定请求资源的URI(Uniform Resource Identifier,统一资源定位符),如果URL中没有给出abs_path,那么当它作为请求URI时,必须以“/”的形式给出。

2、HTTP请求

      客户端通过发送HTTP请求向服务器请求对资源的访问。
  HTTP请求由三部分组成,分别是:请求行,消息报头,请求正文。
  请求行以一个方法符号开头,后面跟着请求URI和协议的版本,以CRLF作为结尾。
  请求行以空格分隔。除了作为结尾的CRLF外,不允许出现单独的CR或LF字符,格式如下:
  Method Request-URI HTTP-Version CRLF
       Method表示请求的方法,Request-URI是一个统一资源标识符,标识了要请求的资源,HTTP-Version表示请求的HTTP协议版本,CRLF表示回车换行。

3、 HTTP响应

       在接收和解释请求消息后,服务器会返回一个HTTP响应消息。
  与HTTP请求类似,HTTP响应也是由三个部分组成,分别是:状态行,消息报头,相应正文。
  状态行由协议版本,数字形式的状态代码,相应的状态描述组成,各元素之间以空格分隔,除了结尾的CRLF(回车换行)序列外,不允许出现CR或LF字符。格式如下:
  HTTP-Version Status-Code Reason-Phrase CRLF
  HTTP-Version表示服务器HTTP协议的版本,Status-Code表示服务器发回的响应代码,Reason-Phrase表示状态代码的文本描述,CRLF表示回车换行。
       HTTP响应——状态代码与状态描述:
  状态代码由三位数字组成,表示请求是否被理解或被满足,状态描述给出了关于状态代码的简短文本描述。
  状态代码的第一个数字定义了响应的类别,后面两个数字没有具体的分类。
  第一个数字有五种可能的取值:
  1xx:指示信息——表示请求已接收,继续处理
  2xx:成功——表示请求已经被成功接收,理解,接受
  3xx:重定向——要完成请求必须进行更进一步的操作
  4xx:客户端错误——请求有语法错误或请求无法实现
       5xx:服务器端错误——服务器未能实现合法的请求

4、HTTP消息

      HTTP消息由客户端到服务器的请求和服务器到客户端的响应组成。
  请求消息和响应消息都是由开始行,消息报头(可选),空行(只有CRLF的行),消息正文(可选)组成。
       对于请求消息,开始行就是请求行,对于相应消息,开始行就是状态行。

猜你喜欢

转载自blog.csdn.net/feifuzeng/article/details/81672117