您的位置:首页 > 理论基础 > 计算机网络

http协议原理基本概述

2015-12-05 15:12 381 查看
1.http基本概述:
http全称为hyper text transfer protocol(超文本传输协议),原因是在于早期的http/0.9仅能传输html格式的文本。html叫做hyper text mark language(超文本标记语言),是一种通用的网页格式标记语言,里面可以含有超链接。
html的格式大概是这个样子:
<html>
<head>
<title>test</title>
</head>
<body>
身体内容
</body
</html>
http有多个版本:http/0.9、http/1.0、http/1.1。由于http/0.9仅能传输html文本,不能满足人们的网页浏览需求,现在已经废弃。http/1.0在基于http/0.9版本的基础上引入了缓存机制及MIME(Multipurpose Internet Mail Extensions,多用途互联网邮件扩展)机制,使得http协议可以传输其他内容的数据,如图片、视频流等等。注:MIME可以对文件类型做标记,从而使得浏览器可以采取对应的操作实现对内容的处理。http/1.1则是http/1.0的进一步升级,使得协议处理能力更加完善。
http本身是一种无状态的协议,也就是不能标记请求是否来自同一个客户端,而一个web页面的资源数可能会有多个,也就是浏览器请求一个页面可能要发送N个请求,这样导致每个请求都需要建立一次TCP连接,大大降低了传输的效率。http/0.9和http/1.0都不支持保持连接,而http/1.1引入了保持连接的机制,可以实现当同一个用户在一定时间内请求数据(或者请求资源的数量在一定范围内)只需要建立一次TCP连接,http/1.1也对缓存做了更好的优化。现在主流是http/1.1协议,http/1.0可能也有的在用。我们只讨论http1.1。

2.URL和URI:
URI:统一资源标识符,用来标识资源的唯一性。例如:
#标识www.baidu.com/index.html这个整个资源
URL:统一资源定位符,用来定位资源的所在服务器位置。例如:
#标记index.html在www.baidu.com这台主机的test目录下
URL是URI的子集,现在一般不区分URL和URI。

3.http的报文:
http是一个C/S架构的协议,也就是客户端请求,服务器响应。
客户端请求,服务器响应的过程,称为http的事物。http的报文类型有两种,请求报文,响应报文:
①请求报文由3部分组成:

起始行:标明使用的http协议版本,请求的资源(URL)以及对资源的操作
请求首部:标明请求的主机是谁,支持的格式,是否支持压缩、语言等等
空格:这里有个空格,标明请求首部结束
请求主体:请求的主体,例如表单密码等等
举例一个GET请求报文(GET没有请求主体):
GET  HTTP/1.1  #起始行,下载(GET),HTTP/1.1协议,URL
#下面的为请求首部:
Host:   #要请求的主机
Connection: keep-alive  #采用保持连接
Accept: text/html,image/jpg,image/gif,image/png  #接收的MIME内容
User-Agent: Mozilla/50(windows NT 10.0; WOW64) AppleWebkit/537.36 (KHTML, like Gecko) #客户端使用的代理软件
Accept-Encoding: gzip, deflate, sdch #支持的压缩格式
Accept-Language: zh-CN,zh;q=0.8  #允许使用的语言
空格
#GET没有主体,所以不响应主体


②响应报文由3部分组成:
起始行:使用的协议版本、响应的状态码、状态原因短语

响应首部:使用的压缩方式、内容长度、语言等等
空格:标明请求首部结束
响应主体:响应的内容
举例一个响应报文:
HTTP/1.1 200 OK
Content-Type: text/html
Transfer-Encoding: gzip
Connection: keep-alive
Server: Tengine
空格
资源主体
4.http的请求方法:
GET获取资源
HEAD获取响应首部
POST提交表单
PUT上传,写入
DELETE删除URL指向的资源
OPTIONS探测服务器端对某资源所支持的请求方法
TRACE跟踪请求要经过的防火墙,代理或网关等
5.HTTP响应状态码:
1xx (临时响应):表示临时响应并需要请求者继续执行操作。
100 (继续):请求者应当继续提出请求。服务器返回此代码表示已收到请求的第一部分,正则等待其余部分
101 (切换协议):请求者已要求服务器切换协议,服务器已确认并准备切换。
2xx (成功):表示成功处理了请求。
200 (成功):服务器已成功处理了请求。表示服务器提供了请求的资源。
201 (已创建):请求成功并且服务器创建了新的资源。
202 (已接受):服务器已接受请求,但尚未处理。
203 (非权威信息):服务器已成功处理了请求,但返回的信息可能来自另一来源。
204 (无内容):服务器成功处理了请求,但没有返回任何内容。
205 (重置内容):服务器成功处理了请求,但没有返回任何内容。
206 (部分内容):服务器成功处理了部分内容。
3xx (重定向):表示要完成请求,需要进一步操作。
300 (多种选择):针对请求,服务器可执行多种操作。服务器可根据请求者(user agent)选择一项操作,或提供操作列表供请求者选择。
301 (永久移动):请求的资源已经永久移动到新位置。服务器返回此状态码时,会自动将请求转到新的位置。
302 (临时移动):服务器目前从不同位置响应用户的请求,但请求者应继续使用原有位置来进行以后的请求。
303 (查看其他位置):请求者应当对不同的位置使用单独的GET请求来检索响应时,服务器返回此代码。
304 (未修改):自从上次请求后,请求的资源未发生变化。表示客户端可以使用上次的缓存内容。
305 (使用代理):请求者只能使用代理访问请求的资源。客户端需要使用代理。
4xx (客户端请求错误):表示客户端的请求可能有问题,妨碍了服务器的处理。
400 (请求出错):服务器不理解请求的语法。
401 (未授权):访问的资源需要授权。表示访问此资源需要登录。
403 (拒绝):服务器拒绝请求。可能是权限有误
404 (没找到):客户端请求的资源没有找到。
405 (方法禁用):不允许请求所使用的方法。
406 (不接受):无法使用客户端能接受的方式响应该资源。
407 (需要代理授权):需要登陆,但是要使用代理的方式。
408 (请求超时):客户端的请求超时。
409 (请求冲突):服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。
410 (已删除):客户请求的资源已经删除。
411 (需要有效长度):服务器不接受不含有效内容长度标头字段的请求。
412 (未满足前提条件):服务器未满足请求者在请求中设置的其中一个前提条件。
413 (请求实体过大):服务器无法处理请求,因为请求的资源实体过大,服务器无法处理。
414 (请求的URL过长):请求的URL太长,服务器无法处理。
415 (不支持的媒体类型):请求的格式不受请求页面的支持。
416 (请求范围不符合要求):如果页面无法提供请求的范围,则服务器会返回此状态码。
417 (未满足期望值):服务器未满足"期望"请求标头字段的要求
5xx (服务器内部错误):表示服务器在尝试处理请求时内部发生错误。
500 (内部错误):服务器遇到错误,无法完成请求。
501 (尚未实施):服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。
502 (网关错误):服务器作为网关或者代理,从上游服务器收到无效响应。
503 (服务不可用):服务器暂时无法使用(超载或停机维护)。通常,这是暂时状态。
504 (网关超时):服务器作为网关或代理,无法及时从上游服务器获得响应。
505 (HTTP版本不受支持):服务器不接受请求报文中的HTTP协议版本。
6.HTTP首部类型:

请求首部
用于请求报文
响应首部用于响应报文
通用首部请求报文和响应报文都可以使用
扩展首部非标准首部,由开发者构造
7.各首部常用的关键字:
请求首部

Client-IP:客户端IP。
Host:请求的主机名和端口号(比如虚拟主机环境下标识不同主机)
Referer:标明上级页面是什么,防盗链
User-Agent:用户代理工具是什么。
Accept:指明服务器能发送的媒体类型。协商
Accept-Charset:支持使用的字符集。协商
Accept-Encoding:支持使用的压缩方式。协商
Accept-Language:支持使用的语言。协商
Expect:期望的行为。条件请求
If-Modified-Since:资源是否在指定的时间内是否被修改。条件请求
Authorication:客户端提交给服务器端的认证数据,如账号和密码
Cookie/Cookie2:客户端发送给服务器端用于认证身份
响应首部
Age:响应持续的时间
Server:向客户端标明服务器程序名称和版本
Accept-Ranges:对当前资源来讲,服务器所能接受的范围类型。用于协商。
Vary:首部列表,服务器根据列表中的内容挑选挑选出最合适的版本发送给客户端。这个应该是和Accept-Ranges一起的,用于协商。
Set-Cookie/Set-Cookie2:服务器端在某客户端第一次请求时发给的令牌,就是第一次发送Cookie。认证
WWW-Authentication:质询,要求客户端提供账号和密码。认证
Location:资源的新位置
Allow:允许对此资源使用的请求方法
Contern-Encoding:
Contern-Language:
Contern-type:
Contern-Range:
Contern-Location
ETag:实体标签。缓存
Expires:过期标签。缓存
LastModified:上一次的修改时间。缓存
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息