-2

Допустим, я и мой друг соединяем наши компьютеры кабелем локальной сети.

Я пинг своего друга с его IP-адресом.

Как это работает?

Поскольку мы находимся в одной сети, нам даже не нужны IP-адреса?

Разве IP-адресация не имеет значения только в случае межсетевого взаимодействия?

Что команда ping сделает со своим IP-адресом? Как он в конечном итоге найдет его физический адрес (адрес NIC)? (здесь нет ARP, потому что для этого потребуется маршрутизатор на границе сети, что здесь не применимо).

Я где то не прав?

4 ответа4

4

Вы спрашиваете о сетевой модели OSI, даже если вы этого не понимаете, и хотя модель OSI не совсем относится к TCP/IP.

Принцип работы компьютерной сети состоит из нескольких слоев. Уровни в модели OSI:

  1. Физический (например, медь, волокно и т.д.)
  2. Канал передачи данных (например, Ethernet, ppp, fddi и т.д.)
  3. Сеть (например, IPv4, IPv6, IPX и т.д.)
  4. Транспорт (например, TCP, UDP и т.д.)
  5. Сеанс (используется в OSI, но большинство вещей здесь обрабатываются уровнем 4 в TCP/IP)
  6. Презентация (например, ASCII против EBCDIC или MIME)
  7. Приложение (например, HTTP, SMTP, DNS и т.д.)

Чтобы два компьютера могли общаться по сети, они должны использовать один и тот же протокол сетевого уровня. Это не обязательно должен быть IPv4 или IPv6, это может быть IPX или X.25. Но это должно быть что-то.

Мы просто примем IPv4, так как это наиболее распространенный вариант.

Оба компьютера будут нуждаться в IP-адресе. В этот день и возраст, скорее всего, им будет назначен один из серверов DHCP или они будут динамически назначаться с помощью ZeroConf. Таким образом, они будут иметь IP-адреса.

Что происходит, когда вы пингуете?

Сначала компьютер, инициирующий сеанс, отправит пакет ARP широковещательного уровня 2. ARP - это протокол разрешения адресов. ARP используется для обнаружения адреса уровня 2, связанного с конкретным адресом уровня 3. Широковещательная рассылка - это специальный пакет, который инструктирует сетевой коммутатор отправлять пакет на все физические порты с подключенным каналом (т. Е. С подключением L1). Компьютер с указанным адресом уровня 3 будет отвечать одноадресным ARP-ответом. ARP происходит полностью через адресацию L2 (результаты ARP кэшируются для последующего поиска, поэтому не нужно продолжать посылать запросы ARP).

Затем создается пакет эхо-запроса ICMP. Адрес L2 источника будет Ether-адресом исходного компьютера. Источником L3 будет IP-адрес исходного компьютера. Адрес L2 и L3 получателя будут теми, которые обнаружены из ARP. Пакет затем отправляется по проводу на коммутатор.

Коммутатор проверяет адрес L2 назначения и ищет в своей таблице CAM, чтобы определить, какой физический порт имеет указанный адрес Ether. Пакет затем отправляется по проводам на правильный физический порт.

Когда конечный компьютер получает его, он сначала проверяет адрес L2, чтобы убедиться, что он совпадает с адресом L2 физического интерфейса, который получил пакет. Если он совпадает, он проверяет адрес L3, чтобы убедиться, что он совпадает с адресом уровня 3, назначенным физическому интерфейсу. Если все это проверено, то пакет будет обрабатываться протоколами верхнего уровня (в этом случае ICMP, обрабатывается ядром). Если нет, пакет отбрасывается.

Для ответа ICMP все работает примерно так же, за исключением того, что отвечающему компьютеру не нужно отправлять запрос ARP, поскольку он получил пакет с парой L2/L3, он может установить его непосредственно в кэш ARP.

3

Поскольку мы находимся в одной сети, нам даже не нужны IP-адреса?

Эмм. Технически нет.

Но если вы хотите общаться по TCP/IP, тогда вам нужен. И почти все это использует.

Допустим, я и мой друг соединяем наши компьютеры кабелем локальной сети. Я пинг своего друга с его IP-адресом. Как это работает?

Ваш компьютер проверяет, находится ли целевой IP в той же подсети.
Если это так (проверка таблицы маршрутизации!) тогда это смотрит, если это имеет кеширование ARP.
No arp -> ARP discovery Затем ICMP-эхо-запрос (пинг) отправляется по IP на сетевой адаптер назначения (на основе MAC-адреса назначения).

Как он в конечном итоге найдет его физический адрес (адрес NIC)?

Он будет смотреть в кеше ARP, и, если адресата там нет, будет транслироваться пакет, который сводится к «У кого есть IP-номер abcd?». И на это ПК ответит:«Я MAC aa:bb:cc:dd:ee:ff. У меня есть IP abcd

здесь нет ARP, потому что это будет связано с маршрутизатором на границе сети, что здесь не применимо.

Нет ARP будет использоваться. ARP очень локальный. ARP не будет использоваться один раз за пределами локальной сети (и, следовательно, ARP за пределами маршрутизатора).

Разве IP-адресация не имеет значения только в случае межсетевого взаимодействия?

Нет.

Я даже не буду пытаться написать хороший длинный ответ. Вместо этого я укажу вам на этот хорошо написанный ранее пост: https://serverfault.com/questions/49765/how-does-ipv4-subnetting-work

0

Если вы общаетесь по IP, то вам нужен IP-адрес. Без IP-адреса назначения пинг не может функционировать.

0

Ваша путаница идет глубже, чем может ответить даже длинный пост. Вам нужно прочитать хороший сетевой учебник.

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .