Fork me on GitHub

WebSocket入门(1)TCP基础

WebSocket是html5的产物,跟socket相似,但是前期通讯是基于http,而http又是基于TCP
先说下TCP的三次握手

翻译成人话就是这样

1
2
3
4
客户端:老哥你在吗
服务端:老弟找我啥事
服务端:太好了是这样的
然后传输开始巴拉巴拉巴拉

TCP握手建立连接后,就开始基于HTTP协议传输数据,在http 1.0的时候,每个请求都需要一个连接,请求完成连接就断开,然后重新握手
到了http 1.1则支持一次连接多个请求,像这样
。。。握手之后

1
2
3
4
5
6
客户端:吧啦吧啦吧啦吧啦
服务端:吧拉收到
客户端:吧唧吧唧吧唧吧唧
客户端:吧嗒吧嗒吧嗒吧嗒
服务端:吧唧收到
服务端:吧嗒收到

请求不一定是依次发送的,可以是重叠,而且每个请求并无需等服务端返回,而且几次请求期间,连接是一直存在的,即使中间不是连续的,客户端也会定时发“keep-alive”的指令让服务端保持连接,而服务端可以通过配置http服务器来设置超时时间,如Apache、Tomcat之类
断开连接则需要4次握手,多出的一次是因为服务端要通知客户端请求完成
如下图

1
2
3
4
客户端:老哥我要断开连接啦
服务端:收到断开(然后查一下有没未返回的请求)
服务端:所有请求都完成了
客户端:断断断切克闹

Socket是基于传输层和应用层之间的一个抽象层,说白就是对TCP/IP协议的封装,是一个API接口,而不是协议

Socket也叫套接字,建立Socket需要一对套接字,分别位于客户端和服务端

首先服务端打开监听服务,客户端对服务器提出请求,服务端确认请求,此时连接就建立起来了

Socket一般采用TCP协议,也可以指定UDP协议,而HTTP是基于TCP协议应用层协议,在传输层之上的

题外话,Socket为什么要翻译成套接字?

相关文章推荐

如果觉得我的文章对您有用,可否请我喝杯速溶咖啡