Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

АВС ЛР2 Ихсанова

.docx
Скачиваний:
0
Добавлен:
07.04.2025
Размер:
377.34 Кб
Скачать

Министерство науки и высшего образования Российской Федерации

Федеральное государственное бюджетное

образовательное учреждение высшего образования

«Уфимский университет науки и технологий»

Институт информатики, математики и робототехники

Отчёт по лабораторной работе № 2

по дисциплине «Архитектура вычислительных систем»

на тему: «Основы сетевого программирования. TCP и UDP сокеты (socket).»

Выполнил:

студент группы ПРО-332б Ихсанова Э.А.

Проверил:

преподаватель Юдинцев Б.С.

Уфа – 2024

Цель работы и задачи

1. Изучить примеры кода с реализацией сокет-сервера и клиента на основе протоколов TCP и UDP (см. файлы lab2_srv_tcp.py, lab2_srv_udp.py, lab2_client.py).

2. Добавить в TCP сокет-сервер функцию записи поступающих данных от клиента в отдельный файл, а также функцию вывода содержимого данного файла (в клиентское приложение) по команде от клиента.

3. Развернуть виртуальную машину (ВМ) VirtualBox, настроить сеть и запустить на ВМ сокет-сервер.

4. Проверить взаимодействие клиентского приложения с сокет сервером, запущенным на ВМ. Захватить пакеты данных с помощью Wireshark, использую TCP и UDP соединение. Сделать вывод: чем отличаются полученные пакеты и с чем это связано.

Ход работы

Создана виртуальная машина на базе Linux Debian x64

Рисунок 1 – Виртуальная машина

Виртуальная машина, putty, а также WinSCP были установлены и подключены для последующей работы.

Рисунок 2 – ВМ, Putty, WinSCP

Отредактирован файл lab2_srv_tcp.py, добавлена функция создания логов всех поступающих сообщений, а также возможность отправки их на клиентское приложение по вызову специальной команды.

Из нововведений функции filesd– для записи сообщений в файл, а также otprav– для отправки лог-файлов на клиентское приложение.

Код otprav:

def otprav(message):

with open("message.txt", 'a') as file: file.write(message + '\n')

Код filesd:

def filesd(conn):

with open("message.txt", 'r') as file: content = file.read() conn.send(content.encode('utf-8'))

Через клиентское приложение отправляем текстовые сообщения и эти же сообщения видим на самой виртуальной машине при открытии файла message.txt

Рисунок 3 – message.txt

Так же при отправке сообщений можно отследить эти пакеты, используя Wireshark.

Рисунок 4 – TCP пакет

Рисунок 5 – UPD-пакет

Как видно, Wireshark действительно перехватывает все пакеты с нашими сообщениями. Как TCP, так и UDP.

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

Вывод:

В ходе лабораторной работы была развернута виртуальная машина и проверено взаимодействие клиентского приложения с веб-сокетом. Так же была написана функция логирования сообщений с клиентского приложения. В самом конце перехватили отправленные пакеты с помощью программы Wireshark, определили разницу между TCP и UDP соединением.

1

Соседние файлы в предмете Архитектура вычислительных систем