Интерфейсный уровень и его представление

Задачи интерфейсного уровня:

  1. Подключение среды передачи данных к устройству (собственно интерфейс)

    • Как отличить данные от не-данных (или начало от середины)?
    • Метаинформация
  2. Дисциплина использования среды

    • Очерёдность, коллизии, приоритеты и т. п.
    • Защита данных и авторизация абонента

Инкапсуляция на физическом уровне (то, чего на интерфейсном уровне не видно):

Ethernet:

Пример принципиально иной дисциплины доступа: Token Ring

Фреймы (пакеты интерфейсного уровня)

Сеть с разделением пакетов (окончательно)

Состав фрейма:

Ethernet

Общая среда ⇒

⇒ Нет гарантированного времени доставки

Linux

Настройка внутренней сети в VBox

LecturesCMC/LinuxNetwork2025/02_DataLink/VB_Intnet.png

Проверка работоспособности

Минимальный размер фрейма — 64 октета (включая 4 октета контрольной суммы, которая формируется / проверяется аппаратно и не выводится).

Если вместо -XX написать -X, увидим только payload — «Hi».

Если запустить tcpdump с добавочным ключом -p, то:

Протоколы интерфейсного уровня

Вообще-то Тысячи их

Wi-Fi

Например, IEEE 802.11g

WIFI в Linux

(На всякий случай — в конце лекции) Взято отсюда. См. также

TUN/TAP

Отступление о screen: как запустить два шелла в одной консоли:

tmux

Виртуальный интерфейс tap.

Вручную сложнее всего вызвать этот самый ioctl. Вот программа tapdump.py (более полный вариант см. в прошлогодней лекции):

   1 import fcntl
   2 import struct
   3 
   4 fd = open("/dev/net/tun", "rb")
   5 fcntl.ioctl(fd, 0x400454ca, struct.pack("16sH22s", b"tap0", 0x2, b''))
   6 while s := fd.read(128):
   7     print(s.decode(), end="")

Ежели совсем руками, можно воспользоваться утилитой ioctl (в составе дистрибутивов ALT она пропатчена специально для нас!)

Д/З

Новости относительно образа

Задание 2

Воспроизвести пример из лекции с двумя виртуалками, объединёнными внутренней сетью

LecturesCMC/LinuxNetwork2026/02_DataLink (последним исправлял пользователь FrBrGeorge 2026-02-22 22:33:37)