Иван Шумов, Я понимаю. Но сигнал из моего города до США и обратно не сможет пройти за 5 мс чисто физически (скорость света не может быть выше 300000 км/с).
Left 4 Dead использует не p2p ибо в ситуации с данной игрой именно один игрок является сервером, а остальные лишь клиентами.
Иван Шумов, Странно. Чисто по физическим законам сигнал не сможет пройти весь земной шар и вернуться обратно за 5 мс. Почему же тогда я не могу ни в одной игре присоединиться к какому-нибудь австралийскому серверу и играть там с нормальным пингом? Постоянно пинг под 300-400, в любой игре.
А может быть такое, что при создании локального сервера он устанавливает соединение с внешним сервером, который, в свою очередь, получает IP и порт локального сервера и хранит эту информацию у себя? И при подключении других игроков они сначала подключаются к этому внешнему серверу, он им отдает IP и порт локального сервера, а потом по ним подключаются игроки?
Иван Шумов, Сомневаюсь, что Valve располагает сервера в какой-нибудь Богом забытой глуши (мой городок в Сибири). У игроков с моего города пинг 5, а у тех, кто, скажем, в 1000 км от меня, пинг уже около 20.
Но соединение-то идет напрямую от игрока к хосту. Например, если я создал сервер, то чем ближе игроки ко мне географически, тем меньше у них пинг. Если бы сигнал шел через сервер игры, то пинг у игроков был бы на порядок выше.
Ярослав Иванов, Но соединение-то идет напрямую от игрока к хосту. Например, если я создал сервер, то чем ближе игроки ко мне географически, тем меньше у них пинг.
Дмитрий Энтелис, Ну вот я привел пример. В PHP можно же получить IP входящего запроса от удаленной машины через $_SERVER['REMOTE_ADDR']. Можно получить и порт через $_SERVER['REMOTE_PORT']. Именно под такими IP и портом пришел запрос (например, сообщение) от пользователя на веб-сервер. Ты, как разработчик сайта, отдаешь эти данные правоохранительным органам, а те отдают их провайдеру, а тот, в свою очередь, по логам ищет, что в такое-то время эти IP и порт были сопоставлены такому-то внутреннему IP, по которому и вычисляется абонент. Опять же, это все без VPN и прокси.
Объясняю для тех, кто меня не понял на примере.
Пользователь отправляет сообщение на сайте => отправляется пакет данных, в котором указаны IP и порт отправителя (пусть это будет 192.168.1.2:57668, где IP в данном случае - это IP в локальной сети домашнего роутера пользователя) => пакет приходит на домашний роутер пользователя, там по таблице маршрутизации ему задаются новые IP и порт (например, 172.16.20.5:59008, это IP во внутренней сети провайдера) => пакет приходит на маршрутизатор провайдера, где по таблице маршрутизации ему задается внешний IP и новый порт (например, 88.87.86.85:59877) и по логике должен сохраниться лог, где сопоставлены внешние IP и порт с внутренними (т.е. запись вида 88.87.86.85:59877 => 172.16.20.5:59008 и другие данные, в т.ч. IP и порт сервера, куда идет пакет).
Так вот, на сервере с сайтом будет сохранено, что в такое-то время пришло такое-то сообщение от пользователя 88.87.86.85:59877. И имея эти данные, с ними правоохранительные органы могут идти к провайдеру, а провайдер по своим логам увидит, что в такое-то время 88.87.86.85:59877 - это 172.16.20.5:59008. Смотрим, кто сидел под IP 172.16.20.5 в это время. Все, абонент найден! Вот почему я говорю о том, что порт нужно хранить.
P.S. Конечно, это все без учета того, что злоумышленник сидел за VPN или прокси, там процесс будет сложнее.
Дмитрий Энтелис, Ну я делаю предположение, что провайдеры хранят в логах IP и порт исходящих пакетов, поэтому по этим логам имея внешний IP и внешний порт можно установить, кто в такое-то время отправлял пакет. У них же должны храниться логи таблицы маршрутизации.
Так я не понял, а почему нет смысла хранить IP и порт отправителя? Получается, для того, чтобы совершать нехорошие дела в том же ВК, достаточно просто сидеть за NAT провайдера и все? Я выше расписал, почему логично хранить эти данные.
Rsa97, Хранить для вычисления злоумышленника. Насколько мне известно, в случае совершения незаконного действия ВК (например, отправка анонимом сообщений с серьезными угрозами), правоохранительные органы получают у ВК IP и порт, под которыми было отправлено данное сообщение, идут к провайдеру, которому данный IP принадлежит (если, конечно, там не VPN или прокси, тут будет сложнее), предоставляют ему IP, номер порта и точное время отправки данного сообщения. Дальше провайдер смотрит по логам, какому именно IP из внутренней сети провайдера (если пользователь сидит за NAT) принадлежала по таблице маршрутизации связка из внешних IP и порта в нужное время. А по внутреннему IP уже вычисляют самого абонента.
xmoonlight, Ну у нас провайдер значит не запретил его, раз друг смог ко мне приконнектиться. К слову сказать, я в сети провайдера находил и других пользователей, у которых открыт то 80, то 8080 порт: у кого-то это интерфейс с настройками роутера, а у кого-то Apache или Nginx поднят.