- 博客(6)
- 资源 (4)
- 收藏
- 关注
原创 实践和原则,哪个更重要?tcp syncookie的问题和解法
测了一次tcp syncookie的抗D性能,发现了一件有趣的事情,周末写一篇随笔出来。 请看下面的时序: 简单讲就是在syncookie被触发的时候,客户端可能会被静默丢掉最多3个字节,所谓静默就是客户端认为这些字节被收到了(因为它们被确认了),然而服务端真真切切没有收到。 关于这个POC也非常简单: //$ cat poc.c #include <stdio.h> #include <stdlib.h> #include <string.h> #include &l
2021-04-17 07:51:55 12955 9
原创 从电话网到IP互联网再到CDN
电话网中的操作,最终目标是找到一根通往被叫端的插口,然后把主叫来自的电线插入被叫的插口。这显然是一个中心化的操作。 TCP/IP网络中的操作,最终目标是找到一台标识目标IP地址的主机,中间节点的操作显然只是找到下一跳即可,这显然是一个分布式的操作。 NDN/CDN网的操作,最终目标是找到内容,只要遇到匹配(摘要签名对应,这涉及到了非对称密码技术)的内容,返回即可。 我们一直都觉得TCP/IP网络很完美,但我们在互联网中的所有操作真的是为了寻址一个IP地址吗?我们寻址的明明是内容啊。 进一步,地址能标识内.
2021-04-10 11:25:44 6655 6
原创 UDP实现高并发其实非常简单(续集)
上周放假时跟着小小学python,就写了一个所谓 “高并发UDP服务器” ,详见: https://blog.csdn.net/dog250/article/details/115413967 之所以这么写是因为我想让UDP服务看起来像TCP服务而已,但还是发现了新东西。 我所谓的 服务 ,专门指的是那种长连接,高并发的服务。 在上面这个随笔里,我的观点是 让socket的数量上去,并发也就上去了,剩下的就交给CPU了 ,因此最直接的方式就是预先创建海量的reuseport UDP socket,bind到
2021-04-10 09:56:56 6962 1
原创 伪造ACK实现TCP数据注入
TCP创造并发展于1970年代~1980年代,这注定了它能工作但脆弱。 在TCP伊始,最重要的是可用,而不是高效,也不是安全,因此,在端到端TCP连接的中间,利用伪造的ACK,你很容易完成一种叫做 中间人攻击 的事情。 如果你用“TCP劫持”,“TCP中间人”,“TCP注入”等作为关键词百度或者Google,绝大部分内容都在SYN报文上做文章,诸如会话Reset,会话劫持,SYN Flood攻击等等,但实际上还有更好玩的恶作剧。 通过在中间路径上伪造ACK,你可以: 提前确认数据,扰乱TCP的ACK时钟,
2021-04-04 13:09:23 6562 8
原创 UDP实现高并发其实非常简单
UDP越来越被重视了,人们期望它和TCP一样,但是呢?… UDP能不能像TCP那样做高并发? 内核早在3.9版本就支持REUSEPORT了,但直到2015年底,我也只能做个表面上(看起来像那么回事,但实际上就是垃圾的东西)的东西: https://blog.csdn.net/dog250/article/details/17061277 但也只是看起来像,除此之外,我当时的想法相当于垃圾。 UDP做高并发非常简单,和TCP的accept模型似乎没有什么区别,下面是一个随手撸的代码,主要是跟着小小学pytho
2021-04-03 11:30:03 6742
原创 隐藏与篡改Linux命令行参数
如果一个程序的命令行是一个password之类的不便展示的字符串,如何不让ps打印出来呢? ps是从/proc/$pid/cmdline里拿的命令行,而/proc/$pid/cmdline则是在内核空间解析用户程序的stack区域获取的数据,那么答案很简单,只需要覆盖掉这个区域即可,下面是个示例: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char **ar
2021-04-03 08:31:10 11492 8
一个iptables的stateless NAT模块实现
2014-12-27
模块化的nf-HiPAC
2014-11-21
关于linux内核以及其他个人体会的文集
2009-09-07
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人