diff --git a/lab3.html b/lab3.html deleted file mode 100644 index bb68453..0000000 --- a/lab3.html +++ /dev/null @@ -1,164 +0,0 @@ - - - -
- - -Цель данного занятия — ознакомить студентов с основами работы с сетевыми соединениями в Python, а также научить их анализировать сетевой трафик с помощью Wireshark. В рамках занятия студенты изучат:
-socket
и requests
.Работу следует выполнять в среде Visual Studio Code, используя установленное расширение для Python. Перед началом необходимо:
-venv
или conda
.requests
для работы с HTTP-запросами..gitignore
и README.md
.Необходимо реализовать две программы: сервер и клиент. Они должны обмениваться данными по протоколам TCP и UDP. В первом случае клиент отправляет строку, а сервер её модифицирует и возвращает обратно.
-Пример TCP-сервера:
-import socket
-
-server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-server.bind(("0.0.0.0", 10000))
-server.listen(1)
-print("TCP сервер запущен")
-
-while True:
-
- conn, addr = server.accept()
- print(f"Подключение от {addr}")
-
- data = conn.recv(1024)
- if not data:
- break
- conn.sendall(data.upper())
-
- conn.close()
-
- if data.upper() == b'EXIT':
- break
-
-
-Пример TCP-клиента:
-import socket
-
-client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-client.connect(('127.0.0.1', 10000))
-client.sendall(b'hello server')
-data = client.recv(1024)
-print(f"Ответ от сервера: {data.decode()}")
-client.close()
-
-Wireshark — это инструмент для анализа сетевого трафика, который позволяет просматривать отправленные и полученные пакеты. Важным аспектом работы с TCP является трёхстороннее рукопожатие (three-way handshake):
-Задание:
-tcp.port==10000 || udp.port==10001
.Пример UDP-сервера:
-import socket
-
-server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-server.bind(('0.0.0.0', 10001))
-print("UDP сервер запущен")
-
-while True:
- data, addr = server.recvfrom(1024)
- print(f"Сообщение от {addr}: {data.decode()}")
- server.sendto(data.upper(), addr)
-
-Пример UDP-клиента:
-import socket
-
-client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
-client.sendto(b'hello server', ('127.0.0.1', 10001))
-data, _ = client.recvfrom(1024)
-print(f"Ответ от сервера: {data.decode()}")
-client.close()
-
-Задание:
-Создайте TCP-клиент, который устанавливает соединение с vyatsu.ru
по порту 80 и отправляет HTTP-запрос:
import socket
-
-client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
-client.connect(('vyatsu.ru', 80))
-request = "GET / HTTP/1.1\r\nHost: vyatsu.ru\r\n\r\n"
-client.sendall(request.encode())
-response = client.recv(4096)
-print(response.decode())
-client.close()
-
-Задание:
-tcp.port==80
оставит интересующие нас пакеты видимыми). Определите используемые протоколы. Поясните ответ от сервера.requests
:import requests
-
-response = requests.get("http://vyatsu.ru")
-print(response.text[:500])
-
-requests
.Задание:
-https://git.vyatsu.ru/user/settings/applications
) с правами только на чтение..gitignore
и используйте переменные окружения.import requests
-
-TOKEN = "ВАШ_ТОКЕН"
-headers = {"Authorization": f"token {TOKEN}"}
-response = requests.get("https://git.vyatsu.ru/api/v1/user", headers=headers)
-print(response.json())
-
-git push
из среды Visual Studio Code.socket
и requests
.