前奏:
在开始前可能我想先简单介绍一下tcp/ip模型
有四层,而且我们都知道高层的协议是基于低层协议的,所以当有人问我tcp和ip或者tcp和http有什么区别,其实看到上面这张图我们就非常清楚,他们分别处于不同的抽象层,所以应该想想他们之间有什么联系。
1、HTTP协议
HTTP是基于TCP协议的应用,请求时需建立TCP连接,而且请求包中需要包含请求方法,URI,协议版本等信息,请求结束后断开连接,完成一次请求/响应操作。故称为短连接。
而HTTyP/1.1中的keep-alive所保持的长连接则是为了优化每次HTTP请求中TCP连接三次握手的麻烦和资源开销,只建立一次TCP连接,多次的在这个通道上完成请求/响应操作。服务器无法主动给客户端推送消息,所以响应是在请求之后生返回。
2、WebSocket
也是一种协议,并且也是基于TCP协议的,经常被用在在在线聊天的im系统上。具体流程是WebSocket通过HTTP先发送一个标记了Upgrade 的请求,服务端解析后开始建立TCP连接,省去了HTTP长连接每次请求都要上传请求头信息,可以理解为WebSocket是HTTP的补充,使得应用层的程序也能进行长连接的操作。
3、TCP协议
是在传输层的网络通信协议,两个进程在进行通信之前需要进行三次握手,同时又有数据检测机制ÿ