Go to file
2026-05-08 02:20:39 +03:00
.idea final 2026-05-08 02:20:39 +03:00
.env final 2026-05-08 02:20:39 +03:00
.gitignore whiteshark and check TPC and UDP 2026-04-27 22:19:28 +03:00
gitea_api.py final 2026-05-08 02:20:39 +03:00
http_requests.py https 2026-04-27 22:32:52 +03:00
http_socket.py final 2026-05-08 02:20:39 +03:00
README.md final 2026-05-08 02:20:39 +03:00
tcp_client.py final 2026-05-08 02:20:39 +03:00
tcp_server.py final 2026-05-08 02:20:39 +03:00
udp_client.py whiteshark and check TPC and UDP 2026-04-27 22:19:28 +03:00
udp_server.py whiteshark and check TPC and UDP 2026-04-27 22:19:28 +03:00

Работа с сетевыми соединениями в Python

Описание проекта

Практическая работа по изучению основ работы с сетевыми соединениями в Python.
Реализованы клиент-серверные приложения по протоколам TCP и UDP, выполнен анализ сетевого трафика в Wireshark, проведено сравнение HTTP-запросов через socket и requests, а также выполнено взаимодействие с API Gitea.


Используемые протоколы и методы

Протокол/метод Назначение
TCP Надёжная передача данных с установкой соединения
UDP Быстрая передача данных без установки соединения
HTTP (socket) Низкоуровневая отправка HTTP-запросов
HTTP (requests) Высокоуровневая работа с HTTP-запросами
Gitea API Взаимодействие с Git-сервером через REST API
Wireshark Анализ сетевого трафика
  1. TCP vs UDP

    • TCP надёжный, но медленный. Используется для веб-сайтов, почты, файлов.
    • UDP быстрый, но может терять данные. Используется для видео, игр, звонков.
  2. socket vs requests

    • requests удобнее для реальной разработки: автоматические заголовки, редиректы, меньше кода.
    • socket подходит для низкоуровневого контроля и изучения протокола HTTP.
  3. Анализ Wireshark

    • Зафиксировано трёхстороннее рукопожатие TCP (SYN, SYN-ACK, ACK)
    • Зафиксирована передача данных с флагом PSH, ACK
    • Зафиксировано завершение соединения (FIN, ACK)
    • В UDP подтверждено отсутствие установки соединения
  4. API Gitea

    • Токены должны храниться в .env и не попадать в Git
    • Для чтения нужны права read:user
    • Для создания репозитория нужны права write:repository