HTTP请求与响应格式解析

 HTTP是Web浏览器与Web服务器之间通信的标准协议,HTTP指明了客户端如何与服务器建立连接,如果从服务器请求数据,服务器如何响应请求,关闭连接。HTTP是使用TCP/IP协议进行传输数据的,也就是传输层利用TCP进行连接,进行可靠连接的。
HTTP客户端向服务器端的请求
建立连接
  一般客户端与服务器端在80端口处建立一个TCP连接;
进行请求
  请求的一般格式: GET /index.html HTTP/1.0
  第一个字段为请求动作类型:
  GET代表请求的操作,表示要求服务器返回资源的表示; 
  HEAD表示只需要文件的首部
  PUT表示向服务器上传资源
  POST主要是向服务器发送表单数据
  第二个字段,标识服务器上所请求的资源的相对URL,必须要以"/"开头,Web浏览器在发送请求的时候会自动加上服务器的主机名。
  第三个字段,客户端理解的协议版本
  每一个HTTP请求不管是客户端还是服务器端均都要以两个回车换行结束(Java中用 )
  在发送HTTP请求的时候,可以附加额外的基本信息:key:value
  一个常见的发送HTTP格式(一般服务器最重要的工作就是处理发送格式中的第一行数据):
  GET /index.html HTTP/1.0
  Accept:text/html,text/plain
  User-Agent: Lyn
  Host:www.server.com 这个主要就是指定服务器的名
  
  在向服务器发送HTTP请求中如果有查询字符串,则对于POST和GET有不同的方式。
  POST的动作类型主要是用于有所承诺的动作,GET动作主要用于不承担责任的动作。一般对于表单则是POST,浏览普通页面则是GET
  GET发送查询字符串主要直接将查询字符串附加到URL后面,如下表示:
  GET /index.html/username=Elliotte+Harold&email HTTP/1.0
  POST发送查询字符串的基本格式如下:
  GET /index.html HTTP/1.0
  Accept:text/html,text/plain
  User-Agent: Lyn
  Host:www.server.com
 
  username=Elliotte+Harold&email HTTP/1.0
题外(URL,主要由协议,授权机构,路径,查询字符串和片段标示符表示);
URL使用的字符必须是来自ASCII固定的子集:
  大写字母A-Z  小写字母a-z 数字0-9 标点符号- _ . ! ~ * ` ( ).
对于未包含在这里面的字符,都要转换为字节,以%开头后面加上两个16进制数字
  一般空格编码为+,+编码为%2  
响应请求
  服务器向客户端发送响应,响应一般包括以响应码开头,后面是元数据首部(MIME首部),空行,所请求文档,最后必须也要有两个回车换行
  基本响应格式如下:
  HTTP/1.1 200 OK
  Date:Mon 15
  Server:Apache/7.0
  Connection:close
  Content-Type:text/html;
  Content-length:107  代表文档的多少个字节,不包含首部字节数

  <html>
  <head><title>Hello</title>
  </head>
  <body>Test</body>
  </html>
HTTP 1.1响应码
200-299之间的响应码表示接受、理解并接受了请求
300-399之间的响应码表示Web浏览器需要转到不同的页面,也就是重定位
400-499之间的响应码指示客户端在某些地方有错误
500-599之间的响应码表示服务器发生了错误。
常见的几个响应码如下:
HTTP/1.0 200 OK 表示响应成功
HTTP/1.0 301 Moved 重定向
HTTP/1.0 Bad Request 客户端向服务器发送的请求格式不正确
HTTP/1.0 Not Found(未找到) 最常见错误,指示服务器没有所请求的页面。
具体响应码列表请见转载的另一篇文章HTTP响应码解析
关闭连接
  HTTP1.0是无记忆功能的,称为无状态协议,即如果客户端重新请求,服务器不会记忆前次的连接请求的连接或结果,当服务器响应完客户端本次连接后,就会自动断掉连接。
  HTTP1.1是状态协议,它可以连接重用,它允许浏览器通过一个连接发送多个不同的请求。

本文出自 “在云端的追梦” 博客,请务必保留此出处http://computerdragon.blog.51cto.com/6235984/1191176

原文地址:https://www.cnblogs.com/daichangya/p/12958695.html