WebSocket與Socket、HTTP、TCP的粗略整理

1.什麼是WebSocket? 

  WebSocket是一个持久化的协议 ,为了满足基于 Web 的日益增长的实时通信需求而产生的。在传统的 Web 中,要实现实时通信,通用的方式是采用 HTTP 协议不断发送请求。但这种方式即浪费带宽(HTTP HEAD 是比较大的),又消耗服务器 CPU 占用(没有信息也要接受请求)。
 
  对于 WebSocket 来说,它必须依赖HTTP 协议进行一次握手,握手成功后,数据就直接从 TCP 通道传输,与 HTTP 无关了(HTTP 有 1.1 和 1.0 之说,也就是所谓的 keep-alive ,把多个 HTTP 请求合并为一个,但是 Websocket 其实是一个新协议,跟 HTTP 协议基本没有关系,只是为了兼容现有浏览器,所以在握手阶段使用了 HTTP 。)。

2.什麼是Socket?

  网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

  Socket其实并不是一个协议。它工作在 OSI 模型会话层(第5层),是为了方便大家直接使用更底层协议(一般是TCP或UDP)而存在的一个抽象层。Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

3.什麼是HTTP?

  http是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII码形式给出;而消息内容则具有一个类似MIME的格式。

  HTTP 协议有一个缺陷:通信只能由客户端发起,做不到服务器主动向客户端推送信息。

4.什麼是TCP?

  TCP(Transmission Control Protocol)是网络通信模型OSI7层网络模型中,第四层传输层协议,主要作用是数据传输,TCP 主要确保不同节点之间的端到端数据传输。

5.WebSocket和HTTP的異同點

  同:

  • 建立在TCP之上,通过TCP协议来传输数据。
  • 都是可靠性传输协议。
  • 都是应用层协议。

  異:

  • WebSocket是HTML5中的协议,支持持久连接,HTTP不支持持久连接,数据格式比较轻量,性能开销小,通信高效,以发送文本,也可以发送二进制数据。
  • HTTP是单向协议,只能由客户端发起,做不到服务器主动向客户端推送信息。

6.WebSocket和Socket

   Socket其实并不是一个协议,而是为了方便使用TCP或UDP而抽象出来的一层,是位于应用层和传输控制层之间的一组接口。

  当两台主机通信时,必须通过Socket连接,Socket则利用TCP/IP协议建立TCP连接。TCP连接则更依靠于底层的IP协议,IP协议的连接则依赖于链路层等更低层次。

  Socket是传输控制层协议,WebSocket是应用层协议。

7.WebSocket   HTTP和TCP/IP

  WebSocket和HTTP一样,都是建立在TCP之上,通过TCP来传输数据,可以把这些高级协议理解成对 TCP 的封装。

8.Socket和TCP/IP

  Socket是对TCP/IP协议的封装,像创建Socket连接时,可以指定使用的传输层协议,Socket可以支持不同的传输层协议(TCP或UDP),当使用TCP协议进行连接时,该Socket连接就是一个TCP连接。

注:本文主要用於個人學習與總結,如有錯誤期待各位大佬的指導!

原文地址:https://www.cnblogs.com/shiqing-zhang/p/12991081.html