oop*_*psi 2 sockets networking tcp google-chrome node.js
考虑node.js的这个小服务器
var net = require ('net');
var server = net.createServer(function (socket) {
console.log("Connection detected");
socket.on('end', function() {
console.log('server disconnected');
});
socket.write("Hello World");
socket.end();
});
server.listen("8888");
Run Code Online (Sandbox Code Playgroud)
当我在Macbook Pro上使用Chrome测试服务器时,我在控制台中收到三次"检测到连接"消息.
我知道一个用于连接,另一个用于favicon,但第三个是什么呢?
我使用Firefox和wget
(这是一个Linux命令行程序)测试它,以及telnet
进行深入调查.令人惊讶的是,所有这些都没有做任何额外的连接(显然他们甚至没有尝试下载favicon).所以我解雇了Wireshark的和捕获的会话,并很快发现,Chorme系统使无用连接,也就是说,它只是连接(SYN
,SYN-ACK
,ACK
),然后关闭连接(RST
,ACK
不发送任何数据).
只是一个快速的googlin,我发现了这个错误报告(摘录):
我怀疑"空"TCP连接是
- 备份TCP连接,
- IPv4/IPv6并行连接,或
- TCP预连接,
仅当在250毫秒内未设置原始TCP连接时,才会建立备份TCP连接.仅当服务器同时具有IPv6和IPv6地址且未在300毫秒内设置IPv6连接时,才会进行IPv4/IPv6并行连接.由于您正在localhost:8080上测试本地服务器,因此您应该能够快速连接到它,因此我怀疑您正在看到TCP预连接.
要验证"空"TCP连接是否为TCP预连接,请打开"扳手"菜单>设置>在引擎盖>隐私,并清除"预测网络操作以提高页面加载性能"复选框.关闭并重新启动Chrome."空"TCP连接是否消失了?
有关进一步参考,请参阅链接的线程,它更深入地解释了备份,并行和预连接是什么以及是否/为什么这是一个很好的优化.
归档时间: |
|
查看次数: |
386 次 |
最近记录: |