Почему нужен сокет?

Я прочитал ответ Питера Вон на В чем разница между портом и сокетом?, и теперь я понимаю, почему сокет отличается от порта. Но я все еще воспринимаю всю историю:

IP-адрес: для устройства в сети

Порт: для приложения, запущенного на этом устройстве в сети

Теперь почему нам нужно еще одно понятие сокета? Если у нас есть IP-адрес этого устройства, а также мы можем идентифицировать приложение на этом устройстве, зачем нам нужен еще один уровень идентификации с помощью сокетов?

Вместо того, чтобы ниспровергать, я прошу вас уточнить мои сомнения, поскольку я считаю, что это все еще путаница среди начинающих, таких как я.

Ответ 1

На высоком уровне вы правильно относитесь к определениям "IP-адрес" и "порт":

  • "IP-адрес" используется для идентификации одной машины в сети.
  • "Порт" используется для идентификации одного приложения на этом компьютере.

Учитывая пару (IP-адрес, порт), мы можем теперь идентифицировать одного клиента в сети. Но как мы описываем связь между двумя клиентами?

То, что вступает в игру концепция сокета.

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

Таким образом, сокет используется для идентификации пары клиентов в сети, тогда как IP-адрес и порт используются для идентификации один клиент.