Привет всем, есть одна проблема: Пишу клиент серверное приложение с использованием Winsock, программа сервер устанавливается на клиентскую машину с внутренней сетью и выход в интернет через шлюз(машины сервера, или адсл маршрутизатора с включенным NAT), как реализовать подключение к серверу со стороны интернета??? Заранее все спасибо...
есть один вариант...что в качестве посредника создать сайт де буде хранится айпи сервера..и сервак будет конектется с клиентам, ток хочется чот лутше
mAgoja А сам посуди. Твой "троян" запущен на машине в локальной сети и, соответственно, не имеет внешнего IP. И как клиент из внешней сети должен достучаться до твоего сервера? Либо port-mapping, либо через внешний прокси-сервер, но, насколько я знаю, не часто сервер локальной сети принимает входящие соединения из внешней сети. Так что mapping в любом случае нужен. P.S. Лучше сделай наоборот. Троян - клиент, который подключается к твоему серверу в интернете. Так будет работать.
Xerx так как ты расписал я так и хочу сделать), ток при этом возникает некоторые сложности: я сервер ко мне подключается клиент , клиент берет айпи с какогонить хоста, допустим фтп с файла, как сделать минимальное обращение к этому серваку за айпи чоб небыло большого съедения трафа(обновлять допустим каждые 2 мин?), хотелось бы услышать какунить альтернативу.
в инфо к icq номеру прописываешь адрес ftp или что там тебе надо и клиентом открываешь www.icq.com/номеруина находиш свою сигнатуру, и береш данные. Зачем использовать свой сервер для раздачи, если есть море бесплатных )
А у меня похожая проблема! У меня NAT! У меня есть пара друганов - у одного просто модем и DHCP - у него глобальный IP - я с ним могу соединиться напрямую, а у второго NAT и мы напрямую не можем соединиться! Я это никак понять не могу!!! Есть такая программуля - Hamachi, которая нам со II-м друганом позволила соединиться напрямую - сам в снифере видел! Он пакеты записывал и я - там в качестве адреса получателя и отправителя были наши глобальные IP! Ведь я же через NAT в Internet захожу - мне Internet'ские сервера как-то пакеты передают же!!! Почему нельзя из Internet'а передать что-то мне???? Я это вообще не понимаю!!! Почему надо использовать какие-то дополнительные сервера??? А если конкретно? Допустим есть сервер на www.narod.ru? И что? По FTP что ли менять какие-то файлы? Тот, кто Клиент меняет файл по FTP, а тот, кто Сервер считывает по FTP с narod.ru?
NAT = Network Address Translation — технология позволяющая пускать несколько человек из внутренней сетки через один и тот же внешний IP адрес. Работает она примерно таким образом: Допустим у тебя внутренний адрес - 10.0.0.13. Ты открываешь порт 1234 и коннектишься к ya.ru на 80-ый порт. Т.к. все пакеты обязательно проходят через NAT шлюз, он рассматривает этот пакет, и, поняв что это пакет на создание соединения, открывает у себя какой-то совершенно рандомный порт и записывает в таблицу трансляции примерно следующее <порт открытый натом> TCP 10.0.0.13:1234 ya.ru:80 далее он меняет заголовок TCP твоего пакета так, чтобы адресом отправителя был адрес ната, а порт отправителя был только что открытый порт ната. Далее когда пойдут ответы на инициализацию подключения, собственно данные и пакеты на закрытие порта НАТ будет использовать свою таблицу трансляции чтобы знать кому этот пакет надобно перенаправлять. Если ты будешь играть роль сервера и не будешь инициатором всех подключений - нат не будет знать что подключаются именно к тебе, такие дела. От этого добра можно спастись портфорвардингом. В этом случае в настройках сервера нат указывается что такой-то диапазон портов принадлежит определенному внутреннему адресу в сети, и все пакеты на этот порт будут идти прямиком к тебе. Насчет хомячи: хамачи организует некое подобие VPN, т.е. весь трафик идет через ихний какой-то сервер-посредник AFAIK.
То есть за мной не закрепляется определённый порт? Если мы оба за NAT, то мы можем достучаться только до своих внешниех NAT-маршрутизаторов! А они естественно молчат! Портфорвардинг - это, надо полагать, надо с провайдером договариваться... Порт мепинг - это, скорее всего, тоже связано что-то с настройнами NAT-маршрутизатора самого - это тоже надо с провайдером договариваться получается... Правильно? То есть как уже тут всё и обсуждалось получается, что нужен какой-то 3-й сервер. Когда с ним устанавливают соединение 2 компа за NAT, то ихние NAT-маршрутизаторы делают записи в своих таблицах и т.д. и т.п., т.е. всё функционирует обычным образом, а этот 3-й сервер выступает в роли ретранслятора! Тогда чтобы написать программулю для общения придётся изобрести велосипед, потому что фактически, если мы сделаем это через www.icq.com (пока не знаю как это сделать), то фактически мы просто напишем новую icq'ку! А если не для общения, то принцип всё равно тот же - просто интерфейс другой! Типа так? Получается, что надо создать сайт или зарегистрировать новый nic на www.icq.com и прошить его в своей программуле? А если что-то накроется сайт или nic, то все копии нашей программули перестанут функционировать?
Meatcoins Да, нехватка адресов, а за ним и засилье этих самых NAT серверов — настоящий бич интернета (на мой взгляд). Хотя многих эти самые наты спасают от кулхакеров, бродящих по интернету с нюками, сканерами и прочей дрянью.