本文共 3305 字,大约阅读时间需要 11 分钟。
超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是一种用于分布式、协作式和超媒体信息系统的。HTTP是的数据通信的基础。
HTTP是一个客户端终端(用户)和服务器端(网站)请求和应答的标准()。通过使用网页浏览器、网络爬虫或者其它的工具,客户端发起一个HTTP请求到服务器上指定端口(默认端口为80)。
设计HTTP最初的目的是为了提供一种发布和接收页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识。
支持B/S及C/S模式。
简单快速:
2.1 客户向服务器请求服务时,只需传送请求方法和路径。 2.2 请求方法常用的有GET、HEAD、POST等,分别规定了客户与服务器不同的联系类型。 2.3 HTTP协议简单,使得HTTP服务器的程序规模小,通信速度快。灵活:HTTP允许传输任意类型的数据对象。正在传输的类型由Content-Type加以标记。
无连接:无连接的含义是限制每次连接只处理一个请求。服务器处理完客户的请求,并收到客户的应答后,即断开连接。采用这种方式可以节省传输时间。
无状态:HTTP协议是无状态协议。无状态是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快。
一共有八种请求方式:
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx:指示信息--表示请求已接收,继续处理 2xx:成功--表示请求已被成功接收、理解、接受 3xx:重定向--要完成请求必须进行更进一步的操作 4xx:客户端错误--请求有语法错误或请求无法实现 5xx:服务器端错误--服务器未能实现合法的请求常见状态代码、状态描述、说明:
200 OK
//客户端请求成功400 Bad Request
//客户端请求有语法错误,不能被服务器所理解401 Unauthorized
//请求未经授权,这个状态代码必须和WWW-Authenticate报头域一起使用403 Forbidden
//服务器收到请求,但是拒绝提供服务404 Not Found
//请求资源不存在,eg:输入了错误的URL500 Internal Server Error
//服务器发生不可预期的错误503 Server Unavailable
//服务器当前不能处理客户端的请求,一段时间后可能恢复正常 其他代码请参考 例如:HTTP/1.1 200 OK (CRLF)
下面是一个HTTP客户端与服务器之间会话的例子,运行于,端口80。
发出的请求信息(message request)包括以下几个:
请求行和标题必须以<CR><LF>作为结尾。空行内必须只有<CR><LF>而无其他空格。在HTTP/1.1协议中,所有的请求头,除Host外,都是可选的。
GET / HTTP/1.1Host: www.google.com
(末尾有一个空行。第一行指定方法、资源路径、协议版本;第二行是在1.1版里必带的一个header作用指定主机)
HTTP/1.1 200 OKContent-Length: 3059Server: GWS/2.0Date: Sat, 11 Jan 2003 02:44:04 GMTContent-Type: text/htmlCache-control: privateSet-Cookie: PREF=ID=73d4aef52e57bae9:TM=1042253044:LM=1042253044:S=SMCc_HRPCQiqyX9j; expires=Sun, 17-Jan-2038 19:14:07 GMT; path=/; domain=.google.comConnection: keep-alive
(紧跟着一个空行,并且由HTML格式的文本组成了Google的主页)
超文本传输协议(HTTP)已经演化出了很多版本,它们中的大部分都是向下兼容的。在 RFC 2145 中描述了HTTP版本号的用法。客户端在请求的开始告诉服务器它采用的协议版本号,而后者则在响应中采用相同或者更早的协议版本。
已过时。只接受GET一种请求方法,没有在通讯中指定版本号,且不支持请求头。由于该版本不支持POST方法,因此客户端无法向服务器传递太多信息。
这是第一个在通讯中指定版本号的HTTP协议版本,至今仍被广泛采用,特别是在代理服务器中。
持久连接被默认采用,并能很好地配合代理服务器工作。还支持以管道方式在同时发送多个请求,以便降低线路负载,提高传输速度。
HTTP/1.1相较于HTTP/1.0协议的区别主要体现在:在HTTP 0.9和1.0中,在每一次请求/回应对之后关闭。在HTTP 1.1中,引入了保持连接的机制,一个连接可以重复在多个请求/回应使用。持续连接的方式可以大大减少等待时间,因为在发出第一个请求后,双方不需要重新运行TCP交握程序。
当前版本,于2015年5月作为互联网标准正式发布。
尽管协议是互联网上最流行的应用,HTTP协议中,并没有规定必须使用它或它支持的层。事实上,HTTP可以在任何互联网协议上,或其他网络上实现。HTTP假定其下层协议提供可靠的传输。因此,任何能够提供这种保证的协议都可以被其使用。因此也就是其在TCP/IP协议族使用TCP作为其传输层。
下一篇博客:
转载地址:http://idrfa.baihongyu.com/