websocket 握手和建立连接是复用同一个tcp通道么
发布于 7 年前 作者 ReidSuHe 5706 次浏览 来自 问答

请教个问题啊, websocket 是一种长连接协议,它是通过发起一次http请求作为握手,握手成功后建立tcp通道, 问题是 他的tcp通道是复用的建立握手的tcp通道么

7 回复

建议你下载个wireshark

感觉题主是不是把TCP真的想成一个通道了啊 。 如果说通道指的是正确的multiplexing 和demultiplexing的话 就是port 不变的话,那应该是吧。。。

@p2227 你可以认为 websocket 在没有断的情况下,socket 句柄就是 http 握手时的句柄,写个简单例子

var server = http.createSever(...);
server.on('upgrade', function (req, socket, head) {
  // socket 句柄,就是 http 连接的 socket    
});

@GhostTomX 是这样,我有个这么个疑问,websocket连接分两部分,首先http作为握手,http请求肯定是先建立tcp握手,当服务端响应了客户端的请求后,作为http响应后,tcp连接应该做四次挥手的,但是由于第二部分,建立的还是tcp连接,问题来了,那么这个连接过程,tcp先是四次挥手,之后从新握手建立连接,还是说没有挥手,直接通过这条tcp保持连接

直接保持连接。

是同一个连接。

回到顶部