2013-07-31 8 views
4

Может ли компьютер с IP-адресом класса C, подобный 192.168.0.1, и маска подсети 255.255.255.0 обмениваться и обмениваться ресурсами с другим компьютером с IP 192.168.1.1 и той же маской подсети 255.255.255.0? Я спрашиваю об этом, потому что первые 3 октета в этом случае говорят нам, что эти IP-адреса работают в разных сетях (сеть 192.168.0.0 и сеть 192.168.1.0). Кроме того, означает ли «сеть» то же, что и «подсеть» (или «подсеть») в этом контексте? Спасибо!Сети против подсетей

+4

Не очень вопрос StackOverflow. Вы можете сделать это лучше на [serverFault] (http://serverfault.com) –

ответ

11

Чтобы полностью понять, как работают компьютерные сети, вам необходимо взглянуть на модель OSI (или на практике - модель TCP/IP или DoD). Для вашего вопроса вам нужно сначала просмотреть три уровня: физический, канал передачи данных и сеть.

Физическое соединение само пояснительная, и представляет собой прямую связь через некоторую среду (медь, стекло, воздух).

Когда хост а пытается отправить пакет провести B первое, что будет делать это посмотреть на целевом IP-адресе и на основе собственной конфигурации IP-адреса, определите, находится ли хост B в той же подсети, что и хост A. Это делается по мере того, как объяснил вам Eugen Rieck: биты маски подсети используются для маскировки битов IP-объявления платье (логическая операция И). Теперь у нас есть два случая:

  1. Хост A и B находятся в одной подсети.
  2. Host A и B не находятся в одной подсети.

Следует отметить, что на уровне 2, который сетевые адаптеры используют для отправки и приема кадров, нет IP-адресов (которые присутствуют на уровне 3), но вместо этого связь между устройствами осуществляется с использованием MAC-адресов. Из-за этого хост может напрямую связываться только с хостами в своей подсети (1-й сценарий). Для отправки хоста фрейма требуется MAC-адрес хоста B. Таким образом, хост A сначала ищет MAC-адрес, сопоставленный с IP-адресом хоста B в его таблице ARP. Если он не может найти его, он отправляет широковещательный запрос ARP с запросом всего хоста в подсети, у которого есть определенный IP-адрес. Если он получает ответ, он добавляет MAC-адрес хоста, на который получил ответ, и создает пакет с MAC-адресом назначения этого хоста и IP-адресом этого хоста.

Если оба хоста не находятся в одной подсети (второй сценарий), пакет отправляется на по умолчанию шлюз, который отвечает за поиск маршрута до пункта назначения. Ключевым моментом здесь является то, что даже если MAC-адрес назначения в этом случае является MAC-адресом маршрутизатора (шлюз по умолчанию), IP-адрес назначения по-прежнему является IP-адресом хоста B, как в первом сценарии.По мере того, как пакет переходит от маршрутизатора к маршрутизатору, MAC-адреса источника и назначения будут меняться, поскольку они локально значимы, но исходный и целевой IP-адреса останутся неизменными. Таким образом, каждый слой предоставляет сервис (так сказать) верхним уровням, а верхние слои используют его прозрачно, без необходимости знать, что происходит ниже.

У вас есть:

1-й сценарий.

---------------- 
L2: 
Src MAC: host A 
Dst MAC: host B 
---------------- 
L3: 
Src IP: host A 
Dst IP: host B 
---------------- 

второй сценарий:

---------------- 
L2: 
Src MAC: host A 
Dst MAC: router 
---------------- 
L3: 
Src IP: host A 
Dst IP: host B 
---------------- 

Подводя итог (ответ @Eugen Rieck уже дал вам):

Два хоста, которые не находятся в той же подсети, что и в вашем примере (192.168.0.1/24 и 192.168.1.1/24) не сможет связываться на уровне 2 и потребует, чтобы устройство с поддержкой L3, такое как маршрутизатор, выступало в качестве шлюза по умолчанию и для маршрутизации трафика между двумя сетями (широковещательными доменами) для подключения 3-го уровня.

+0

Спасибо! Теперь я не знаю, зачем нам нужен маршрутизатор, если мы хотим, чтобы 2 компьютера в разных подсетях обменивались данными друг с другом. Я также понимаю, как рассчитать идентификатор подсети. Но как мы вычисляем идентификатор хоста? Как мы получаем от IP-адреса только те биты, которые установлены для идентификатора хоста? Или это не обязательно, потому что хост идентифицируется с использованием всего IP-адреса?(например, идентификатор подсети 192.168.0.0, а идентификатор хоста - 192.168.0.1, или идентификатор хоста - «1», а идентификатор подсети - 192.168.0?). – user2119805

+0

Хост будет 192.168.0.1, а не только 1. Поскольку хост - это всего лишь один IP-адрес, вы также можете выразить его как подсеть с маской подсети 255.255.255.255. Поскольку двоичное значение маски - это все, что подсеть будет иметь только один IP-адрес (хост-IP), а не диапазон. Таким образом, они фактически вычисляются одинаково. – pajaja

2

Вам нужно будет изменить маску подсети на 255.255.254.0 или использовать коммутатор маршрутизатора или уровня 3 для связи.

Network обычно означает всю сеть, о которой вы говорите, в то время как subnet относится к определенной отдельной ее части. Однако, терминология довольно свободна. не

+0

Так что они не могут общаться, если я использую маску 255.255.255.0! Я думаю, что, используя маску 255.255.254.0, о которой вы говорили, я даю дополнительный бит для хоста и удаляю бит из идентификатора сети. Я все еще не понимаю. О чем мы здесь говорим? Различные «сети» или разные «подсети»? – user2119805

+2

Вы правы: сокращение маски подсети эффективно увеличивает размер адреса хоста на один бит. Вместо двух подсетей в вашей сети (192.168.0.0 и 192.168.1.0) теперь у вас есть только одна подсеть в вашей сети, но примерно в два раза больше. Вместо того, чтобы входить в неточное обсуждение здесь, взгляните на [этот учебник] (http://compnetworking.about.com/od/workingwithipaddresses/a/subnetmask.htm), затем опубликуйте любые дополнительные вопросы по [serverFault] (http://serverfault.com) –

3

Да и нет:

Да: Эти два компьютера могут общаться, если есть (правильно настроен) маршрутизатор между ними и обе стороны имеют знания о нем.

No: Эти два компьютера не могут связываться, если их просто подключить к одному и тому же выключателю.

Правило большого пальца: IP & SNM должно быть одинаковым для всех участников, чтобы обеспечить прямую связь.

+0

Таким образом, они находятся в разных сетях, и только маршрутизатор может заставить их общаться. Как это можно сделать? Просто установив диапазон DHCP примерно на 192.168.0.1-192.168.1.255? – user2119805

+0

Я уверен, у вас есть домашний маршрутизатор, который, скорее всего, не позволит этого. Самый простой способ - добавить дополнительный IP-адрес к одному из компьютеров, например. добавьте 192.168.1.2 к компьютеру, имеющему 192.168.0.1. Это легко со всеми распространенными операционными системами. –

+0

Это не моя точка зрения. Я просто пытаюсь узнать и понять некоторые аспекты сетевого взаимодействия. Это практический пример того, что я не понимаю. Главный вопрос: что это касается сетей и подсетей? Зачем нам нужны разные «сети»? Например, класс C разрешает 2097 152 сетей! – user2119805