`
Riancy007
  • 浏览: 116566 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论

HTTP请求响应机制

阅读更多

一直都想搞清楚网络通信和操作系统的相关知识,填补底层空白。
偶然在AJAX开发精要这本书上发现了一小段关于HTTP请求响应模型的知识,其表达方式与我的理解方式很是一致,所以偶很是高兴啊。

1.HTTP协议

  Internate的基本协议是TCP/IP(传输控制协议和网际协议)。而目前使用的FTP,HTTP都是建立在TCP/IP上的应用层协议。不同的协议对应不同的应用。而HTTP协议是Web应用所使用的主要协议。
 
  HTTP协议基于请求响应模式,客户端向服务器发送一个请求,请求头包含请求的方法,URI,协议版本以及包含请求修饰符,客户端信息和内容的类似MIME的消息结果。服务器则以一个状态行为作为响应,相应的内容包括消息协议的版本,成功或错误编码加上包含服务器信息,实体元信息以及可能的实体内容。

HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延迟地进行处理;不过,延迟还是客观存在的。HTTP协议有一种内置机制,在消息的传递时间上有一定的灵活性:超时机制。一个超时就是客户端等待请求消息返回信息的最长时间。
HTTP协议的请求和响应消息如果没有发送并传递成功的话,不保存任何已传递的信息。比如,单击“提交”按牛,如果表单没有发出去,则浏览器将会显示错误信息页,并且返回空白表单。虽然没有提交成功,但是HTTP不保存任何表单信息。

由于HTTP协议的上述特点,通常,客户端每次需要更新信息都必须重新向服务器发起请求,客户端接受到服务器端返回的信息后再刷新屏幕内容。
基于HTTP协议的客户端/服务器请求响应 机制的信息交换过程包含下面几个步骤:

1.建立连接:客户端与服务器建立TCP连接
2.发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交。
3.发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息。
4.关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话。

HTTP的工作机制就是请求消息和响应消息。嘴尖但的情况是一个拥护输入一个站点地址,发送一个请求。之后,浏览器返回所请求的页面,这个页面可能是最简单的HTML页面,也可能是动态编译后的页面。如果这个页面有错或者不存在,则WEB服务器则将发送一个错误的信息页面。

WEB服务器发送错误信息页是因为HTTP没有内置的处理机制,是无状态的,传输协议不记忆从一个请求消息到另一个请求消息的任何信息(备注:意思是说,当发送一个请求消息发生错误,由于HTTP是无状态的,所以不能将这个发生错误的请求消息传递给另一个请求消息进行处理,也是请求消息不能转弯,必须一次传到并得到处理)  这个特点可以保证WEB的一致性。但是,用户常常需要记忆一些设置内容或者浏览过程,这就需要在web页面或者URL中携带各种参数及值。HTTP请求有多种样式。其中常用的有GET,POST,HEAD请求。

//这3个请求暂时不提了


5.状态管理

正如前面所提到的,HTTP协议是无状态的,不能保存每次提交的信息,即当服务器返回与请求相对应的应答之后,这次事务的所有信息就都丢掉了。如果用户发来一个新的请求,服务器也无法知道它是否与上次的请求有联系。

对于简单的静态HTML文件来说,这种特性是很适用,但是对于那些需要多次提交请求才能完成的WEB操作比如购物车来说,就成了问题了。服务器端的WEB应用程序必须允许用户通过多个步骤才能完成全部的物品采购。在这种情况下,应用程序必须跟踪由同一个浏览器发送的多哥请求所提供的信息,即记住用户的交易状态。

通常,采用两种方法来解决这个问题。一个是每次应答都返回完整的状态,让浏览器把它作为下次请求的一部分再发送过来。二是把状态保存在服务器的某个地方,只发送回一个标识符,浏览器在下次提交中把这个标识符发送过来;这样,就可以定位存贮在服务器上的状态信息了。

在这两种方法中,信息可以通过下列三种方法中的一种发送给浏览器:
1.作为COOKIE; 但是不是所有浏览器都支持,而且用户也可以禁用COOKIE
2.附加在主体的URL中
2.作为隐藏域嵌入HTML表单中;

当表但提交时,浏览器将作为常规HTTP参数的方式将这些信息返回服务器,当状态信息被注入时,它将作为请求URL的一部分传诵到服务器,但是这在浏览器和服务器之间来回传递信息的效率较低,所以一般还是选择把信息保存在服务器中,即上面两种方法中的第二种。在浏览器和服务器之间来回传递一个标识符,这就是所谓的会话(session)跟踪。来自浏览器的所有包含同一个标识符(这里是SESSIONID)的请求同属于一个会话。

会话的有效期直到它被显式地终止为止,或者当拥护在异端时间内没有动作,由服务器自动设置为过期。目前没有办法通知服务器用户已经关闭浏览器,因为在浏览器和服务器之间没有一个持久的连接,并且浏览器关闭时也不向服务器发送信息。同时,关闭浏览器通常意味着会话ID丢失;COOKIE将国旗,或者注入了信息的URL将不能再使用。所以当用户再次打开浏览器的时候,服务器无法将心得请求与以前的会话联系起来,饿睿智能创建一个新的会话。然而,所有与前一个会话有关的数据依然存放在服务器上,直到会话过期被清除为止。








分享到:
评论

相关推荐

    HTTP协议详解,http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议

    http(超文本传输协议)是一个基于请求与响应模式的、无状态的、应用层的协议,常基于TCP的连接方式,HTTP1.1版本中给出一种持续连接的机制,绝大多数的Web开发,都是构建在HTTP协议之上的Web应用。HTTP URL (URL是...

    Ajax开发详解

    B/S请求响应机制所使用的HTTP协议决定其特有的工作机制以及Web开发模式,也决定了其自身的缺陷。 本章在简要介绍HTTP协议的基础上,着重讲述B/S请求响应机制的工作原理、当前几种主流Web开发技术的开发模式,并且...

    htq:排队 HTTP 请求并将响应存储在 Redis 中以供以后检索

    在这种情况下,任务被归类为可能需要比典型 HTTP 响应更长的时间或允许最终完成的任务。 示例包括执行数据库查询、对某些数据进行分析以及从网站或其他服务中插入/抓取数据。 客户端-服务器模型的一个副作用是...

    Http发送请求

    所有浏览器都兼容,http响应机制,及实现代码。。。。。。

    10案例九: [实现 N 个 API[网页爬虫] Node 的 HTTP 处理 - 请求与响应(1).md

    node原理讲解实例探究|1源码挖掘: Webpack 中用到 Node 的 10 个核心基础能力2案例...10案例九: 实现 N 个 API[网页爬虫] Node 的 HTTP 处理 - 请求与响应(1)[埋点搜集服务器] - 总结: Koa 服务端框架用到了哪些能力

    基于Qt的Http请求小程序

    基于Qt的Http请求小程序,输入地址,可请求...发起请求,响应返回,超时机制。 涉及类:QNetworkAccessManager、QNetworkReply、QNetworkRequst。配合博文http://blog.csdn.net/lankin2013/article/details/41855013

    数据请求处理.zip

    HttpWebRequest和HttpWebResponse类是用于发送和接收HTTP数据的最好选择。它们支持一系列有用的属性。这两个类位 于System.Net命名空间,默认情况下这个类对于控制台程序来说是可访问的。...你可以把HTTP响应的数

    使用Java动态代理实现一个简单的网络请求拦截器.txt

    在`main()`方法中,我们首先创建了一个`HttpURLConnection`对象来发送HTTP请求,然后通过`Proxy.newProxyInstance()`方法创建了一个代理对象,并将目标对象和拦截器传递给代理工厂。最后,我们使用代理对象来发送...

    关于Python爬虫基础知识、爬虫实例和反爬机制

    关于Python爬虫基础知识、爬虫实例和反爬机制 ...- **Requests**: 用于发送HTTP请求和获取响应。 - **Beautiful Soup**: 用于解析HTML和XML文档。 - **Scrapy**: 一个用于爬取网站数据和提取结构化数据的强大框架。

    koa-http-logger:koa http请求和响应记录器

    koa-http-logger (MIT)的一个分支没有与报告机制结合。用法 var koa = require ( 'koa' ) ;var logger = require ( 'koa-http-logger' ) ;var report = require ( 'debug' ) ( 'app:http' ) ;var app = koa ( ) ;...

    Got:Node.js 的人性化和强大的 HTTP 请求库-开源

    Got 实现了符合 RFC 7234 的 HTTP 缓存,它在内存中开箱即用,并且可以轻松插入各种存储适配器。... 响应对象通常是一个 Node.js HTTP 响应流,但是,如果从缓存返回,它将是一个类似响应的对象,其行为方式相同。

    python爬虫基础知识、爬虫实例、反爬机制包含技术栈、对象和爬虫使用及环境依赖构建

    MovieSpider类: 包含爬虫的逻辑,发送HTTP请求并解析响应。 Movie类: 用于存储电影信息的数据结构。 爬虫使用: 实例化MovieSpider对象。 调用MovieSpider对象的爬取方法开始爬取热门电影信息。 将爬取到的数据保存...

    client-rate-limiter:利用服务器速率限制响应标头处理客户端http限制请求的简单库

    与此类http api交互的客户端应用程序必须考虑这些限制,以确保不会丢失http请求。 即:一个cron应用程序,每天将一个系统的订单同步到另一个系统。 某些库通过管理客户端速率限制来解决此问题,您可以在其中指定...

    golang的HTTP基本认证机制实例详解

    主要介绍了golang的HTTP基本认证机制,结合实例形式较为详细的分析了HTTP请求响应的过程及认证机制实现技巧,需要的朋友可以参考下

    HTTP 超详解 一文搞定HTTP面试知识

    2. HTTP请求报文 请求报文结构 请求行(请求方法、URL、协议版本) 请求方法 URL 协议版本 请求头 请求体 3. HTTP响应报文 响应报文结构 响应行(版本协议、状态码及状态描述) 状态码及状态描述 响应头 响应体 4. ...

    详解微信小程序实现WebSocket心跳重连

    最近在开发小程序用到了WebSocket,小程序提供了相应的原生API,与H5的API使用方式上有一些区别,所以流行的H5的一些成熟的类库使用起来有些困难,而原生API又存在一些缺陷,所以就自己实现了...它采用了请求/响应模

    Angular6封装http请求的步骤详解

    最近抽空学习了一下Angular6,...拦截器可以拦截请求,也可以拦截响应,那么通过拦截请求就可以实现 设置baseurl,公共头部;而通过拦截响应就可以实现 集中捕获错误 。废话不多说,上代码吧。 第一步:准备工作,导

    Maven整合rest+SpringMvc实例

    本人在前辈《从MVC到前后端分离(REST-个人也认为是目前比较流行...即具有统一响应结构、 前后台数据流转机制(HTTP消息与Java对象的互相转化机制)、统一的异常处理机制、参数验证机制、Cors跨域请求机制以及鉴权机制。

Global site tag (gtag.js) - Google Analytics