用伪造的TCP协议头花式欺骗核心转发设备?

如果你看OpenVxx的manual,里面有个链接:
http://sites.inka.de/sites/bigred/devel/tcp-tcp.html

我研究这个问题研究了好几年,从2013年就开始了,后来我烦了,于是见人就跟人说, 用UDP隧道,不要用TCP隧道,不然重传叠加会让连接崩溃!!

那些年,我还是术业不精,难免要照本宣科,扯些什么TCP就是按序接收,重传保序之类云云。

我太老实了。

如若我想构建隧道,比如CDN动态加速的隧道,我肯定是要用这隧道去运输一些别的东西,换句话说, 这隧道肯定不是端到端的!

那么OK,类似丢包,重传这些,肯定有端到端的协议来保证,无论是TCP,还是QUIC,还是基于UDP的其它可靠传输,均有这样的处理逻辑,我一个中间隧道,何必去care这些!

那么我如何既采用TCP构建隧道,又忽略掉TCP的复杂的处理逻辑呢?

很好的想法,在给出一个解答之前,我先来解释一下 为什么非要用TCP来构建隧道。

  • 因为运营商可能会对UDP不友好啊…
  • 因为中间路由器会对TCP友好啊…

路由器不是故意对TCP友好,而是UDP太难处理了,无连接,无session,机器内部还要维护一个表,这根本就不是路由器的主职啊。

哈哈…

所以呢,入乡随俗,就按着要求的来,就用TCP构建隧道呗。

中间路由器能看到的只是一个TCP头而已,它哪能知道我这TCP头是端到端按照TCP协议协商的,还是手工封装上去的呢?它根本区分不出来!

那好,那就这样:

  • 截获感兴趣流的数据包,封装一个隧道对端可以识别的TCP头。
  • 把这个伪造的TCP包扔进网络。
  • 这个包进入中间路由器,被路由器认为是一个TCP流的包。
  • 这个包按照路由器的规则排队等待发送。
  • 数据包到达隧道对端,被识别,剥掉TCP头…

有意思吧。TCP头只是为了迎合中间路由器的区分服务。

你穿双皮鞋装X就会被误认为是经理,但事实上并不是经理,对吧,但大部分人就是以貌取人,这就对了,迎合他就是了。

经理,您好!

如果我把IP地址和端口按照我自己能识别的规则散列开来,中间路由器就会认为这是不同的stream,那这里就是你发挥的空间了。


浙江温州皮鞋湿,下雨进水不会胖!

展开阅读全文
©️2020 CSDN 皮肤主题: 编程工作室 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值