1

Когда я захочу подключиться к какой-нибудь внешней сети, скажем, 1.1.1.1 с моего ПК, подключенного к сети класса C, какой из этих двух сценариев действительно произойдет?

  1. Операционная система (NIC) моего ПК знает, что я хочу получить доступ к адресу из моей внутренней сети, и напрямую отправляет пакеты на шлюз по умолчанию.

    или же

  2. Мой компьютер обрабатывает этот запрос, как и любой другой, отправляя его на мой коммутатор, который до сих пор знает адрес назначения, поэтому он пересылает их на все подключенные устройства. Так как из них маршрутизатор, он отправляет пакеты наружу.

Или я полностью ошибаюсь?

5 ответов5

4

И то и другое. На уровне IP ваш компьютер знает, что он идет по внешнему адресу, и отправляет его непосредственно на маршрутизатор, потому что он знает, что маршрутизатор действует как шлюз для всего, что не находится в локальной подсети (что он определяет с помощью маски подсети).).

Однако коммутаторы и концентраторы работают на один уровень ниже IP, уровня Ethernet (в частности, уровня канала передачи данных, с Ethernet IEEE 802 для проводных сетей Ethernet и устройств WiFi). Он не знает, что такое IP-адрес или что они значат. Тем не менее, он понимает то, что называется MAC-адрес. Когда ваш компьютер отправляет пакет, он также включает MAC-адрес следующего устройства в сети, которое должно обрабатывать этот пакет. В этом случае роутер.

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

Переключатель, с другой стороны, немного умнее. Он фактически хранит таблицу MAC-адресов и связывает их с каждым портом на основе входящего трафика. Таким образом, когда он должен отправить пакет на определенный MAC-адрес, он знает, на какой порт ему необходимо отправить. Это помогает уменьшить перегрузку сети.

0

IP-стек операционной системы определяет, куда его отправлять, следующим образом.

Во-первых, вам нужно понять некоторые основные адреса. Это будет не очень тщательно, но, надеюсь, достаточно хорошо, чтобы вы могли в этом разобраться.

Для IPv4 у вас есть сетевой адрес и адрес хоста. Таким образом, для адреса 192.168.1.10 с маской подсети 255.255.255.0 у вас есть первые 3 байта, используемые для адресации сети. то есть часть 255.255.255. Бит 0 в конце представляет хост-часть адреса. На самом деле вы также можете иметь маски подсетей 255.255.255.240. Но для простоты я просто скажу, что эти числа используются для определения того, как 4 байта или октета, которые составляют адрес, распределяются между сетью и хостами.

В случае маски подсети 255.255.255.0, часть 0 в конце означает, что мы можем иметь 255 хостов.

Теперь о маршрутизации.

Если мы отправляем пакет на 192.168.1.11, то стек IP будет знать, что это локальный адрес, и просто отправит его непосредственно на адрес 192.168.1.11, потому что первые 3 октета соответствуют моей локальной сети. Тем не менее, если бы я должен был отправить пакет в 1.1.1.1, то он был бы отправлен на то, что определено как маршрут по умолчанию в моей операционной системе. Маршрут по умолчанию - это маршрутизатор, который будет обрабатывать сообщение «Я хочу отправить пакет в 1.1.1.1 для меня». Поэтому все, что не является локальным и не начинается с 192.168.1, будет отправлено на маршрутизатор по умолчанию. То, как маршрутизатор знает, как достичь 1.1.1.1, - вот что такое протоколы маршрутизации. Но вы просто спросили, как пакеты "выходят из сети", поэтому я надеюсь, что этот ответ объяснит это достаточно хорошо для вас.

0

2) легко ответить:
Ваш компьютер не отправляет свои пакеты на коммутатор, так как он не знает, что он там.

Ваш компьютер (или, скорее, ваш сетевой стек) имеет таблицу маршрутизации. Основываясь на информации в этой таблице, он может:

  • Возврат информации к себе (собственный IP или локальный хост)
  • Обратитесь к NIC в локальной сети (известной через собственный IP и собственную подсеть)
  • Знайте, что это не локально, и пошлите его через кого-то, кто, как мы надеемся, знает, куда это должно пойти (иначе шлюз по умолчанию).

Я пытаюсь найти более длинный и подробный ответ, и через неделю или около того я, вероятно, опубликую кое-что о сети на моей домашней странице. В то же время я хотел бы направить вас к очень длинному и обширному ответу на этом родственном сайте: serverfault как работает подсеть ?

0

Если предположить, что маска сети на nic равна 255.255.255.0 , запрос будет отправлен на шлюз по умолчанию. Если маска сети была настроена так, что требуемая сеть находилась в зоне действия, ПК обработал бы запрос.

0

Ваш компьютер использует маску подсети, чтобы определить, находится ли IPv4-адрес получателя вне подсети. Если это так, то ваш ПК планирует адресовать заголовки уровня Ethernet к адресу Ethernet (MAC) вашего маршрутизатора. Если он не знает MAC-адрес вашего маршрутизатора, он использует ARP, чтобы выяснить это.

Таким образом, на уровне Ethernet пакет адресован вашему маршрутизатору, но на уровне IP пакет все еще адресуется на исходный IP-адрес назначения.

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