Почему сервер не может получить MAC-адрес клиента, например IP-адрес клиента?

Из того, что я знаю, все MAC-адреса, которые прошел пакет, находятся в пакете. Это связано с тем, что каждый пакет, который идет по определенному пути, также должен быть возвращен аналогичным путем. Итак, если маршрутизатор сервера знает о MAC-адресе клиента (все из них), почему страница сервера (например, aspx) не может иметь эту информацию?

Пожалуйста, дайте объяснение. (не просто скажите мне, что я ошибаюсь).

Если я правильно понимаю, клиент отправляет пакет, содержащий его MAC-адрес. когда пакет проходит через прокси (например, клиентский маршрутизатор), адрес прокси добавляется в пакет. и т.д.

Вот фрагмент из Википедии о слое линии передачи данных TCP/IP:
http://en.wikipedia.org/wiki/TCP/IP_model#Data_Link_Layer

Уровень канала передачи данных используется для перемещения пакеты между Интернет-слоем интерфейсы двух разных хостов на та же связь. Процессы передачи и приема пакетов на данную ссылку можно контролировать как в драйвер программного обеспечения для сетевую карту, а также прошивку или специализированные чипсеты. Они будут выполнять функции передачи данных, такие как добавление заголовка пакета для его подготовки для передачи, то на самом деле передавать кадр по физическому средний. Модель TCP/IP включает спецификации перевода методы сетевой адресации, используемые в Протокол Интернета к каналу передачи данных адресации, такие как доступ к мультимедиа Control (MAC), однако все остальные аспекты ниже этого уровня предположительно предполагается, что в Link Layer, но не явно определены.

Ответ 1

Фактически, MAC-адрес, сохраненный в пакете , изменяется на каждом переходе пакета.

MAC является сокращением для Media Access Control, со средой, ссылающейся на локальные средства связи. Хотя исходные и целевые IP-адреса остаются неизменными на протяжении всего путешествия (и используются для решений маршрутизации на большие расстояния), MAC-адреса источника и назначения указывают только следующий скачок.

Из-за этого MAC-адрес, хранящийся в пакетах, полученных вашим сервером, должен быть MAC-адресом вашей точки присутствия-маршрутизатора или оборудования вашего провайдера.

Возможно, вам стоит взглянуть на модель уровня OSI и encapsulation.

Ответ 2

У вас есть связь между стеком IP и физическим стеком. MAC-адрес находится в той части, которая обертывает информацию IP, а не наоборот. Поэтому, когда я отправляю что-то с своего компьютера, скажем, на ваш, физический сегмент в моей локальной сети (Ethernet в этом случае) обертывает материал IP и включает мой MAC. Затем маршрутизатор извлекает информацию о IP-адресе и передает это вверх и вверх (в этом случае снова по Ethernet) на мой DSL-модем, используя свой собственный MAC в процессе. DSL-модем разворачивает материал IP и отправляет его по телефонной линии, используя любой протокол, который он использует (не знаю и не заботится в этот момент), чтобы... ну, вы поняли идею. Каждый скачок физической привязки обертывает и разворачивает информацию IP, используя любую дополнительную информацию, связанную с базовым физическим уровнем, для локальной передачи.

Ответ 3

Нет "маршрутизатора сервера". Пакеты могут доходить до сервера со многих маршрутизаторов.

Нет "маршрутизатора клиента". Пакеты могут быть отправлены от клиента ко многим маршрутизаторам.

Единственными устройствами, которые могут видеть MAC-адрес, являются те, которые находятся в одной и той же локальной сети - возможно, только те, которые находятся в одном и том же сегменте кабеля.

BTW, сервер не может получить IP-адрес клиента, если клиент находится на другой стороне прокси-сервера.

Ответ 4

Идентификатор источника и адреса назначения, которые остаются. Идея межсетевого взаимодействия в основном основана на доставке хмеля. Промежуточные маршрутизаторы/хост понимают только MAC-адреса. Насколько мне известно, таблицы маршрутизации должны понимать машинный адрес.

Если MAC-адреса могут оставаться на протяжении всего пути пакета; что означает, что нет необходимости в адресах интернет-протокола, которые должны быть изобретены. И весь интернет использовал бы только MAC-адреса: -)

Вы можете добиться того, чего хотите, только если оба сервера и клиент находятся в одной локальной сети (оба хоста подключены некоторыми средствами L1).

Сказав это, ваше приложение выглядит как веб-сервер, который говорит мне, что он не должен находиться в одной сети.

Тем не менее, если вы хотите указать MAC-адрес хоста-источника на принимающем хосте; подумайте, чтобы отправить его как полезную нагрузку?

Дополнение:

Сети не обязательно должны быть одного типа по всему миру (например, Ethernet, Frame relay и т.д.). Сетевой уровень обеспечивает гибкость маршрутизации без различия между базовыми уровнями (Data Link Layer) или я должен сказать, что это базовая технология L1. Короче говоря, IP предоставит нам межсетевой и уровень передачи данных (где MAC-адреса попадают в изображение) будет обеспечивать связь на микроуровне (то есть в локальной сети). Это справедливая причина, почему Mac и IP-адреса сосуществуют!: -)

Ответ 5

Вы не можете - если клиент не локален на вашем сервере. Если это так, вы можете попробовать выполнить его arp-ping и получить адрес mac-клиента таким образом.

Ответ 6

Вы думаете о прямом соединении между LAN-сервером и локальной сетью клиентов, и это не так, как работает Интернет. Между двумя локальными сетями может быть любое количество переходов - и, кстати, нет ограничений, что либо LAN использует что-либо вроде MAC, поэтому "MAC-адреса" не помещаются в IP-пакеты. "MAC" имеет смысл только в локальной сети (actulaly, только тот, чьи нижние слои используют что-то вроде MACs;-), и обнаруживаются/анонсируются с помощью протоколов ARP и RARP (которые не маршрутизируются; -).

Ответ 7

Простая разница: IP-адреса являются сквозными адресами (в пакете IP, конечно), тогда как MAC-адреса используются только hop by hop. Кроме того, базовый протокол MAC может меняться на каждом скачке без знания клиента, поэтому клиент может даже не понимать все адреса по пути своего IP-пакета.