2.3. Обмен пакетами в локальной сети

Пример сетиРассмотрим в качестве примера простейшую сеть, приведенную на рисунке.

Пусть для определенности машины имеют номера, приведенные в таблице:


машины
MAC-адрес IP-номер
1
11-22-33-44-55-61
192.168.169.1
2
11-22-33-44-55-62 192.168.169.2
3
11-22-33-44-55-63 192.168.169.3
4
11-22-33-44-55-64 192.168.169.4

Чего не хватает? Конечно, сетевой маски. Пусть она будет 255.255.255.248, т.е. сеть рассчитана на 8 машин, хотя в наличии только 4.

Включаем машины, и садимся за первую. Пусть для определенности нам нужен обмен информацией с машиной 2.

Все программы установлены и настроены. Но они еще не знают MAC-адресов соседей (понятно, что на каждой машине свой-то адрес известен).

Как же узнают MAC-адреса? Для этого используется так называемый "протокол ARP" (Address Resolution Protocol).

Наш компьютер 1, как и все остальные, хранит в памяти таблицу ARP. Таблица эта очень похожа на приведенную выше, вот только строки в ней пока пустые.

MAC-адрес IP-номер






Вначале компьютер 1 формирует ARP-пакет, т.е. порцию информации для передачи по Ethernet, следующего вида:

Куда:
От кого:
ff-ff-ff-ff-ff-ff-ff
11-22-33-44-55-61
Содержимое: Это ARP-запрос. Здесь компьютер с IP-номером 192.168.169.1. Компьютер с IP-номером 192.168.169.2, отзовись.

(Здесь и далее голубым цветом выделен Ethernet-заголовок (вспомните, это что-то вроде надписи на конверте), а зеленым - содержимое Ethernet-пакета.)

Конечно, передается не текст, как на рисунке, а специальным образом закодированная информация. Причем способ кодирования стандартизован, чтобы программы любого разработчика понимали друг друга.

По поводу адреса "куда": мы помним, что ff-ff-ff-ff-ff-ff-ff означает, что пакет предназначен всем. В результате компьютеры 2, 3 и 4 этот пакет получат, и каждый его проанализирует. 3 и 4 ничего делать не должны - IP-номер не их, а вот компьютер 2 должен ответить:

Куда:
От кого:
11-22-33-44-55-61
11-22-33-44-55-62
Содержимое: Это ARP-ответ. Здесь компьютер с IP-номером 192.168.169.2. Отвечаю компьютеру 192.168.169.1

Ответ получит только компьютер 1 - ведь в Ethernet-заголовке его MAC-адрес. Теперь он знает MAC-адрес компьютера 2 из заголовка пакета, и имеет возможность заполнить строку в таблице ARP:

MAC-адрес IP-номер
192.168.169.2 11-22-33-44-55-62




Понятно, что и у компьютера 2 будет заполнена строчка в таблице ARP - ведь он знает о компьютере 1.

И вот наступил счастливый момент: компьютеры 1 и 2 могут обмениваться информацией.

Компьютер 1 посылает данные:

Куда:
От кого:
11-22-33-44-55-62
11-22-33-44-55-61
Содержимое: Это IP-пакет. Компьютер с IP-номером 192.168.169.1 посылает данные компьютеру с IP-номером 192.168.169.2.
* * * --- сами данные --- * * *

Обратите внимание, что помимо полезной информации, внутри Ethernet-пакета содержится информация об IP-номерах отправителя и получателя. В действительности, помимо номеров, там находятся дополнительные данные, и имеет смысл говорить об IP-заголовке. Если продолжить аналогию с конвертом, можно говорить, что открыв Ethernet-конверт, мы видим вложенный в него внутренний IP-конверт с адресами отправителя и получателя, а уж внутри находится полезная информация.

А целесообразно ли это? Стоит ли так усложнять обмен данными? Однозначный ответ - "да", и об этом речь - в следующей главе.

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

arp -a

Автор не берется утверждать, что именно так смотрят таблицу arp абсолютно во всех операционных системах, но во всех, виденных автором, это так. Для MS Windows любой версии - от 95 до XP - команду можно выдать, нажав "пуск", затем выбрав "выполнить", а затем напечатав команду. Однако увидеть результаты сложнее - окно после выполнения команды обычно немедленно закрывается, поэтому лучше выдавать команду в окне DOS или из какой-нибудь оболочки вроде FAR.

Вот какой ответ получил автор на эту команду в момент написания данной главы:


Интерфейс: 192.168.169.2 on Interface 0x3000004
  Адрес IP              Физический адрес      Тип
  192.168.169.3         00-80-48-16-3a-8d     динамический

Под физическим адресом здесь понимается мак-адрес, а тип "динамический" означает, что строка как появилась, так и исчезнуть может (компьютер выключили...)

(Причины, по которым эту и некоторые другие команды приходится выдавать таким противоестественным для MS Windows способом, кроются в истории Internet. Фирма Microsoft долго не желала иметь с этой сетью ничего общего, а когда все-таки была вынуждена добавить в MS Windows протоколы TCP/IP, взяла готовые программы из UNIX и немного адаптировала их для MS Windows. Но вот сделать красивые окошки они, видимо, поленились...)

Проверить прохождение пакетов по сети можно командой ping. Ее название происходит от названия популярной игры. Выглядит команда так:

ping машина

На указанную машину посылается некоторое количество тестовых пакетов, а она посылает пакеты в ответ. Сколько будет пакетов, и каковы паузы между ними - зависит от реализации.


Смотреть
видеоролик