一直都想搞清楚网络通信和操作系统的相关知识,填补底层空白。
偶然在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将不能再使用。所以当用户再次打开浏览器的时候,服务器无法将心得请求与以前的会话联系起来,饿睿智能创建一个新的会话。然而,所有与前一个会话有关的数据依然存放在服务器上,直到会话过期被清除为止。
分享到:
相关推荐
总之,Android实现Http请求响应需要理解网络编程的基本原理,掌握至少一种网络库的使用,以及适当的错误处理机制。在获取网页源代码后,根据需求选择合适的解析方式,为后续的业务逻辑提供数据支持。同时,要关注...
请求响应机制是网络应用开发中的基础概念,尤其是在Java Web开发中,如JSP(JavaServer Pages)技术。本章主要探讨了HTTP协议、MIME类型、文件上传和下载以及生成特定格式的文件等内容。 首先,HTTP(超文本传输...
HTTP协议作为互联网的基础之一,它的请求和响应机制是理解和开发Web应用的核心。通过深入了解HTTP1.0和HTTP1.1的不同之处,我们可以更好地设计高效、稳定的网络应用程序。同时,掌握HTTP请求和响应的具体结构及其...
Node.js 发送 HTTP 请求时遇到 404 长时间未响应的问题是一个常见的问题,但我们可以使用 timeout 机制来解决这个问题。通过设置请求时长,我们可以限制 Node.js 的请求时长,避免服务器端的性能下降。
### Spring Boot Web 请求响应详解 #### 一、Spring Boot Web 请求响应概述 Spring Boot 提供了一种简单的方式来构建 RESTful Web 服务。本篇将深入探讨如何使用 Spring Boot 处理 HTTP 请求和响应,理解其背后的...
通过这个机制,Nginx 可以高效地处理 HTTP 请求,并确保正确地响应客户端的请求。 2.3 checker 的初始化 checker 是 Nginx 中的一个模块,用于检查 HTTP 请求的合法性。在初始化时,Nginx 会将 checker 模块设置为...
在IT行业中,网络通信是至关重要的一个环节,而请求响应模型是互联网应用的基础。本案例主要探讨了在请求响应场景中的使用,特别是涉及到浏览器与服务器后台之间的交互,以及相关网络协议的应用。 首先,我们来看...
在C++中实现HTTP请求,我们通常需要处理以下几个核心部分: 1. **建立连接**:使用socket编程创建一个套接字,并通过connect函数与指定的服务器建立TCP连接。这涉及到IP地址解析和端口绑定等操作。 2. **构建请求...
它主要负责用户与应用程序之间的交互,通过请求-响应机制实现数据的动态展示。本案例聚焦于前端页面的请求和响应过程,帮助开发者理解这一核心概念。 首先,让我们深入理解“请求-响应”模式。在Web应用中,当用户...
这些文件可能包含示例代码、练习或讲解文档,帮助学习者更好地理解和应用HTTP请求响应机制。 总的来说,`request`和`response`是HTTP通信的核心,它们在Web开发中起着至关重要的作用。理解并熟练掌握它们对于构建...
- 压缩包中的"JavaWeb开发-请求响应案例"可能包含了具体的代码示例,演示了如何接收包含XML数据的HTTP请求,然后使用Java进行解析,并生成含有XML响应的JavaWeb应用。 - 案例可能涵盖了请求参数的获取、XML数据的...
代理服务器位于客户端和目标服务器之间,它接收客户端的HTTP请求,然后转发给目标服务器,并将响应返回给客户端。在转发过程中,我们可以对请求报文进行处理,例如: 1. **拦截**:当请求到达代理服务器时,程序会...
本篇文章将深入探讨HTTP发送请求的原理、响应机制以及如何通过编程实现。 一、HTTP请求概述 HTTP请求由客户端发起,通常是一个浏览器,用于获取或更新服务器上的资源。一个完整的HTTP请求包括以下几个部分: 1. ...
在这个过程中,了解爬虫的概述以及请求响应机制至关重要。 首先,我们来详细讲解爬虫的概述。爬虫是一种按照一定的规则自动遍历互联网的程序,通常用于数据分析、市场研究、搜索引擎优化等领域。它们通过跟踪网页上...
**Fiddler——HTTP请求与响应导出** Fiddler是一款强大的网络调试工具,它能够捕获、查看、修改在浏览器和服务器之间传输的HTTP(S)数据。在IT行业中,理解并熟练运用Fiddler是提升开发和测试效率的重要技能。下面...
2. 简单快速:HTTP请求只需要请求方法和路径,常见的方法包括GET、POST、HEAD等。 3. 灵活:可以传输不同类型的对象,通过Content-Type来标识数据类型。 4. 无连接:每次连接只处理一个请求,节省了传输时间。 5. 无...
本文将深入探讨SpringBootWeb请求响应的处理机制,以及相关技术如HTML、CSS和JavaScript在Web开发中的角色。 1. Web开发基础 Web开发涵盖了网页设计和动态内容的创建。微软定义Web开发为使用HTML、CSS和JavaScript...
本文将从HTTP请求头、响应头以及状态码三个方面深入探讨这些概念及其重要性。 #### 一、HTTP 请求头 HTTP请求头包含了客户端(通常是浏览器)发送给服务器的一系列关键信息。下面详细介绍一些常见的请求头: 1. *...
总结起来,Servlet请求和响应机制涉及客户端与服务器间的交互,包括HTTP请求的发送、Web容器的解析和处理、Servlet的业务逻辑执行,以及最终响应的构造和发送。Web容器在这个过程中起着至关重要的作用,它提供了一个...
它作为一个HTTP请求模拟器,允许用户发送各种HTTP请求(如GET、POST、PUT、DELETE等)并接收响应,以此来验证和调试RESTful API的功能。在本文中,我们将详细探讨RESTClient的特性、使用方法以及其在API测试中的重要...