Я правильно понимаю, что когда мы открываем сокет на, к примеру, localhost:2000 через socket() как listener, то мы занимаем этот порт
А когда мы как клиент делаем connect() к этому же адресу и порту, то мы открываем какой-то рандомный порт, а операционка уведомляет listenerа и он потом читает из того порта, который мы открыли?