
АВС ЛР2 Ихсанова
.docx
Министерство науки и высшего образования Российской Федерации
Федеральное государственное бюджетное
образовательное учреждение высшего образования
«Уфимский университет науки и технологий»
Институт информатики, математики и робототехники
Отчёт по лабораторной работе № 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 соединением.