Netty和非标准TCP连接

时间:2018-06-22 10:27:35

标签: java tcp netty

我在不同的LAN上有两个组件A和B,其中Linux服务器充当两个LAN的网关。

A使用部署在公共Internet上的网关向B发送TCP流量。因此,没有SYN通过Linux服务器从A发送到B。但是,C使用本地TCP连接将TCP通信发送回A(不涉及网关)。通过嗅探流量,我可以看到C不在建立常规的TCP连接(SYN),而是从发送(SYN + ACK)开始。

我正在Linux服务器上使用<?php namespace Tests\Browser; use Tests\DuskTestCase; class LoginTest extends DuskTestCase { /** * test_I_can_login_successfully * * @return void */ public function test_I_can_login_successfully() { $this->browse(function ($browser) { $browser->visit('login') ->keys('#email', 'test@test.co.uk') ->keys('#password', 'test') ->click('.btn-primary') ->assertPathIs('dashboard') ->assertSee('Marco'); }); } } 将C所发送的TCP流量本地重定向到A。流量被重定向到本地端口9000。

但是,我也想拦截此流量,因此,我建立了一个简单的Netty代理,该代理侦听端口9000。出于某些原因,Netty不会接收或忽略此流量。

我想知道Netty是否能够在不使用SYN的情况下管理SYN-ACK的情况。

有什么主意吗?

1 个答案:

答案 0 :(得分:1)

问题是内核中的TCP protcool实现堆栈是否将对其进行管理。

Netty甚至都看不到,无论是否由TCP / IP管理。

Netty不是TCP / IP的实现。它是一个位于Java API之上的API,该Java API则位于BSD Sockets API之上,并且都不是TCP / IP的实现。在这种情况下,除了调用listen()accept(),它再也看不到网络了。