1. За networking Socket значи комбинацията от IP-Port (
https://en.wikipedia.org/wiki/Network_socket )
2. Постоянно са отворени, докато една от страните не реши друго ( и ползваш TCP, което сигурно е случая ).
3. Заема пренебрежимо малко ресурси ( per connection ). OS си пази инфо за отворените TCP сесии + има keepalive пакети, които се пращат от за проверка дали connection-a е отворен.
Може да стой отворен докато някой не прекъсне connection-a или стигнеш някой timeout ( default tcp by OS или на самия server, който ползваш )
Всичко е въпрос на брой connections за еденица време. Принципно има много зависимости. Примерно ако имаш TCP idle timeout на някой рутер/firewall etc, който е 300 секунди и при голям keepalive interval ( 1800 sec ) няма да ти държи open connections като няма предаване на данни. Тези стойности даже май бяха default. Ако на server-a ползваш някой тежък app и при всеки connection държиш отделен процес, тогава няма да имаш "система"
Затова трябва да се разровиш доста ако искаш да направиш нещо сносно