Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > PHP: Сеть > Как узнать MAC адрес |
Автор: geek2600 14.6.2008, 22:09 | ||||
Здравствуйте.Уважаемые участники форума, у меня следующий вопрос. Для определения IP входящих на сайт компьютеров я использую следующий код:
Как мне сделать так, чтобы фиксировался не только IP входящего компьютера,но и MAC адрес? Т.е. если компьютер имеет выход в интернет через локальную сеть. Заранее благодарен.
|
Автор: Feldmarschall 14.6.2008, 22:28 |
код - шедевр. ответ на вопрос - никак. |
Автор: geek2600 14.6.2008, 22:58 |
Я на оригинальность и идеальность кода не претендую. Так , что действительно никак? |
Автор: gta4kv 14.6.2008, 23:01 |
geek2600, действительно никак. |
Автор: Feldmarschall 14.6.2008, 23:05 |
geek2600, напротив, код твой нереально оригинальный. Так что можешь смело претендовать. |
Автор: geek2600 14.6.2008, 23:24 |
Feldmarschall, я хочу Вам задать вопрос не в тему вопроса.Скажите если человек выходит в интернет по вышеописанной схеме, и я пошлю ping на его интернет IP,куда пойдет мой IP пакет?Какому именно компьютеру?Я просто имею лишь поверхностное понятие о том как происходит маршрутизация пакета. Заранее благодарен. |
Автор: Feldmarschall 14.6.2008, 23:31 |
Куда пошлешь - туда и придет. |
Автор: geek2600 14.6.2008, 23:56 |
немного не понял.В IP пакете есть поле содержащее MAC адрес? |
Автор: Feldmarschall 15.6.2008, 00:06 |
что ты не понял? вот ты пишешь: "я пошлю ping на его интернет IP". "компьютер имеет выход в интернет через локальную сеть" через какое место эта сеть выходит в интернет - в это место и придет твой пинг. разве это не очевидно? нет |
Автор: Glip 15.6.2008, 00:10 |
geek2600, http://ru.wikipedia.org/wiki/TCP/IP и http://ru.wikipedia.org/wiki/IP нет там мак адреса, мак адрес это уже уровень ethernet (Канальный уровень) |
Автор: geek2600 15.6.2008, 00:15 |
т.е. в пакете который отсылается в интернет MAC адре не содержится.Тогда как маршрутизатор опознает какому MAC чего пришло? |
Автор: Glip 15.6.2008, 00:23 |
geek2600, для определения мак адресов есть протокол http://ru.wikipedia.org/wiki/ARP, но для начала маршрутизатор узнает IP адрес по таблице маршрутизации, если есть nat то еще и с учетом его. учите матчасть. разговор уже на тему чисто сетевых технологий и к php не имеет отношения |
Автор: geek2600 15.6.2008, 00:26 |
Спосибо большое!!!!Буду изучать. |
Автор: Feldmarschall 15.6.2008, 01:05 | ||
а код, может, подправишь, все-таки? чтобы эпохальная конструкция
вызывалась только один раз? |
Автор: MuToGeN 18.6.2008, 10:06 |
Скажем так... Media Access Control (в сокращении - MAC) адрес используется для того, чтоб сетевой концентратор (хаб, свич, аксесспоинт итд) понимал, по какому каналу передавать пакет дальше, и не более того. MAC - это идентификатор железки, в которую воткнут кабель. Когда пакет минует очередной роутер, MAC адрес отправителя, указанный в пакете, становится MAC адресом роутера. Т.е. для того, чтоб узнать мак, тебе нужно иметь свою точку в одной подсети с тем, чей мак ты хочешь узнать. А если вы физически в одной подсети, то arp -a. |
Автор: MuToGeN 18.6.2008, 22:57 |
Ответ неверный -) Конечно, если разложить все по модели OSI и отделить зерна от плевел, можно сказать, что его там нет. Попробуйте запустить что-то типа ethereal и посмотреть, что ходит по сети. В любом пакете 0-5 байт - мак отправителя, 6-11 байт - мак получателя. Это, кстати, одно из того немногого, что идет без контрольных сумм, на других слоях OSI уже есть как минимум проверка четности. |
Автор: Sannis 18.6.2008, 23:30 |
MuToGeN, а вы возьмётесь реализовать это на PHP? Я конечно не местный, но что-то мне не верится ![]() |
Автор: MuToGeN 19.6.2008, 00:01 |
Sannis, если бы мне за это заплатили, я бы взялся. Только и исключительно на PHP это сделать нереально, но никто не запрещает использование внешних инструментов. |
Автор: gta4kv 19.6.2008, 00:11 |
MuToGeN, ну а вот тема у нас про PHP, так то понятно что можно ![]() |
Автор: MuToGeN 19.6.2008, 00:18 |
gta4kv, в том и дело, что 80% людей, считающих себя гуру в пхп, о наличии каких-то внешних инструментов не догадывается в принципе. |
Автор: gta4kv 19.6.2008, 00:46 |
MuToGeN, внешние средства не везде сможешь использовать. Не у всех "считающих себя гуру в пхп" есть свои сервера. ;) или даже впсы. |
Автор: Feldmarschall 19.6.2008, 00:50 |
Sannis, практическая ценность такого решения будет равна нулю. Всё уже разжевали на предыдущей странице. Кто не понял - перечитайте ещё раз. |
Автор: Sannis 19.6.2008, 01:20 |
Feldmarschall, да я в курсе, мой вопрос был для выяснения ответа MuToGeN'а ;) |
Автор: Feldmarschall 19.6.2008, 01:24 |
Самое забавное, что - я сейчас посмотрел - он же и разжевывал. Вот в чем прикол. В принципе, мотивы человека понять можно, я даже и отвечать не стал. А тут захожу - такая дискуссия. |
Автор: MuToGeN 19.6.2008, 03:26 |
Sannis, тот, кто знает, когда вступать в битву и когда отступить, одержит победу. "Исскуство войны". К чему это я...... Нет ничего невозможного. Просто нет, это аксиома. Можно сделать все, что пожелаешь. Есть какая-то умная философская мысль, но раньше чем завтра я ее не сформулирую. |
Автор: Sannis 19.6.2008, 07:09 |
Разумеется. Только вы же не будете объяснять это каждому, кто с периодичностью раз в полгода приходит с вопросом про МАК, с вопросом о супербане etc., не имея при даже знаний в PHP, не говоря уже о влезании в код сервера для выхватывания начала пакета(я не в курсе, но мне кажется даже на более низком уровне). Сделать можно, но большинству это не по карману, так что лучше ответить "нет", зная что собеседник не собирается заказывать разработку, да и повторных вопросов будет меньше ![]() |
Автор: Feldmarschall 19.6.2008, 10:06 |
Sannis, сделать нельзя. поставим уже точку в этой дискуссии. Ни дорого, ни дешево. Вообще никак. Здесь вообще речь не о том. Не "можно ли определить", а "содержится ли в пакете". А что в нем содержится - см. выше. Собственно, вся вторая страница к первоначальному вопросу никакого отношения не имеет, а представляет собой отвлеченный разговор о технологических тонкостях. |