用伪造的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,那这里就是你发挥的空间了。
浙江温州皮鞋湿,下雨进水不会胖!
用伪造的TCP协议头花式欺骗核心转发设备?相关推荐
- tcp协议头窗口,滑动窗口,流控制,拥塞控制关系
tcp协议头窗口,滑动窗口,流控制,拥塞控制关系 参考文章 TCP 的那些事儿(下) http://coolshell.cn/articles/11609.html tcp/ip详解--拥塞控制 &a ...
- TCP协议中的核心知识点,SYN Flood?ISN?滑动窗口?数据重传?拆包粘包?单tcp连接多请求?拥塞管理?(个人收藏学习笔记)
TCP协议中的核心知识点,滑动窗口?数据重传?拆包粘包?单tcp连接多请求? 1.前言 2.TCP/IP四层结构 3. TCP 3.1 TCP 协议头 3.2 TCP通信过程 3.2.1 建立连接的三 ...
- TCP协议疑难杂症全景解析|硬核
大家好,我是Alex,今天分享一篇好文章,来自好友dog250,本文深入浅出地分析了TCP协议为什么要这样设计的背后原因,解答了几乎所有TCP疑难杂症问题,可以帮助大家查缺补漏,加深对TCP协议的理解 ...
- 深度思考|TCP协议存在那些缺陷?
作者:dog250 https://www.zhihu.com/question/47560918/answer/2302296292 TCP如何优化吞吐率,我很直接说优化不了,这让我甩开了很多令人尴 ...
- 1万字30张图说清TCP协议
本篇文章较长,大家先看下目录 1.简介 2.TCP协议头 3.TCP 数据包的编号(SEQ) 4.三次握手建立连接 5.四次挥手断开连接 6.TCP可靠性的保证 7.滑动窗口技术 9.窗口滑动的数据重 ...
- Linux内核中TCP协议实现的关键数据结构
1. TCP协议头tcphdr TCP协议头描述了TCP数据段发送的源地址.目标地址.数据段传送管理和连接管理的信息,是TCP协议实现的重要数据结构之一. struct tcphdr {__be16 ...
- TCP协议疑难杂症全景解析
说明: 1).本文以TCP的发展历程解析容易引起混淆,误会的方方面面 2).本文不会贴大量的源码,大多数是以文字形式描述,我相信文字看起来是要比代码更轻松的 3).针对对象:对TCP已经有了全面了解的 ...
- TCP协议的部分解析(2)
终于到了阐述问题的时候了,以上的TCP协议实现的非常简单,这也是TCP的标准实现,然而很快我们就会发现各种各样的问题.这些问题导致了标准化协会对 TCP协议进行了大量的修补,这些修补杂糅在一起让人们有 ...
- TCP协议三次握手与三次挥手
TCP协议和UDP协议都工作在传输层,它们的目标都是在程序之间传输数据,数据可以是文本文件可以是视频,也可以是图片.对于TCP协议和UDP协议来说:都是一堆二进制数,并没有多大的区别: 哪TCP与UD ...
最新文章
- 功能测试常用6种方法_建筑管道常用的8种连接方法
- linux pidof 进程名称查进程id
- 压缩机电流保护原因是什么?压缩机烧毁常见原因有哪些?
- 【Python】这个插件竟打通了Python和Excel,还能自动生成代码!
- 删除我的电脑里面软件快捷方式
- 电流源并联怎么合并_一种特殊的并联切换电力系统,长见识了
- h710阵列卡支持最大硬盘_DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例)
- windows服务编写原理(上)
- ckc交易什么意思_1379ip0在股市是什么意思,600875东方电气股票,股市交易手续费计算...
- atomic原子类实现机制_反射机制实现两个类的复制
- drupal7 代码生成用户,并自动登录
- [转]GO err is shadowed during return
- ASP.NET中IsPostBack属性研究
- 网络编程~socket
- 刘永行:领导者的得与失
- 垂直跑马灯水平跑马灯
- SPSS26没有典型相关性分析怎么办
- 初识FineBI数据分析
- [杜撰的故事]那天以后
- Redis实现分布式锁(setnx、getset、incr)以及如何处理超时情况(二)