Исследование протоколов TELNET и FTP, страница 2

Рис. 2.2.4. Подтверждение сервером установления TCP соединения

Как видим, произошло то, что мы и ожидали. Дальше, в ответ, клиент должен выставить флаг ACK с Acknowledgment number = 1, т.е. мы ожидаем дальнейшую последовательность данных от сервера (вообще смысл этого флага таков: да, я подтвердил подключение сервера и теперь ожидаю передачу от него данных). Стоит отметить, что sequence number при этом равно 1, т.е. это та последовательность, что до этого от нас требовал сервер.

Рис. 2.2.5. Подтверждение клиентом готовности приёма данных

На рис. 2.2.6 приведено содержимое пакета с передаваемыми данными.

Рис. 2.2.6. Содержимое пакета с передаваемыми данными

Из рис. 2.2.6 можно сделать следующие выводы:

1)  При удаленном подключении было установлено соединение между портом Telnet (23) сервера и портом 3m-image-lm (1550) клиента.

2)  Во флагах видим установлены Ack и PSH. Т.е. это говорит нам о том, что, во-первых, накопленные данные из буфера необходимо протолкнуть в пользовательское приложение, а во-вторых, это говорит нам о том, что передающая сторона удачно приняла данные перед посылкой своих данных.

3)  При передаче данных используется пакетная технология передачи данных Ethernet II, относящаяся к канальному уровню. В кадр Ethernet встроен (инкапсулирован) пакет IPv4 (это ненадёжный протокол сетевого уровня, надёжность обеспечивается за счёт протокола транспортного уровня – TCP).

После того, как соединение установлено, необходимо ввести login и password. Посмотрим, как происходит передача этих данных: в открытом или закрытом виде?

Рис. 2.2.7. Передача логина

Видно, что login передается последовательно в открытом виде. Аналогично можно увидеть, что всё также происходит при передаче пароля.

При завершении сеанса обмена информацией происходит разрыв соединения. Для этого клиент отсылает пакет по протоколу  TCP серверу с установленными флагами FIN и ACK. Сервер в ответ посылает клиенту флаги ответа Ack и FIN (соединение закрыто). После получения этих флагов клиент закрывает соединение и в подтверждение отправляет серверу ACK , что соединение закрыто.

Рис. 2.2.8. Анализ трафика при разрыве соединения

На рис. 2.2.9 представлено содержимое данного пакета.

Рис. 2.2.9. Содержимое пакета при разрыве соединения

Как видно, указанные флаги действительно установлены в 1.

Протокол FTP в пассивном режиме

Выполнение данного пункта, а также последующих пунктов осуществлялось на машине со следующей конфигурацией:

Рис. 2.3.1. Получение информации о конфигурации компьютера

В данном пункте работа с FTP будет осуществляться в пассивном режиме. Это означает следующее: после того, как клиент говорит «привет» серверу на порт 21 (TCP), сервер сообщает клиенту номер TCP-порта из диапазона 1025-65535, по которому клиент может подключиться для установки соединения передачи данных. При этом порты, как у клиента, так и у сервера, оказываются произвольными. Для того, чтобы сервер знал, по какому порту обращаться к клиенту  для передачи сведений о своём порте, клиент вместе со своим сообщением о желании подключиться, передаёт информацию о своём порте, по которому будет происходить обмен командами.

Вообще, для чего мы используем в данном пункте пассивный режим. Дело в том, что в активном режиме (его описание будет в следующем пункте) работа для клиента из-за наличия файерволлов и NAT затруднена и требует дополнительных настроек. Использование пассивного режима помогает обойти эту проблему из-за наличия следующего факта: при открытии соединения клиент открывает два порта с номерами N и N+1. Порт N контактирует с сервером по порту 21, но вместо того, чтобы затем выдать команду разрешения серверу в ответ соединиться с портом данных клиента, клиент выдаёт команду PASV, которая означает, что соединение будет проходить в пассивном режиме. После этого сервер открывает произвольный порт (P>1024) и посылает команду клиенту, чтобы он подключился к указанному порту Р. Затем клиент инициирует соединение от порта N+1 к порту Р.