путь данных (перемещение) данных tcp из системного вызова «запись» в регистры ввода-вывода - PullRequest
3 голосов
/ 22 апреля 2010

Есть ли хороший обзор пути данных tcp в Linux (2.6, а не 2.4, если путь действительно отличается)? Где находится пакет на разных этапах обработки стека tcp / ip?

Как пакет упакован в TCP-сегмент, затем в IP-пакет. Как это передается на сетевую карту? (с серией регистров ввода-вывода и DMA?) Передается ли она на сетевую карту в обработчике системного вызова «write» (с некоторым глубоким стеком вызовов) или в другой момент?

Ответы [ 2 ]

4 голосов
/ 04 мая 2010

http://www.linuxfoundation.org/collaborate/workgroups/networking/kernel_flow

Я думаю, это то, что вы хотите. Он показывает процесс на всем пути от sendmsg () до dev_hard_start_xmit (), где сетевой стек передает пакет драйверу NIC.

3 голосов
/ 22 апреля 2010

Попробуйте: Стек Linux / TCP / IP: сеть для встроенных систем

Стек TCP / IP в Linux: сеть для Встроенные системы / Томас Герберт (Автор). Linux TCP / IP Stack: Сеть для встраиваемых систем предоставляет подробное руководство по внедрение и использование Linux Стек TCP / IP во встроенных системах проекты. Начинается с общего обзор сетей TCP / IP, с справочная информация о применимых сетевые стандарты. Оттуда это подробности реализации TCP / IP в Linux 2.6, следуя пакету данные, как они проходят через стек из системы отправки, из провода , и обратно через входную сторону укладывать в принимающую машину. это уникальный подход дает программистам «изнутри» посмотреть на весь процесс. По всему тексту темы особый интерес для инженеров внедрение встроенных систем обсуждается, например, сокеты, сеть интерфейсы, прикладной уровень протоколы и практические соображения. Это отличный ресурс для встраиваемых систем программисты и инженеры, а также сетевые специалисты заинтересованы в узнать больше о реализации Linux TCP / IP в ядре 2.6.

...