TCP-пакеты должны передаваться и по другим причинам, кроме передачи данных. В одностороннем соединении принимающий TCP по-прежнему должен посылать пакеты для подтверждения полученных данных и перемещения окна отправки отправителя.
Сетевые протоколы
Система FreeBSD поддерживает несколько основных коммуникационных доменов, включая IPv4, IPv6, Xerox Network Systems (NS), ISO/OSI и локальный домен (известный ранее как домен UNIX). Локальный домен не включает сетевые протоколы, поскольку он работает всецело внутри одной системы.
Набор протоколов IPv4 был первым набором протоколов, реализованным в рамках сетевой архитектуры 4.2BSD. Вслед за выпуском 4.2BSD в рамках сетевой архитектуры производителями было реализовано несколько собственных семейств протоколов. Однако лишь с добавлением протоколов Xerox NS в 4.3BSD была явно продемонстрирована способность системы поддерживать множество семейств сетевых протоколов.
Хотя некоторые части интерфейса протоколов раньше не использовались и поэтому не были реализованы, изменения, потребовавшиеся для добавления второго семейства сетевых протоколов, не изменили существенным образом сетевую архитектуру. Реализация сетевых протоколов ISO/OSI, а также другие меняющиеся требования привели к дальнейшему усовершенствованию сетевой архитектуры в 4.4BSD. Два новых протокола, которые были добавлены к системе, IPv6 и IPSec, потребовали некоторых изменений из-за необходимости их одновременного сосуществования с протоколом IPv4.
Избежание небольших пакетов
Сетевой трафик демонстрирует бимодальное распределение размеров. Переносы больших объемов данных имеют тенденцию использовать для максимальной пропускной способности пакеты максимально возможного размера.
Избегание синдрома незначительного окна
Синдром незначительного окна (silly-window syndrome) является названием потенциальной проблемы в основанной на окне схеме управления потоком, в котором система отправляет несколько небольших пакетов вместо ожидания доступности окна приемлемого размера. Например, если клиентская программа сетевой регистрации имеет общий размер приемного буфера в 4096 октетов, а пользователь останавливает вывод терминала в ходе большого вывода, буфер станет почти полным, когда будут получены новые сегменты большого размера.
Обработка вывода TCP
Наконец мы готовы исследовать самую интересную часть реализации TCP: политику отправки. Как мы видели ранее, TCP-пакет содержит подтверждение и поле окна, а также данные, и один пакет может быть отправлен, если любое из этих трех полей изменится. Простая политика отправки TCP могла бы отправить значительно больше пакетов, чем нужно.
Обработка ввода TCP
Хотя обработка ввода TCP более сложна, чем обработка ввода UDP, предшествующие разделы предоставили нам основу, которая нужна для исследования реальной работы. Как всегда, входная процедура вызывается с параметрами
void tcp_input( struct mbuf *msg, int offO);
Первые несколько шагов, возможно, начинают казаться знакомыми
Еще статьи...
Страница 1 из 6
Сетевые протоколы