从分层上来区分,HTTP,WebSocket是应用层协议,TCP,UDP是传输层协议,IP是网络层协议。
1.TCP和UDP浏览器
TCP是面向链接的一种传输控制协议。TCP链接以后,客户端和服务器能够互相发送和接收消息,在客户端或者服务器没有主动断开以前,链接一直存在,故称为长链接。特色:链接有耗时,传输数据无大小限制,准确可靠,先发先至。
UDP是无链接的用户数据报协议,所谓的无链接就是在传输数据以前不须要交换信息,没有握手创建链接的过程,只须要直接将对应的数据发送到指定的地址和端口就行。故UDP的特色是不稳定,速度快,可广播,通常数据包限定64KB以内,先发未必先至。
2.HTTP服务器
HTTP是基于TCP协议的应用,请求时需创建TCP链接,并且请求包中须要包含请求方法,URI,协议版本等信息,请求结束后断开链接,完成一次请求/响应操做。故称为短链接。
而HTTP/1.1中的keep-alive所保持的长链接则是为了优化每次HTTP请求中TCP链接三次握手的麻烦和资源开销,只创建一次TCP链接,屡次的在这个通道上完成请求/响应操做。
值得一提的是,服务器没法主动给客户端推送消息。
3.WebSocket网络
WebSocket也是一种协议,而且也是基于TCP协议的。具体流程是WebSocket经过HTTP先发送一个标记了 Upgrade 的请求,服务端解析后开始创建TCP链接,省去了HTTP长链接每次请求都要上传header的冗余,能够理解为WebSocket是HTTP的优化,但WebSocket不单单在Web应用程序上获得支持。
4.Socket链接和TCP链接优化
其实这就是一个文字游戏而已,创建Socket链接须要至少一对Socket(套接字),而建立Socket链接能够指定不一样的传输层协议,即TCP或UDP,因此当采用TCP创建链接时,该Socket链接就视为一个TCP链接。而采用UDP则是无链接的。
5.Socket和WebSocketspa
这两个虽然名字差很少,但倒是两个彻底不一样的概念,就比如Java和JavaScript同样毫无关系。Socket是一套协议封装后的接口,用于创建Socket链接,而WebSocket虽然是Html5的产物,但也不单单局限于浏览器的应用程序,许多语言都提供了WebSocket的支持,好比C,C++,Python等。
6.HTTP、WebSocket与TCP的关系blog
HTTP通讯过程属于“你推一下,我走一下”的方式,客户端不发请求则服务器永远没法发送数据给客户端,而WebSocket则在进行第一次HTTP请求以后,其余所有采用TCP通道进行双向通信。因此,HTTP和WebSocket虽都是基于TCP协议,可是二者属于彻底不一样的两种通信方式。接口