21.4 Вызовы socket
Вызовы
В TCB используется множество параметров. Перечисленные ниже параметры предоставляют информацию, необходимую для создания сеанса TCP:
■ Локальный IP-адрес
■ Локальный порт
■ Протокол (например, TCP или UDP)
■ Удаленный IP-адрес
■ Удаленный порт
■ Размер выходного буфера
■ Размер приемного буфера
■ Текущее состояние TCP
■ Усредненное время цикла пересылка-получение
■ Отклонение от усредненного времени цикла пересылка-получение
■ Текущее время тайм-аута повторной пересылки
■ Количество выполняемых повторных пересылок
■ Текущий размер окна отправки
■ Максимальный размер отправляемого сегмента
■ Порядковый номер последнего подтвержденного по ACK байта
■ Максимальный размер получаемого сегмента
■ Порядковый номер следующего отправляемого байта
■ Разрешение/запрещение отслеживания
21.5 Программирование работы TCP socket
Рассмотрим вызовы из программ к socket, используемые при взаимодействии с TCP. Для упрощения не будем указывать в вызовах параметры ввода/вывода и сконцентрируемся на более важных функциях и их взаимоотношениях. Детали формирования параметров описаны ниже.
21.5.1 Модель сервера TCP
Типичный сценарий для взаимодействия с сервером TCP предполагает наличие главного процесса, который большую часть времени отслеживает запросы от клиентов. Когда клиент соединяется с сервером, сервер обычно создает новый дочерний процесс, который будет реально выполнять всю работу для клиента. Сервер передает клиента этому дочернему процессу и снова возвращается к отслеживанию запросов от других клиентов.
Иногда клиенты появляются быстрее, чем их может обслужить главный процесс. Как поступить в этом случае? Стандартный механизм заключается в том, что при запуске главного процесса в TCP создается очередь, которая способна хранить несколько запросов на соединение. Запросы клиентов, которые нельзя обслужить сразу, помешаются в очередь и обрабатываются в порядке этой очереди. Предположим, что очередь заполнена до конца и поступает запрос от очередного клиента. В этом случае соединение с новым клиентом не будет создано.
21.5.2 Пассивное открытие сервера TCP
Сервер готовится к принятию запроса на соединение и пассивно ожидает обращения клиентов. При подготовке он выполняет ряд запросов:
Сервер идентифицирует тип связи (в данном случае TCP). Локальная система создает соответствующую структуру данных TCB для взаимодействия с сервером и возвращает | |
Сервер устанавливает локальный IP-адрес и порт, которыми он будет пользоваться. Вспомним, что хост может иметь несколько IP-адресов. Сервер может применять один IP- адрес или указать, что желает принимать соединения от любого локального IP-адреса. Он может запросить определенный порт или разрешить связывание запроса с одним из доступных свободных портов. | |
Сервер устанавливает длину очереди для клиентов. | |
Сервер готов принимать соединения от клиентов. Если очередь не пуста, принимается первый полученный клиентский запрос. Запрос |
Обычно применяется синхронная форма
21.5.3 Активное открытие клиента TCP
Открытый клиент активно запрашивает соединение через два запроса: