http协议基础
一 基本概念
http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式。
二 HTTP请求
http请求由三部分组成,分别是:请求行、消息报头、请求正文
1 请求行
<method> <uri> <version>
method(请求方法):
GET:请求获取Request-URI所标识的资源
POST:在Request-URI所标识的资源后附加新的数据
HEAD 请求获取由Request-URI所标识的资源的响应消息报头
PUT 请求服务器存储一个资源,并用Request-URI作为其标识
DELETE 请求服务器删除Request-URI所标识的资源
URI和URL
URI: 统一资源标识符。以某种统一的(标准化的)方式标识资源的简单字符串。
URL:统一资源定位符。可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址。互联网上的每个文件都有一个唯一的URL,它包含的信息指出文件的位置以及浏览器应该怎么处理它。
通用的格式是:http://host[":"port][abs_path]
例如:http://www.google.com:80/index.html
URI和URL的区别:URI定义资源,而URL不单定义这个资源,还定义了如何找到这个资源。比如说,一个服务器上,到一个文件夹/网页的绝对地址(absolute path)就是URI。
<version>:http 1.0 和 http 1.1
版本区别:
建立连接方面:
HTTP/1.0 每次请求都需要建立新的TCP连接,连接不能复用。HTTP/1.1 新的请求可以在上次请求建立的TCP连接之上发送,连接可以复用。
优点是减少重复进行TCP三次握手的开销,提高效率。
注意:在同一个TCP连接中,新的请求需要等上次请求收到响应后,才能发送。
其他的一些区别,稍后会补充。
2 请求报头
<header name>: <header data>
目前唯一关注的是Host报头,在1.1版本中需要而在1.0版本中不需要。
用一个空的文本行来终止报头列表。
三 HTTP响应
HTTP响应也是由三个部分组成,分别是:状态行、消息报头、响应正文
1 状态行
<version> <status code> <status message>
状态码:
状态代码有三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
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 //服务器当前不能处理客户端的请求,一段时间后,可能恢复正常
例如: HTTP/1.1 200 OK
2 消息报头
主要关注两个比较重要的
Content-Type :告诉客户端响应主题中内容的MIME类型。
Content-Length:用来指响应主体的字节大小。
使用文本空行来终止响应报头,其后跟随响应主体,响应主体中包含被请求的内容。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。