@slaverchief

Зачем указывать адрес?

При создании сокет-приложения сокет нужно биндить к адресу и порту. Если с портом все понятно - машина должна понимать, какому именно приложению отдавать пришедший пакет данных - то с адресом не очень. Зачем указывать адрес сокета для приложения, если приложение итак находится на машине, имеющей свой адрес. Кроме того, часто в процессе изучения я часто замечал, что даже при деплое сетевого приложения сокет биндится к адресу аналога 127.0.01. Для чего это?
  • Вопрос задан
  • 219 просмотров
Решения вопроса 1
Ocelot
@Ocelot
У машины может быть несколько сетевых интерфейсов, соответственно и несколько адресов.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
если приложение итак находится на машине, имеющей свой адрес

Какой из? Даже у машин с одной сетевухой всегда два адреса - второй всегда 127.0.0.1. А вообще могут быть машины с двумя, тремя, ... N сетевухами...
Ответ написан
ValdikSS
@ValdikSS
Указание адреса регулирует:
  1. Выбор протокола отправки и получения пакетов (IPv4/IPv6)
  2. Выбор адреса приёма пакетов (возможность запуска разного ПО с одинаковым портом на разных адресах)
  3. Выбор адреса отправки пакетов (это не то же самое, что выбор интерфейса, но зачастую приводит к похожему или такому же результату)
Ответ написан
@res2001
Developer, ex-admin
При биндинге можно указать вместо адреса константу INADDR_ANY (0.0.0.0) - т.е. все доступные адреса, тогда программа будет слушать указанный порт на всех адресах, доступных ОС.
Адрес 127.0.0.1 (или любой из подсети 127.0.0.0/8) назначают, обычно тогда, когда сервис должен работать только в рамках локальной машины. Например у вас есть обратный прокси на nginx и пара сайтов на apache. Прокси будет слушать внешний адрес на 443 порту, а сайты вполне могут слушать 127.0.0.1 и принимать подключения только от прокси.
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Компьютерные сети
software engineer
Зачем указывать адрес сокета для приложения, если приложение итак находится на машине, имеющей свой адрес.


Потому что если ты сидишь в интернете, то у тебя УЖЕ два адреса - адрес, который тебе выдал твой роутер или провайдер и 127.0.0.1
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы