websocket

ws建立过程

1、客户端发送 http 请求,经过三次握手,建立 TCP连接,在 http 请求里存放 websocket 支持的版本号等信息;
2、服务器接收请求,同样以 http 协议回应;
3、连接成功,客户端与服务器建立持久性的连接。

http和tcp相同点

  • 都是 TCP 协议;
  • 都使用 Request/Response 模型进行连接的建立;
  • websocket 是基于 http 的,他们的兼容性都很好;
  • 在连接的建立过程中对错误的处理方式相同;
  • 都可以在网络中传输数据。

http和tcp不同点

  • websocket 是持久连接,http 是短连接;
  • websocket 的协议是以 ws/wss 开头,http 对应的是 http/https;
  • websocket 是有状态的,http 是无状态的;
  • websocket 连接之后服务器和客户端可以双向发送数据,http 只能是客户端发起一次请求之后,服务器才能返回数据;
  • websocket 是可以跨域的;
  • websocket 连接建立之后,数据的传输使用帧来传递,不再需要Request消息。

websocket数据帧:

websocket_第1张图片

  • FIN,占1bit,如果是1,表示这是消息(message)的最后一个分片(fragment),如果是0,表示不是是消息(message)的最后一个分片(fragment)。
  • RSV1, RSV2, RSV3,各占1bit,一般情况下全为0。当客户端、服务端协商采用WebSocket扩展时,这三个标志位可以非0,且值的含义由扩展进行定义。如果出现非零的值,且并没有采用WebSocket扩展,连接出错。
  • Opcode,占4bit,操作代码,Opcode的值决定了应该如何解析后续的数据载荷(data payload)。如果操作代码是不认识的,那么接收端应该断开连接(fail the connection)。
  • Mask,占1bit,表示是否要对数据载荷进行掩码操作。从客户端向服务端发送数据时,需要对数据进行掩码操作;从服务端向客户端发送数据时,不需要对数据进行掩码操作。

如何保证数据正确且送到了

1.消息确认和重传
2.消息序列号
3.ReconnectingWebSocket
4.每条记录都有id 每次请求客户端保留一个最大id 以后每次重连 都需要查询比这个id新的记录就行了

你可能感兴趣的:(面试,websocket,网络协议,网络)