Files

138 lines
9.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
### 🧪 Практикум с Telnet: Шаг за шагом в мир протоколов
Эти упражнения идеально дополнят вашу лекцию о верхних уровнях модели OSI, предоставляя студентам бесценный опыт реального взаимодействия с серверами.
#### ⚙️ Подготовка перед началом
Для выполнения упражнений обязательно следует установить telnet-клиент. На Linux и macOS он часто доступен по умолчанию, а на Windows его можно активировать через «Включение или отключение компонентов Windows» или установить удобную альтернативу — утилиту `netcat` (`nc`). Также стоит предупредить студентов, что многие современные серверы могут не отвечать на текстовые команды из-за требований безопасности, поэтому для всех упражнений лучше использовать специальные тестовые хосты.
### A. 🎢 Путешествие глубже в мир HTTP
Эти упражнения длятся от 5 до 15 минут и направлены на углублённое понимание прикладного протокола HTTP.
#### **1. Отправка POST-запроса и анализ ответа**
* **Задача:** Студенты должны вручную отправить на сервер данные формы — например, простой логин и пароль.
* **Команды:**
```bash
telnet httpbin.org 80
```
```http
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/x-www-form-urlencoded
Content-Length: 18
name=Ivan&city=Moscow
```
* **Объяснение:** Здесь студенты видят метод `POST` вместо `GET`, учатся правильно рассчитывать заголовок `Content-Length` (что критически важно для сервера) и наблюдают, как сервер возвращает отправленные данные обратно в теле ответа.
#### **2. Манипуляции с заголовками**
* **Задача:** С помощью команды `HEAD` получить только служебную информацию о ресурсе и изменить заголовок `User-Agent`, чтобы «выдать» себя за другой браузер или поискового робота.
* **Команды:**
```bash
telnet example.com 80
```
```http
HEAD / HTTP/1.1
Host: example.com
User-Agent: MyCustomBot/1.0
```
* **Объяснение:** Это отличный способ показать, что вся информация для сервера передаётся в открытую. Студенты увидят, что ответ на `HEAD` не содержит тела, а изменение `User-Agent` демонстрирует, как легко подделать любой HTTP-клиент.
#### **3. Исследование кодов ответа**
* **Задача:** Студенты должны намеренно вызвать разные коды ошибок, чтобы эмпирически изучить их значение.
* **Команды:**
```bash
telnet example.com 80
```
```http
GET /non-existent-page-that-404 HTTP/1.1
Host: example.com
```
* **Объяснение:** В ответ на запрос несуществующей страницы, сервер вернёт ошибку `404 Not Found`. Если студенты попробуют отправить некорректный запрос, например: `GIBBERISH / HTTP/1.1`, то сервер ответит `400 Bad Request`. Это закрепляет понимание семантики статус-кодов.
#### **4. Изучение альтернативных протоколов: работа с FTP**
* **Задача:** Подключиться к публичному FTP-серверу и вручную навигироваться по его файловой системе. Это упражнение может занять 10-15 минут.
* **Команды:**
```bash
telnet ftp.gnu.org 21
```
```text
USER anonymous
PASS guest@
LIST
CWD /gnu
PWD
QUIT
```
* **Объяснение:** FTP (`File Transfer Protocol`) — ещё один классический протокол с текстовыми командами. Это упражнение показывает главную особенность FTP: он использует два TCP-соединения — порт 21 для команд и порт 20 для данных. Студенты воочию увидят, как работают команды `USER`, `PASS`, `LIST` (список файлов) и `CWD` (смена директории).
### B. 💌 Электронная почта на ладони (SMTP и POP3)
Эти два упражнения служат «мостиком» между протоколами и занимают порядка 20–25 минут.
#### **5. Ручная отправка письма (SMTP)**
* **Задача:** Вручную, шаг за шагом, отправить настоящее электронное письмо. Для этого лучше использовать тестовый SMTP-сервер, например, `sandbox.smtp.mailtrap.io`, который бесплатно предоставляет тестовое окружение.
* **Команды:**
```bash
telnet sandbox.smtp.mailtrap.io 25
```
```text
EHLO myclient.local
MAIL FROM:<sender@example.com>
RCPT TO:<recipient@example.com>
DATA
Subject: Telnet is awesome!
Hello from the depths of the OSI model!
.
QUIT
```
* **Объяснение:** Это, пожалуй, самое яркое упражнение. Студенты не просто читают про протокол `SMTP` (`Simple Mail Transfer Protocol`), а сами выступают в роли почтового клиента. Особый акцент стоит сделать на команде `DATA` и точке в отдельной строке — это маркер конца письма.
#### **6. Забор почты из ящика (POP3)**
* **Задача:** «Забрать» только что отправленное письмо с сервера. Для этого потребуется любой публичный POP3-сервер или можно использовать тот же Mailtrap.
* **Команды:**
```bash
telnet pop3.example.com 110
```
```text
USER your_username
PASS your_password
STAT
LIST
RETR 1
DELE 1
QUIT
```
* **Объяснение:** POP3 (`Post Office Protocol`) — это «протокол почтового отделения». Команда `RETR 1` (retrieve) скачивает первое письмо, а `DELE 1` помечает его на удаление. Это идеально демонстрирует стандартную модель работы POP3, где письма забираются с сервера на локальный компьютер.
#### 💡 **Межпротокольные связи**
Завершая этот блок, самое время подчеркнуть один важный момент, который великолепно демонстрирует красоту сетевого взаимодействия: чтобы получить письмо на одном компьютере, мы используем `SMTP` (для отправки) и `POP3`/`IMAP` (для получения) — два совершенно разных протокола прикладного уровня. Они работают независимо друг от друга, и каждый решает свою задачу, опираясь на один и тот же транспортный протокол `TCP`. Это нагляднейший пример того, как уровни модели OSI (в данном случае прикладной) взаимодействуют и разделяют ответственность.
### C. 🚀 Автоматизация и Вызов для Продвинутых
Это упражнение повышенной сложности на 15–20 минут для самых сильных студентов.
#### **7. Автоматизация с Netcat и сравнение с HTTPS**
* **Задача:** С помощью скрипта написать простейший веб-сервер на `netcat`, а затем сравнить трафик `HTTP` и `HTTPS` (порт 443) в `Wireshark`.
* **Пример скрипта сервера (server.sh):**
```bash
#!/bin/bash
while true; do
echo -e "HTTP/1.1 200 OK\n\n Hello, you reached my custom server!" | nc -l -p 8080 -q 1
done
```
Надеюсь, этот набор инструментов и идей поможет сделать вашу лекцию по-настоящему увлекательной и запоминающейся. Если захотите обсудить детали или адаптировать упражнения под конкретную аудиторию, я всегда рядом.