从websocket协议出发,了解应用层协议,传输层协议,网络的7层协议

其他关联连接 :TCP的三次握手(建立连接)和四次挥手(关闭连接)

 

1、websocket是全双工,不同于传统半双工通信

传统的Web应用中,浏览器与服务器交互都是半双工通信(但并不完全是半双工通信,服务器无法主动向浏览器推送)。

ps:什么是单攻,半双工,全双工

根据信息的传送方向,【串行通信】可以进一步分为单工、半双工和全双工三种。
信息只能单向传送为"单工";
信息能双向传送但不能同时双向传送称为"半双工";
信息能够同时双向传送则称为"全双工"

ps:什么是串行通讯、并行通讯

串口通信指串口按位(bit)发送和接收字节。尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。
在串口通信中,常用的协议包括RS-232、RS-422和RS-485

 

2、传统与websocket的连接步骤(都需要tcp三次握手)

传统Web应用中浏览器与服务器进行数据交互通常需要经过以下几个步骤:

  1. DNS查询
  2. TCP三次握手
  3. 传送HTTP请求头
  4. 传送HTTP请求体(如果有)
  5. 服务器处理后传送响应头
  6. 服务器传送响应体
  7. 断开TCP连接

在WebSocket中进行交互通常为以下几个步骤:

  1. DNS查询
  2. TCP三次握手
  3. WebSocket握手
  4. 浏览器发送请求
  5. 服务器发送响应
  6. 断开TCP连接

如果仅是一次通信,二者差异并不是很大,甚至WebSocket比普通方式还要多一次握手。但在需要频繁交互数据时,WebSocket的优势就显露出来了。

例如,当有10次数据交互时,前者要建立10个TCP连接(HTTP 1.0需要建立10次,HTTP 1.1可以通过长连接keep-alive复用TCP连接),然后要发送10次请求头(包含Cookie等信息,可能会达到K级别),接收的响应信息可能才几个字节(如某些心跳包),这样会极大的浪费带宽等资源。试想,如果你在做一个聊天应用,想要获取当前在线人数,你需要向服务器发送你的全部cookie(至少要几百个字节),除此之外HTTP头中还要包含其他信息,如URL、host等,这些都是必不可少的。最后服务器返回了几百个字节,但其中真正需要用到的只有不到10字节(只需要知道在线人数,其他信息都是无用的)。通过WebSocket,浏览器可以向服务器发送1~2字节的请求(不需要带上cookie验证身份,可以在握手时进行认证,一旦TCP连接建立,则在连接上的通信都是认证过身份的数据,这也是它的好处之一:便于服务端识别客户端的状态),这个请求仅包含一个特定的控制码(由开发者实现的应用层协议指定),服务器只需返回特定的返回码及数据即可,一切无用的字节都被省去。

 

3、websocket和http一样都是传输层协议、都是基于tcp应用层协议,ps:进阶了解网络的7层协议 OSI

原文:https://blog.csdn.net/ch1406285246/article/details/55504330

OSI(网络七层协议模型),想要联网必须遵循这个协议模型,我们的手机和电脑才可以联网通信

OSI是一个开放性的通信系统互连参考模型,他是一个定义得非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。

应用层

示例:TELNET,HTTP,FTP,NFS,SMTP等。

表示层

示例:加密,ASCII等。

会话层

示例:RPC,SQL等。

传输层

示例:TCP,UDP,SPX。

网络层

示例:IP,IPX等。

数据链路层

示例:ATM,FDDI等。

物理层

示例:Rj45,802.3等。

 

posted @ 2018-09-11 11:43  刘金宇  阅读(641)  评论(0编辑  收藏  举报