码迷,mamicode.com
首页 > Web开发 > 详细

HTTP协议小结

时间:2014-12-06 16:48:41      阅读:185      评论:0      收藏:0      [点我收藏+]

标签:blog   http   io   os   使用   sp   for   strong   on   

1.什么是HTTP

       超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Locator,URL)来标识,通俗地讲,超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端的浏览器。

2.在TCP/IP协议栈中的位置:

         HTTP协议通常承载于TCP协议之上,有时也承载于TLS或SSL协议层之上,这个时候,就成了我们常说的HTTPS。如下图所示:

                                                    bubuko.com,布布扣

        默认HTTP的端口号为80,HTTPS的端口号为443

3.HTTP的请求响应模型

         HTTP协议永远都是客户端发起请求,服务器回送响应。

         不经过代理服务器的请求方式

                     bubuko.com,布布扣

          经过代理服务器的请求方式

                             bubuko.com,布布扣

 

       这样就限制了使用HTTP协议,无法实现在客户端没有发起请求的时候,服务器将消息推送给客户端。 HTTP协议是一个无状态的协议,同一个客户端的这次请求和上次请求是没有对应关系。

4.URL详解

        URL的基本格式:

 
  schema://host[:port#]/path/.../[?query-string][#anchor]
 

      scheme             指定低层使用的协议(例如:http, https, ftp)

      host                   HTTP服务器的IP地址或者域名

      port#                 HTTP服务器的默认端口是80,这种情况下端口号可以省略。如果使用了别的端口,必须指明,例如 http://www.cnblogs.com:8080/

      path                  访问资源的路径

     query-string       发送给http服务器的数据

     anchor-             锚

     URL 的一个例子

 http://www.mywebsite.com/sj/test/test.aspx?name=sviergn&x=true#stuff
 Schema:                 http
 host:                   www.mywebsite.com
 path:                   /sj/test/test.aspx
 Query String:           name=sviergn&x=true
 Anchor:                 stuff

5.打开一个网页需要浏览器发送很多次Request  

       5.1. 当你在浏览器输入URL http://www.cnblogs.com 的时候,浏览器发送一个Request去获取 http://www.cnblogs.com 的html.  服务器把Response发送回给浏览器.

       5.2. 浏览器分析Response中的 HTML,发现其中引用了很多其他文件,比如图片,CSS文件,JS文件。

       5.3. 浏览器会自动再次发送Request去获取图片,CSS文件,或者JS文件。

       5.4. 等所有的文件都下载成功后。 网页就被显示出来了。

6.HTTP消息的结构

                                       bubuko.com,布布扣

        第一行中的Method表示请求方法,比如"POST","GET",  Path-to-resoure表示请求的资源, Http/version-number 表示HTTP协议的版本号

        我们再看Response消息的结构, 和Request消息的结构基本一样。 同样也分为三部分,第一部分叫Response line, 第二部分叫Response header,第三部分是body. header和 body之间也有个空行,  结构如下图

                                       bubuko.com,布布扣

7.Get和Post方法的区别

                                        bubuko.com,布布扣

8.状态码

       Response 消息中的第一行叫做状态行,由HTTP协议版本号, 状态码, 状态消息 三部分组成。

       状态码用来告诉HTTP客户端,HTTP服务器是否产生了预期的Response.

       HTTP/1.1中定义了5类状态码, 状态码由三位数字组成,第一个数字定义了响应的类别

       1XX  提示信息 - 表示请求已被成功接收,继续处理

       2XX  成功 - 表示请求已被成功接收,理解,接受

       3XX  重定向 - 要完成请求必须进行更进一步的处理

       4XX  客户端错误 -  请求有语法错误或请求无法实现

       5XX  服务器端错误 -   服务器未能实现合法的请求

      常见状态码解释

       200 OK

      最常见的就是成功响应状态码200了, 这表明该请求被成功地完成,所请求的资源发送回客户端

      302 Found

      重定向,新的URL会在response 中的Location中返回,浏览器将会自动使用新的URL发出新的Request

      例如在IE中输入, http://www.google.com. HTTP服务器会返回302, IE取到Response中Location header的新URL, 又重新发送了一个Request.

       304 Not Modified

       代表上次的文档已经被缓存了, 还可以继续使用

       400 Bad Request

       客户端请求与语法错误,不能被服务器所理解

      403 Forbidden

      服务器收到请求,但是拒绝提供服务

      404 Not Found 

     请求资源不存在(输错了URL)

     500 Internal Server Error

     服务器发生了不可预期的错误

     503 Server Unavailable 

    服务器当前不能处理客户端的请求,一段时间后可能恢复正常

 9.Cookie和Session

 9.1Cookie的分类

可以大致把Cookie分为2类: 回话cookie和持久cookie

会话cookie: 是一种临时的cookie,它记录了用户访问站点时的设置和偏好,关闭浏览器,会话cookie就被删除了

持久cookie: 存储在硬盘上,(不管浏览器退出,或者电脑重启,持久cookie都存在), 持久cookie有过期时间

9.2Session是保存在服务器端的,通过Session ID与客户端关联

HTTP协议小结

标签:blog   http   io   os   使用   sp   for   strong   on   

原文地址:http://www.cnblogs.com/javaergt/p/4148275.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!