Кажется, существует много ответов, приравнивающих сокет с соединением между 2 пк.. то, которое я думаю, абсолютно неправильно. Сокет всегда был конечная точка на 1 пк, который может или не может быть соединен - конечно, мы все использовали слушателя или сокеты UDP* в какой-то момент. Важная часть - то, что это адресуемо и активно. Отправка сообщения к 1.1.1.1:1234 вряд ли будет работать, поскольку нет никакого сокета, определенного для той конечной точки.
Сокеты являются конкретным протоколом - так реализация уникальности, что и TCP / IP и UDP / использование IP* (ipaddress:port), отличается, чем, например, IPX (Сеть, Узел, и... гм, сокет - но различный сокет, чем предназначен общим термином "сокета". Числа сокета IPX эквивалентны портам IP). Но, они все предлагают уникальную адресуемую конечную точку.
, Так как IP стал основным протоколом, порт (в сетях условий) стал synonomous или с UDP или с номером порта TCP - который является частью адреса сокета.
UDP без установления соединения - значение, что никакой виртуальный канал между этими 2 конечными точками никогда не создается. Однако мы все еще обращаемся к сокеты UDP как конечная точка. API-функции проясняют, что оба - просто другой тип сокетов - SOCK_DGRAM
, UDP (просто отправляющий сообщение), и SOCK_STREAM
TCP (создающий виртуальный канал).
Технически, заголовок IP содержит IP-адрес, и протокол сверху IP (UDP или TCP) содержит номер порта. Это позволяет иметь другие протоколы (например, ICMP, которые не имеют никаких номеров портов, но действительно имеют информацию о IP-адресации).