Весьма путанно изъясняетесь, так что не обессутьте, если ответ не очень по теме.Принцип, по которому выделяются файловые дескрипторы, не важно, для сокетов или для обычных файлов, не оговаривается. То есть вы получаете целое число, которое в данном процессе является ссылкой на сокет и больше вам ничего знать не нужно. Ясно, что большинство реализаций будут выделять числа, идущие подряд по возрастанию, но строить на этом предположении логику программы, особенно если она больше трёх строчек, ни в коем случае не стоит.
Что касается "и как с ними правильно оперировать в селекте" - вопрос не вполне ясен. Если вам не ясно, что передавать в качестве первого параметра select(), то: нужно найти максимум среди всех проверяемых этим select'ом дескрипторов (целых чисел, как я уже говорил), увеличить полученное число на еденицу и вот это и передавать. Про FD_SET, который нужно делать перед каждым select'ом, вроде бы уже писали выше. Если вам не ясно что-то другое, задавайте вопрос чётче.