Files

9.8 KiB
Raw Permalink Blame History

🧪 Практикум с Telnet: Шаг за шагом в мир протоколов

Эти упражнения идеально дополнят вашу лекцию о верхних уровнях модели OSI, предоставляя студентам бесценный опыт реального взаимодействия с серверами.

⚙️ Подготовка перед началом

Для выполнения упражнений обязательно следует установить telnet-клиент. На Linux и macOS он часто доступен по умолчанию, а на Windows его можно активировать через «Включение или отключение компонентов Windows» или установить удобную альтернативу — утилиту netcat (nc). Также стоит предупредить студентов, что многие современные серверы могут не отвечать на текстовые команды из-за требований безопасности, поэтому для всех упражнений лучше использовать специальные тестовые хосты.

A. 🎢 Путешествие глубже в мир HTTP

Эти упражнения длятся от 5 до 15 минут и направлены на углублённое понимание прикладного протокола HTTP.

1. Отправка POST-запроса и анализ ответа

  • Задача: Студенты должны вручную отправить на сервер данные формы — например, простой логин и пароль.
  • Команды:
    telnet httpbin.org 80
    
    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, чтобы «выдать» себя за другой браузер или поискового робота.
  • Команды:
    telnet example.com 80
    
    HEAD / HTTP/1.1
    Host: example.com
    User-Agent: MyCustomBot/1.0
    
    
  • Объяснение: Это отличный способ показать, что вся информация для сервера передаётся в открытую. Студенты увидят, что ответ на HEAD не содержит тела, а изменение User-Agent демонстрирует, как легко подделать любой HTTP-клиент.

3. Исследование кодов ответа

  • Задача: Студенты должны намеренно вызвать разные коды ошибок, чтобы эмпирически изучить их значение.
  • Команды:
    telnet example.com 80
    
    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 минут.
  • Команды:
    telnet ftp.gnu.org 21
    
    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, который бесплатно предоставляет тестовое окружение.
  • Команды:
    telnet sandbox.smtp.mailtrap.io 25
    
    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.
  • Команды:
    telnet pop3.example.com 110
    
    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):
    #!/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
    

Надеюсь, этот набор инструментов и идей поможет сделать вашу лекцию по-настоящему увлекательной и запоминающейся. Если захотите обсудить детали или адаптировать упражнения под конкретную аудиторию, я всегда рядом.