Стек протоколов TCP/IP

Стек протоколов TCP/IP

Стек протоколов TCP/IP является основным и единственным способом взаимодействия конечного компьютера с глобальной сетью Интернет, а также основным стеком взаимодействия с другими компьютерами сети. Именно поэтому было решено рассказать в этой главе и о некоторых настройках стека TCP/IP. Все настройки стека TCP/IP хранятся в ветви реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesTcpipParameters. Она может содержать следующие параметры DWORD-типа.

? ArpCacheLife — указывает время жизни записей в ARP-кэше.

? DefaultTTL — определяет время жизни пакетов (TTL), указываемое в заголовках пакетов. Время жизни пакета — это количество маршрутизаторов, через которые может пройти пакет, после чего он станет считаться утерянным и будет уничтожен. Каждый маршрутизатор, передающий пакет, уменьшает его время жизни на 1. Когда время жизни становится равным нулю, следующий принимающий пакет маршрутизатор уничтожает его.

По умолчанию значение равно 0х00000080, но параметр может принимать значения от 0х00000001 до 0х00000100.

? DisableTaskOffload — определяет, будет ли при взаимодействии с сетевым компьютером использоваться дополнительный сопроцессор сетевой карты. Использование дополнительного сопроцессора разгружает работу процессора, установленного на материнской плате компьютера, но не все сетевые карты имеют в своем составе дополнительные сопроцессоры.

По умолчанию значение равно 1, то есть, даже если сетевая карта имеет дополнительный сопроцессор, он будет отключен. Чтобы включить работу сопроцессора, необходимо присвоить этому параметру значение 0.

? EnablePMTUBHDetect — указывает, будет ли при передаче пакетов выполняться поиск маршрутизаторов типа «черная дыра». По умолчанию поиск данных маршрутизаторов отключен, то есть параметр имеет значение 0. Установка значения параметра равным 1 приводит к дополнительной затрате времени на стадии установки соединения.

ПРИМЕЧАНИЕ

Маршрутизаторы типа «черная дыра» не возвращают пакеты типа ICMP Destination Unreachable в случае, если им нужно фрагментировать пакет с установленным флагом, запрещающим фрагментацию. Именно такие пакеты будут использоваться TCP для обнаружения MTU пути. Если после нескольких попыток передачи пакетов с запрещенной дефрагментацией не было получено ответа, то считается, что маршрутизатор имеет тип «черная дыра». Если подтверждение будет получено, то MSS будет уменьшено и флаг, запрещающий дефрагментацию, будет установлен для всех последующих пакетов. 

? EnablePMTUDiscovery — указывает, будет ли TCP перед отправкой пакетов определять максимальный размер пакета (MTU), который не будет фрагментироваться во время передачи к сетевому компьютеру. Если значение равно 0, то все передаваемые пакеты будут иметь MTU, равный 576 байт, а определение максимального размера пакета, способного дойти до сетевого компьютера без фрагментации, вестись не будет. Если же значение равно 1, то перед отправкой пакетов TCP будет определять MTU пакета, способного дойти до сетевого компьютера без фрагментации, и полученный MTU использовать как размер пакетов, которые он будет отправлять (чтобы они не фрагментировались, ведь эта операция занимает дополнительное время). По умолчанию значение параметра равно 1.

? ForwardBufferMemory — указывает размер буфера, который используется IP для хранения данных пакета в очереди пакетов маршрутизатора (когда данный буфер заполняется, маршрутизатор в произвольном порядке удаляет пакеты из буфера). Значение должно быть кратно 256 байт, так как буферы данных очереди пакетов по умолчанию имеют размер в 256 байт. Параметр может принимать значение от величины MTU пакета до 0xFFFFFFFF. По умолчанию значение равно 74240.

ПРИМЕЧАНИЕ

Заголовки IP-пакетов хранятся в отдельном буфере. 

? KeepAliveInterval — определяет интервал отправки пакетов проверки активности до тех пор, пока не будет получен ответ хотя бы на один пакет. Если ответный пакет получен, то отправка пакетов активности прекращается до тех пор, пока не истечет интервал времени, задаваемый DWORD-параметром KeepAliveTime. По истечении данного времени отправка пакетов активности опять начинается.

Если же после отправки количества пакетов активности, заданного в DWORD-параметре TcpMaxDataRetransmissions, ни на один из них не было получено ответа, то данное соединение считается неактивным и разрывается. По умолчанию значение параметра KeepAliveInterval равно 1000. Допустимы значения в диапазоне от 1 до 0xFFFFFFFF.

? KeepAliveTime — указывает интервал ожидания перед началом отправки пакетов активности (Keep Alive Packet), на которые удаленный компьютер должен ответить, иначе будет разорвано соединение. По умолчанию пакеты активности не отправляются, но их отправку может инициировать пользовательское приложение. По умолчанию значение данного параметра равно 7200000 (два часа).

? MTU — определяет максимальный размер передаваемого пакета данных. По умолчанию значение равно 0x000005DC.

? NumForwardPackets — указывает количество заголовков IP-пакетов, которые могут находиться в очереди пакетов маршрутизатора. Если реальное количество IP-заголовков превышает значение данного параметра, то маршрутизатор в случайном порядке начинает отбрасывать пакеты из очереди. Значение может находиться в диапазоне от 1 до 0xFFFFFFFE.

ПРИМЕЧАНИЕ

Значение этого параметра должно быть не меньше значения параметра ForwardBufferMemory, деленного на максимальный размер данных IP в сети, подключенной к этому маршрутизатору. При этом значение данного параметра должно быть не больше значения параметра ForwardBufferMemory, деленного на 256. 

? SackOpts — определяет, включена ли возможность SACK (впервые эта возможность была реализована в Windows XP). По умолчанию значение равно 0, то есть данная возможность отключена. Если же значение равно 1, то при потере пакета отправитель может передать лишь потерянный пакет, а не все пакеты сообщения, пакет которого был потерян.

? SynAttackProtect — указывает, будет ли на компьютере задействована встроенная защита от DOS-атаки SYN-переполнением. Если значение равно 0, то защита будет отключена. Например, если установлен прокси-сервер, то на клиентских машинах, как правило, нет нужды в такой защите. Если значение равно 1, то будет включена стандартная возможность защиты от SYN-атак. Если же значение параметра равно 2, то, кроме стандартной защиты от SYN-атак, используются дополнительные меры защиты: операционная система будет выполнять обращения к драйверу AFD (поддержка Windows Sockets) только в случае установки полного соединения.

? Tcp1323Opts — определяет, будут ли при сетевом соединении использоваться более широкие окна (под шириной окна понимается количество пакетов, которые может передать отправитель до получения подтверждения приема пакетов от получателя) передачи пакетов. Если значение равно 3, то будут использоваться более широкие окна, что может повысить скорость передачи для высокоскоростных сетевых соединений. По умолчанию значение параметра равно 0.

? TcpMaxDataRetransmissions — указывает количество попыток передачи данных, после которых (если они были неуспешны) соединение будет окончательно разорвано. Значение может находиться в пределах от 0 до 0xFFFFFFFF. По умолчанию оно равно 15.

? TcpMaxHalfOpen — определяет максимальное возможное количество одновременных полуоткрытых соединений, которое поддерживает TCP.

? TcpNumConnections — указывает максимальное возможное количество одновременных соединений, которое поддерживает TCP. Значение может находиться в пределах от 0 до 0xFFFFFE. По умолчанию оно равно 0xFFFFFE.

? TCPWindowSize — определяет ширину окна для приема TCP (то есть количество байт, которые могут быть переданы отправителем без приема квитанции о подтверждении получения адресатом). Значение может находиться в пределах от 0 до 65535. По умолчанию оно равно 0хFFFF (65535).

ПРИМЕЧАНИЕ

Для большей эффективности работы сети размер окна, задаваемый параметром Tcpwindowsize, должен быть кратен MSS. 

Поделитесь на страничке

Следующая глава >

Похожие главы из других книг

Стек (Stack)

Из книги Руководство по стандартной библиотеке шаблонов (STL) автора Ли Менг

Стек (Stack) Любая последовательность, поддерживающая операции back, push_back и pop_back, может использоваться для модификации stack. В частности, могут использоваться vector, list и deque.template ‹class Container›class stack { friend bool operator==(const stack‹Container›& х, const stack‹Container›& y); friend bool operator‹(const


Ошибка 0x0000002B: стек переполнен

Из книги Очень хороший самоучитель пользователя компьютером. Как самому устранить 90% неисправностей в компьютере и увеличить его возможности автора Колисниченко Денис Николаевич

Ошибка 0x0000002B: стек переполнен Ошибка переполнения стека. Встречается довольно редко. Нужно выяснить виновника «торжества» – проследите, после чего возникает данная ошибка, при каких условиях. Хотя, скорее всего, данную ошибку вы не увидите – такая она


Класс стек

Из книги Основы объектно-ориентированного программирования автора Мейер Бертран

Класс стек Этот пример даст возможность ознакомиться с практическим использованием утверждений. В предыдущей лекции была дана схема параметризованного класса "стек" в форме:class STACK [G] feature... Объявление компонент:count, empty, full, put, remove, itemendРеализация появится ниже. До


Класс стек

Из книги Серверные технологии хранения данных в среде Windows® 2000 Windows® Server 2003 автора Дайлип Наик

Класс стек Поставляемый с утверждениями класс STACK был оставлен пока в схематичной форме (STACK1). Теперь на суд предстанет полная версия, включающая реализацию.Для написания эффективного класса необходимо задать реализацию. В качестве таковой выберем реализацию стека на


3.2 Сетевой стек Windows NT

Из книги TCP/IP Архитектура, протоколы, реализация (включая IP версии 6 и IP Security) автора Фейт Сидни М

3.2 Сетевой стек Windows NT Разобраться в особенностях стека сетевого ввода-вывода Windows NT важно по нескольким причинам. Клиент Windows NT использует стек сетевого ввода-вывода для получения доступа к ресурсам, которые находятся под управлением сервера, а также для передачи данных.


3.3 Обзор протоколов

Из книги О чём не пишут в книгах по Delphi автора Григорьев А. Б.

3.3 Обзор протоколов На рис. 3.5 представлено соотношение между отдельными компонентами набора протоколов TCP/IP. Рис. 3.5. Соотношение между компонентами набора протоколов TCP/IPХотя текстовые пользовательские интерфейсы для пересылки файлов, доступа с терминала, работы с


2.1.4. Стек TCP/IP

Из книги Программирование на языке Ruby [Идеология языка, теория и практика применения] автора Фултон Хэл

2.1.4. Стек TCP/IP Физический и канальный уровни полностью реализуются сетевой картой или модемом (или другим устройством, выполняющим ту же функцию) и ее драйвером. Здесь действительно достигнута настолько полная абстракция, что программист обычно не задумывается о том,


9.2.3. Стек и рекурсия

Из книги Разработка приложений в среде Linux. Второе издание автора Джонсон Майкл К.

9.2.3. Стек и рекурсия В качестве примера изоморфизма, существующего между стеком и рекурсией, рассмотрим классическую задачу о Ханойской башне.По легенде где-то далеко на востоке существует старинный храм. Обитающие в нем монахи заняты решением единственной задачи:


17.1. Поддержка протоколов

Из книги QNX/UNIX [Анатомия параллелизма] автора Цилюрик Олег Иванович

17.1. Поддержка протоколов API-интерфейс сокетов Беркли был сконструирован в виде шлюза для нескольких протоколов. Хотя это и приводит к дополнительным сложностям в интерфейсе, это все- таки гораздо легче, чем создавать (или изучать) новый интерфейс для каждого нового


Стек

Из книги Искусство программирования на языке сценариев командной оболочки автора Купер Мендель

Стек Стек – абстрактная структура данных, устроенная по принципу LIFO «последний вошел – первый вышел» (last in, first out – LIFO). Наглядно стек может быть представлен стопкой подносов в кафетерии. Например, если кто-то кладет поднос на вершину стопки, то этот поднос будет первым,


Пример 25-9. Эмуляция структуры "СТЕК" ("первый вошел -- последний вышел")

Из книги Операционная система UNIX автора Робачевский Андрей М.

Пример 25-9. Эмуляция структуры "СТЕК" ("первый вошел -- последний вышел") #!/bin/bash# stack.sh: Эмуляция структуры "СТЕК" ("первый вошел -- последний вышел")# Подобно стеку процессора, этот "стек" сохраняет и возвращает данные по принципу#+ "первый вошел -- последний вышел".BP=100 #


Семейство протоколов TCP/IP

Из книги C++ для начинающих автора Липпман Стенли

Семейство протоколов TCP/IP В названии семейства присутствуют имена двух протоколов — TCP и IP. Это, конечно, не означает, что данными двумя протоколами исчерпывается все семейство. Более того, как будет видно, названные протоколы выполняют различные функции и используются


6.16. Стек

Из книги UNIX: разработка сетевых приложений автора Стивенс Уильям Ричард

6.16. Стек В разделе 4.5 операции инкремента и декремента были проиллюстрированы на примере реализации абстракции стека. В общем случае стек является очень полезным механизмом для сохранения текущего состояния, если в разные моменты выполнения программы одновременно


2.2. Обзор протоколов TCP/IP

Из книги Разработка ядра Linux автора Лав Роберт

2.2. Обзор протоколов TCP/IP Хотя набор протоколов и называется «TCP/IP», это семейство состоит не только из собственно протоколов TCP и IP. На рис. 2.1 представлен обзор этих протоколов. Рис. 2.1. Обзор протоколов семейства TCP/IPНа этом рисунке представлены и IPv4, и IPv6. Если рассматривать


Маленький стек фиксированного размера

Из книги автора

Маленький стек фиксированного размера Пользовательские программы могут "отдохнуть" вместе со своими тоннами статически выделяемых переменных в стеке, включая структуры большого размера и многоэлементные массивы. Такое поведение является законным в режиме задачи, так