首页 > Web开发 > 详细

http协议原理基本概述及https

时间:2015-12-05 17:53:04      阅读:181      评论:0      收藏:0      [点我收藏+]

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/1.0引入了保持连接的机制,可以标识用户并实现当同一个用户在一定时间内请求数据(或者请求资源的数量在一定范围内)只需要建立一次TCP连接。不过http/1.0的一些功能并不完善(比如保持连接、缓存等),于是升级为http/1.1,http/1.1原生支持保持连接,以及对缓存做了更好的优化。http/1.1和http/1.0现在共存,除了个别功能的优化除外整体框架是一致的。


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协议版本。








本文出自 “SystemCall社区” 博客,请务必保留此出处http://minux.blog.51cto.com/8994862/1719860

http协议原理基本概述及https

原文:http://minux.blog.51cto.com/8994862/1719860

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!