首页 > 代码库 > HTTP协议详解
HTTP协议详解
HTTP协议简介
HTTP协议,中文名称“超文本传输协议”,是互联网最常用的一种网络协议。HTTP的重要应用就是WWW服务(上网服务),即用于WEB浏览器和WEB服务器之间通信的应用,我们习惯称为www应用或web应用。
当初设计HTTP协议的目的就是提供一种发布和接收HTML(一种页面标记语言 超文本标记语言)页面的方法。
WWW,简称web,中文译为“万维网”。WWW应用使用的是HTTP协议。HTTP协议的WWW服务的默认服务端口为80;另外一个加密的WWW服务https的默认端口为443.
HTTP协议的版本
HTTP协议从诞生到现在经历了HTTP/0.9, HTTP/1.0, HTTP/1.1 这几个版本,其中,HTTP/1.0是第一个得到广泛使用的版本,而HTTP/1.1为当前使用的主流版本。
HTTP/1.0介绍
HTTP/1.0在HTTP/0.9的基础上增加了HTTP请求头、支持更多的请求方法,以及对多媒体对象的处理。HTTP/1.0规定浏览器与服务器只保持短暂的连接,浏览器的每次请求都需要与服务器建立一个TCP连接,服务器完成请求处理后立即断开TCP连接,服务器不跟踪每个客户也不记录过去的请求。
HTTP/1.1介绍
HTTP/1.1重要是修复HTTP设计中的缺陷,从可扩展性,缓存处理,宽带优化,持久连接,HOST头,错误通知,消息传递、内容协商几个方面做了相关改进。
在连接方面,HTTP/1.1支持持久连接,在一个TCP连接上可以传送多个HTTP请求和响应,减少了建立和关闭连接的消耗和延迟。
在请求头方面,HTTP/1.1增加更多的请求头和响应头信息,来增强HTTP功能。这使得WEB浏览器可以使用主机头名来明确表示要访问服务器上的哪个WEB站点,这样就可以使用WEB服务在同一个IP地址和端口上配置多个虚拟WEB站点。
HTTP请求方法
在HTTP通信中,每个HTTP请求报文都包含一个方法。用以告诉WEB服务器端要执行什么具体的动作,这些动作包括:获取指定WEB页面、提交内容到服务器、删除服务器上的资源等,这些HTTP请求报文中包含的方法被称为HTTP方法。
常用的HTTP方法
GET 客户端请求指定资源信息,服务器返回指定资源
HEAD 只请求响应报文中的HTTP首部
POST 将客户端的数据提交到服务器,例:注册表单
PUT 从客户端向服务器传送的数据取代指定的文档内容
DELETE 请求服务器删除指定的资源
MOVE 请求服务器将指定的页面移至另一个网络地址
HTTP状态码
每当客户端向服务器发送一个HTTP请求时,WEB服务器都会返回一个状态响应代码。这个状态码是一个三位数字,作用是告知WEB客户端此次的请求是否成功,或者是采取其它的动作方式。
HTTP/1.1的状态码分为五大类
100-199 用于指定客户端相应的某些动作
200-299 用于表示请求成功
300-399 用于已经移动的文件且常被包含在定位头信息中指定新的地址信息。(重定向)
400-499 用于指出客户端的错误
500-599 用于指出服务器错误
常见的状态码及对应的作用
200 OK 服务器成功返回网页,这是成功的http请求返回的标准状态码
301 Moved Permanently 永久重定向
403 Forbidden 禁止访问,这个请求是合法的,但是服务器端因为匹配了预先设置的规则而拒绝响应客户端的请求,此类问题一般为服务器权限配置不当所致。
404 Not Found 服务器找不到客户端请求的指定页面,可能是客户端请求了服务器不存在的资源导致。
500 Internal Server Error 内部服务器错误,服务器遇到了意料不到的情况,不能完成客户的请求。这是一个笼统的报错,一般为服务器的设置或者内部程序问题导致。(selinux未关闭,)
502 Bad Gateway 坏的网关,一般是代理服务器请求后端服务时,后端服务不可用或者没有完成响应网关服务器,一般为代理服务器下面的节点出问题导致。
503 Service Unavailable 服务当前不可用,可能因为服务器超载或停机维护导致,或者是代理服务器后面没有可以提供服务的节点。
504 Gateway Timeout 网关超时,一般是网关代理服务器请求后端服务时,后端服务没有在特定的时间内完成处理请求,一般是服务器过载导致没有在指定的时间内返回数据给代理服务器。
HTTP报文有两种:
一种是WEB客户端发往WEB服务器的HTTP报文,称为请求报文。
一种是从WEB服务器发往WEB客户端的报文,称为响应报文。
HTTP请求报文由请求行、请求头部(header)、空行和请求报文主体几个部分组成。
请求行 请求方法 URL 协议版本
GET /index.html HTTP/1.1
请求头 字段名1: 值1
字段名2: 值2
空行
请求报文主体 GET方法没有请求报文主体,POST方法才有。
HTTP响应报文由起始行、响应头部(header)、空行和响应报文主体几个部分组成。
HTTP响应报文的一般格式
起始行 协议及版本号 数字状态码 状态信息
HTTP/1.1 200 OK
响应头部 字段名1:值1
字段名2:值2
空行
响应报文主体(可能是网页,视频,图片)
Fiddler Web Debugger 4(简称Fiddler4)是一款功能强大的HTTP网页抓包调试工具(HTTP协议调试代理工具)。Fiddler4数据抓包软件能记录所有客户端和服务器的http和https请求,允许用户监视,设置断点,甚至修改输入输出数据。
HTTP协议MIME(多用途因特网邮件扩展)类型介绍
当web服务器响应HTTP请求时,会为每一个HTTP对象数据加一个MIME类型。当WEB浏览器获取到服务器返回的对象时,会去查看相关的MIME类型,进行相应处理。
可以从www服务软件nginx的配置文件conf目录下,查看其支持的媒体(MIME)类型。
less mime.types
MIME类型 文件类型
text/html html htm shtml;
text/css css;
image/gif gif;
......
HTTP协议之URI与URL
URL,全称“统一资源定位符”,也被称为网页地址;
URI 统一资源标识符
可以这样理解,所有的URL都是URI。
本文出自 “青春邓勇” 博客,请务必保留此出处http://dengyong.blog.51cto.com/8409869/1932535
HTTP协议详解