2.3. Поток данных
Рассмотрим поток данных, проходящий вниз через стек протоколов на рисунке 1. Для приложений, использующих протокол TCP (Transmission Control Protocol — протокол управления передачей), данные передаются между приложением и модулем TCP. Для приложений, использующих протокол UDP (User Datagram Protocol — протокол пользовательских дейтаграмм), обмен данными идет между приложением и модулем UDP. FTP (File Transfer Protocol — протокол передачи файлов) является типичным примером использования протокола TCP. В данном случае стек протоколов будет иметь вид FTP/TCP/IP/ENET. Приложения SNMP (Simple Network Management Protocol — простой протокол сетевого управления) используют протокол UDP и стек будет иметь вид SNMP/UDP/IP/ENET.
В модулях TCP, UDP и драйвере Ethernet выполняется мультиплексирование n х 1 (мультиплексор имеет один выход и множество входов). Существует также обратная операция — демультиплексирование 1 х n (демультиплексор имеет один вход и множество выходов). Схематическое представление мультиплексоров и демультиплексоров приведено на рисунке 2. Если кадр Ethernet попадает в драйвер Ethernet из сети, этот кадр передается модулю преобразования адресов ARP (Address Resolution Protocol) или модулю IP (Internet Protocol). Выбор одного из этих модулей (ARP или IP) определяется полем типа в заголовке кадра Ethernet.
1 2 3 ... n 1 2 3 ... n \ | / | \ | | / ^ \ | | / | \ | | / | ------------- flow ---------------- flow |multiplexer| of |de-multiplexer| of ------------- data ---------------- data | | | | | v | | 1 1 Рисунок 2: Мультиплексор и демультиплексор
Если пакет попадает в модуль IP, после этого он передается модулю TCP или UDP в соответствии со значением поля протокола в заголовке IP.
Дейтаграммы UDP, приходящие в одноименный модуль, преобразуются в сообщения прикладного уровня и передаются программам, выбор которых определяется номером порта в заголовке UDP. Сегменты TCP в одноименном модуле преобразуются в сообщения прикладного уровня и передаются пользовательским программам в соответствии с номером порта в заголовке TCP. Мультиплексирование исходящего потока является очень простой задачей, поскольку на каждом уровне существует только один путь передачи информации; каждый протокол просто добавляет в пакет свой заголовок, обеспечивающий демультиплексирование данных на приемной стороне.
Данные передаются от прикладных программ через TCP или UDP, преобразуются модулем IP и передаются в сеть с использованием драйвера сетевой платы на самом нижнем уровне.
Хотя в сетях может использоваться множество различных технологий, все примеры здесь построены на основе технологии Ethernet, которая на сегодняшний день является самой распространенной для передачи IP-трафика. Компьютер на рисунке 1 имеет одно соединение Ethernet. Шестибайтовый адрес Ethernet является уникальным для каждого адаптера Ethernet и задается на аппаратном уровне.
Компьютер также имеет 4-байтовый адрес IP. Этот адрес используется на интерфейсе нижнего уровня в модуле IP. Этот адрес должен быть уникальным в масштабах сети.
Работающий компьютер всегда знает свои адреса IP и Ethernet.