Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ПОКС.doc
Скачиваний:
13
Добавлен:
04.12.2018
Размер:
536.58 Кб
Скачать

6. Протокол ftp, команды протокола

FTP (RFC-959) обеспечивает файловый обмен между удаленными пользователями. Протокол FTP формировался многие годы. Первые реализации в МТИ относятся к 1971. (RFC 114 и 141). RFC 172 рассматривает протокол, ориентированный на пользователя, и предназначенный для передачи файлов между ЭВМ. Позднее в документах RFC 265 и RFC 281 протокол был усовершенствован. Заметной переделке протокол подвергся в 1973, и окончательный вид он обрел в 1985 году. Таким образом, данный протокол является одним из старейших.

Для реализации обмена между двумя персональными ЭВМ в пределах сети (программные пакеты PCTCP, и т.д.) можно резидентно загрузить FTPSRV или другую эквивалентную программу. Также как и в случае TELNET необходима идентификация, но многие депозитарии допускают анонимный вход (имя пользователя ANONYMOUS, RFC-1635), который не требует слова пропуска (пароля) или допускает ввод вашего почтового адреса вместо него

Работа FTP на пользовательском уровне содержит несколько этапов:

1. Идентификация (ввод имени-идентификатора и пароля).

2. Выбор каталога.

3. Определение режима обмена (поблочный, поточный, ASCII или двоичный).

4. Выполнение команд обмена (get, mget, dir, mdel, mput или put).

5. Завершение процедуры (quit или close).

В рамках процедуры FTP доступны следующие команды (приведенный перечень команд является неполным):! [ команда ] Исполняется команда интерпретатора shell вашей ЭВМ (UNIX). Если имя команды явно не введено, система переходит в интерактивный режим shell.

$ имя-макро [ аргументы ] Выполняется макро, имя которого введено, аргументы используются этим макро.

account [ пароль ] Позволяет ввести пароль, необходимый для доступа в удаленный сервер.

append имя_местного_файла

[ имя_удаленного_файла ] Добавить местный файл к файлу на удаленном сервере.

Bye Завершает FTP-сессию.

case Переключает регистр символов, которыми записаны имена файлов на удаленной ЭВМ, в процессе выполнения команды MGET. Если case включен (по умолчанию выключен), все прописные буквы в именах файлов на удаленной ЭВМ, меняются при переносе в вашу ЭВМ на строчные.

close Завершает FTP-сессию и возвращает систему в интерактивный командный режим. Все описанные ранее макро стираются.

debug [ debug-value ] Включает/выключает режим отладки. Значение debug-value определяет отладочный уровень. Если отладка включена, FTP отображает на экране каждую команду,

8,9 Схема сокетных функций Клиента по протоколу udp/tcp

Протокол UDP (User Datagram Protocol, RFC-768) является одним из основных протоколов, расположенных непосредственно над IP. Он предоставляет прикладным процессам транспортные услуги, немногим отличающиеся от услуг протокола IP. Протокол UDP обеспечивает доставку дейтограмм, но не требует подтверждения их получения. Протокол UDP не требует соединения с удаленным модулем UDP ("бессвязный" протокол). К заголовку IP-пакета udp добавляет поля порт отправителя и порт получателя, которые обеспечивают мультиплексирование информации между различными прикладными процессами, а также поля длина udp-дейтограммы и контрольная сумма, позволяющие поддерживать целостность данных. Таким образом, если на уровне ip для определения места доставки пакета используется адрес, на уровне UDP - номер порта.

Функции клиента:

1.Создание сокета

2. Привязка сокета к ip адресу и порту сервера. Отправка заявки на установление соединения connect()

3. Передача информации send() и write()

4. Ожидание получения информации, чтение информации read()

5. Окончание соединения close()

10, 11 Схема сокетных функций Сервера по протоколу UDP/TCP

1. Создание сервера socket()

2. Привязка сокета к IP адресу и порту сервера bind()

3. Перевод сокета в пассивное состояние и создание очереди соединения listen()

4. Установка соединения Accept()

5. Получение информации, чтение информации read() receive()

6. Обработка информации

7. Отправление ответа Write() send()

8. Окончание соединения close()

12. Блок-схема Сервера на сокетных функциях.

Окончание соединения

close()

13. Блок-схема Клиента на сокетных функциях.

14,15. Сокетные функции Клиента(Сервера) в объектном Паскале – в Делфи.

Функции winsock:

int WSAStartup (WORD wVersionRequested, LPWSADATA lpWSAData);

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

int WSACleanup;

"деинициализирует" WSAStartup.

SOCKET socket (int af, int type, int protocol);

создает сокет. Второй параметр - вид данных, третий - вид протокола. Порт и адрес задается в функции bind (сервер) или connect (клиент).

int closesocket (SOCKET s);

закрывает сокет.

int bind (SOCKET s, const struct sockaddr FAR* name, int namelen);

ассоциирует адрес с сокетом. Структура адреса содержит порт (необходимо привести функцией htons) и адрес (для сервера обычно указывается INADDR_ANY - любой).

int connect (SOCKET s, const struct sockaddr FAR* name, int namelen);

функция соединения для клиента. Структура адреса содержит порт (необходимо привести функцией htons) и адрес (для клиента необходимо привести из имени или спецификации ip4 - xxx.xxx.xxx.xxx).

int WSAAsyncSelect (SOCKET s, HWND hWnd, unsigned int wMsg, long lEvent);

связывает сокет с получением сообщений окна. Обычно используется для сервера. При вызове этой функции, сообщения о соединении, чтении/записи данных в сокет и закрытии сокета можно обрабатывать в функции обработки сообщений от окна.

int select (int nfds, fd_set FAR * readfds, fd_set FAR * writefds, fd_set FAR * exceptfds, const struct timeval FAR * timeout);

контроль состояния сокета. Используется для неблокирующих вызовов, чтобы получить состояние сокета на данный момент, с использованием макросов FD_.

int WSAEventSelect (SOCKET s, WSAEVENT hEventObject, long lNetworkEvents);

связывает сокет с получением сообщений операционной системы. Можно проинициализировать необходимый Event (см. документацию) и обрабатывать сообщения FD_ без использования окна m$ windows.

int send (SOCKET s, const char FAR * buf, int len, int flags);

отправка данных. Помещает в очередь сокета s, кусок данных из buf, длиной len. Последний параметр отвечает за вид передачи сообщения. Может быть проигнорирован.

int recv (SOCKET s, char FAR* buf, int len, int flags);

получение данных.

Кстати, и в блокирующих и в неблокирующих сокетах, используется так или иначе функция [...]select. Только опрос о состоянии очереди сокета мы производим сами (неблокирующий режим) или это делает операционная система (блокирующий).