`
Callan
  • 浏览: 735872 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

HTTP请求流程

    博客分类:
  • web
阅读更多

首先,http属于Tcp/Ip模型中的应用层协议,而两个应用程序(我们这里指的就是浏览器与服务器)之间要进行互相通信,首先得建立Tcp连接,然后浏览器才能向服务器发送请求信息,服务器在接受到请求信息后,返回相应的应答信息,浏览器接收到来自服务器的应答信息后,对这些数据进行解释执行。       在http 1.0的版本中,浏览器的每次请求(也就是对每一个页面的访问)都要求建立一次单独的连接,在处理完每一次的请求后,就自动释放连接。(这点我们应该都有感觉,比如我们访问一个页面,当该页面在浏览器中显示出来的时候,我们可以拔掉网线,此时该页面上的信息并不会丢失。)而当我们请求的网页文件中有很多图片、音乐、电影等信息时,服务器返回的信息中并不直接包含图片数据,而只是保存该图片的链接,当浏览器进行解释的时候,遇到图片的url时,才向服务器发出对图片的请求信息。可见如果一个网页中包含多个图片数据时,将会频繁的与服务器建立连接,与释放连接,这无疑会造成资源的浪费。

 
http 1.0 请求模式  
    
而http 1.1则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。
·HTTP请求消息      
1次完整的http请求消息包括:一个请求行、若干消息头以及实体内容,而消息头和实体内容可以没有,消息头和实体内容间有一个空行。      
我们来看一个例子(为了便于说明,我在每行前加了序号):            
1 Get /mattmarg/ HTTP/1.0            
2 User-Agent: Mozilla/2.0 (Macintosh; I; PPC)            
3 Accept: text/html; */*            
4 Cookie: name = value            
5 Referer: http://www.XXX.com/a.html      
其中,第1行就是请求行:请求方式为Get(除了Get之外,还有Post、Put、Delete方式),请求的文件位于"根目录/mattmarg/" 下,当然也可以直接给出需要的页面(如:/mattmarg/index.asp,也可以加上一些其它字段如:/mattmarg/index.asp?id=1&uid=xxx。当我们通过Get请求时,提交给服务器的请求行长度不能超过1K,而如果利用Post方式,则是把所提交的信息以实体内容形式发送给服务器,所以如果服务器没有限制的话,原则上讲可以传输无限大的内容),HTTP/1.0 表示了http的版本为1.0。其余几行就是消息头了,消息头主要是用来向服务器传达某种信息或指示。如告诉服务器自己的终端(User-Agent)是什么(如果是浏览器则返回相应的浏览器型号),终端所可以解释的类型(Accept)是什么,是从哪个页面提交的请求(Referer),以及浏览器所能解释的语言(Accept-Language)等等。我们这里拿Accept-Language来举个例子,大家都知道google在中国大陆显示的是简体中文,而在其它的国家则显示对应的语言,这个是怎么做到的呢?其实就是浏览器向服务器递交的请求信息中包含了Accept-Language,而我们的浏览器默认是zh-cn,然后服务器在接受到该信息时返回对应的页面。      
我们可以通过以下方法来验证一下:      
1、打开浏览器->工具->internet选项->常规选项卡
2、选择"语言",可见默认的语言是中文
3、选择"添加",选择一种语言,然后调节一下优先顺序
4、确定之后,我们再访问一下http://www.google.com/,是不是发现原来的简体中文全都成了繁体字了。       ·
HTTP响应消息       
Http响应消息的格式为:一个状态行、若干消息头和实体内容,其中消息头和实体内容可以没有,消息头和实体内容间有一个空行。       我们依旧先来看一个例子:             01 HTTP/1.1 200 OK             02 Server: Microsoft-IIS/5.1             03 X-Powered-By: ASP.NET             04 Date: Sun, 06 Jul 2008 11:01:21 GMT             05 Content-Type: text/html             06 Accept-Ranges: bytes             07 Last-Modified: Wed, 02 Jul 2008 01:01:26 GMT             08 ETag: "0f71527dfdbc81:ade"             09 Content-Length: 46             10             11 <html><head></head><body>adfasfa< /body></html>       其中,01行是状态行,用于显示服务器响应的状态,HTTP/1.1显示了对应的http协议版本,200为状态数字,OK为状态信息用于解释状态数字(这里OK对应200,表示请求正常);02~09是消息头部分,10为空行,11为实体内容(也就是服务器返回的网页内容)。       好了,相信大家应该已经对这个http请求的流程有了一个大概的了解了吧,那么我们反过来回答下最初留下的问题:当我们在浏览器的地址栏中输入 " http://www.baidu.com/ " ,然后按"回车",这之后发生了什么事?。       首先,浏览器找到该网址所指向的IP,然后与其建立TCP连接,接着向百度服务器提出Get请求,当服务器接收到我们的请求后,向我们传送应答信息--百度的页面,然后断开连接。
     上一部分"流程简介",我们大致了解了下HTTP请求的流程,这一篇我向大家介绍下如何利用Telnet来模拟Http请求---访问百度。       我们直接开始吧!       1、打开"运行"->cmd进入命令环境;       2、输入"telnet www.baidu.com 80",回车后 ,屏幕为全黑,此时我们利用快捷键"Ctrl+](右中括号)"来打开本地回显功能,这样我们就可以看见我们所打的东西了,如图:(注本阶段执行过程和以下的过程均要求操作时间尽可能短,因为时间一长,便会被认为断开连接。)
 3、单击回车,进行编辑状态。       4、输入:"GET / HTTP/1.1"后回车,在第二段接着输入:"HOST:"然后按回车,这样一个简单的HTTP请求就完成了,接着我人只要再按下回车,便向服务器递交这个请求了。如图:(我们来看一下这个是什么意思:GET表示请求方式,/表示请求的根目录下的文件,HTTP/1.1表示HTTP协议版本,HOST就是一个消息头,据某些朋友说1.1的版本一定要加一个"HOST:"可是我实验后发现"HOST :"不加仍旧可以正常发送请求,但是GET HTTP这个必须大写,否则就该请求无法发送)
 5、接收服务器返回,这步其实不需要我们来做,因为当我们发送请求后,只需几秒钟,我们便会收到来自服务器反应.
 
      6、这样,请求就算完成了。下面我们在百度中搜一下"1",浏览器中的地址应该是:http://www.baidu.com/s?wd=1.看看请求是怎么样的
      怎么样,大家会了吗?以上只是用GET方式进行请求,当然还可以用POST方式进行请求,只是POST我这不方便做实验,所以就不写了。大概的格式给大家参考下:       POST /localhost/login.aspx HTTP/1.1       HOST:       Content-Type:application/x-www-form-urlencoded       Content-Length:10              uid=xxxxxx
分享到:
评论

相关推荐

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

    在本文中,我们将探讨HTTP请求流程,特别是为什么很多网站第二次打开时速度会更快,以及用户登录后再次访问站点时如何保持登录状态。HTTP协议是建立在TCP连接基础之上的,用于浏览器向服务器获取各种资源,如HTML、...

    tomcat处理一个http请求的详细过程

    tomcat中server配置文件的结构,以及处理一个http请求的全过程

    Nginx中http请求处理过程

    在本文中,我们将详细介绍 Nginx 中 HTTP 请求处理过程的整个流程。 1. 基础知识 在深入探讨 Nginx 中 HTTP 请求处理过程之前,需要了解一些基本概念和数据结构。 1.1 基本数据结构 Nginx 中使用了许多基本数据...

    Unity HTTP请求插件,使用简单,可自定义参数格式

    这里提到的插件,可能是基于C#编写的,专门为了简化Unity中的HTTP请求流程而设计。C#是Unity的主要编程语言,因此这个插件很可能是用C#实现的,它提供了一个友好且易于理解的接口,使得开发者可以快速地进行HTTP请求...

    详解nginx请求头数据读取流程

    在深入探讨Nginx请求头数据读取流程之前,首先理解HTTP请求报文的基本结构至关重要。一个典型的HTTP请求报文由三部分组成:请求行、请求头和请求体。请求行包含了请求方法(如GET、POST等)、请求URI和HTTP协议版本...

    Http请求处理流程.doc

    【Http请求处理流程】 在深入探讨Http请求处理流程之前,我们首先要明白,Http请求是Web应用中最基础的交互方式。当用户在浏览器中输入URL并按下回车,一系列复杂的网络和服务器操作就开始了。在ASP.NET框架下,这...

    Struts-_1.2.x_请求处理流程图

    1. **请求开始**: 当用户通过浏览器向服务器发送HTTP请求时,请求通常会指向一个ActionServlet。在Struts中,ActionServlet是框架的核心组件,它实现了Servlet接口,并作为所有请求的入口点。 2. **配置解析**: ...

    Http请求处理流程 面试经常被问

    2. ISAPI使用异步命名管道来将请求转发给辅助进程并获得响应。 3. 辅助进程 在需要查询有关IIS环境的信息(即服务器变量)时又使用同步管道。 4. ISAPI模块创建固定数量的命名管道,... aspnet_isapi绝不会处理Http请求。

    JWT+RSA 登录 注销 续租 请求 流程图 + 代码

    在这个场景中,JWT+RSA通常用于构建安全的登录、注销、续租(刷新令牌)和请求流程。以下是这些概念的详细解释: 1. JWT(JSON Web Tokens): - JWT是一种开放标准(RFC 7519),用于在各方之间安全地传输信息。...

    http请求详细过程

    http详细请求过程,详细的介绍了http的机制

    ASP.NET的HTTP请求之旅(一)

    ### ASP.NET中的HTTP请求处理流程详解 在深入探讨ASP.NET中HTTP请求的处理流程之前,让我们首先理解HTTP请求的本质及其在Web开发中的重要性。HTTP(超文本传输协议)是互联网上应用最为广泛的一种网络协议,它允许...

    RESTClient-HTTP请求模拟器-HTTP请求测试工具

    它作为一个HTTP请求模拟器,允许用户发送各种HTTP请求(如GET、POST、PUT、DELETE等)并接收响应,以此来验证和调试RESTful API的功能。在本文中,我们将详细探讨RESTClient的特性、使用方法以及其在API测试中的重要...

    JAVA发送HTTP请求,返回HTTP响应内容

    【JAVA发送HTTP请求,返回HTTP响应内容】 在Java编程中,发送HTTP请求并接收响应是常见的网络通信操作,尤其在Web服务的开发和测试中。本文将详细介绍如何使用Java发送HTTP请求并处理响应内容。 首先,我们需要...

    面经 、校招 、秋招、 测试岗位、小白刷题

    5. HTTP请求流程: - 请求:客户端发送请求,包括请求行、请求头部、空行和可选的请求数据。 - 响应:服务器处理请求,返回HTTP响应,包含状态码、响应头部、空行和响应体。 6. 请求方法的用途: - GET:获取...

    4、Symfony处理http请求的流程1

    在处理HTTP请求的过程中,Symfony遵循一套严谨的流程,确保高效且可维护的代码执行。在本文中,我们将深入探讨Symfony处理HTTP请求的步骤,以及涉及的相关技术。 首先,当用户通过浏览器访问一个URL,例如`/test`,...

    JAVA HTTP请求示例

    总的来说,这两个文件展示了Java中使用HTTP客户端库执行请求并处理响应的基本流程,以及如何利用HTTP请求发送短信。学习这些示例有助于理解网络编程,特别是在Java环境中如何进行HTTP通信。同时,对于开发与服务器...

    restclient http请求模拟工具

    总的来说,Restclient是一款高效且实用的HTTP请求模拟工具,它为开发者提供了全面的API测试和调试能力,帮助优化开发流程,提高工作效率。无论是在日常开发、项目维护还是问题排查中,Restclient都是一个值得信赖的...

Global site tag (gtag.js) - Google Analytics