`

一次完整的http请求过程

阅读更多

HTTP协议是无状态协议,依赖瞬间或者近乎瞬间的请求处理。请求信息被立即发送,理想的情况是没有延迟地进行处理;不过,延迟还是客观存在的。HTTP 协议有一种内置机制,在消息的传递时间上有一定的灵活性:超时机制。一个超时就是客户端等待请求消息返回信息的最长时间。

 

HTTP协议的请求和响应消息如果没有发送并传递成功的话,不保存任何已传递的信息。比如,单击“提交”按牛,如果表单没有发出去,则浏览器将会显示错误信息页,并且返回空白表单。虽然没有提交成功,但是HTTP不保存任何表单信息。

 

HTTP是比TCP更高层次的应用层协议,根据规则,只有低层协议建立之后才能,才能进行更层协议的连接,因此,首先要建立TCP连接,一般TCP连接的端口号是80。

一次完整的http请求过程

1) 建立连接:客户端与服务器建立TCP连接
域名-->找到对应IP-->三次握手(syn,ack)后建立连接;
2) 发送请求:打开一个连接后,客户端把请求信息发送到服务器的相应端口上,完成请求动作提交;
3) 发送响应:服务器在处理完客户端请求之后,要向客户端发送响应消息;
4) 关闭连接:客户端和服务器端都可以关闭套接字来结束TCP/IP对话。
一般情况下,一旦Web服务器向浏览器发送了请求数据,它就要关闭TCP连接,然后如果浏览器或者服务器在其头信息加入了这行代码:
Connection:keep-alive
TCP连接在发送后将仍然保持打开状态,于是,浏览器可以继续通过相同的连接发送请求。保持连接节省了为每个请求建立新连接所需的时间,还节约了网络带宽。

参考文章:
http://www.nowamagic.net/librarys/veda/detail/1339
http://www.cnblogs.com/stg609/archive/2008/07/06/1236966.html

分享到:
评论

相关推荐

    HTTP一次完整的 请求-响应 过程

    HTTP一次完整的 请求-响应 过程

    一次HTTP请求共经历7步

    7. **Web服务器关闭TCP连接**:默认情况下,一次HTTP请求完成后,服务器会关闭TCP连接,释放资源。但若请求头中的`Connection`字段设置为`keep-alive`,则表明浏览器希望保持连接,以便后续请求能复用此连接,减少...

    一个Http请求处理工具

    在Keep-Alive模式下,客户端和服务器之间的TCP连接在完成一次HTTP事务后不会立即关闭,而是保持一段时间以便重用,从而提高效率。 综上所述,这个Http请求处理工具可能具有以下特性: 1. 支持多种HTTP方法,如GET...

    Demo HTTP请求工具

    HTTP请求工具是网络开发和测试过程中不可或缺的一部分,它允许用户发送不同类型的HTTP请求,如GET和POST,以与Web服务器进行交互。"Demo HTTP请求工具"是一个这样的实用程序,旨在简化这一过程,让开发者能够方便地...

    03-HTTP请求流程:为什么很多站点第二次打开速度会很快?_For_vip_user_0011

    HTTP请求过程涉及到多个步骤,包括构建请求、查找缓存、准备IP地址和端口、等待TCP队列,以及后续的TCP三次握手和HTTP请求头的发送。 首先,当用户在浏览器中输入网址时,浏览器会构建一个HTTP请求行,包含请求方法...

    用CURL来发送HTTP请求的方法

    在开发过程中,调试HTTP请求至关重要。CURL提供了丰富的选项用于调试: - `-v`或`--verbose`:显示详细的请求和响应信息,包括请求头和响应头。 - `--trace`和`--trace-ascii`:记录CURL发送和接收的所有数据,对于...

    模拟HTTP请求-httpdebug

    总的来说,httpdebug是一款强大的HTTP调试工具,它简化了开发和测试过程,让HTTP请求的模拟变得直观且高效。通过深入理解和熟练运用此类工具,开发者能够更好地理解和调试HTTP相关的应用程序和服务。

    HTTP请求流程

    这意味着,对于每个资源的请求,都会导致一次完整的TCP连接建立和关闭的过程,这对于包含多个资源的页面来说非常低效。 - **HTTP/1.1**:引入了持久连接(Persistent Connection),即客户端与服务器之间可以保持多...

    kettle抽取http请求,发送json参数.docx

    下面通过一个示例,来说明如何使用kettle抽取http请求,发送json参数。 标题解释 kettle抽取http请求,发送json参数是指使用kettle工具从http接口中抽取数据,并将抽取的数据发送到目标系统中。这里的http请求是指...

    JMeter beanShell修改http请求参数

    2. **获取上一次HTTP请求的响应**: 在第一个HTTP请求后,添加一个BeanShell Post Processor。在这个处理器中,你可以通过`prev`对象获取上一个样本(即HTTP请求)的响应数据。例如,如果你的响应数据是JSON格式,...

    unity Http请求插件,支持https

    - 尽可能减少网络请求,合并多次请求为一次,利用HTTP/2的多路复用特性。 - 使用异步请求避免阻塞游戏主线程,提高游戏流畅性。 - 优化数据结构和格式,如使用二进制序列化减少传输大小。 - 注意错误处理和重试...

    QD [v20230821] —— HTTP请求定时任务自动执行框架 base on HAR Editor-qd.zip

    这通常通过CRON表达式实现,允许用户设置复杂的定时规则,例如每小时、每天或每周执行一次。 ### 4. **自动化执行** 框架负责监控配置的定时任务,并在达到预设时间时自动执行HTTP请求。执行过程中,QD会遵循HAR...

    深入web请求过程

    这是与我的博客文章对应的资源,介绍了《深入分析Java Web技术内幕》中第一章深入Web请求过程的知识框架。欢迎下载

    Java Http请求传json数据乱码问题的解决

    在实际解决乱码问题的过程中,如果发现使用Base64加密传输中文数据还会出现问题,可以改用URL编码的方式来传输数据,即使用JavaScript的`encodeURI`函数对数据进行两次URL编码,后端接收到后进行一次URL解码即可。...

    层层剖析一次 HTTP POST 请求事故.doc

    《层层剖析一次 HTTP POST 请求事故》 在信息技术领域,HTTP POST 请求是常见的数据提交方式,但有时可能会遇到一些意外的问题,比如本次事故中提到的跨域错误。本文将深入探讨如何根据公司网络架构和业务特性,...

    http4j 模拟http请求 耗时

    HTTP4j是一个轻量级的Java库,专为模拟HTTP请求提供便利。它允许开发者在应用程序中发送HTTP请求,接收响应,并对整个过程进行详细监控,包括耗时分析。在这个场景中,描述提到对原始的HTTP4j库进行了优化和bug修复...

    HTTP请求(包括GET与POST请求)

    在C++中,使用自定义的HTTP客户端库可以提供更灵活的控制,比如AmHttpSocket可能封装了网络套接字(socket)操作,以处理HTTP请求和响应。AmHttpSocket.cpp包含了实际的函数实现,而AmHttpSocket.h则可能定义了类...

Global site tag (gtag.js) - Google Analytics