ЧАСТЬ 1
Хорошо, давайте представим, что у вас есть маршрутизатор в вашем доме и что у вас есть несколько компьютеров в вашем доме, подключенных к Интернету через маршрутизатор.
Чтобы маршрутизатор знал, куда идет трафик в вашей сети, он назначает уникальные IP-адреса всем компьютерам в вашей домашней сети (обычно начиная с 192.168.xx).Эти IP-адреса являются локальными IP-адресами, что означает, что только ваш маршрутизатор и компьютеры / устройства, подключенные к нему в вашем доме, знают о них.Если вы откроете командную строку и выполните команду IPConfig, вы увидите IP-адрес, который ваш маршрутизатор назначил вашему компьютеру.
Итак, какой IP-адрес показывает вам WhatIsMyIP.com?Подобно тому, как ваш маршрутизатор назначает адреса всем компьютерам в вашей сети, ваш интернет-провайдер раздает уникальные IP-адреса всем своим клиентам.Теперь, поскольку у вас есть маршрутизатор, единственное, что видит интернет-провайдер в вашей сети, - это тот маршрутизатор, и ваш провайдер назначает ему IP-адрес.Вот почему маршрутизаторы также называют аппаратными брандмауэрами, потому что люди на другой стороне не могут определить, сколько компьютеров или устройств подключено к нему.
Что это означает, когда вы посещаете веб-сайты наИнтернет, единственный IP-адрес, который они видят, это внешний IP-адрес вашего маршрутизатора (тот, который назначен вашим провайдером).Таким образом, независимо от того, какой компьютер в вашем доме вы используете, веб-сайт не будет знать разницу, потому что все, что он видит, это IP-адрес вашего маршрутизатора.Иди и попробуй это;зайдите на www.WhatIsMyIP.com на нескольких компьютерах в вашем доме.Вы увидите, что все они показывают один и тот же IP-адрес.Однако, если вы сделали IPConfig в командной строке на каждом компьютере, он показывает локальный адрес, назначенный маршрутизатором, и он будет отличаться на каждом компьютере в вашем доме.
Итак, теперь вы понимаете разницу междулокальные и внешние IP-адреса, как бы вы получили свой внешний IP-адрес в коде VB или C # .net, который работает на вашем компьютере?Ну, единственный IP-адрес, который ваш компьютер на самом деле знает, это тот локальный IP, о котором мы говорили.Единственный способ узнать свой внешний IP-адрес - это перейти на веб-сайт, на котором сообщается, с какого адреса поступил запрос (это будет IP-адрес вашего маршрутизатора).
Что вам нужно сделать, это записатьнекоторый код в вашей программе VB.net, который перейдет на WhatIsMyIP.com (или другой веб-сайт, который может дать вам ваш IP-адрес) и сообщит код, чтобы получить его.Я написал веб-сервис, расположенный по адресу http://www.u413.com/test/terminal/myip, который возвращает только ваш IP-адрес в качестве полного HTTP-ответа.Найдите что-то подобное для вашего приложения, потому что этот маленький образец не останется там навсегда;Я поместил его только в качестве временного примера в домен, которым я уже владею.
Посетите http://www.vbdotnetheaven.com/UploadFile/kbawala/WebRequestClass04182005054320AM/WebRequestClass.aspx, чтобы узнать, как сделать веб-запросы из кода, выполняющегося на вашем компьютере.
ПРИМЕЧАНИЕ. Возможно, вы не знаете, что такое DNS, если не знаете, как работают IP-адреса.У всего в сети есть IP-адрес, включая серверы, которые обслуживают страницы веб-сайта.Но какая это будет боль, пытаться запомнить до 12 цифр IP-адресов для всех ваших любимых сайтов.Именно для этого были созданы DNS-серверы.DNS-серверы берут доменное имя (например, www.facebook.com) и переводят его в правильный IP-адрес.Таким образом, все, что вам нужно запомнить, это facbook.com вместо 69.63.181.12 (это IP-адрес facebook. Идите, попробуйте! Вставьте этот IP в адресную строку браузера, и вы увидите Facebook.), Доменные имена намного прощезапомнить!
Если вы хотите увидеть IP-адрес, связанный с веб-сайтом, откройте командную строку.Когда откроется приглашение, введите PING [websitedomain] (например, PING Facebook.com), и ваш компьютер отправит 4 тестовых запроса на отображаемый для вас адрес.
PART 2
Давайте представим, что ваш IP-адрес похож на адрес здания квартиры.Паренек, доставляющий пиццу, должен знать адрес дома, чтобы доставить пиццу.Но что он собирается делать, когда попадет туда?Есть сотни дверей / квартир на выбор.Ему нужно знать номер квартиры (номер порта на вашем компьютере).
Ваш компьютер имеет тысячи портов, и программы могут прослушивать любой из них для запросов из внешнего мира.При переходе на веб-сайт почти все веб-сайты обслуживаются через порт 80. Порт 80 является портом по умолчанию для веб-страниц.Когда вы заходите на facebook.com, вы на самом деле заходите на facebook.com:80, вы просто не видите: 80, потому что это подразумевается, поскольку это значение по умолчанию.Если я установлю веб-сервер, я могу выбрать любой порт для обслуживания веб-сайтов.Если бы я размещал веб-страницы на порте, отличном от порта 80, вам пришлось бы включить его в свой URL-адрес.http://www.SomeDudesCustomWebServer.com:1337.
Исходящие запросы также используют порт, но он обычно не важен, и ваш компьютер просто выбирает тот, который доступен.Поэтому, когда вы заходите на Facebook.com, все веб-серверы facebook обслуживают страницы через порт 80, но порт, который ваш компьютер открыл для отправки запроса, не обязательно должен быть портом 80, потому что он выбирает доступный порт и затем отправляетпорт с запросом.Затем, когда Facebook отправляет свой ответ, он отправляет ответ обратно на IP-адрес и порт, который сделал запрос.
Исходящие порты используются только на время запроса.Порты, которые должны прослушивать соединения, должны оставаться неизменными, иначе компьютеры, отправляющие запросы, не будут знать, на какой порт отправлять запрос.
Легко, да!
Надеюсь, что это поможет вам немного лучше понять.
РЕДАКТИРОВАТЬ:
Переадресация портов
Хорошо, в свете приложения чата, которое вы хотите использовать / создать, если вы хотите, чтобы он общалсячерез сеть вы должны будете узнать о переадресации портов.По сути, поскольку все, что вы могли видеть в сети вашего друга, это его внешний IP-адрес, вам придется использовать этот адрес для подключения к его серверу чата (или наоборот, если он подключается к вашему серверу чата, тогда это будет ваш внешний IP-адрес).).Из-за этого запрос на подключение будет доходить только до маршрутизатора с внешним IP-адресом, но он не будет знать, на какой компьютер в сети направить запрос.
Вам потребуется доступ к маршрутизатору.прошивки и настройте переадресацию портов, чтобы маршрутизатор знал, что нужно перенаправлять запросы на определенный порт на определенный компьютер в сети.Посетите http://portforward.com/ для более подробной информации о том, как настроить переадресацию портов.
РЕДАКТИРОВАТЬ 2:
Брандмауэр
При настройке вещи наобщаться с вашим компьютером с помощью компьютера, вы можете начать разочаровываться, что он просто не подключится.Что может остановить вас - ваш брандмауэр.По умолчанию большинство портов на вашем компьютере полностью заблокированы брандмауэром Windows.Для каждого порта, через который вы хотите установить связь, вы захотите войти в брандмауэр и создать правило, которое откроет порт.Перейдите сюда http://www.top -windows-tutorials.com / windows-7-firewall.html , чтобы узнать, как использовать брандмауэр Windows.Я не смотрел его, но это то, что появилось первым в поиске Google.
Не отключайте брандмауэр.Несмотря на то, что это простое и быстрое решение для открытия всех ваших портов, вы оставляете себя открытым для атаки.Вирусы любят настраиваться на вашем компьютере, если они могут, и прислушиваются к открытому порту для соединения от своего любимого создателя, чтобы он мог получить доступ к вашему ПК.Открывайте только нужные порты.
UDP против TCP
При открытии и переадресации портов вы можете заметить, что он запрашивает UDP (протокол пользовательских дейтаграмм) или TCP (протокол управления передачей). То, что они обозначают, может не иметь смысла, но все, что вам нужно знать, это: UDP предназначен для передачи одного пакета, что означает, что два пакета, отправленные ПК, могут быть или не быть связаны между собой. Эти типы пакетов данных обычно используются для широковещательной передачи в локальной сети. Пример, который я бы использовал, это LAN-игры. Когда вы размещаете игру в локальной сети, другие компьютеры / устройства могут видеть название игры и присоединяться к ней. Это связано с тем, что компьютер, на котором размещена игра, передает UDP-трансляцию по всей локальной сети, чтобы любые устройства могли видеть игру. Эти передачи UDP обычно содержат название игры и информацию о соединении, необходимую для подключения к игре.
TCP - для непрерывной передачи пакетов. TCP требует установленного соединения, любые пакеты, передаваемые по этому соединению, всегда связаны с этим одним соединением / запросом. Чтобы продолжить мой пример из последнего абзаца, после того, как вы нажмете кнопку «Подключиться» в игре по локальной сети, ваш компьютер затем установит TCP-соединение с хостом и использует это соединение в течение игры или игр. TCP является наиболее часто используемым типом соединения, и ваша программа чата, вероятно, будет обмениваться данными по TCP, особенно если вы подключаетесь через сеть, потому что UDP-трансляции бесполезны через Интернет. UDP действительно полезен только в локальной сети.
Вы должны безопасно пересылать и разблокировать только порты TCP, но иногда, когда я не уверен, я просто использую и UDP, и TCP, чтобы быть в безопасности. На самом деле, многие маршрутизаторы и межсетевые экраны имеют 3 варианта: TCP, UDP или оба, что избавляет вас от необходимости создавать два правила для обоих типов портов.
В случае сомнений, открыть / переслать оба.