Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Сетевые технологии > Постоянный IP


Автор: Crait 10.1.2004, 22:58
Вот сделал я очередной велосипед cool.gif - звуковой чат.
И работал он нормально в локальной сети, а в инете не работал confused.gif .
До тех пор, пока мне не подсказали,
что можно обратиться к провайдеру и за небольшие деньги
обеспечить себе постоянный IP.
Так я и сделал, и теперь клиенты нормально коннектятся к серверу
на реальный ИП. Связь идет у меня по TCP/WinSock. Так вот вопрос :

Можно ли связать два компа в инете без заморочек,
связанных с получением постоянного IP ? И, самое главное, как ?

Автор: DENNN 12.1.2004, 11:11
Вообще конечно постоянный ip-это благо, а не заморочка.
Проблема скорее всего не просто в динамическом ip, а в том, что ты находишся за NAT'ом. Т.е. твой комп вместе с другими "висит" за шлюзом провайдера, и информация от конкретного адреса приходит к твоему компу только если он сам инициировал это соединение с внешним миром. Для всего инета все компьютеры, находящиеся за шлюзом представлены просто как этот компьютер. Естественно, с постоянным ип все внешние запросы приходят непосредственно на твой комп.
Как вариант, можно попросить вместо ip направить на твою машину запросы на определенный порт, но это только в том случае, если твой сервер не использует порт из стандартно зарезервированных.

Автор: MuToGeN 12.1.2004, 11:39
Речь о чем-то сродни децентрализации... Решения тут такие:
Если знаешь подсеть, где должна находиться другая машина, то просто просканить на определенный порт.
Другой вариант - при подключении к инету, например, коннеститься к некому FTP серверу, закидывать туда фаил со свом IP и смотреть, нет ли там других таких фаилов.
В локальныых сетях это может решаться бродкастами/мультикастами, только в инете этот трафик обычно режется.
Это все, конечно, только для тех случаев, когда ты получаешь свой IP от провайдера по DHCP и там нигде не поднята NAT.

Автор: DENNN 12.1.2004, 11:47
Цитата
Это все, конечно, только для тех случаев, когда ты получаешь свой IP от провайдера по DHCP и там нигде не поднята NAT.

В этом случае могу предложить ещ один вчариант.
Есть DNS сервер. При включении машины, она получает свой IP и на сервер по заране оговоренным правилам высылает мессагу со своим IP. DNS сервер принимает мессадж и на все последующие запросы в течении скажем 10 секунд дает ответ соответсвия этого имени и ip, если в течении следующих 10 секунд от машины пришел ответ, то это соответствие сохраняется, иначе считается что машины отсоединена от инета, и этот адрес более не возвращается.
Главное условие - DNS сервер должен указывать в ответах короткое врем жизни.

Автор: Crait 12.1.2004, 13:47
Благодарю всех, кто откликнулся.
Но. Вы предлагаете в текущем сеансе определять свой текущий IP,
сообщать его другой стороне (через FTP или как еще) и устанавливать связь
на этот IP.
Так вот, я пробовал сообщать другим свой IP (по телефону),
определенный различным образом - взятый из hosts,
или же тот, что определяет http://auto.jobest.ru/scan_port.php ,
результат один - нет коннекта. Почему - по причине наличия NAT
у провайдера или еще почему-то, не знаю.
Кстати, вместо FTP можно использовать почтовые ящики.
Еще раз благодарю за ответы.

Автор: MuToGeN 12.1.2004, 14:02
Не знаю насчет самого простого способа узнать свой IP под виндами, но нечто ИМХО попроще посоветовать могу:
Код
> ipconfog /all


Ну а если NAT - то либо договариваться с провайдером, либо менять провайдера

Автор: Crait 12.1.2004, 14:18
Данные от ipconfig тоже пытался использовать - нифига.

Автор: MuToGeN 12.1.2004, 14:32
Как выглядит IP, что ipconfig выдает?

Автор: Crait 12.1.2004, 14:45
Сейчас у меня постоянный IP, так что воспроизвести все сейчас не могу.
А было, кроме 192.168.1.150 (это из hosts), по-моему 10.0.0.1 или 10.0.0.150

Автор: MuToGeN 12.1.2004, 15:16
NAT, однозначно.

Автор: Crait 12.1.2004, 15:27
И чо, NAT теоретически непробиваем ?

Автор: Гость_DENNN 12.1.2004, 15:40
соединение инициирует комп, находящийся за NAT

Автор: MuToGeN 12.1.2004, 15:40
Теоретически можно зафорвардить траффик на какой-то порт шлюза из инета на какой-то порт твоей машины.

Автор: Crait 12.1.2004, 15:47
Вобщем, насколько я понял, невозможно из своей программы
преодолеть NAT не связываясь с переконфигурированием чего-то там
у провайдера.

Автор: MuToGeN 12.1.2004, 16:00
Именно так

Автор: Crait 12.1.2004, 16:07
А ведь есть ряд чатов, работающих даже и из-под NAT.
Тот же ICQ или MSN, скажем. Или они используют иные механизмы ?

Автор: DENNN 12.1.2004, 16:43
Их сервер свободно виден из инета. А твой комп за шлюзом нет.

Автор: Crait 12.1.2004, 21:57
OK.
Я слышал, что в ICQ после соединения с сервером
происходит обмен IP клиентов и далее они общаются между собой.

Автор: MuToGeN 13.1.2004, 11:53
NAT работает примерно так:
Шлешь ты пакет. Скажем, со своего 192.168.0.21:5478 на 213.180.194.129:80. Проходит оно через шлюз. Шлюз это дело отсылает на 213.180.194.129:80, но уже от своего имени, скажем, со своего порта 61587. И далее все то, что будет идти на порт шлюза 61587 извне, будет пересылаться на 192.168.0.21:5478, пока либо не наступит таймаут для UDP, либо не будет закрыт коннект для TCP.

Автор: Crait 13.1.2004, 20:08
Так что, NAT меняет даже номер порта ?

Автор: MuToGeN 14.1.2004, 10:24
Да. По крайней мере, о других реализациях этой технологии не знаю.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)