什么是套接字劫持?

时间:2016-09-17 08:50:44

标签: ruby-on-rails ruby sockets http rack

我正在阅读关于Rails 5动作电影简介的精彩post。它说:" Action Cable使用Rack socket劫持API来接管来自应用服务器的连接。 &#34 ;.什么是"套接字劫持"意思?

1 个答案:

答案 0 :(得分:4)

套接字劫持是使用rack 1.5.0实现的 - 模块化的Ruby Web服务器接口。

Rack 1.5.0基本上提供了一个简单且适应性强的界面,用于在rails中开发应用程序。它通过简单地包装HTTP请求及其响应来实现此目的。它还将Web服务器,Web框架和中间件的API组合到单个方法调用中。

因此,在rack 1.5.0套接字中,hijacking用于允许rails应用程序超越客户端套接字并对其执行其他操作。这些操作包括:

  • 实施WebSockets
  • 流式数据
  • 用户浏览器和服务器之间的其他交互性

WebSockets 允许用户向服务器发送消息并接收事件驱动的响应,而无需轮询服务器以进行回复。

如下图所示 - 正如您所看到的,一旦打开WebSocket连接,就可以在用户和服务器之间发送和接收消息。

WebSockets

无论如何,在您指定的 Rack Socket Hijacking API 中,它基本上提供了两种模式:

  • 完整劫持API

    • 这使应用程序可以完全控制套接字上的内容。应用服务器不会通过套接字发送任何内容,并让应用程序处理它。
  • 部分劫持API

    • 这使应用程序服务器已经发送了标头后,应用程序可以控制套接字。此模式主要用于流式传输。

所以 - 最后,套接字劫持基本上允许ruby / rails应用程序覆盖/超越客户端套接字并在其上执行不同的功能,或者在您编写时 - 控制来自应用程序服务器的连接。

相关问题