Полуоткрытое TCP/IP-соединение: различия между версиями

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[отпатрулированная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
Нет описания правки
 
(не показаны 4 промежуточные версии 3 участников)
Строка 1: Строка 1:
'''Полуоткрытое TCP/IP соединение''' ({{lang-en|half-open connection}}) — [[TCP]] соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоев или преднамеренных действий одного из участников.
'''Полуоткрытое TCP/IP соединение''' ({{lang-en|half-open connection}}) — [[TCP]]-соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоёв или преднамеренных действий одного из участников.


Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. [[TCP#Состояния сеанса TCP|состояния сеанса TCP]]). Но затем более распространённым стало применение термина '''полуоткрытое TCP/IP соединение''' к случаю нарушения нормальной последовательности установления соединения. Это произошло после описания CERT Coordination Center<ref>[http://www.cert.org/advisories/CA-1996-21.html TCP SYN Flooding and IP Spoofing Attacks]{{ref-en}}</ref> уязвимости реализации протокола, которую можно использовать для проведения атаки типа [[SYN-флуд]] ({{lang-en|SYN-flood}}).
Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. [[TCP#Состояния сеанса TCP|состояния сеанса TCP]]). Но затем более распространённым стало применение термина '''полуоткрытое TCP/IP соединение''' к случаю нарушения нормальной последовательности установления соединения. Это произошло после описания CERT Coordination Center<ref>[http://www.cert.org/advisories/CA-1996-21.html TCP SYN Flooding and IP Spoofing Attacks] {{Wayback|url=http://www.cert.org/advisories/CA-1996-21.html |date=20080914221531 }}{{ref-en}}</ref> уязвимости реализации протокола, которую можно использовать для проведения атаки типа [[SYN-флуд]] ({{lang-en|SYN-flood}}).


==Технические подробности==
== Технические подробности ==
Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить ''соединение''. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).
Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить ''соединение''. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).


# Клиент (сторона — инициатор соединения) посылает пакет с установленным флагом SYN (''synchronize'').
# Клиент (сторона — инициатор соединения) посылает пакет с установленным флагом SYN (''synchronize'').
# В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (''acknowledges'').
# В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (''acknowledges'').
# После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.
# После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.
Строка 14: Строка 14:
Нарушение синхронизации может произойти на любом из описанных шагов.
Нарушение синхронизации может произойти на любом из описанных шагов.


==Три значения термина==
== Три значения термина ==
Полуоткрытое соединение, описанное в стандарте TCP<ref>[http://tools.ietf.org/html/rfc793 RFC793]{{ref-en}}</ref>, возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время.
Полуоткрытое соединение, описанное в стандарте TCP<ref>[http://tools.ietf.org/html/rfc793 RFC793] {{Wayback|url=http://tools.ietf.org/html/rfc793 |date=20090302003939 }}{{ref-en}}</ref>, возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время.


Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию.
Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию.
Строка 21: Строка 21:
Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы.
Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы.


==MS Windows и клиенты пиринговых сетей==
== MS Windows и клиенты пиринговых сетей ==
Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на [[UNIX|Unix-подобных]] и [[Microsoft Windows|Windows]] платформах<ref>[http://www.securitylab.ru/analytics/216320.php Укрепление стека TCP/IP для защиты от SYN атак]</ref>.
Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на [[UNIX|Unix-подобных]] и [[Microsoft Windows|Windows]] платформах<ref>{{Cite web |url=http://www.securitylab.ru/analytics/216320.php |title=Укрепление стека TCP/IP для защиты от SYN атак |access-date=2009-02-19 |archive-date=2013-05-23 |archive-url=https://web.archive.org/web/20130523140120/http://www.securitylab.ru/analytics/216320.php |deadlink=no }}</ref>.


Однако [[Microsoft]] ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой [[Вредоносная программа|вредоносным программным обеспечением]] системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с [[Интернет]]ом, в частности, клиентов [[одноранговая сеть|пиринговых сетей]]. Увеличить предел полуоткрытых соединений можно, отредактировав системный файл <tt>tcpip.sys</tt> при помощи специальной утилиты, что запрещено лицензионным соглашением. Начиная с Windows Server 2008 SP2 и Windows Vista SP2 это ограничение было снято, однако может быть включено путем внесения специальной записи в реестр<ref>[http://support.microsoft.com/default.aspx/kb/969710/ Статья в базе знаний Microsoft о том, как включить ограничение на число полуоткрытых соединений в ОС Windows Vista и Windows Server 2008 с Service Pack 2 (на английском языке)]</ref>.
Однако [[Microsoft]] ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой [[Вредоносная программа|вредоносным программным обеспечением]] системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с [[Интернет]]ом, в частности, клиентов [[одноранговая сеть|пиринговых сетей]]. Увеличить предел полуоткрытых соединений можно, отредактировав системный файл <tt>tcpip.sys</tt> при помощи специальной утилиты, что запрещено лицензионным соглашением. Начиная с Windows Server 2008 SP2 и Windows Vista SP2 это ограничение было снято, однако может быть включено путём внесения специальной записи в реестр<ref>[http://support.microsoft.com/default.aspx/kb/969710/ Статья в базе знаний Microsoft о том, как включить ограничение на число полуоткрытых соединений в ОС Windows Vista и Windows Server 2008 с Service Pack 2 (на английском языке)]</ref>.


==Примечания==
== Примечания ==
{{примечания}}
{{reflist}}


==Ссылки==
== Ссылки ==
* [http://ru.wikibooks.org/wiki/Event_4226 Event 4226]
* [http://ru.wikibooks.org/wiki/Event_4226 Event 4226]
* [http://en.wikipedia.org/wiki/SYN_cookie SYN_cookie] {{ref-en}}
* [[:en:SYN cookie|SYN_cookie]]{{ref-en}}
* [http://half-open.com/home_ru.htm Windows Half-open limit fix (patch)]
* [http://half-open.com/home_ru.htm Windows Half-open limit fix (patch)]
* [http://xruna.net/2011/06/27/yvelichit_chislo/ Увеличить число полуоткрытых соединений (half-open connection) в Linux]
* [https://web.archive.org/web/20160304045613/http://xruna.net/2011/06/27/yvelichit_chislo/ Увеличить число полуоткрытых соединений (half-open connection) в Linux]

[[Категория:TCP/IP]]
[[Категория:TCP/IP]]

Текущая версия от 11:25, 11 мая 2024

Полуоткрытое TCP/IP соединение (англ. half-open connection) — TCP-соединение, в котором состояния двух его участников становятся несинхронизированными вследствие сбоёв или преднамеренных действий одного из участников.

Первоначально термин относился к нарушению синхронизации уже установленного соединения (см. состояния сеанса TCP). Но затем более распространённым стало применение термина полуоткрытое TCP/IP соединение к случаю нарушения нормальной последовательности установления соединения. Это произошло после описания CERT Coordination Center[1] уязвимости реализации протокола, которую можно использовать для проведения атаки типа SYN-флуд (англ. SYN-flood).

Технические подробности

[править | править код]

Перед началом передачи каких-либо данных, согласно протоколу TCP, стороны должны установить соединение. Соединение устанавливается в три этапа (процесс «трёхкратного рукопожатия» TCP).

  1. Клиент (сторона — инициатор соединения) посылает пакет с установленным флагом SYN (synchronize).
  2. В ответ на него сервер должен ответить комбинацией флагов SYN+ACK (acknowledges).
  3. После этого клиент должен ответить пакетом с флагом ACK, после чего соединение считается установленным.

После установки соединения обе стороны переходят в состояние ESTABLISHED. После завершения обмена и при необходимости разорвать соединение, происходит такой же многоступенчатый процесс завершения соединения.

Нарушение синхронизации может произойти на любом из описанных шагов.

Три значения термина

[править | править код]

Полуоткрытое соединение, описанное в стандарте TCP[2], возникает в результате ошибки одного из участников соединения или внезапного прекращения его (участника) работы без уведомления второй стороны. Если обе стороны находились в состоянии установленного соединения, то, после аварийного завершения соединения с одной стороны, вторая сторона может находиться в состоянии полуоткрытого соединения неопределённо долгое время.

Второе значение термина, связанное с уязвимостью SYN-флуд, относится к полуоткрытому соединению на стороне сервера после второго этапа «трёхкратного рукопожатия». В этом случае сервер, в ожидании ответа от клиента, не освобождает выделенные ресурсы, что может привести к их исчерпанию.

Третье значение термина относится к клиенту, выполнившему первый этап «трёхкратного рукопожатия» и ожидающего ответа сервера. В нормальных условиях это не приводит ни к каким отрицательным последствиям, так как, не получив ответа за определённое время, клиент закрывает соединение и освобождает ресурсы.

MS Windows и клиенты пиринговых сетей

[править | править код]

Проблемы, связанные с полуоткрытыми соединениями второго типа (на стороне сервера), имеют примерно одинаковые методы решения на Unix-подобных и Windows платформах[3].

Однако Microsoft ввела ограничение и на полуоткрытые соединения третьего типа (на клиенте). Это было сделано для минимизации возможности проведения атак на другие компьютеры с заражённой вредоносным программным обеспечением системы. В результате такого ограничения появились проблемы в работе программного обеспечения, интенсивно работающего с Интернетом, в частности, клиентов пиринговых сетей. Увеличить предел полуоткрытых соединений можно, отредактировав системный файл tcpip.sys при помощи специальной утилиты, что запрещено лицензионным соглашением. Начиная с Windows Server 2008 SP2 и Windows Vista SP2 это ограничение было снято, однако может быть включено путём внесения специальной записи в реестр[4].

Примечания

[править | править код]