IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> TCP SYN cookie的作用、原理、缺陷 -> 正文阅读

[网络协议]TCP SYN cookie的作用、原理、缺陷

SYN Flood 攻击

SYN cookie使用来抵御SYN 攻击的。SYN 攻击就是发很多的SYN给服务器,服务器收到SYN会为每个SYN创建一个TCB(Transmission Control Block),并将其放到半连接队列中。然而系统的半连接队列大小是有限制的(默认1024),如果半连接队列满了,服务器只能丢弃新来的请求了,从而正常的请求无法完成。

SYN Cookie概念

syn cookie究竟存在哪?它的实体就是服务器返回给客户端的ACK+SYN中的seq number。这个序列号本身也是一个信息,syn cookie就是把信息通过序列号作为载体,将一些信息编码到序列号里面了。因为客户端如果是正常的请求,返回的ack一定是seq+1,因此服务器就可以利用这个ack-1再重构出里面的编码信息。
那么 syn cookie究竟编码了哪些信息呢?

SYN cookies are initial sequence numbers that are carefully constructed according to the following rules:

  • let t be a slowly incrementing timestamp (typically time() logically right-shifted 6 positions, which gives a resolution of 64 seconds)
  • let m be the maximum segment size (MSS) value that the server would have stored in the SYN queue entry
  • let s be the result of a cryptographic hash function computed over the server IP address and port number, the client IP address and port number, and the value t. The returned value s must be a 24-bit value.

The initial TCP sequence number, i.e. the SYN cookie, is computed as follows:

Top 5 bits: t mod 32
Middle 3 bits: an encoded value representing m
Bottom 24 bits: s

上面是wiki里面的介绍,说的比较清楚了。
seq一共是32个bit,前5个bit编码的是时间戳,后面3bit是MSS大小,再后面24个bit是双方的ip地址以及端口。

SYN cookie的缺陷

  1. MSS大小只有8个取值(只有3个bit表示)
  2. 加密是比较耗cpu的
  3. 如果客户端的第三次ack丢失的话,由于服务器并没有存连接信息,因此不会重发ACK+SYN。从而导致客户端只能空等一段时间直到超时。

SYN cookie缺陷的克服

有个TCP Cookie Transaction (TCPCT),是一种新的标准,专门克服以上问题
参考:wiki

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章      下一篇文章      查看所有文章
加:2021-08-20 15:27:26  更:2021-08-20 15:27:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/17 16:43:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码