下列哪种情形下,乙的请求下题:

【民法每日一题】(10年·卷三·1题)下列哪一情形下,乙的请求依法应得到支持?
下列哪一情形下,乙的请求依法应得到支持?
&&&&A.甲应允乙同看演出,但迟到半小时。乙要求甲赔偿损失
&&&&B.甲听说某公司股票可能大涨,便告诉乙,乙信以为真大量购进,事后该支股票大跌。乙要求甲赔偿损失
&&&&C.甲与其妻乙约定,如因甲出轨导致离婚,甲应补偿乙50万元,后二人果然因此离婚。乙要求甲依约赔偿
&&&&D.甲对乙承诺,如乙比赛夺冠,乙出国旅游时甲将陪同,后乙果然夺冠,甲失约。乙要求甲承担赔偿责任
【逐项解析】
1.A选项中,民法调整的对象是平等民事主体之间的人身关系和财产关系,它并不调整所有的社会关系,而是有法律约束力的关系。甲在做出应允时主观上并不希望产生任何民法上的法律效果,并非意在自己与乙之间成立某种权利义务关系。甲应允乙同看演出,在甲、乙间成立的只是好意施惠关系(指不能在当事人之间产生合同关系的约定或承诺,比如搭乘便车、乘客叫醒另一乘客到站下车、约定请人吃饭、相约参加宴会、旅游等),不形成民事法律关系,也就不会产生民事责任,所以乙无权要求甲赔偿损失,A选项错误。
2.B选项中,甲将股票可能大涨的消息告诉乙,不构成意欲与对方发生一定民事法律关系的意思表示,也就不存在民法上的欺诈问题,乙对此不存在信赖利益,因此,乙所产生的损失,无权要求甲赔偿损失,B选项错误。
3.C选项中的“忠实协议”意在使甲、乙之间发生民事权利义务关系使自己负有对婚姻忠实的义务,并在违反忠实义务时承担损害赔偿责任。《婚姻法》第46条规定:“有下列情形之一,导致离婚的,无过错方有权请求损害赔偿:(一)重婚的;(二)有配偶者与他人同居的;(三)实施家庭暴力的;(四)虐待、遗弃家庭成员的。”可知,该约定并未违反法律规定,并无《民法通则》第58条规定的使民事行为无效的情形。所以双方的约定应属有效,甲违反义务时,乙有权请求损害赔偿,故C选项正确。
4.D选项也是好意施惠关系,不当选,理由同A选项。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。nodejs 请求接口在高并发下耗时很大,而单个请求非常快
11:30:34 +08:00 · 10303 次点击
情况: request.js 库请求接口, express.js 做 server ,实现了 curl http://localhost:8080/proxy-api 本地一个地址,在 router 里用 request.js 请求接口,统计了一下请求耗时,单个请求耗时很低,如下:
get http://ip:9190/user/getUserInfo 13 ms
然后分别使用 webbench 和 ab 做并发测试,并发 500 ,发现接口有非常大的耗时。
# 测试命令
ab -n 1000 -c 200 -r http://localhost:8080/proxy-api
webbench -t 10 -c 500 http://localhost:8080/proxy-api
# 截取部分响应耗时:
get http://ip:9190/user/getUserInfo 2019 ms
cost time:
get http://ip:9190/user/getUserInfo 2062 ms
cost time:
get http://ip:9190/user/getUserInfo 2064 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2062 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2061 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
cost time:
get http://ip:9190/user/getUserInfo 2063 ms
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1361 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1363 ms
cost time:
get http://ip:9190/user/getUserInfo 1362 ms
cost time:
get http://ip:9190/user/getUserInfo 1006 ms
cost time:
get http://ip:9190/user/getUserInfo 627 ms
cost time:
get http://ip:9190/user/getUserInfo 629 ms
cost time:
get http://ip:9190/user/getUserInfo 628 ms
cost time:
get http://ip:9190/user/getUserInfo 1403 ms
cost time:
get http://ip:9190/user/getUserInfo 1402 ms
请问哪位朋友有没有解决这类问题的经验?
第 1 条附言 &·&
13:05:23 +08:00
++++++++++
13:00:06 补充一下,简单测试问题的代码,序号输出是无序的,说明是异步,只不过越到后面越耗时:
```
const request = require('request').defaults({
pool: { maxSockets: 5000 }
});
const c = 500;
const api = '替换为一个 api';
function doGet(i) {
const start = Date.now();
const index =
request.get(api, () =& {
const end = Date.now() -
console.log(`${index}: ${end}ms`);
for (let i = 0; i & i++) {
doGet(i);
}
```
执行结果:
```
3: 570ms
1: 582ms
5: 580ms
7: 580ms
9: 580ms
11: 580ms
2: 582ms
0: 591ms
4: 582ms
6: 582ms
12: 582ms
10: 582ms
8: 583ms
14: 583ms
13: 583ms
16: 583ms
17: 584ms
20: 583ms
22: 583ms
24: 583ms
26: 583ms
28: 582ms
30: 582ms
...
457: 2262ms
467: 2263ms
469: 2263ms
237: 2283ms
474: 2267ms
471: 2267ms
493: 2269ms
475: 2272ms
479: 2271ms
477: 2272ms
485: 2272ms
483: 2273ms
481: 2273ms
487: 2273ms
489: 2274ms
495: 2273ms
497: 2273ms
499: 2274ms
491: 4380ms
```
第 2 条附言 &·&
13:12:55 +08:00
发生这种情况,我大概也能理解, js 单线程,任务按队列来的,压的越多越耗时吧,不过才 500 ,应该不至于这么严重吧,关键是什么方式可以优化这种情况呢?
第 3 条附言 &·&
14:16:27 +08:00
统一回一下大家猜测的原因,直接压后端耗时也很小的,所以是前端请求问题。 Transfer rate 大小可以忽略,前端就是本机传输,后端也是局域网,速度不会差什么,带宽也不会跑满,一点点数据。
ab 压前端转发:
Requests per second: 171.05 [#/sec] (mean)
Time per request:
[ms] (mean)
Time per request: 5.846 [ms] (mean, across all concurrent requests)
Transfer rate: 1981.31 [Kbytes/sec] received
ab 直接压后端接口:
Requests per second: 858.12 [#/sec] (mean)
Time per request: 233.068 [ms] (mean)
Time per request: 1.165 [ms] (mean, across all concurrent requests)
Transfer rate: 190.23 [Kbytes/sec] received
console.log 耗时在上面备注的测试代码中并没有统计在内。
换成原生 http ,也是一样结果, superagent 虽然没试,猜测不会好多少。
http.get(api, (res) =& {
res.on('end', () =& {
const end = Date.now() -
console.log(`${index}: ${end}ms`);
res.resume();
}).on('error', (e) =& {
console.log(`Got error: ${e.message}`);
第 4 条附言 &·&
14:42:32 +08:00
node 版本从 v6.9.1 升级为 v7.0.0 ,耗时减少一半, v7 提升了不少性能。但还是有挺高的耗时,差不多在 1500ms 左右。
第 5 条附言 &·&
10:23:29 +08:00
最后总结:根据这几天反复测试,暂时没有找到单核单进程的特别有效的代码优化方法,这可能是极限了吧。
最后可以优化的是: 1 、用 node v7 , 比 v6 版本性能高些。 2 、 pm2 多核多进程部署。
45 回复 &| &直到
17:21:29 +08:00
& & 11:38:39 +08:00
关注下,公司一个系统准备换成 node 跑,有结果后希望分享下:-)
& & 11:45:54 +08:00
@ 好的,目前就这个并发问题了。
& & 11:47:49 +08:00
是不是只开了一个进程?
& & 11:49:27 +08:00
所以 8080 上是个无限牛逼的后端接口,然后 9190 上是你的问题的 node ,里面的逻辑是用 request 捅 8080 ,然后并发有问题?没记错的话, request 库是带连接池的,默认并发只开了 5 ,所以你用并发 500 去压耗时很长是正常的
& & 12:33:04 +08:00
@ 没有做任何进程操作,默认的简单程序
& & 12:42:32 +08:00
你理解反了, 8080 上是 node sever, 9190 是后端接口,并发 node 上一个地址,该地址又用了 request 去请求接口,统计了一下 request 开始到完成的耗时。 然后你说的 request 连接池是 'pool': { maxSockets: 5000 } ?改为 5000 也没有明显提升。
& & 12:47:40 +08:00 via iPhone
你看下系统 cpu 内存 和 load ?
& & 12:48:04 +08:00 via Android
@ 你直接压后端的接口的耗时是多少?
& & 12:50:56 +08:00
看看是否是内存不足 发生内存换页
& & 13:09:05 +08:00
@ 直接压后端耗时也很小的,所以是前端请求问题。ab 压前端转发:Requests per second:
171.05 [#/sec] (mean)Time per request:
[ms] (mean)Time per request:
5.846 [ms] (mean, across all concurrent requests)Transfer rate:
1981.31 [Kbytes/sec] receivedab 直接压后端接口:Requests per second:
858.12 [#/sec] (mean)Time per request:
233.068 [ms] (mean)Time per request:
1.165 [ms] (mean, across all concurrent requests)Transfer rate:
190.23 [Kbytes/sec] received
& & 13:11:28 +08:00
@ @ 我都是在本地测试,只有后端接口是局域网内一个服务器, mac pro 13 中配,应该不是你们所说的问题
& & 13:15:38 +08:00
@ 发下转发的代码
& & 13:16:27 +08:00
你这样测试很可能测试的是 request 请求的后端的接口的返回吧, 很可能是后面的接口不行了
& & 13:23:15 +08:00
把每个步骤的耗时都弄清楚一些。注意 console.log 也可能耗时。网上宣传的高并发是高端服务器跑出来的,普通机器不要期望太高。
& & 13:27:51 +08:00
先用 nginx 把请求转发到后端接口, 压一下看问题是不是 node 层的。确定是 node 层的问题后,换一个请求库例如 superagent 跑一下,看看是不是所有库都有这个问题。我们之前不是局域网时 ab 也是这样,但最后发现是本地带宽跑满了,解决后就没问题了
& & 13:30:59 +08:00
用 visualstudio + node 扩展看下, 里面带有性能分析工具的
& & 13:45:57 +08:00
superagent 跑起来还是有延迟的话,再换原生 http 模块试试,当然你有权限的话可以直接看后台接口的请求耗时对不对。我觉得把 node 层请求用 nginx 转给后台可能有些效果
& & 13:55:29 +08:00 via Android
@ 是不是你的 node 版本问题,我用 node.js 7.0 测你给出来的代码,每个请求的耗时相差不大(第一个与最后一个相差都不超过 80ms )
& & 14:37:45 +08:00
做排队啊。关注下设备的性能,是什么原因找到的,网络还是 cpu 还是内存
& & 14:40:59 +08:00
@ 我从 v6.9.1 升级到了 v7.0.0 ,耗时减少一半,但依然有超过 1000ms 的。 api 地址干脆使用了 http://localhost ,是本机 nginx 默认页面,耗时从 150ms ~ 500ms 左右都有。
& & 14:56:44 +08:00
不懂 node 。考虑一下系统和网络性能,服务端 tcp 监听端口有接受队列, 频繁发起请求可能会有点耗时。可以试一下在单个连接上测试
& & 15:00:19 +08:00
@ 简单代码已附言
& & 15:42:52 +08:00
@ 你试下用以下的代码测下,如果结果差别不大,可能是后端的问题了:```const http = require("http");const server = http.createServer((req, res) =& {
setTimeout(function () {
res.writeHead(200);
res.end();
}, Math.random() * 100);});server.listen(8888);```=============================然后你上面贴出来的脚本也改成这样:```const request = require('request').defaults({
pool: { maxSockets: 5000 }});const c = 500;const api = 'http://localhost:8888';const costs = [];function doGet(i) {
const start = Date.now();
const index =
request.get(api, () =& {
const end = Date.now() -
costs.push(`${index}: ${end}ms`);
if (costs.length === c) {
console.log(costs.join("\n"));
});}for (let i = 0; i & i++) {
doGet(i);}```
& & 15:50:42 +08:00
用上 pm2 结果会不会不一样?
& & 16:26:14 +08:00
用利用多进程多核的特性没?我用的 PM2 测的,服务器是 CPU:Intel(R) Xeon(R) E5-2640 0 @ 2.50GHz 共 24 核 MEM:32G并发数
TPS 响应时间 CPU 成功数 写文件 丢失率 时间.5 0.446 55% % 1 小时.1 0.86 55% % 1 小时 0.198 55% .0195% 11 小时+
& & 18:34:32 +08:00
@ 没有实用多核多进程
& & 18:38:57 +08:00
@ 用了你的代码,用时变的比较均匀,截取最长耗时的和最短耗时,如下:```# 最短耗时:127: 235ms34: 285ms62: 283ms72: 283ms97: 283ms55: 289ms89: 286ms124: 283ms# 最长耗时:279: 611ms267: 612ms437: 600ms467: 599ms421: 608ms417: 609ms436: 608ms479: 606ms461: 607ms443: 608ms448: 607ms438: 609ms430: 609ms```
& & 18:45:18 +08:00
@ 用 pm2 简单部署了下,结果还是一样
& & 18:51:11 +08:00
为啥不把 node 换成 nginx 试试呢?直接 nginx 反向代理试试昂。。。
& & 19:44:28 +08:00
@ 反向代理不是根本目的, node 做页面渲染的,转发接口这是其中一部分,不是 ningx 干的事儿。
& & 20:02:28 +08:00 via iPhone
等下电脑回复
& & 20:57:57 +08:00
这么好的工具试试
& & 21:05:50 +08:00 via Android
@ 这相差还是很大的,或许你可以用 wireshark 抓包,然后统计下时间,看能不能发现问题。
& & 09:45:12 +08:00
@ 基于 Visual Studio ? osx 系统比较尴尬。。。我安装个虚拟机吧
& & 10:52:04 +08:00
@ nonono,问题是你需要确认是 node 的问题还是转发的问题。没问题就可以忽略掉 api 的故障了。。我在使用 nodejs 的过程中转发发现也很诡异,经常堵得严严实实的。。。
& & 11:17:05 +08:00
@ 是这样的,发起 1000 个请求,并发为 1 ,每次耗时都很低,但一旦并发数加大,加到 10 , 50 , 100 ,耗时就随之增加,可以认为是并发下的问题。
& & 11:17:45 +08:00
@ 了解了一下, VS Code 有 mac 版本
& & 11:28:25 +08:00
@ vscode 没 profile 功能,记得
& & 13:56:15 +08:00
而且 windows 上安装 nodejs 后支持这个
& & 10:19:16 +08:00
@ 服务器 24 核,性能不要太好。想问下,你用的测试软件是什么?
& & 10:20:42 +08:00
@ 上次 pm2 用法错了,开双核后转发效率有提高了
& & 10:52:16 +08:00
@ 我司测试大神测的,软件名是 loadrunner
& & 03:09:39 +08:00 via Android
看不懂 尴尬
& & 10:45:47 +08:00
@ 那就好 理论上 pm2 多开就是提高并发啊
& & 17:21:29 +08:00
求教楼主最后解决了吗?我这里 4 核服务器 20W 请求,每个请求要压到 5s 以下。。不知道怎么优化
& · & 3059 人在线 & 最高记录 3762 & · &
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.1 · 21ms · UTC 05:50 · PVG 13:50 · LAX 22:50 · JFK 01:50? Do have faith in what you're doing.小白求救:关于IDM网页下载视频的问题,总出现【一些网站不允许对相同的文件发送两... - 『悬赏问答区』
- 吾爱破解 - LCG - LSG |安卓破解|病毒分析|破解软件|www.52pojie.cn
后使用快捷导航没有帐号?
只需一步,快速开始
请完成以下验证码
请完成以下验证码
查看: 4852|回复: 7
小白求救:关于IDM网页下载视频的问题,总出现【一些网站不允许对相同的文件发送两...
阅读权限10
本帖最后由 cst198926 于
14:46 编辑
如题: 改为单线程也不行的
& && && & 图片是我度娘搜的!望大牛能帮忙解决下。50cb奉上
9cfb901bc465df2ef11.jpg (45.28 KB, 下载次数: 3)
10:31 上传
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
已解决,多谢各位了
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
换个浏览器试一试?
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
本帖最后由 cst198926 于
12:39 编辑
换个浏览器试一试?
我用的ie,刚换了谷歌也不行。分段视频
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限30
按照提示设置快捷键强制下载,就在浏览器发送请求前接管下载,这样的话有些网站可以,有些网站就不行了,比如远景论坛就不行
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限20
把下載線程設置為1,下載時直接右鍵-用IDM下載鏈接
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
把下載線程設置為1,下載時直接右鍵-用IDM下載鏈接
把网页下载下来了、然而下载不了视频
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
阅读权限10
远景论坛 设置没有用,很头疼。找不到好法子
发帖求助前要善用【】功能,那里可能会有你要找的答案;如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子分类或者标题加上【已解决】;如何回报帮助你解决问题的坛友,一个好办法就是给对方加【热心】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
免责声明:吾爱破解所发布的一切破解补丁、注册机和注册信息及软件的解密分析文章仅限用于学习和研究目的;不得将上述内容用于商业或者非法用途,否则,一切后果请用户自负。本站信息来自网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。如果您喜欢该程序,请支持正版软件,购买注册,得到更好的正版服务。如有侵权请邮件与我们联系处理。
( 京ICP备号 | 京公网安备 87号 )
Powered by Discuz!
Comsenz Inc.课后习题和问题
本文所属图书&>&
本书第6版继续保持了以前版本的特色,为计算机网络教学提供了一种新颖和与时俱进的方法,同时也进行了相当多的修订和更新:第1章更多地关注时下,更新了接入网的论述;第2章用Python替代了Java来介绍套接字编程;&&
复习题2.1节
R1.列出5种非专用的因特网应用及它们所使用的应用层协议。
R2.网络体系结构与应用程序体系结构之间有什么区别?
R3.对两进程之间的通信会话而言,哪个进程是客户,哪个进程是服务器?
R4.对一个P2P文件共享应用,你同意&一个通信会话不存在客户端和服务器端的概念&的说法吗?为什么?
R5.运行在一台主机上的一个进程,使用什么信息来标识运行在另一台主机上的进程?
R6.假定你想尽快地处理从远程客户到服务器的事务,你将使用UDP还是TCP?为什么?
R7.参见图2-4,我们看到在该图中所列出的应用程序没有一个同时既要求无数据丢失又要求定时的。你能设想一个既要求无数据丢失又高度时间敏感的应用程序吗?
R8.列出一个运输协议能够提供的4种宽泛类型的服务。对于每种服务类型,指出是UDP还是TCP(或这两种协议)提供这样的服务?
R9.前面讲过TCP能用SSL来强化,以提供进程到进程的安全性服务,包括。SSL运行在运输层还是应用层?如果某应用程序研制者想要用SSL来强化UDP,该研制者应当做些什么工作?
2.2~2.5节
R10.握手协议的作用是什么?
R11.为什么HTTP、FTP、SMTP及POP3都运行在TCP,而不是UDP上?
R12.考虑一个电子商务网站需要保留每一个客户的购买记录。描述如何使用cookie来完成该功能?
R13.描述Web缓存器是如何减少接收被请求的对象的时延的。Web缓存器将减少一个用户请求的所有对象或只是其中的某些对象的时延吗?为什么?
R14. Telnet到一台Web服务器并发送一个多行的请求报文。在该请求报文中包含If-modified-since:首部行,迫使响应报文中出现&304 Not Modified&状态代码。
R15.为什么说FTP在&带外&发送控制信息?
R16.假定Alice使用一个基于Web的电子邮件账户(例如Hotmail或gmail)向Bob发报文,而Bob使用POP3从他的邮件服务器访问自己的邮件。讨论是怎样从Alice主机到Bob主机得到该报文的。要列出在两台主机间移动该报文时所使用的各种应用层协议。
R17.将你最近收到的报文首部打印出来。其中有多少Received:首部行?分析该报文的首部行中的每一行。
R18.从用户的观点看,POP3协议中下载并删除模式和下载并保留模式有什么区别吗?
R19.一个机构的Web服务器和邮件服务器可以有完全相同的主机名别名(例如,foo.com)吗?包含邮件服务器主机名的RR有什么样的类型?
R20.仔细检查收到的电子邮件,查找由使用.edu电子邮件地址的用户发送的报文首部。从其首部,能够确定发送该报文的主机的IP地址吗?对于由gmail账号发送的报文做相同的事。
R21.在BitTorrent中,假定Alice向Bob提供一个30秒间隔的文件块吞吐量。Bob将必须进行回报,在相同的间隔中向Alice提供文件块吗?为什么?
R22.考虑一个新对等方Alice加入BitTorrent而不拥有任何文件块。没有任何块,因此她没有任何东西可上载,她无法成为任何其他对等方的前4位上载者。那么Alice将怎样得到她的第一个文件块呢?
R23.覆盖网络是什么?它包括吗?在覆盖网络中边是什么?
R24.考虑一个具有网状覆盖网络拓扑的DHT(即每个对等方跟踪中的所有对等方)。这样设计的优点和缺点各是什么?环形DHT(无捷径)的优点和缺点各是什么?
R25.列出至少4个不同的应用,它们本质上适合P2P体系结构。(提示:文件分布和即时讯息是两个这样的应用。)
R26. 2.7节中所描述的UDP服务器仅需要一个套接字,而TCP服务器需要两个套接字。为什么?如果TCP服务器支持n个并行连接,每条连接来自不同的客户主机,那么TCP服务器将需要多少个套接字?
R27.对于2.7节所描述的运行在TCP之上的客户-服务器应用程序,服务器程序为什么必须先于客户程序运行?对于运行在UDP之上的客户-服务器应用程序,客户程序为什么可以先于服务器程序运行?
P1.是非判断题。
a.假设用户请求由某些文本和3幅图像组成的Web页面。对于这个页面,客户将发送一个请求报文并接收4个响应报文。
b.两个不同的Web页面(例如,www.mit.edu/research.html及www.mit.edu/students.html)可以通过同一个持续连接发送。
c.在和初始服务器之间使用非持续连接的话,一个TCP报文段是可能携带两个不同的HTTP服务请求报文的。
d.在HTTP响应报文中的Date:首部指出了该响应中对象最后一次修改的时间。
e.HTTP响应报文决不会具有空的报文体。
P2.有关FTP的RFC 959。列出这个RFC所支持的所有客户命令。
P3.考虑一个HTTP客户要获取一个给定URL的Web页面。该HTTP服务器的IP地址开始时并不知道。在这种情况下,除了HTTP外,还需要什么运输层和应用层协议?
P4.考虑当发送一个HTTP GET报文时,通过Wireshark俘获到下列ASCII字符串(即这是一个HTTP GET报文的实际内容)。字符&cr&&lf&是回车和换行符(即下面文本中的斜体字符串&cr&表示了单个回车符,该回车符包含在HTTP首部中的相应位置)。回答下列问题,指出你在下面HTTP GET报文中找到答案的地方。
a.由浏览器请求的文档的URL是什么?
b.该浏览器运行的是HTTP的何种版本?
c.该浏览器请求的是一条非持续连接还是一条持续连接?
d.该浏览器所运行的主机的IP地址是什么?
e.发起该报文的浏览器的类型是什么?在一个HTTP请求报文中,为什么需要浏览器类型?
P5.下面文本中显示的是来自服务器的回答,以响应上述问题中HTTP GET报文。回答下列问题,指出你在下面报文中找到答案的地方。
a.服务器能否成功地找到那个文档?该文档提供回答是什么时间?
b.该文档最后修改是什么时间?
c.文档中被返回的字节有多少?
d.文档被返回的前5个字节是什么?该服务器同意一条持续连接吗?
P6.获取HTTP/1.1规范(RFC 2616)。回答下面问题:
a.解释在客户和服务器之间用于指示关闭持续连接的信令机制。客户、服务器或两者都能发送信令通知连接关闭了吗?
b.HTTP提供了什么服务?
c.一个客户能够与一个给定的服务器打开3条或更多条并发连接吗?
d.如果一个服务器或一个客户检测到连接已经空闲一段时间,该服务器或客户可以关闭两者之间的传输连接。一侧开始关闭连接而另一侧通过该连接传输数据是可能的吗?请解释。
P7.假定你在浏览器中点击一条超链接获得Web页面。相关联的URL的IP地址没有缓存在本地主机上,因此必须使用DNS lookup以获得该IP地址。如果主机从DNS得到IP地址之前已经访问了n个DNS服务器;相继产生的RTT依次为RTT1、&、RTTn。进一步假定与链路相关的Web页面只包含一个对象,即由少量的HTML文本组成。令RTT0表示本地主机和包含对象的服务器之间的RTT值。假定该对象传输时间为零,则从客户点击该超链接到它接收到该对象需要多长时间?
P8.参照习题P7,假定在同一服务器上某HTML文件引用了8个非常小的对象。忽略发送时间,在下列情况下需要多长时间:
a.没有并行TCP连接的非持续HTTP。
b.配置有5个并行连接的非持续HTTP。
c.持续HTTP。
P9.考虑图2-12,其中有一个机构的网络和因特网相连。假定对象的平均长度为850000比特,从这个机构网的浏览器到初始服务器的平均请求率是每秒16个请求。还假定从接入链路的因特网一侧的转发一个HTTP请求开始,到接收到其响应的平均时间是3秒(参见2.2.5节)。将总的平均响应时间建模为平均接入时延(即从因特网路由器到机构路由器的时延)和平均因特网时延之和。对于平均接入时延,使用&D/(1-&D&),式中&D是跨越接入链路发送一个对象的平均时间,&是对象对该接入链路的平均到达率。
a.求出总的平均响应时间。
b.现在假定在这个机构LAN中安装了一个缓存器。假定命中率为0.4,求出总的响应时间。
P10.考虑一条10米短链路,某发送方经过它能够以150bps速率双向传输。假定包含数据的分组是100000比特长,仅包含控制(如ACK或握手)的分组是200比特长。假定N个并行连接每个都获得1/N的链路带宽。现在考虑HTTP协议,并且假定每个下载对象是100Kb长,这些初始下载对象包含10个来自相同发送方的引用对象。在这种情况下,经非持续HTTP的并行实例的并行下载有意义吗?现在考虑持续HTTP。你期待这比非持续的情况有很大增益吗?评价并解释你的答案。
P11.考虑在前一个习题中引出的情况。现在假定该链路由Bob和4个其他用户所共享。Bob使用非持续HTTP的并行实例,而其他4个用户使用无并行下载的非持续HTTP。
a. Bob的并行连接能够帮助他更快地得到Web页面吗?
b.如果所有5个用户打开5个非持续HTTP并行实例,那么Bob的并行连接仍将是有益的吗?为什么?
P12.写一个简单的TCP程序,使服务器接收来自客户的行并将其打印在服务器的标准输出上。(可以通过修改本书中的TCPServer.py程序实现上述任务。)编译并执行你的程序。在另一台有浏览器的机器上,设置浏览器的代理服务器为你正在运行服务器程序的机器,同时适当地配置端口号。这时你的浏览器向服务器发送GET请求报文,你的服务器应当在其标准输出上显示该报文。使用这个平台来确定你的浏览器是否对本地缓存的对象产生了条件GET报文。
P13. SMTP中的MAIL FROM与该邮件报文自身中的From:之间有什么不同?
P14. SMTP是怎样标识一个报文体结束的?HTTP是怎样做的呢?HTTP能够使用与SMTP标识一个报文体结束相同的方法吗?试解释。
P15.用于SMTP的RFC 5321。MTA代表什么?考虑下面收到的垃圾邮件(从一份真实垃圾邮件修改得到)。假定这封垃圾邮件的唯一始作俑者是malacious,而其他主机是诚实的,指出是该malacious主机产生了这封垃圾邮件。
P16.阅读POP3的RFC,即RFC 1939。UIDL POP3命令的目的是什么?
P17.考虑用POP3访问你的电子邮件。
a.假定你已经配置以下载并删除模式运行的POP邮件客户。完成下列事务:
b.假定你已经配置以下载并保持模式运行的POP邮件客户。完成下列事务:
c.假定你已经配置以下载并保持模式运行的POP邮件客户。使用(b)中的记录,假定你检索报文1和2,退出POP,5分钟以后,你再访问POP以检索新电子邮件。假定在这5分钟间隔内,没有新报文发送给你。给出第二种POP会话的记录。
P18.如题:
a.什么是whois?
b.使用因特网上的各种whois,获得两台DNS服务器的名字。指出你使用的是哪个whois数据库。
c.你本地机器上使用nslookup向3台DNS服务器发送DNS查询:你的本地DNS服务器和两台你在(b)中发现的DNS服务器。尝试对类型A、NS和MX报告进行查询。总结你的发现。
d.使用nslookup找出一台具有多个IP地址的Web服务器。你所在的机构(学校或公司)的Web服务器具有多个IP地址吗?
e.使用ARIN whois数据库,确定你所在大学使用的IP地址范围。
f.描述一个攻击者在发动攻击前,能够怎样利用whois数据库和nslookup工具来执行对一个机构的侦察。
g.讨论为什么whois数据库应当为公众所用。
P19.在本习题中,我们使用在Unix和主机上可用的dig工具来探索DNS服务器的等级结构。图2-21讲过,在DNS等级结构中较高的DNS服务器授权对该等级结构中较低DNS服务器的DNS请求,这是通过向DNS客户发送回那台较低层次的DNS服务器的名字来实现的。先阅读dig的帮助页,再回答下列问题。
a.从一台根DNS服务器(从根服务器[a-m].root-server.net之一)开始,通过使用dig得到你所在系的Web服务器的IP地址,发起一系列查询。显示回答你的查询的授权链中的DNS服务器的名字列表。
b.对几个流行Web站点如google.com、yahoo.com或amazon.com,重复上一小题。
P20.假定你能够访问所在系的本地DNS服务器中的缓存。你能够提出一种方法来粗略地确定在你所在系的用户中最为流行的Web服务器(你所在系以外)吗?解释原因。
P21.假设你所在系具有一台用于系里所有计算机的本地DNS服务器。你是普通用户(即你不是网络/管理员)。你能够确定是否在几秒钟前从你系里的一台计算机可能访问过一台外部Web站点吗?解释原因。
P22.考虑向N个对等方分发F=15Gb的一个文件。该服务器具有us=30Mbps的上载速率,每个对等方具有di=2Mbps的下载速率和上载速率u。对于N=10、100和1000并且u=300kbps、700kbps和2Mbps,对于N和u的每种组合绘制出确定最小分发时间的图表。需要分别针对客户-服务器分发和P2P分发两种情况制作。
P23.考虑使用一种客户-服务器体系结构向N个对等方分发一个F比特的文件。假定一种流体模型,即某服务器能够同时向多个对等方传输,只要组合速率不超过us,则以不同的速率向每个对等方传输。
a.假定us/N&dmin。定义一个具有NF/us分发时间的分发方案。
b.假定us/N&dmin。定义一个具有F/dmin分发时间的分发方案。
c.得出最小分发时间通常是由max{NF/us,F/dmin}所决定的结论。
P24.考虑使用P2P体系结构向N个用户分发F比特的一个文件。假定一种流体模型。为了简化起见,假定dmin很大,因此对等方下载带宽不会成为瓶颈。
a.假定us&(us+u1+&+uN)/N。定义一个具有F/us分发时间的分发方案。
b.假定us&(us+u1+&+uN)/N。定义一个具有NF/(us+u1+&+uN)分发时间的分发方案。
c.得出最小分发时间通常是由max{F/us,NF/(us+u1+&+uN)}所决定的结论。
P25.考虑在一个有N个活跃对等方的覆盖网络中,每对对等方有一条活跃的TCP连接。此外,假定该TCP连接通过总共M台路由器。在对应的覆盖网络中,有多少结点和边?
P26.假定Bob加入BitTorrent,但他不希望向任何其他对等方上载任何数据(因此称为搭便车)。
a. Bob声称他能够收到由该社区共享的某文件的完整副本。Bob所言是可能的吗?为什么?
b. Bob进一步声称他还能够更为有效地进行他的&搭便车&,方法是利用所在系的计算机实验室中的多台计算机(具有不同的IP地址)。他怎样才能做到这些呢?
P27.在2.6.2节的环形DHT例子中,假定对等方3知道对等方5已经离开。对等方3如何更新它的后继状态信息?此时哪个对等方是它的第一个后继?哪个是其第二个后继?
P28.在2.6.2节的环形DHT例子中,假定一个新的对等方6要接入该DHT,并且对等方6最初只知道对等方15的IP地址。需要采用哪些步骤?
P29.因为一个位于[0,2n-1]的整数能被标识为一个在DHT中的n比特的二进制数,每个键能被表示为k=(k0,k1,&,kn-1),并且每个对等方标识符能被表示为p=(p0,p1,&,pn-1)。我们现在定义键k和对等方p的异或(XOR)距离为
描述该度量如何用于为对等方分配(键,值)对。(要学习如何使用这个天然的度量构建有效的DHT,参见描述Kademlia DHT的文献[Maymounkov 2002]。)
P30.由于DHT是覆盖网络,它们也许不必与底层的物理网络匹配得很好,即两个相邻的对等方也许物理上相距很远;例如,一个对等方可能位于亚洲而它的邻居可能位于北美。如果我们随机并统一地为新加入的对等方分配标识符,这个分配方案将会引起这种误匹配吗?揭示原因。这种误匹配如何影响DHT的性能呢?
P31.在一台主机上安装编译TCPClient和UDPClient 程序,在另一台主机上安装编译TCPServer和UDPServer程序。
a.如果你在运行TCPServer之前运行TCPClient,将发生什么现象?为什么?
b.如果你在运行UDPServer之前运行UDPClient,将发生什么现象?为什么?
c.如果你对客户端和服务器端使用了不同的端口,将发生什么现象?
P32.假定在UDPClient.py中在创建套接字后增加了下面一行:
有必要修改UDPServer.py吗?UDPClient和UDPServer中的套接字端口号是多少?在变化之前它们是多少?
P33.你能够配置浏览器以打开对某Web站点的多个并行连接吗?有大量的并行TCP连接的优点和缺点是什么?
P34.我们已经看到因特网TCP套接字将数据处理为字节流,而UDP套接字识别报文边界。面向字节API与显式识别和维护应用程序定义的报文边界的API相比,试给出一个优点和一个缺点。
P35.什么是Apache Web服务器?它值多少钱?它当前有多少功能?为回答这个问题,你也许要看一下维基百科。
P36.许多BitTorrent客户使用DHT来创建一个分布式跟踪器。对于这些DHT,&键&是什么,&值&是什么?套接字作业配套Web网站包括了6个套接字作业。前四个作业简述如下。第5个作业利用了ICMP协议,在第4章结尾简述。第6个作业使用了多媒体协议,在第7章结尾简述。极力推荐学生们完成这些作业中的几个(如果不是全部的话)。学生们能够在Web网站http://www.awl.com/kurose-ross上找到这些作业的全面细节,以及代码的重要片段。
作业1:Web服务器
在这个编程作业中,你将用Python语言开发一个简单的Web服务器,它仅能处理一个请求。具体而言,你的Web服务器将:(1)当一个客户(浏览器)联系时创建一个连接套接字;(2)从这个连接接收HTTP请求;(3)解释该请求以确定所请求的特定文件;(4)从服务器的文件系统获得请求的文件;(5)创建一个由请求的文件组成的HTTP响应报文,报文前面有首部行;(6)经TCP连接向请求的浏览器发送响应。如果浏览器请求一个在该服务器中不存在的文件,服务器应当返回一个&404 Not Found&差错报文。
在配套网站中,我们提供了用于该服务器的框架代码。你的任务是完善该代码,运行服务器,通过在不同主机上运行的浏览器发送请求来测试该服务器。如果运行你服务器的主机上已经有一个Web服务器在运行,你应当为该Web服务器使用一个不同于80端口的其他端口。
作业2:UDP ping程序
在这个编程作业中,你将用Python编写一个客户ping程序。该客户将发送一个简单的ping报文,接收一个从服务器返回的对应pong报文,并确定从该客户发送ping报文到接收到pong报文为止的时延。该时延称为往返时延(RTT)。由该客户和服务器提供的功能类似于在现代操作系统中可用的标准ping程序。然而,标准的ping使用互联网控制报文协议(ICMP)(我们将在第4章中学习ICMP)。此时我们将创建一个非标准(但简单)的基于UDP的ping程序。
你的ping程序经UDP向目标服务器发送10个ping报文。对于每个报文,当对应的pong报文返回时,你的客户要确定和打印RTT。因为UDP是一个不可靠的协议,由客户发送的分组可能会丢失。为此,客户不能无限期地等待对ping报文的回答。客户等待服务器回答的时间至多为1秒;如果没有收到回答,客户假定该分组丢失并相应地打印一条报文。
在此作业中,将给出服务器的完整代码(在配套网站中可找到)。你的任务是编写客户代码,该代码与服务器代码非常类似。建议你先仔细学习服务器的代码,然后编写你的客户代码,可以不受限制地从服务器代码中剪贴代码行。
作业3:邮件客户
这个编程作业的目的是创建一个向任何接收方发送电子邮件的简单邮件客户。你的客户将必须与邮件服务器(如谷歌的电子邮件服务器)创建一个TCP连接,使用SMTP协议与邮件服务器进行交谈,经该邮件服务器向某接收方(如你的朋友)发送一个电子邮件报文,最后关闭与该邮件服务器的TCP连接。
对本作业,配套Web站点为你的客户提供了框架代码。你的任务是完善该代码并通过向不同的用户账户发送电子邮件来测试你的客户。你也可以尝试通过不同的服务器(例如谷歌的邮件服务器和你所在大学的邮件服务器)进行发送。
作业4:多线程Web代理服务器
在这个编程作业中,你将研发一个简单的Web代理服务器。当你的代理服务器从一个浏览器接收到对某对象的HTTP请求,它生成对相同对象的一个新HTTP请求并向初始服务器发送。当该代理从初始服务器接收到具有该对象的HTTP响应时,它生成一个包括该对象的新HTTP响应,并发送给该客户。这个代理将是多线程的,使其在相同时间能够处理多个请求。
对本作业而言,配套Web网站对该代理服务器提供了框架代码。你的任务是完善该代码,然后测试你的代理,方法是让不同的浏览器经过你的代理来请求Web对象。Wireshark实验:HTTP在实验1中,我们已经初步使用了Wireshark分组嗅探器,我们现在准备使用Wireshark来研究运行中的协议。在本实验中,我们将研究HTTP协议的几个方面:基本的GET/回答交互,HTTP报文格式,检索大HTML文件,检索具有内嵌URL的HTML文件,持续和非持续连接,HTTP鉴别和安全性。
如同所有的Wireshark实验一样,对该实验的全面描述可查阅本书的Web站点http://www.awl.com/kurose-ross。Wireshark实验:DNS在本实验中,我们仔细观察DNS的客户端(DNS是用于将因特网主机名转换为IP地址的协议)。2.5节讲过,在DNS的客户角色是相当简单的:客户向它的本地DNS服务器发送一个请求,并接收返回的响应。在此过程中发生的很多事情均不为DNS客户所见,如等级结构的DNS服务器互相通信递归地或迭代地解析该客户的DNS请求。然而,从DNS客户的角度而言,该协议是相当简单的,即向本地DNS服务器发送一个请求,从该服务器接收一个响应。在本实验中我们观察运转中的DNS。
如同所有的Wireshark实验一样,在本书的Web站点http://www.awl.com/kurose-ross可以找到本实验的完整描述。
Marc Andreessen是Mosaic的共同发明人,Mosaic是一种Web浏览器,正是它使万维网在1993年流行起来。Mosaic具有一个清晰、易于理解的界面,是首个能嵌在文本中显示图像的浏览器。在1994年,Marc Andreessen和Jim Clark创办了Netscape公司,其浏览器是到20世纪90年代中期为止最为流行的。Netscape也研发了安全套接字层(SSL)协议和许多因特网服务器产品,包括邮件服务器和基于SSL的Web服务器。他现在是风险投资公司Andreessen Horowitz的共同奠基人和一般股东,对包括Facebook、Foursquare、Groupon、Jawbone、Twitter和Zynga等公司的财产投资搭配进行监管。他服务于包括Bump、eBay、Glam Media、Facebook和HP等在内的多个董事会。他具有美国伊利诺伊大学厄巴纳-香槟分校的计算机科学理学学士学位。您是怎样变得对计算感兴趣的?您过去一直知道您要从事信息技术吗?
在我长大成人的过程中,视频游戏和个人计算正好成为成功而风行一时的事物,在20世纪70年代后期和80年代初期,个人计算成为了新技术发展前沿。那时不只有苹果和IBM的个人计算机,而且有如Commodore和Atari等数以百计的新公司。我在10岁时用一本名为《简明BASIC速成》(Instant Freeze-Dried BASIC)的书进行自学,并在12岁时得到自己的第一台计算机(TRS-80 Color Computer,查查它!)。
请描述您职业生涯中干过的最令人激动的一两个项目。最大的挑战是什么?
毋庸置疑,最令人兴奋的项目是年的初始Mosaic Web浏览器,最大的挑战是让任何人从此往后都认真地对待它。在那个时候,每个人都认为交互式未来将是由大型公司宣布的&交互式电视&,而非由新兴公司发明的因特网。
您对网络和因特网未来的什么东西感到兴奋?您最为关注什么?
最为兴奋的东西是程序员和企业家能够开发的应用和服务的巨大的尚待开发的领域,即因特网已经释放的创造性到达了一种我们以前从未预见到的水平。我最关注是&意想不到的后果&的原则,即我们并不总是知道我们所做事情的后果,例如因特网被政府所用,使得监视居民到达了一种新水平。
随着Web技术的进展,学生们有什么应当特别要了解的?
改变的速度,即对学习来说,最重要的东西是学习的方法,在特定的技术中如何灵活地适应改变,当你在职业生涯中前行时,在新的机会和可能性方面如何保持开放的思想。
什么人给予您专业灵感?
他们是:Vannevar Bush,Ted Nelson,Doug Engelgart,Nolan Bushnell,Bill Hewlett和Dave Packard,Ken Olsen,Steve Jobs,Steve Wozniak,Andy Grove,Grace Hopper,Hedy Lamarr,Alan Turing,Richard Stallman。
对于要在计算和信息技术领域谋求发展的学生们,您有什么忠告?
尽可能深入地理解技术是怎样创造的,然后补充学习商业运作的原理。
技术能够解决世界的问题吗?
不能,但是通过经济增长我们推动人们生活标准的改善。综观历史,大多数经济增长来自技术,因此就像技术带来的好处一样。
您对本文章有什么意见或着疑问吗?请到您的关注和建议是我们前行的参考和动力&&
您的浏览器不支持嵌入式框架,或者当前配置为不显示嵌入式框架。
文章下载读书}

我要回帖

更多关于 请求一下 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信