Когда мы запускаем серверное приложение, нам всегда нужно указать номер порта, который он прослушивает. Но как этот "механизм прослушивания" реализуется под капотом?
Мое современное воображение таково:
Операционная система связывает номер порта с некоторым буфером. Ответственность за серверное приложение заключается в мониторинге этого буфера. Если в этом буфере нет данных, операция прослушивания приложения сервера будет заблокировать приложение.
Когда некоторые данные поступают с проводов, операционная система знает, а затем проверяет данные и видит, нацелен ли он на этот номер порта. Затем он заполнит соответствующий буфер. И тогда ОС сообщит о заблокированном серверном приложении, и серверное приложение получит данные и продолжит работу.
Вопрос:
-
Если приведенный выше сценарий верен, как может система opearting знать данные, поступающие из проводника? Он не может быть занятым пулом. Это какой-то механизм, основанный на прерываниях?
-
Если слишком много данных и буфер недостаточно большой, будут ли потери данных?
-
Действительно ли операция "слушать порт" является блокировкой?
Большое спасибо.