как процессор распределяет данные из сети? - PullRequest
0 голосов
/ 11 апреля 2019

Я изучаю сетевые коммуникации и уже знаком с сетевыми уровнями TCP / IP (физический, канал передачи данных ... и прикладные уровни) и с тем, как данные перемещаются через эти узлы.Но у меня есть несколько вопросов о том, что происходит внутри машины, когда данные принимаются сетевой интерфейсной картой (NIC).

Вопросы:

  1. Как CPU узнает, что данные с другой машины получены?
  2. Как CPU сообщает ОС, что данные с другой машины получены?
  3. Откуда ОС знает, для какого приложения используются данные?

Пожалуйста, дайте мне несколько подробных объяснений по этой теме или посоветуйте несколько полезных материалов, чтобы прояснить ситуацию.

1 Ответ

3 голосов
/ 13 апреля 2019

Чтобы дать вам общее представление с точки зрения Linux (должно быть похоже на другие ОС):

Пакеты поступают в NIC. Эти пакеты копируются в циклические очереди в ОЗУ через DMA. Поступление пакетов сгенерирует прерывание, чтобы система знала, что это пакеты в ОЗУ. Соответствующему прерыванию будет обработчик прерываний, зарегистрированный в операционной системе через сетевой драйвер. (Для простоты не говорите о softirq's). Каждый ЦП имеет функцию опроса, задачей которой является сбор пакетов из этих очередей и передача их на верхние н / ж уровни. Итак, отвечая на ваши вопросы:

Как процессор знает, что поступили данные с другой машины? Когда происходит прерывание и цикл опроса не работает на ЦП, ОС (через сетевой драйвер) попросит ЦПУ запустить цикл опроса для сбора пакетов.

Как CPU сообщает ОС, что поступили данные с другой машины? CPU не нужно информировать ОС. ОС будет знать, когда возникнет прерывание, поскольку обработчик прерываний является частью сетевого драйвера, который является частью ОС. Фактически ОС скажет ЦПУ начать сбор пакетов.

Как ОС знает, для какого приложения предназначены данные? Связь осуществляется через сокеты, которые будут иметь номер порта. Прибывшие пакеты будут иметь номер порта, который поможет ОС доставить пакет в требуемое приложение.

...