Skip to content
This repository was archived by the owner on Sep 9, 2021. It is now read-only.

Conversation

dashuleka01
Copy link

Лабораторная работа №2 client

Лабораторная работа написала на языке C# с использованием .Net Core 3.1.0. Запускается на Windows.

Инструкция по использованию

Для запуска программы необходимо ввести команду dotnet run NtpServer в командной строке.

Описание используемого протокола

Программа реализует TFTP-клиент, скачивающий и загружающий файлы на TFTP-сервер. В качестве TFTP-сервера была взята программа Tftpd64.

Клиент посылает серверу запрос на скачивание файла. Если запрошенный файл существует, сервер сразу же начинает передавать DATA-пакеты, в противном случае посылается сообщение об ошибке.

При запросе на загрузку файла на сервер, клиент сначала дожидается ACK от сервера с нулевым номером подтверждения и затем начинает передавать DATA-пакеты.

Каждый DATA-пакет должен быть подтвержден ACK-пакетом с номера данного DATA-пакета.

Структура TFTP-пакетов

Типы пакетов в TFTP:

opcode operation
1 Read request (RRQ)
2 Write request (WRQ)
3 Data (DATA)
4 Acknowledgment (ACK)
5 Error (ERROR)

RRQ/WRQ пакеты:

2 bytes string 1 byte string 1 byte
Opcode Filename 0 Mode 0

Data пакеты:

2 bytes 2 bytes n bytes
Opcode Block # Data

Поле Data может от 0 до 512 байт. Если пакет = 512 байт, то данный пакет не является последним.

ACK пакеты:

2 bytes 2 bytes
Opcode Block #

ERROR пакеты:

2 bytes 2 bytes string 1 byte
Opcode ErrorCode ErrMsg 0

Error Codes:

Value Meaning
0 Not defined, see error message (if any)
1 File not found.
2 Access violation.
3 Disk full or allocation exceeded.
4 Illegal TFTP operation.
5 Unknown transfer ID.
6 File already exists.
7 No such user.

TFTP-пакеты инкапсулируются в UDP.

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
Вторая лабораторная Реальные UDP протоколы Зачтено
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants