`
Callan
  • 浏览: 731166 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

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

    1. 为什么通常在第次访问个站点时,打开速度很慢,当再次访问这个站点时,速度就很快了 2. 当登录过个站之后,下次再访问该站点,就已经处于登录状态了,这是怎

    Http请求处理流程

    本文主要讲述的三个内容: 1. Http请求刚刚到达时IIS时,IIS 所做的工作。 2. Http请求的宿主环境。 3. Http管道。

    域名服务协议

    用户数据报协议实验报告,里面有实验的截图,有实验问题的答案和思考题答案。

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

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

    http请求详细过程

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

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

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

    nginx处理http请求实现过程解析

    nginx会根据过来的http请求头里的Host字段里的值,来判断使用哪个server{}。 如果请求头里没有Host字段,或者Host字段里的值,和Nginx配置文件里的server{}里的{server_name}都不匹配,则使用第一个server{},来处理...

    202001Internet协议分析实验报告(第3天).docx

    第3部 传输层(2/5)(2个任务) 实验19 传输控制协议...练习二 HTTP请求流程分析 任务一 HTTP请求分析 第5部分 网络安全(1个任务) 实验29 因特网中安全通信措施 练习二 数据安全通信的实现 任务一 数据安全通信的实现

    Http请求处理流程.doc

    1. 从HTTP.SYS中获取当前的Httq请求信息,并且将这些信息保存到 HttpWorkerRequest 类中。 2. 在相互隔离的应用程序域AppDomain中加载HttpRuntime。 3. 调用 HttpRuntime的ProcessRequest方法。

    HTTP请求的全过程

    当我们开始在浏览器中输入网址的时候,浏览器其实就已经在智能的匹配可能得 url 了,他会从历史记录,书签等地方,找到已经输入的字符串可能对应的 url,然后给出智能提示,让你可以补全url地址。...

    http请求处理流程(讲的很清楚).docx

    http请求过程详解,挺详细的,很清楚,Ihttphandler

    Web安全深度剖析(张柄帅)

    第2章 深入HTTP请求流程 6 2.1 HTTP协议解析 6 2.1.1 发起HTTP请求 6 2.1.2 HTTP协议详解 7 2.1.3 模拟HTTP请求 13 2.1.4 HTTP协议与HTTPS协议的区别 14 2.2 截取HTTP请求 15 2.2.1 Burp Suite Proxy 初体验 15 ...

    IIS请求管道.pdf

    IIS请求流程 Http请求到达IIS服务器后,HttpRunTime作为入口,HttpRunTime类的ProcessRequest方法。HttpRunTime包含着所有的Http请求信息(ProcessRequest方法 的HttpWorkRequest参数)。 IIS服务器依赖HTTP.SYS驱动...

    PlayFramework的请求处理流程

    Playframework是一个无状态的面向请求/回应的框架,所有的HTTP请求都遵循下面的处理流程:  Playframework是一个无状态的面向请求/回应的框架,所有的HTTP请求都遵循下面的处理流程:  框架接收到一个HTTPRequest ...

    PHP实现模拟http请求的方法分析

    本文实例讲述了PHP实现模拟http请求的方法。分享给大家供大家参考,具体如下: 在http简析中,我们提到了浏览器请求资源的一个流程,那么这个流程能不能用php来模拟呢?答案是肯定的。 php模拟http请求需要实现以下...

    http缓存.pptx

    http缓存详解ppt原创 1. 缓存的类型 2. http缓存详解 •http请求流程 •缓存操作的目标 •缓存控制 •缓存验证 •新鲜度 •vary响应 3. http缓存的应用及意义 4. 关于http缓存的一些问题

    深入web请求过程

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

Global site tag (gtag.js) - Google Analytics