网站运营 | 站长学院 | 技术文档 | 成语 | 歇后语 | 桌面壁纸 | 帝国时代 | 代码收藏 | IP地址查询 | 生活百科 | 生日密码 | CSS压缩 | 用户评论

HTTP请求流程介绍

【 更新时间:2013-10-22 | 字体:
[导读]首先,http属于Tcp/Ip模型中的应用层协议,而两个应用程序(我们这里指的就是浏览器与服务器)之间要进行互相通信>,首先得建立Tcp连接>>,然后浏览器才能向服务器发送请求信息,服务器在接受到请求信息后>,返回相应的应...

首先>,http属于Tcp/Ip模型中的应用层协议,而两个应用程序(我们这里指的就是浏览器与服务器)之间要进行互相通信,首先得建立Tcp连接,然后浏览器才能向服务器发送请求信息>>,服务器在接受到请求信息后,返回相应的应答信息,浏览器接收到来自服务器的应答信息后>,对这些数据进行解释执行。

在http 1.0的版本中>,浏览器的每次请求(也就是对每一个页面的访问)都要求建立一次单独的连接>,在处理完每一次的请求后>,就自动释放连接。(这点我们应该都有感觉>,比如我们访问一个页面>>,当该页面在浏览器中显示出来的时候>,我们可以拔掉网线,此时该页面上的信息并不会丢失。)而当我们请求的网页文件中有很多图片>、音乐>、电影等信息时,服务器返回的信息中并不直接包含图片数据>,而只是保存该图片的链接>,当浏览器进行解释的时候,遇到图片的url时,才向服务器发出对图片的请求信息>>??杉绻桓鐾持邪喔鐾计菔?>>,将会频繁的与服务器建立连接>>,与释放连接,这无疑会造成资源的浪费>。

http 1.0 请求模式

http 1.0 请求模式

而http 1.1则可以在一次连接中处理多个请求>,并且多个请求可以重叠进行>,不需要等待一个请求结束后再发送下一个请求>>。

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.chinawobo.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,然后服务器在接受到该信息时返回对应的页面>。

·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 adfasfa
其中>,01行是状态行>>>,用于显示服务器响应的状态>>,HTTP/1.1显示了对应的http协议版本,200为状态数字>>>,OK为状态信息用于解释状态数字(这里OK对应200>>,表示请求正常);02~09是消息头部分,10为空行>,11为实体内容(也就是服务器返回的网页内容)。

好了,相信大家应该已经对这个http请求的流程有了一个大概的了解了吧>>,那么我们反过来回答下最初留下的问题:当我们在浏览器的地址栏中输入 " http://www.chinawobo.com/ " >,然后按"回车">,这之后发生了什么事>?。

首先>>,浏览器找到该网址所指向的IP>>,然后与其建立TCP连接>,接着向百度服务器提出Get请求>,当服务器接收到我们的请求后,向我们传送应答信息--百度的页面,然后断开连接>。

[补充]以上文章中主要是描述HTTP请求的大致流程,至于HTTP之前所建立的一系列连接,只用了"浏览器找到该网址所指向的IP,然后与其建立TCP连接"这句话或类似的话来带过>。根据朋友们的回复显得这个说法不是很恰当>。所以我在这里再补充些东西>。
1>、获取IP。浏览器地址栏中输入"http://www.chinawobo.com/"并提交之后>>,首先它会在DNS本地缓存表中查找,如果有则直接告诉IP地址。如果没有则要求网关DNS进行查找>,如此下去>,当找到对应的ip后>,则返回给浏览器。
2>、建立TCP连接。当获取到IP之后>,就开始与所请求的服务器建立TCP连接,你可以在下图中发现syn,ack>>>,这些标识符就是用来同步用的>。
3>>、连接建立后>,就向服务器发出http请求(大家可以从图中看出来)>。如果是HTTP1.0的版本则>,每一次请求结束后>,就释放TCP连接>。

原文:http://www.chinawobo.com/stg609/archive/2008/07/06/1236966.html

友荐云推荐
  • 转载请注明来源:网站运营 网址:http://www.chinawobo.com/ 向您的朋友推荐此文章
  • 特别声明: 本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者>>。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站>,我们表示深深的谢意>。如果本站转载的文章有版权问题请联系我们,我们会尽快予以更正。
RSS订阅
  • QQ邮箱
  • 填写您的邮件地址,订阅我们的精彩内容:
更多
© 2014 网站运营 - T086.com(原itlearner.com)
  • 张天爱变胖了?淡雅甜笑险露双下巴 2018-05-26
  • 论对汉文化东传的基本认识 2018-05-26
  • 4月台州全市新建商品住宅成交3444套 2018-05-25
  • 河北盐山:“点、线、面”结合推进人才强县 2018-05-25
  • 北京市幼儿园年内完成全员培训 2018-05-25
  • 河南职业技术学院全国技能(导游类)大赛获佳绩 2018-05-24
  • Футбол -- Арены ЧМ-2018 -- Стадион Нижний Новгород 2018-05-24
  • 美媒:美国对华战略缺乏头脑 2018-05-23
  • 中国钢企布局沿海 柳钢瞄准东盟经济圈 2018-05-23
  • 2018的偶像元年是否只是一场美丽的谎言?偶像练习生创造101选秀 2018-05-22
  • 上海临港有个“儿童大学” 2018-05-20
  • 2017年世界大学学术排名发布 清华进前50大学学术排名大学排行榜 2018-05-20
  • 日本战犯侵华罪行自供 2018-05-19
  • 塑料污染让人痛心 世界最深海沟竟成“垃圾场” 2018-05-19
  • 男子因琐事杀害女友并分尸抛河 警方根据美甲破案嘉兴美甲死者 2018-05-18
  • 微商货源 | 冠珠陶瓷 | 6688电视家官网 | 中康体检网 | 安徽极热网 | 北京赛车开奖号码 | 快猴网 | 迪威乐云商devmsn | 易奇八字 | wwe美国职业摔角 | 八字算命 | 河南旅游景点大全 | 冠珠陶瓷 | 广东旅游景点大全 |
    RunTime:8.88ms QueryTime:7