TCP-IP крупным планом

         

С.1 Функционирование программы



Рисунок С.1 Функционирование программы sock как интерактивного клиента.


Мы должны указать имя хоста сервера и имя сервиса, к которому необходимо подсоединиться. Хост может быть указан в виде IP адреса, а сервис может быть указан в виде целого номера порта. Подсоединение к стандартному эхо серверу (глава 1, раздел "Стандартные простые сервисы"), от sun к bsdi, отражает эхом все, что введено:

sun % sock bsdi echo a test line вводим строку a test line эхо сервер вернул копию ^D вводим символ конца файла, чтобы прекратить работу программы

  • Интерактивный сервер: указана опция -s. Необходимо указать имя сервиса (или номер порта):
  • sun % sock s 5555 работает как сервер, слушает порт 5555

    Программа ожидает соединения от клиента и затем копирует стандартный ввод клиенту и копирует все, что получено от клиента, на стандартный вывод. В командной строке перед номером порта может стоять Internet адрес, чтобы указать, с какого локального интерфейса будет принято соединение:

    sun % sock -s 140.252.13.33 5555 принимает соединения только по Ethernet

    По умолчанию запрос на соединение принимается с любого локального интерфейса.

  • Клиент источник: указана опция -i. По умолчанию, буфер размером 1024 байта записывается в сеть 1024 раза. С помощью опций -n и -w можно изменить эти значения. Например, команда

    sun % sock -i -n12 -w4096 bsdi discard

    запишет 12 буферов, каждый из которых по 4096 байт, на discard сервис хоста bsdi.

  • Сервер приемник: указаны опции -i и -s. Данные читаются из сети и отбрасываются.


  • Несмотря на то, что в этих примерах использовался TCP (по умолчанию), с помощью опции -u можно использовать UDP.

    Существует большое количество опций, что позволяет полностью контролировать функционирование программы. С помощью этих опций можно реализовать практически все, что было показано в тексте.

    -b n

    Воспринимает n как номер локального порта клиента. (По умолчанию используется динамический номер порта, назначенный системой клиента.)

    -c

    Конвертирует символы новой строки, которые прочитаны из стандартного ввода, в символы возврата каретки и пропуска строки. Когда осуществляется чтение из сети, конвертирует последовательность <возврат каретки, пропуск строки> в единственный символ новой строки. Большинство Internet приложений работают с NVT ASCII (глава 26, раздел "Протокол Telnet"), где возврат каретки и пропуск строки используются для завершения каждой строки.

    -f a.b.c.d.p

    Указывает удаленный IP адрес (a.b.c.d) и удаленный номер порта (p) для конечной точки UDP (глава 11, раздел "Сервер UDP").

    -h

    Переводит TCP соединение в наполовину закрытое состояние (глава 18, раздел "Наполовину закрытый TCP"). То есть, соединение не разрывается при появлении в стандартном вводе символа конца файла. Вместо этого, соединение наполовину закрывается, при этом чтение из сети продолжается до тех пор, пока сам хост не закроет соединение.

    -i

    Клиент источник или сервер приемник. Либо пишет данные в сеть (по умолчанию), либо, если используется с опцией -s, читает данные из сети. Опция -n указывает количество буферов, которые необходимо записать (или считать), опция -w указывает размер каждой записи, а опция -r указывает размер каждого чтения.

    -n n

    Когда используется с опцией -i, n указывает количество буферов, которые необходимо считать или записать. По умолчанию n равно 1024.

    -p n

    Указывает количество секунд, в течение которых необходимо выдержать паузу, перед каждым чтением или записью. Это может быть использовано в случае клиента источника (-i) или сервера приемника (-is), чтобы вставить задержку между каждым чтением или записью в сеть. Также существует опция -P, которая позволяет вставить паузу перед первым чтением или записью.

    -q n

    Указывает размер очереди ожидания соединения для TCP сервера: разрешенное количество соединений, которое TCP может поставить в очередь для приложения (рисунок 18.23). По умолчанию равно 5.

    -r n

    Когда используется с опциями -is, n определяет размер каждого чтения из сети. По умолчанию 1024 байта за одно чтение.

    -s

    Функционирует как сервер, а не как клиент.

    -u

    Использует UDP вместо TCP.

    -v

    Отладочный режим. Печатает дополнительные подробности (как, например, динамически назначаемые номера портов клиента и сервера) в стандартный вывод ошибок.

    -w n

    Когда используется с опцией -i, определяет размер каждой записи в сеть. По умолчанию 1024 байта за запись.

    -A

    Включает опцию сокета SO_REUSEADDR. В случае TCP это позволяет процессу назначить самому себе номер порта, который является частью соединения, находящегося в состоянии ожидания 2MSL. В случае UDP, если система поддерживает групповую адресацию, это позволяет нескольким процессам использовать один и тот же локальный порт для получения широковещательных или групповых датаграмм.

    -B

    Включает опцию сокета SO_BROADCAST, что позволяет UDP датаграммам быть отправленным на широковещательный IP адрес.

    -D

    Включает опцию сокета SO_DEBUG. При этом выводится дополнительная отладочная информация, которую содержит ядро для этого TCP соединения (приложение A, раздел "Опция отладки сокета"). Эта информация может быть получена позже, с помощью запуска программы trpt(8).

    -E

    Включает опцию сокета IP_RECVDSTADDR, если она поддерживается реализацией (глава 11, раздел "Сервер UDP"). Это предназначено для UDP серверов, чтобы печатать IP адреса назначения полученных UDP датаграмм.

    -F

    Будет использоваться конкурентный TCP сервер. В этом случае сервер создает новый процесс с использованием программы fork для каждого соединения клиента.

    -K

    Включает опцию TCP сокета SO_KEEPALIVE (глава 23).

    -L n

    Устанавливает время задержки (опция сокета SO_LINGER) для конечной точки TCP в значение n. Время задержки равное 0 означает, что когда соединение закрывается, любые данные, оставшиеся в очереди для отправки, отбрасываются, а удаленному хосту посылается сброс (глава 18, раздел "Сегменты сброса (Reset)"). Положительное время задержки - это время (в сотых долях секунды), в течение которого соединение не закрывается, пока все данные не будут отправлены и подтверждены. Если, после закрытия сетевого соединения, не все данные были отправлены и подтверждены в момент истечения этого таймера, закрытие вернет ошибочный код возврата.

    -N

    Устанавливает опцию сокета TCP_NODELAY, чтобы выключить алгоритм Нагла (глава 19, раздел "Алгоритм Нагла").

    -O n

    Сообщает TCP серверу количество секунд, в течение которых тот должен выдержать паузу, перед приемом первого соединения от клиента.

    -P n

    Указывает количество секунд, в течение которых необходимо выдержать паузу, перед тем как будет осуществлено первое чтение или запись в сеть. Это может быть использовано с сервером приемником (-is), чтобы осуществить задержку после приема запроса на соединение от клиента, однако перед тем, как осуществить первое чтение из сети. При использовании с клиентом источником или сервером приемником (-i), эта величина определяет промежуток времени между установлением соединения и перед первой записью в сеть. Опция -p определяет паузу между каждыми соседними чтениями или записями.

    -Q n

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

    -R n

    Устанавливает приемный буфер сокета (опция сокета SO_RCVBUF) в значение n. Это может непосредственно повлиять на размер приемного окна, объявляемого TCP. В случае UDP определяет максимальный размер UDP датаграммы, которая может быть принята.

    -S n

    Устанавливает отправляющий буфер сокета (опция сокета SO_SNDBUF) в значение n. В случае UDP определяет максимальный размер UDP датаграммы, которая может быть отправлена.

    -U n

    Переводит TCP в режим срочности после осуществления записи номер n в сеть. Для входа в режим срочности записывается один байт данных (глава 20, раздел "Режим срочности (Urgent Mode)").

    Назад

    Компания | Услуги | Для клиентов | Библиотека | Галерея | Cофт | Линки

    На главную



    Содержание раздела