Начните захват пакетов в приложении Wireshark и затем сделайте так, чтобы ваш хост отправил и получил несколько UDP-пакетов (например, с помощью обращений DNS). Выберите один из UDP-пакетов и разверните поля UDP в окне деталей заголовка пакета. Ответьте на вопросы ниже, представив соответствующие скрины программы Wireshark.
- Выберите один UDP-пакет. По этому пакету определите, сколько полей содержит UDP-заголовок.
- Определите длину (в байтах) для каждого поля UDP-заголовка, обращаясь к отображаемой
информации о содержимом полей в данном пакете.
- Значение в поле Length (Длина) – это длина чего?
- Какое максимальное количество байт может быть включено в полезную нагрузку UDP-пакета?
- Чему равно максимально возможное значение номера порта отправителя?
- Какой номер протокола для протокола UDP? Дайте ответ и для шестнадцатеричной и
десятеричной системы. Чтобы ответить на этот вопрос, вам необходимо заглянуть в поле
Протокол в IP-дейтаграмме, содержащей UDP-сегмент.
- Проверьте UDP-пакет и ответный UDP-пакет, отправляемый вашим хостом. Определите
отношение между номерами портов в двух пакетах.
- Установите сервер и клиент FileZilla
- Создайте FTP сервер. Например, по адресу 127.0.0.1 и портом 21. Укажите директорию по умолчанию для работы с файлами.
- Создайте пользователя TestUser. Для простоты и удобства можете отключить использование сертификатов.
- Запустите FileZilla клиента (GUI) и попробуйте поработать с файлами (создать папки, добавить/удалить файлы).
Приложите скриншоты.
todo
Создайте консольное приложение FTP клиента для работы с файлами по FTP. Приложение может обращаться к FTP серверу, созданному в предыдущем задании, либо к какому-либо другому серверу (есть много публичных ftp-серверов для тестирования, вот один из них).
Приложение должно:
- Получать список всех директорий и файлов сервера и выводить его на консоль
- Загружать новый файл на сервер
- Загружать файл с сервера и сохранять его локально
Бонус: Не используйте готовые библиотеки для работы с FTP (например, ftplib для Python), а реализуйте решение на сокетах (+3 балла).
todo
Реализуйте приложение FTP клиента с графическим интерфейсом. НЕ используйте C#.
Возможный интерфейс:
В приложении должна быть поддержана следующая функциональность:
- Выбор сервера с указанием порта, логин и пароль пользователя и возможность подключиться к серверу. При подключении на экран выводится список всех доступных файлов и директорий
- Поддержаны CRUD операции для работы с файлами. Имя файла можно задавать из интерфейса. При создании нового файла или обновлении старого должно открываться окно, в котором можно редактировать содержимое файла. При команде Retrieve содержимое файла можно выводить в главном окне.
todo
Реализуйте свой FTP сервер, который работает поверх TCP сокетов. Вы можете использовать FTP клиента, реализованного на прошлом этапе, для тестирования своего сервера. Сервер должен реализовать возможность авторизации (с указанием логина/пароля) и поддерживать команды:
- CWD
- PWD
- PORT
- NLST
- RETR
- STOR
- QUIT
todo