Как маршрутизатор определяет на какой из устройств в локалке отправить запрос?
Доброго времени суток, начал изучение интернет сетей, пытаюсь вникнуть как это всё работает, буду рад если мне помогут. Появился вопрос:
1) Допустим у меня есть маршрутизатор и пару устройств в локалке, маршрутизатор имеет WAN подключение с белым IP адресом провайдера. Я хочу использовать одно из устройств как сервер, например я с компьютера с помощью сокетов начинаю прослушивать 5000 порт. Какое либо удаленное устройство через интернет отправляет запрос на открытие TCP соединения по моему IP адресу и нужному (5000) порту. Как маршрутизатор, приняв пакет с данным запросом понимает, на какое именно устройство из моих двух в локальной сети этот пакет дальше отправить?
- К данному вопросу у меня есть свой ответ, хотел бы узнать, верен он, или нет: Когда с помощью сокета ОС я начинаю прослушивать 5000 порт, устройство отправляет эти данные маршрутизатору, мол я с таким локальным IPшником и таким MAC адресом начинаю прослушивать наш 5000 порт, все данные пришедшие на него, отдать мне, это так работает? То есть например я могу с одного устройства прослушивать тот же 5000 порт, а с другого например 5050?
Буду очень признателен, если мне объяснят, правильно ли я все понял.
Какое либо удаленное устройство через интернет отправляет запрос на открытие TCP соединения по моему IP адресу и нужному (5000) порту. Как маршрутизатор, приняв пакет с данным запросом понимает, на какое именно устройство из моих двух в локальной сети этот пакет дальше отправить?
Никак, если специально не сконфигурили (это и называется "проброс портов").
Ок, еще UPnP есть.
Как маршрутизатор, приняв пакет с данным запросом понимает, на какое именно устройство из моих двух в локальной сети этот пакет дальше отправить?
Никак не понимает.
Ему приходит пакет.
Если есть правило фаервола для прохождения этого пакета - например проброс портов, то маршутизатор поступит в соответствии с правилом.
Если нет правила для данного пакета - просто уничтожит его.
Маршрутизатор про порты ничего знать не хочет, он просто держит в памяти табличку с соответствием мак-адресов, айпишников и портов (физических), поэтому знает, куда отправлять пакеты.
Когда вы начинаете прослушивать порт - ОС просто перестаёт отвергать пакеты с этим портом назначения, а начинает передавать их приложению. Можно не слушая порт (например, настроив iptables в линуксе) что-то делать с этими пакетами - например, передавать на другой порт или даже отправлять куда-то вовне.
Просто как я понял, только ХАБ раньше передавал полученные пакеты всем подключенным устройствам в локалке, а те в свою очередь отвергали пакеты им не принадлежавшие. А маршрутизаторы и свитчи пришедшие на смену ХАБов, для безопасности передают полученные данные конкретно нужному устройству, разве не так?
Маршрутизатор про порты ничего знать не хочет, он просто держит в памяти табличку с соответствием мак-адресов, айпишников и портов (физических), поэтому знает, куда отправлять пакеты.
jollygulf, по поводу хабов, коммутаторов и маршрутизаторов у Вас большая путаница. все не совсем так как Вы пишите, все и проще и сложнее. и к Вашему вопросу вообще отношения не имеет. да и начинать изучение надо совсем с другого...
Маршрутизатор про порты ничего знать не хочет, он просто держит в памяти табличку с соответствием мак-адресов, айпишников и портов (физических), поэтому знает, куда отправлять пакеты
Это вы описали коммутатор.
Маршрутизатор отправляет пакеты по маршрутам.
А с портами работает конечное устройство, либо фаервол.
jollygulf, Не так.
Древние хабы действительно рассылали пакеты всем. Их заменили коммутаторы(свитчи) которые держат в памяти таблицу мак адресов, и уже рассылают целенаправленно.
А маршрутизаторы ни к хабам ни к свитчам отношения не имеют, они были и во времена хабов и сейчас. Занимаются они совсем другим - маршрутизацией IP пакетов, это уже другой уровень модели OSI.
Компьютер отправляет пакет роутеру на адрес 192.168.88.1 порт 80 в роутере есть DHCP сервер он принимает и передает остальным клиентам почитайте про маршрутизацию и про работу DHCP