Назад | Перейти на главную страницу

Необходим ли MAC-адрес получателя для TCP-соединений через Интернет?

Я хочу установить TCP-соединение через Интернет между двумя компьютерами, которые находятся в разных локальных сетях (в локальных сетях используется Wi-Fi). Я искал описание протокола TCP, особенно структуру заголовка TCP: http://en.wikipedia.org/wiki/Transmission_Control_Protocol#Checksum_computation

На основании этих данных я предположил, что необходимы только: исходный адрес (глобальный IP-адрес), целевой адрес (глобальный IP-адрес), исходный порт, целевой порт.

Но как маршрутизатор в локальной сети получателя узнает, какой компьютер в этой сети является конечным пунктом назначения без MAC-адреса или локального IP-адреса?

РЕДАКТИРОВАТЬ: В моей ситуации у меня есть: мобильный телефон, подключенный к Интернету (не через Wi-Fi), и сервер (ПК) в домашней локальной сети, подключенный к маршрутизатору через Wi-Fi.

Итак, возникает вопрос: являются ли глобальные IP-адрес отправителя / получателя и порты всем, что необходимо, или же MAC-адреса также необходимы для установления соединения?

Если MAC не нужен, что делать, если в одной сети есть два компьютера, которые прослушивают один и тот же порт. Насколько я помню, все компьютеры используют порт 80 для http, который использует tcp. Почему нет конфликтов?

В коммутируемой сети да, MAC-адрес требуется клиенту.

В маршрутизируемой сети клиенту не требуется MAC-адрес.

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

Если MAC не нужен, что делать, если в одной сети есть два компьютера, которые прослушивают один и тот же порт. Насколько я помню, все компьютеры используют порт 80 для http, который использует tcp. Почему нет конфликтов?

Есть конфликты. Это одна из причин того, что NAT и сеть с одним публичным IP - отстой. Маршрутизатор может определить, на какую машину нужно отправить пакет тремя способами:

  1. Если соединение возникло изнутри, маршрутизатор может сделать запись в таблице NAT. Когда он видит входящий пакет, он ищет исходный IP-адрес, исходный порт и порт назначения в своей таблице NAT. Это говорит о внутреннем IP-адресе назначения. Затем он может перезаписать IP-адрес назначения.

  2. Если в маршрутизаторе специально настроена переадресация портов, он может найти этот порт назначения и перезаписать IP-адрес назначения в соответствии с настройками.

  3. Если настроен динамический протокол, такой как UPnP, то внутренний компьютер может создать запись динамической пересылки в маршрутизаторе, позволяя ему перезаписать IP-адрес назначения.