免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7300 | 回复: 10
打印 上一主题 下一主题

问个关于http 协议的pipeline实现的问题! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-09-18 10:24 |只看该作者 |倒序浏览
最近看http协议,有一本书这样描述:http 1.1支持persitent connection. 而在persitent connection的条件下,浏览器的实现有两种模式:1,不带pipeline ;2,带pipeline. http 1.1默认情况下是带pipeline.

假如现在想实现一个程序,想通过http 1.1协议 从主机host get 10 gif(gif1,gif2,... gif10).

如上:

1 用不带pipeline的persistent connection实现。可以对主机host开一个连接,然后用 停止-等待完成10个gif的获取。在发送了第一个request  GET gif1 HTTP1.1以后,停止等待直到等到http response以后在发送第二个resquest GET gif1 HTTP1.1,然后等待第二个连接的response.这样一次获取十个 gif.

显然上面的停止-等待的做法在浪费socket上的时间,每一个请求在发送之前总是要等待 1个 tcp的 RTT时间还要多。

2 用带pipeline的persistent connection的实现。同样对主机host开一个连接,不用停止等待,顺序发针对10个gif 的request,然后再从socket上读取response。
现在有一个问题。怎么样确定我从socket上读到的response是针对那个request。 不知道http
response里面有什么特殊的字段?希望有人能指点以下:)

当然以上的实现可以开一个线程里开 10个不同的socket连接,或者启动10个线程也可以搞的定。
我现在的目的只是想搞清楚,通过我 2 种描述的方法能不能搞的定。

[ 本帖最后由 喇嘛疤瘌 于 2007-9-18 10:36 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2007-09-18 10:43 |只看该作者
有看了看http协议,说http 是request-response协议,是不是在同一个sokcet上只能是停止-等待的串行实现。
不能并行请求??

论坛徽章:
0
3 [报告]
发表于 2007-09-18 10:46 |只看该作者
pipeline请求得到的响应也是按顺序来的。

论坛徽章:
0
4 [报告]
发表于 2007-09-18 10:48 |只看该作者
原帖由 福瑞哈哥 于 2007-9-18 10:46 发表
pipeline请求得到的响应也是按顺序来的。


那你指的是我按顺序读就可以??
但是我想知道这里的顺序是那里保证的??
tcp??

论坛徽章:
0
5 [报告]
发表于 2007-09-18 10:51 |只看该作者
原帖由 喇嘛疤瘌 于 2007-9-18 10:48 发表


那你指的是我按顺序读就可以??
但是我想知道这里的顺序是那里保证的??
tcp??


不明白你的意思,httpd是按顺序发送resp的,不过这保证呢,好似是tcp的工作。真的不明白你的意思。

论坛徽章:
0
6 [报告]
发表于 2007-09-18 10:54 |只看该作者
原帖由 福瑞哈哥 于 2007-9-18 10:51 发表


不明白你的意思,httpd是按顺序发送resp的,不过这保证呢,好似是tcp的工作。真的不明白你的意思。


但是http 发送的有序的response是通过其他的协议传的,ip可是不能保证数据按顺序到达的。到是tcp可以保证顺序性。
我也搞不太懂:)

论坛徽章:
0
7 [报告]
发表于 2007-09-18 10:57 |只看该作者
但是http 发送的有序的response是通过其他的协议传的

什么协议?

论坛徽章:
0
8 [报告]
发表于 2007-09-18 10:59 |只看该作者
原帖由 福瑞哈哥 于 2007-9-18 10:57 发表

什么协议?


你是真不知道吗??
如果真不知道,请看tip/ip的分层协议结构:)

论坛徽章:
0
9 [报告]
发表于 2007-09-18 11:13 |只看该作者

回复 #8 喇嘛疤瘌 的帖子

你牛!

论坛徽章:
0
10 [报告]
发表于 2007-09-18 12:00 |只看该作者
原帖由 福瑞哈哥 于 2007-9-18 11:13 发表
你牛!


哈哈,没别的意思:)
你的 连续两边的 “不明白你的意思”让我看的很不爽:)

好了,我写了小程序验证过了,确实在read是按顺序接的。应该是 tcp 层来保证数据按顺序传输的。
帖子到此为止,如果话语里面有什么伤害到这位兄弟的地方,还挺原谅。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP