TCP Cookie 传输

维基百科,自由的百科全书

TCP Cookie 传输英文TCP Cookie Transcations)是一个实验性的传输控制协议拓展,在RFC 6013中定义,用于保护TCP连接免于拒绝服务攻击,例如通过SYN Flood和第三方的恶意连接中止耗尽目标资源。[1]不像原有的 SYN cookies 方法,[2] TCPCT 不会和其它 TCP 拓展冲突, 但是要求客户端(发起者)和服务器(响应者)都支持这一拓展。[3]

开发这个拓展的直接原因是 DNSSEC 协议的部署。在 DNSSEC 出现前,DNS 请求主要使用小型 UDP 数据包,但是由于 DNSSEC 数据交换的大小和IP分片的缺点,UDP 对 DNSSEC 来说并不怎么现实。[4][5]于是采用 DNSSEC 的请求会创建极多的短寿命 TCP 连接。[3][6]

TCPCT 避免了服务器端资源耗尽,因为它在完成三步握手之前不会申请任何资源。除此之外,TCPCT 允许服务器在连接关闭之后立即释放内存,此时连接还在 TIME-WAIT 状态持续。[3]

2009 年十二月,TCPCT 支持被部分并入了 Linux 内核[7][8]但是在 2013 年五月被移除因为它从来没有被完整实现,还会造成性能消耗。[9]

参见

参考资料

  1. ^ Simpson, W.. TCP Cookie Transactions. IETF. January 2011 [March 16, 2012]. RFC 6013. 
  2. ^ Daniel J. Bernstein. SYN cookies. [2014-12-06]. (原始内容存档于2010-12-23). SYN cookies "do not allow to use TCP extensions" such as large windows. [...] A connection saved by SYN cookies can't use large windows 
  3. ^ 3.0 3.1 3.2 Perry E. Metzger, William Allen Simpson, Paul Vixie. Improving TCP Security With Robust Cookies (PDF). December 2009 [2014-12-06]. (原始内容存档 (PDF)于2018-04-07). 
  4. ^ B. Carpenter and S. Brim, “Middleboxes: Taxonomy and Issues,” RFC 3234, February 2002.
  5. ^ P. Srisuresh and K. Egevang, “Traditional IP Network Address Translator (Traditional NAT),” RFC 3022, January 2001
  6. ^ D. Wessels. DNSSEC, EDNS, and TCP (PDF). DNS-OARC. June 2009 [2014-12-06]. (原始内容存档 (PDF)于2016-07-06). 
  7. ^ Jake Edge. TCP cookie transactions. LWN.net. 16 December 2009 [2014-12-06]. (原始内容存档于2014-12-10). 
  8. ^ 存档副本. [2014-12-06]. (原始内容存档于2012-06-30). 
  9. ^ Jonathan Corbet. What's coming in 3.10, part 2. LWN.net. 8 May 2013 [2014-12-06]. (原始内容存档于2014-12-10).