T/TCP (англ. TCP for Transactions, транзакционный TCP) — вариант протокола Интернет TCP, экспериментальное расширение TCP для эффективный работы транзакционных сервисов (запрос/ответ). Он был разработан Bob Braden (USC Information Sciences Institute) в 1992-1994 годах и описан в RFC 1379 и RFC 1644. Целью его создания было занятие ниши между протоколами UDP и TCP.

Распространения не получил.[1]

Этот протокол быстрее простого TCP и, в отличие от UDP, гарантирует доставку.

Поддерживался в FreeBSD начиная с версии 2.1 (ноябрь 1995[2][3]) по версию 5.2 включительно (удален в ноябре 2004 года[4][5]). Активировался вызовом setsockopt с параметром TCP_NOPUSH на серверной стороне. Сообщения по T/TCP отправлялись как клиентом так и сервером с помощью вызова sendto с установленным флагом MSG_EOF.[2]

Также поддержка T/TCP была реализована в виде патчей для SunOS 4.1.3, Linux 2.0.32 и BSD/OS 2.1.[6][7] В июле 2002 года был реализован патч для Linux Kernel 2.4.2[8]

Легко подвержен атакам [1][9][10][11].

В мае 2011 года документы RFC 1379 и RFC 1644, определявшие T/TCP, были переведены в статус Исторические (устаревшие, Historic Status [12] после публикации RFC 6247.

Механизм TCP Accelerated OpenПравить

АналогиПравить

В 2005 году один из разработчиков сетевой подсистемы FreeBSD предложил протокол TTCPv2, имевший более высокую безопасность.[5]

В 2011 году было предложено расширение протокола TCP под названием "TCP Fast Open" (TFO), которое использовало сходные идеи но добавило к ним использование симметричной криптографии.[13] По состоянию на октябрь 2012 года является черновиком IETF (IETF Internet draft).[14] Первая реализация TFO для стороны клиента была внедрена в ядро Linux в версии 3.6[1], для стороны сервера - в версии 3.7.[15]

См. такжеПравить

ПримечанияПравить

  1. 1 2 3 Michael Kerrisk, TCP Fast Open: expediting web services // LWN, August 1, 2012: "The client-side support has been merged for Linux 3.6.", "T/TCP ... fundamental security flaws in its design meant that it never gained wide use"
  2. 1 2 ttcp(4) man page, FreeBSD 5.2.1, January 18, 1995: "Support for T/TCP first appeared in FreeBSD 2.1"
  3. RELEASE NOTES. FreeBSD Release 2.1 // The FreeBSD Core Team, Nov 1995: "Other enhancements include ... transaction TCP support"
  4. commit // Andre Oppermann (andre) Nov 2,2004; Removing T/TCP and replacing it with something simpler // Andre Oppermann (andre) 21 Oct 2004
  5. 1 2 TTCPv2: Transactional TCP version 2 // Andre Oppermann: "The old TTCP according to RFC1644 was insecure, intrusive, complicated and has been removed from FreeBSD >= 5.3."
  6. T/TCP -- Transaction TCP Source Changes for Sun OS 4.1.3// Веб-сайт W. Richard Stevens
  7. T/TCP Home Page (TCP for Transactions) // Веб-сайт W. Richard Stevens
  8. Ren Bin, Zhang Xiaolan, Implementation of Transaction TCP in Linux Kernel 2.4.2 // 2002
  9. Example of RFC-1644 attack // BUGTRAQ, 7 Apr 1998
  10. Charles Hannum (NetBSD Network Working Group). Security Problems Associated with T/TCP. unpublished work in progress (сентябрь 1996). Архивировано 10 января 2010 года.
  11. T/TCP vulnerabilities (неопр.). — Phrack, 1998. — 8 July (т. vol. 8, № issue 53). Архивировано 18 октября 2007 года.
  12. Historic Status definition in RFC 2026, sectio 4.2.4
  13. S. Radhakrishnan, Y. Cheng, J. Chu, A. Jain, B. Raghavan. TCP Fast Open, ACM CoNEXT (6 декабря 2011).; см раздел 8.Related Work
  14. Y. Cheng, J. Chu, S. Radhakrishnan, A. Jain: TCP Fast Open // IETF Internet-Draft, 2012-10-22, code: draft-ietf-tcpm-fastopen-02.
  15. Steven J. Vaughan-Nichols, Linux 3.7 arrives, ARM developers rejoice // ZDNet, Linux and Open Source, December 11, 2012: "Linux 3.7. TCP Fast Open will now be supported on servers"

ЛитератураПравить

  • RFC 1379: Extending TCP for Transactions—Concepts (R. Braden, ISI, 1992)
  • RFC 1644: T/TCP—TCP Extensions for Transactions. Functional Specification (R. Braden, ISI, 1994)
  • Richard Stevens, Gary Wright, "TCP/IP Illustrated: TCP for transactions, HTTP, NNTP, and the UNIX domain protocols" (Volume 3 of TCP/IP Illustrated) // Addison-Wesley, 1996 (ISBN 0-201-63495-3), 2000 (ISBN 9814053090). Part 1 "TCP for Transactions". Chapters 1-12, pages 1–159

СсылкиПравить