Компьютерные сети. Лекции_1_2. Введение в компьютерные сети 1 Основные понятия
Скачать 1.61 Mb.
|
Физический уровень обеспечивает выполнение процесса передачи непрерывного битового потока данных между непосредственно связанными средой передачи данных сетевыми устройствами. На этом уровне стандартизуются: используемая среда передачи данных (разновидности кабеля, радиосреда и др.) с её детальными характеристиками; используемые соединительные разъемы и методы аппаратной реализации; способы представления пересылаемого через среду передачи цифрового сигнала изменением некоторого параметра среды передачи (например, разностью электрического потенциала в медных кабелях, яркость светового луча в волоконно-оптическом кабеле, различной частотой сигнала, представляющего значения “0” и “1” для разнообразных сред передачи). Протоколы физического уровня реализуются в аппаратуре всех устройств, подключенных к сети. При этом разные технологии передачи данных реализуются различными, соответствующими технологии, протоколами физического уровня. Уровень каналов данных (или просто “канальный уровень”) в некоторых источниках именуют “уровнем звена связи”, что является далеко не самым удачным переводом англоязычного названия уровня. Основной задачей этого уровня является потенциально ненадежная доставка корректных пакетов данных (в отличие от битового потока) между сетевыми устройствами, непосредственно связанными средой передачи данных. Для обеспечения корректности передачи данных могут использоваться специальные методы избыточного кодирования (количество бит закодированного значения превосходит длину в битах самого этого значения) и/или иные способы проверки контроля корректности принятых из сети данных (такие, например, как контрольные суммы). При использовании методов избыточного кодирования в ряде случаев возможно восстановление корректных исходных значений по искаженным принятым битам. Если восстановление значения хотя бы одного байта из принятого пакета невозможна, отбрасывается весь пакет. И для многих сетевых технологий никаких действий по повторной пересылке отброшенных пакетов не предпринимается: эта задача решается на более высоких уровнях. Протоколы канального уровня обычно реализуются в драйверах устройств, обеспечивающих подключение компьютеров или маршрутизаторов к сети (сетевых карт, интерфейсных модулей и пр.). Следует, однако, отметить, что для некоторых сетевых технологий (к числу которых относится и Ethernet) четкая граница между физическим и канальным уровнем не стандартизуется. Так, например, функция буферизации принимаемых из сети пакетов для различных моделей сетевых карт (даже одного и того же производителя) может быть реализована либо полностью аппаратно на самой сетевой карте в собственной оперативной памяти, либо, при отсутствии таковой памяти, реализуется в драйвере с использованием оперативной памяти компьютера. Карты первого типа дороже, но являются более “быстрыми”. Карты второго типа, соответственно, дешевле, но обеспечивают меньшие скорости передачи данных. Учитывая нестандартизованность границы между физическим и канальным уровнями ряда технологий, эти уровни зачастую объединяют в один драйверный уровень, сохраняя за ним номер 2 канального уровня. Сетевой уровень обеспечивает ненадежную передачу пакетов данных между произвольными сетевыми устройствами, которые могут находиться как в одном и том же, так и в различных сегментах и даже различных сетях. В случае, когда взаимодействующие сетевые устройства находятся в различных сегментах сети, средствами данного уровня решается задача маршрутизации пакетов, транзитом проходящих через соединяющее сегменты сетевое устройство в направлении “конечного” сетевого устройства. Задача маршрутизации, то есть выбора одного из нескольких потенциально возможных направлений, ведущих к цели, решается на каждом из упомянутых транзитных сетевых устройств, обычно именуемых маршрутизаторами. Кроме своей основной задачи ― маршрутизации пакетов ― средства сетевого уровня могут разбивать пакеты на части (выполнять фрагментацию пакетов), если размер этих пакетов превосходит максимально возможную длину пакетов используемой среды передачи. Тогда при приеме таких пакетов выполняется их “сборка”, называемая дефрагментацией. Средства сетевого уровня реализуются в виде модулей ядра операционной системы сетевого устройства. Транспортный уровень обеспечивает надежную передачу данных между парой программных процессов, работающих на одном и том же, или на различных компьютерах, расположенных в произвольных частях сети. Надежность обеспечивается контролем доставки пакетов и повторной пересылкой “потерянных” пакетов. Поскольку последовательные пакеты, маршрутизируемые по разным маршрутам, могут в ходе пересылки “обгонять” друг друга, важной функцией этого уровня является управление последовательностью доставки пакета их получателю. И, наконец, размер пакета транспортного уровня может превосходить максимально допустимую длину пакета сетевого уровня. В этом случае на передающей стороне выполняется сегментация пакета (разбиение его на сегменты), а на принимающей ― его десегментация. Разные сегменты сети по пути следования пакетов имеют разную пропускную способность. Важной функцией протокола транспортного уровня является контроль перегрузки сети. В 1986 году после повсеместного внедрения надежного протокола транспортного уровня, в котором не было функции контроля, из-за потоков данных из быстрой сети национального научного фонда США NSFNet в медленный ARPANet весь интернет несколько месяцев страдал от постоянных перегрузок сети. Средства транспортного уровня реализуются в виде модулей ядра операционной системы сетевого устройства. Сеансовый уровень предоставляет средства для установления, поддержания (восстановления после случайного разрыва) и управления соединением между программными процессами, работающими на одном и том же, либо на разных компьютерах сети. Уровень реализуется программными модулями, работающими над ядром операционной системы (вызываемыми из прикладных процессов). Уровень представления данных обеспечивает автоматическое преобразование формата передаваемых структурированных данных из вида, принятого на передающей стороне, к виду, принятому на принимающей стороне. Например, признаки конца строки и конца файла в текстовых файлах различны в файловых системах разных операционных систем (например, MS Windows и в UNIX). Уровень представления данных в этом случае должен обеспечить автоматическую замену признаков конца строки и конца файла в текстовых файлах. Уровень реализуется в виде модулей, работающих над ядром операционной системы (и над уровнем модулей сеансового уровня). И, наконец, прикладной уровень состоит из совокупности прикладных программных процессов, реализующих все известные приложения пользователей. Подводя итоги рассмотрению модели OSI/ISO еще раз отметим, что эта модель является эталонной, служащей методическими рекомендациями разработчикам новых сетевых протоколов, и не была в полной мере реализована ни в одном сколь-либо широко распространенном семействе сетевых протоколов. В то же время, следует отметить, что эта методическая роль очень важна. При осознанных и мотивированных отклонениях от этой модели разработчики новых сетевых протоколов не утрачивают их структурированности, являющейся залогом надежной реализации, но, возможно, добиваются некоторого повышения эффективности реализации сетевых протоколов, предназначенных для определенных частных условий их эксплуатации. 1.8.3 Уровневая организация и стек протоколов TCP/IP Протоколы TCP/IP были разработаны раньше эталонной семиуровневой модели OSI/ISO , и опыт разработки этих протоколов был весьма существенно учтен при разработке указанной модели. Модель протоколов семейства TCP/IP состоит из пяти уровней: 5. Прикладной (Application layer) 4. Транспортный уровень (Transport layer) 3. Межсетевой уровень (Internet layer или Internet Protocol - IP) 2. Уровень каналов данных (Data link layer) 1. Физический уровень (Physical layer) Нетрудно заметить, что названия двух нижних уровней совпадают с OSI. Совпадают и их функции. И, поскольку для некоторых технологий четкой границы между этими уровнями нет, их обычно также объединяют в драйверный уровень. На этом уровне, в зависимости от сетевой технологии сегмента, подключенного к определенному сетевому интерфейсу, “прикрепляется” драйвер, обслуживающий интерфейсы к сегментам, построенных на базе соответствующей технологии. Одновременно с драйвером для каждого сетевого интерфейса используется модуль ARP одноименного протокола ARP (Address Resolution Protocol - протокол разрешения адресов), используемый для преобразования видов адресов, применяемых на более высоком IP-уровне, в адреса канального уровня. Уровень этого модуля несколько выше уровня соответствующего драйвера и взаимодействует только с этим драйвером. Третий уровень модели TCP/IP называется межсетевым (Internet layer или Internet Protocol - IP ). Вот мы и встретились впервые с одним из основных протоколов семейства TCP/IP , название которого содержится в название семейства. По своим функциям протокол IP модели TCP/IP идентичен протоколам сетевого уровня модели OSI/ISO. Но на межсетевом уровне (или IP-уровне) кроме протокола IP работает межсетевой протокол управляющих сообщений ICMP (Internet Control Message Protocol), основной задачей которого является контроль работоспособности протокола IP. На самом деле два этих протокола находятся в неразрывном единстве и даже определены в “соседних” стандартах RFC 791 и RFC 792 соответственно. Транспортный уровень модели TCP/IP включает два независимых протокола TCP и UDP. TCP ― это второй протокол, название которого стало составной частью названия семейства TCP/IP. Отметим, что протокол TCP (Transmission Control Protocol - протокол управления передачей) в точности соответствует спецификации транспортного уровня модели OSI/ISO, обеспечивая так называемый виртуальный канал между взаимодействующими процессами. В отличие от него протокол UDP (User Datagram Protocol - дэйтаграммный протокол пользователя) обеспечивает ненадежное дейтаграммное соединение между взаимодействующими процессами, в котором могут происходить как потери пакетов, так и нарушения порядка следования пакетов. Как мы увидим в дальнейшем, для некоторых приложений такое ненадежное соединение оказывается более предпочтительным по сравнению с соединением через надежный, но требующий время для установления соединения и повторной доставки потерянных пакетов виртуальный канал. Отметим, что программные модули всех рассмотренных выше уровней, включая транспортный реализованы в ядре ОС. Поскольку более высокий уровень может взаимодействовать только с верхним из указанных уровней (транспортным), все сетевые ОС предоставляют пользователям совокупность системных вызовов (функций, выполняемых путём обращения к ядру ОС), обеспечивающих интерфейсы транспортного уровня к более высоким уровням. Эти интерфейсы рассматриваются в главе 6 настоящей книги. Нетрудно заметить, что в уровневой модели протоколов TCP/IP отсутствуют сеансовый уровень и уровень представления данных. Если работающее на прикладном уровне приложение нуждается в услугах каких-либо из этих уровней, оно должно содержать внутри себя реализацию требуемых функций сеансового уровня и/или представления данных. В качестве примера приложения, реализующего “внутри себя” функции сеансового уровня, можно привести протокол защищенного удаленного терминала ssh, который в дополнение к своему основному функционалу может автоматически восстанавливать соединения, “разорвавшиеся” из-за ненадежной работы сети. В качестве примера приложения, реализующего некоторые функции уровня представления данных, можно привести протокол пересылки файлов ftp, предоставляющий возможности автоматического “приведения” формата пересылаемых символьных файлов к формату, используемому в операционной системе принимающего компьютера. Отметим, что среди великого множества протоколов, работающих на прикладном уровне TCP/IP, есть протоколы, имеющие иерархическую структуру. В качестве примера приведем протокол сетевой файловой системы NFS, пользующийся услугами как протокола транспортного уровня UDP, так и прикладного протокола RPC (Remote Procedure Call - удаленный вызов процедур), работающего над транспортным протоколом TCP. Общая схема взаимодействия протоколов семейства TCP/IP представлена на рис. 1.15. Фрагментами этого рисунка мы будем не раз пользоваться при рассмотрении различных протоколов тех или иных уровней. Рис. 1.15. Схема взаимодействия протоколов семейства TCP/IP При отправлении пакетов данных в сеть с передающей стороны выполняется мультиплексирование (объединение) пакетов параллельно работающих протоколов в единый поток пакетов, пересылаемый через сеть передачи данных. На принимающем компьютере выполняется обратная процедура демультиплексирования (выделения пакетов, предназначенных конкретным протоколам), в ходе которой для каждого пакета строится цепочка протокольных модулей, через которую этот пакет последовательно поднимается по уровням. При построении этой цепочки используется принцип стека, на дно которого помещается драйверный модуль того интерфейса, через который поступил пакет. Затем модули добавляются в цепочку по принципу стека: при обработке пакета на текущем уровне принимается решение о том, какому модулю более высокого уровня адресован пакет (как это делается мы узнаем чуть позже), этот модуль заносится на верхушку стека и этому модулю передается пакет от расположенного “под ним” модуля. При взаимодействии двух конкретных приложений содержимое стека протоколов, участвующих в передаче пакета адресату однозначно определяется взаимодействующими приложениями. Поэтому сетевые специалисты зачастую говорят, что такие-то приложения взаимодействуют с использованием такого-то стека протоколов. Рассмотрим несколько подробнее порядок пересылки информации через компьютерную сеть. Пусть браузер на клиенте, подсоединенном к интернету через WiMax- роутер, отправляет запрос к веб-серверу. В этой пересылке участвуют несколько промежуточных сетевых устройств: WiMax-устройства, маршрутизаторы провайдеров. На каждом из этих маршрутизаторов принятый пакет поднимается по стеку протоколов до модуля протокола IP и затем отправляется вниз по стеку протоколов выбранного для дальнейшей передачи пакета сетевого интерфейса. И лишь на конечных компьютерах информация проходит полный стек протоколов, спускаясь с вершины этого стека к его дну, на компьютере-источнике данных и, поднимаясь от дна стека к его вершине, на компьютере-получателе данных. Рассмотренная картина изображена на рис. 1.16. Рис. 1.16 Схема передачи через сеть информации между парой процессов А теперь рассмотрим, каким преобразованиям подвергается в процессе ее пересылки информация, “путешествующая” через сеть между парой приложений. Приложение-отправитель направляет получателю некоторое прикладное сообщение, путем отправки его через интерфейс с протоколом транспортного уровня. Этот протокол инкапсулирует прикладное сообщение в новый пакет, называемый транспортным сообщением и содержащий кроме информации прикладного сообщения дополнительный заголовок транспортного уровня (ЗагТУ), содержащий, в частности, информацию о получателе (его компьютере и принимающем данные программном процессе), номере пакета и некоторую другую информацию. Сформированное таким образом транспортное сообщение передается на сетевой уровень, подвергаясь при этом очередной инкапсуляции в IP-пакет, содержащий в дополнение к полученному “сверху” транспортному сообщению заголовок IP-пакета (IP-заг), включающем адресную информацию, тип протокола транспортного уровня (TCP или UDP) и некоторые другие сведения. И, наконец, переданный IP-модулем драйверу IP-пакет инкапсулируется в пакет физического уровня, называемый кадром (frame) и пересылаемый через среду передачи данных. В ходе этой инкапсуляции в начало кадра добавляется его заголовок (ЗагК), а в конец - контрольная сумма всех слов содержания кадра. В заголовок кадра указывается адресная информация физического уровня, сведения о протоколе, чей пакет инкапсулирован в кадр (ARP, IP, ICMP) и некоторые другие сведения. Отметим, что транспортные сообщения, не помещающиеся в один IP-пакет, могут подвергаться разбиению на части, называемому фрагментацией, а IP-пакеты, не помещающиеся в один кадр ― аналогичному разбиению на части, называемому сегментацией IP-пакетов. Сформированные кадры пересылаются через среду передачи получателю, определяемому адресной информацией и при приеме этой информации автоматически вычисляется контрольная сумма всех слов содержимого кадра. Полученное значение сравнивается с контрольной суммой из конца кадра, и при несовпадении этих значений кадр выбрасывается. Если же контрольные суммы совпали, начинается последовательная декапсуляция пакетов и их демультиплексирование ― направление тому протоколу верхнего уровня, информация о котором содержится в заголовке пакета текущего уровня. В ходе “путешествия” наверх при необходимости выполняются требуемые десегментация и дефрагментация. “Путешествие” заканчивается прибытием полностью декапсулированного прикладного сообщения получающему его приложению. Этот процесс иллюстрируется на рис. 1.17. Рис. 1.17. Преобразование пакетов данных при пересылке через стеки протоколов Рассмотренная картина может быть пояснена простой аналогией отправки писем по обычной (не электронной) почте. Отправитель письма на листе бумаги пишет содержание письма (аналог прикладного сообщения), которое он хочет направить адресату. Для того, чтобы сделать это, он обращается к следующему уровню (уровню почтового ящика), предварительно запечатав письмо в конверт и написав на нем адреса отправителя и получателя письма. Далее начинают работать уровни, невидимые для конечных пользователей почты. Из почтового ящика письма поступают в почтовые отделения, в которых они сортируются по индексам адресов получателей, упаковываются в ящики, предназначенные для отправки на определенных поездах и самолетах (чем не различные среды передачи?), на которых пишется соответствующая адресная информация, и доставляются в пункты назначений. Затем содержимое ящиков сортируется по отделениям связи, из которых письма поштучно приносятся в почтовые ящики получателей. И, наконец, получатель вынимает письмо из своего почтового ящика, открывает конверт и получает адресованное ему послание. Разумеется, что приведенная аналогия не идеально точна (письма и ящики с письмами не разрезаются на части и не склеиваются потом воедино). Тем не менее, на наш взгляд, она помогает понять суть происходящих процессов. 1.8.4 Основы адресации компьютеров и процессов на разных уровнях стека протоколов TCP/IP При обсуждении формата заголовков пакетов, добавляемых в начало пакета различными уровнями мы упоминали, что в состав заголовков транспортного, IP и канального уровня включается адресная информация соответствующего уровня. Подчеркнем, что на каждом уровне используется собственная система адресации компьютеров (на всех трех упомянутых уровнях), а также процессов и соединений между процессами (на транспортном уровне). Необходимость использования различных систем адресации обусловлена потребностями эффективной реализации задач каждого уровня. Вкратце рассмотрим системы адресации, используемые на каждом из упомянутых уровней, начиная с самого нижнего из них. |