我使用扭曲的框架运行HTTP服务器。有什么办法可以“手动”要求它处理一些有效载荷?例如,如果我构建了一些以太网帧,我可以问一下扭曲的反应器来处理它,就像它刚到达我的网卡上一样?手动给扭曲(网络)网络堆栈一个数据包进行处理?
回答
你可以做这样的事情:
from twisted.web import server
from twisted.web.resource import Resource
from twisted.internet import reactor
from twisted.internet.protocol import Protocol, ClientFactory
class SomeWebThing(Resource):
def render_GET(self, request):
return "hello\n"
class SomeClient(Protocol):
def dataReceived(self, data):
p = self.factory.site.buildProtocol(self.transport.addr)
p.transport = self.transport
p.dataReceived(data)
class SomeClientFactory(ClientFactory):
protocol = SomeClient
def __init__(self, site):
self.site = site
if __name__ == '__main__':
root = Resource()
root.putChild('thing', SomeWebThing())
site = server.Site(root)
reactor.listenTCP(8000, site)
factory = SomeClientFactory(site)
reactor.connectTCP('localhost', 9000, factory)
reactor.run()
,并保存为simpleinjecter.py,如果再(在命令行)做:
echo -e "GET /thing HTTP/1.1\r\n\r\n" | nc -l 9000 # runs a server, ready to send req to first client connection
python simpleinjecter.py
它应该工作的预期,来自端口9000上的NC服务器的请求被作为有效负载集中到扭曲的Web服务器上,并且响应按照预期返回。
关键行在SomeClient.dataRecieved()中。你需要一个带有正确方法的传输对象 - 在上面的例子中,我只是从客户端连接中窃取对象。如果你不打算这样做,我想你必须创建一个,因为堆栈将要执行诸如调用getPeer()之类的操作。
什么是用例?
也许你想创建自己的Datagram Protocol
在基地,在那里你 实际实现协议 解析和处理的地方,是 DatagramProtocol类。这个类 通常来自twisted.internet.protocol.DatagramProtocol。 大多数协议处理程序都继承此类或其子 中的一个 。 DatagramProtocol类接收 数据报,并可以通过网络发送出 。接收到的数据报 包括它们从 发送的地址,并且在发送数据报时必须指定要发送到的地址 。
如果您想查看电线级变速箱而不是插入它们,请安装并运行WireShark, the fantastic, free packet sniffer。
用例:我在两台计算机之间设置了隧道。一台机器正在运行(扭曲)网络服务器。当该机器通过隧道接收到TCP端口80的数据包时,我想对该数据包进行扭曲处理(就像它通过机器的NIC“正常”到达一样)。当服务器生成TCP/IP回复时,我想通过隧道将它们发回。 – 2009-10-25 15:17:30
可以通过SSH隧道设置端口转发。您可以运行HAProxy或类似的代替定制解决方案,并通过隧道将连接转发到其他计算机上。 – 2009-10-25 21:03:07
- 1. Android网络堆栈
- 2. 处理排序的网络数据包
- 3. 冻结网络堆栈
- 4. 网络堆栈崩溃?
- 5. 与扭曲的网络聊天
- 6. 将对象传递给网络数据包处理程序?
- 7. 使用UDP进行网络处理
- 8. 发布数据到网络进行处理
- 9. 神经网络处理字符数据
- 10. 泊坞窗组成的网络堆栈
- 11. Java网络堆栈安全性?
- 12. 网络 - 数据
- 13. LAMP堆栈作为一个公共的网络服务器
- 14. F#:处理网络例外
- 15. 处理网络断开
- 16. 从python网络接口读取和处理数据包
- 17. 通过网络跟踪网络数据包
- 18. 处理不活动的Wi-Fi网络
- 19. 促进网络
- 20. 网络支持是否支持网络套接字处理?
- 21. C#健壮的网络连接处理Flask网络
- 22. 运行下扭曲网
- 23. Python扭曲或并发编程学习插座/网络
- 24. Python通过网络扭曲发送大文件
- 25. 运行bash脚本卷曲从网络
- 26. 是否有一个“块接收”的回调在扭曲的网络
- 27. Cordova/Ionic移动网络观众网络
- 28. 直接从网络对图片进行Python图像处理
- 29. 使用PHP通过本地网络进行文件处理
- 30. 在c中捕获网络数据包
以太网帧的处理水平要比绞合处理的低得多,因此将其注入到网络流中与绞合无关。 – Amok 2009-10-24 21:56:09