На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

TCP/IP с   точки зрения модели ISO/OSI

Как уже говорилось, каждый уровень модели ISO/OSI выполняет определенную функцию. Например, физический уровень осуществляет передачу данных по сети в виде электрических сигналов. Не нужно забывать, что модель ISO/OSI — это всего лишь модель. Реализации модели могут быть совершенно разными.
Например, набор протоколов TCP/IP использует только пять из семи уровней модели ISO/OSI. показано, как сетевая модель реализована в рамках TCP/IP.
С помощью модели сетевых коммуникаций легко понять, как данные передвига­ются через набор протоколов TCP/IP. Например, для сообщения с сетевым
уровнем программа может обращаться прямо к программному обеспечению ICMP или IP, а может обратиться к программам TCP и UDP, которые, в свою очередь, обратятся к протоколу IP. Есть только один способ общения компьютеров — это аппаратный интерфейс на канальном уровне, управляющий передачей инфор­мации физического уровня. Чтобы помочь вам лучше понять работу набора про­токолов TCP/IP, в следующих пяти разделах я подробно расскажу о каждом из
'.СЛУЖБЫ сквозного и ПОСЛЕДОВАТЕЛЬНОГО СОЕДИНЕНИЯ
£^ Протоколы могут обеспечивать обслуживание сообщений, вро-щ де проверки ошибок и управления потоком, двумя путями: сквозным и последовательным. Как уже упоминалось, Internet является сетью, основанной на коммутации пакетов. Данные передаются в виде пакетов от одного коммутатора к другому, ;
■ ' пока не достигнут своего пункта назначения. Например, по пути к адресату они могут пройти через маршрутизатор. Коммутаторы пакетов принято так­же называть транзитными участками (hop).
Последовательная (hop-by-hop) служба выполняет некоторые действия на каж­дом транзитном участке. Предположим, что канальный протокол вычисля­ет контрольную сумму. Кроме того, будем считать, что канальный уровень I : включает эту сумму в передаваемые данные. Каждый коммутатор пакетов,
■ расположенный между компьютером-отправителем и компьютером-получа­телем, проверяет эту контрольную сумму. На каждом транзитном участке
' выполняется функция проверки "ошибок.
Сквозная (end-to-end) служба игнорирует все промежуточные транзитные уча­стки и связанные с ними службы. Предположим, например, что по задумке сетевых проектировщиков транспортный протокол включает в себя проверку ошибок, основанную на методе контрольной суммы. Б этом случае за от­слеживание ошибок ответственны транспортные уровни каждого хоста.
Другими словами, отправитель вычисляет контрольную сумму и включает ее в передаваемое сообщение. Когда компьютер-получатель принимает сооб­щение, его транспортный уровень проверяет правильность контрольной сум­мы. В этом случае протокол предоставляет сквозную службу проверки оши­бок. Иными словами, . i проверку ошибок ответственны только транспорт­ные уровни каждого из концов соединения.
физический уровень
Физический уровень (physical layer) осуществляет передачу данных при помощи электрических сигналов. Примером устройства, функционирующего на этом уровне, является повторитель (repeater). Это электронное устройство, которое регенерирует полученные сигналы и отправляет их дальше к месту назначения. Повторители широко используются в больших локальных сетях, где возможно сильное затухание сигнала.
Физический уровень определяет характеристики провода, который, объединяет компьютеры. Этот уровень также ответственен за то, как сетевая карта или другой преобразователь будет кодировать биты для передачи их по сети. Например, сеть,
физический уровень которой состоит из коаксиального кабеля, будет кодировать
Данные не так, как сеть, построенная на витой паре. Физический уровень вклю­чает в себя среду, с помощью которой данные передаются по сети. Обычно в
качестве такой среды используется коаксиальный кабель или витая пара. В простей­шей локальной сети наиболее часто используется провод, протянутый вдоль стен.
КАНАЛЬНЫЙ УРОВЕНЬ
Канальный уровень (data-link layer) определяет, каким образом физический уро­вень передает пакеты, созданные сетевым уровнем. Он разбивает информацию на биты. Для этого используются протоколы, контролирующие создание и об­мен пакетами (которые также называются фреймами данных (data frames) или просто фреймами) между компьютерами. Более того, канальный уровень слу­жит для соединения физического и сетевого уровней. Обычно канальный уро­вень связан с сетевой картой, расположенной внутри компьютера.
Как показано 4, канальный уровень состоит из аппаратного интер­фейса и двух модулей протокола: Address Resolution Protocol (ARP) и Reverse Address Resolution Protocol (RARP). С помощью этих модулей уровень создает и разбивает адреса, отправляемые и получаемые сетевым уровнем. В наборе про­токолов TCP/IP канальный уровень обменивается данными с IP-модулем сете­вого уровня. Кроме того, он отделяет физический уровень от сетевого. На рисун­ке 2.5 показано, как передается информация от сетевого уровня к физическому.
Канальный уровень осуществляет передану данных между сетевым и физическим уровнями.
СЕТЕВОЙ УРОВЕНЬ
Сетевой уровень (network layer) определяет, как информация, переданная транс­портным уровнем, посылается по сети и как в сети производится адресация хостов. показано, что сетевой уровень содержит протоколы IP (Internet Protocol), ICMP (Internet Control Message Protocol), и 1GMP (Internet Group Management Protocol). Поскольку сетевой уровень содержит IP-модуль, именно он является сердцем любой сети, основанной на TCP/IP. IP-модуль на сетевом уровне выполняет большую часть работы. Протоколы ICMP и 1GMP являются дополнительными для IP-протокола: они помогают обрабатывать неко­торые специальные виды сообщений, вроде сообщений об ошибках и широко­вещательных сообщений (широковещательными называются сообщения, посы­лаемые двум или более системам).
Сетевой уровень отвечает за передачу информации между данной системой и всеми компьютерами в сети. В сетях TCP/IP сетевой уровень инкапсулирует каждый протокол, кроме ARP. В следующем разделе об этом явлении рассказа­но более подробно.
ИНКАПСУЛЯЦИЯ
Как уже упоминалось, для передачи данных по сети, разби-на уровни, ваше сетевое программное обеспечение пере­дает данные от приложения протоколу, находящемуся в протоколов. Каждый протокол в стеке преобразует данные, передает их вниз протоколу, ся в стеке. Когда ваши данные проходят через очередной уровень модуль текущего уровня инкапсулирует данные для протокола уровня. Таким образом, инкапсуляция — это процесс хранения данных в формате, понятном для протокола следующего Когда ваши
перемещаются вниз по стеку протоколов, каждый уровень по-своему инкап­сулирует данные, предоставленные ему предыдущим (более высоким) уров­нем. показан пример инкапсуляции при движении по стеку протоколов: сеть Ethernet использует TCP для инкапсуляции пакета.
ТРАНСПОРТНЫЙ УРОВЕНЬ
Транспортный уровень (transport layer) передает данные между приложениями. Так же как сетевой уровень контролирует передачу данных между компьютера­ми, транспортный уровень контролирует передачу данных через сетевой уро­вень. Транспортный уровень осуществляет передачу данных двумя способами: с помощью протокола TCP (Transport Control Protocol) иди с помощью протокола UDP (User Datagram Protocol). TCP — это ориентированный на соединения протокол, использующий для обмена данными надежные потоки байт (reliable byte-stream). Надежный поток байт — это любой набор данных, передача кото­рых подтверждается компьютером-получателем. Другими словами, общение с помощью TCP напоминает телефонный звонок. Когда вы звоните по телефону, человек на другом конце провода подтверждает наличие соединения. В отличие от TCP, UDP не является надежным протоколом. В этом протоколе для отправ­ления и получения информации используютсядатаграммы. Компьютер-получа­тель не подтверждает передачу данных. Таким образом, UDP напоминает пись­мо, отправив которое, вы не сможете узнать, дошло оно до получателя или нет.
ОТЛИЧИЯ ПОТОКА  БАЙТ И ДАТА ГРАММ
Здесь я расскажу о двух ключевых типах услуг, используемых в рамках TCP/IP: служба потока байт (byte-stream service) и служба датаграмм (datagram service). Протокол, который ис­пользует потоки байт, передает всю информацию в виде ледовательного набора байт и рассматривает данные как последовательный поток, независимо от длины данных и количества пере­дач, необходимых для их отправления или получения. Например, представь­те, что вы хотите отправить 10 сегментов данных, каждый из которых состо­ит из 10 байт, и 1 сегмент данных, состоящий из 50 байт (всего 150 байт). Если вы пользуетесь передачей с помощью потока байт, компьютер-получа­тель может прочитать ваши данные, как 6 сегментов по 20 байт и 1 сегмент . 30 байт. Компьютер-получатель считывает данные в той последовательнос­ти, в которой вы их отправляли.
Протоколы (такие как и IP), передающие информацию с помощью Датаграмм, представляют данные в виде самодостаточных и независимых от друга частей. Датаграммы не придерживаются строгой последовательнос­ти, т. е. данные могут прийти совсем не в том порядке, как они были от­правлены. Если компьютеру-получателю требуются последовательные дан­ные, его программное обеспечение должно составить прибывшие данные в нужном Передача данных посредством датаграмм похожа на Если один день отправите два письма и тому же адресу, то неизвестно, какое из них придет первым. Более того, если вы отправляете одно письмо сегодня, а другое завтра, вы не можете быть уверены, что письмо, которое отправили раньше, придет первым.
уровень приложений
Уровень приложений (application layer) находится на вершине стека протоколов. Работа этого уровня наиболее проста: он отправляет данные на транспортный уровень и получает данные, присылаемые транспортным уровнем. Например, для просмотра документа броузеры Netscape Navigator или Microsoft Internet Explorer требуют его URL. Для этого они посылают компьютеру специальные инструк­ции. Когда сетевой уровень получает информацию от URL, он передает ее выше на транспортный уровень. Уровень приложений получает данные от транспорт­ного и превращает их в читаемую форму, воспринимаемую приложением.
Если вы хотите узнать больше об уровнях сети и о том, как писать программы, обеспечивающие доступ к Internet, прочтите книгу Криса Джамсы. Сулеймана Лалани и Стива Уикли «Программирование в Web для профессионалов».
Шодель клиент-сервер
сетевых программистов и администраторов ис­пользуют для создания программ уровня приложений модель клиент-сервер, которая делит сетевое приложение на две сто­роны: сторону-клиента и сторону-сервер.
В модели клиент-сервер сторона клиента с помощью программного обеспе­чения клиента запрашивает данные или службу у сервера, а сторона сервера использует программное обеспечение сервера для обслуживания этого: запро­са. Обычно приложения сервера инициализируют себя, а затем находятся в состоянии ожидания запросов от приложений клиента. Существуюг два типа процесса сервера: повторяющийся процесс сервера (iterative server process) и конкурирующий процесс сервера (concurrent server process).
Повторяющиеся серверы обслуживают запросы клиентов персонально, как • только эти запросы поступают. Повторяющийся сервер — это, как правило, сервер, который отвечает на большое количество запросов, связанных с ди­намическими данными. Динамические данные (dynamic data) - это данные, которые меняются почти с каждым обращением к ним. Например, показа­ния системного времени — это динамические данные. Таким образом, по-Я вторяющийся сервер .является идеальным средством для обслуживания за­просов типа время дня. Когда сервер времени получает запрос о времени дня, он дает немедленный ответ. Однако следующий ответ на тот же самый запрос будет отличен от предыдущего.
Конкурирующий сервер обрабатывает запросы клиентов, когда время, требуе­мое для выполнения запроса, неизвестно или непредсказуемо, Для того чтобы I обработать все поступающие запросы своевременно, сервер должен обраба­тывать множество запросов в определенный момент времени. Для выполнения каждого запроса сервер создает новый процесс. После начала обработки каж­дого конкурирующего процесса сервер ждет новых запросов для обслуживания.


Глава 2. Сети и TCP/IP
Например, рассмотрим случай, когда сервер содержит базу данных компа­нии и снабжает клиентов последней информацией, содержащейся в этой базе данных. Такой сервер, скорее всего, будет конкурирующим. Если ка­кой-либо из пользователей потребует прайс-лист, сервер передаст запрос базе данных, а затем вернет ему необходимую информацию. Одновременно с первым другой клиент может потребовать список неотложных оплат, и сервер вернет этот список второму клиенту. представлены основы модели клиент-сервер.
В основе структуры адресации протокола TCP/IP лежит уникальный адрес, со­стоящий из четырех октетов (octet). Октет, как и байт, — это число от 0 до 255 (в десятичной системе). IP-адрес идентифицирует и входящую в Internet сеть, и входящий в нее компьютер. «Октет» — это исторически сложившийся термин, который относится к восьмибитной конструкции, более известной как байт (byte). Таким образом, IP-адрес состоит из четырех байт. Подобная схема адресации позволяет адресовать 4294967296 (или 232) компьютеров. Каждый IP-адрес свя­зан с интерфейсной платой, которая находится внутри компьютера. В большин­стве случаев компьютер оснащен только одной интерфейсной платой, поэтому можно смело говорить, что каждый IP-адрес связан с одним компьютером.
Поскольку каждый IP-адрес — это уникальное число, можно обращаться к нему несколькими различными способами, например, следующие числа все являют­ся эквивалентными представлениями одного и того же IP-адреса:
в двоичной системе 1000 01 К) 0001 1000.0000 1000 0100 0010
в десятичной системе 2249721922 (или -2045245374)
в шестнадцатиричной системе 0x8618042
в виде IP-адреса 134.24.8.66
Как вы сами можете убедиться, представление в виде IP-адреса является наибо­лее легким из всех для восприятия. Большинство компьютеров используют именно это представление для обращения к IP-адресам. Здесь адрес делится на четыре байта, из которых крайний слева является самым старшим, а крайний справа —
самым младшим. В адресации TCP/IP самый старший байт изначально пред­назначался для идентификации сети, а остальные три байта идентифицировали компьютер.
Вообще говоря, программное обеспечение Internet интерпретирует поле адреса со всеми двоичными единицами как обращение ко всем компьютерам, у кото­рых остальные поля совпадают. Например, поле адреса, которое содержит «255», - представляет широковещательный адрес (другими словами, сообщение пред­назначается всем компьютерам в сети). Адрес 255.255.255.255 - это обращение ко всем компьютерам Internet. А х.х.255.255 — это обращение ко всем компьюте­рам одной сети. Как правило, программное обеспечение Internet интерпретиру­ет поле со всеми нулями как исходный компьютер. Другими словами, поле адреса со всеми нулями представляет «эту» сеть и «этот» компьютер. Вышепере­численные два адреса используются в Internet только в определенных целях.
Примечание. В некоторых сетях 0 (нуль) также используется в качестве широкове­щательного адреса.
КЛАССЫ АДРЕСОВ
Как уже упоминалось, самый старший байт схемы адресации TCP/IP был изна­чально предназначен для идентификатора сетей. Таким образом, пользователи могли присоединить к Internet только 255 сетей (но не 256 — адрес 255 зарезерви­рован). Для увеличения этого адресного пространства разработчики Internet при­думали простую, но эффективную схему кодирования. С тех пор IP-адреса боль­ше не используют старший байт для идентификации сети. Вместо этого старшие
биты этого байта идентифицируют то, что называют классом адреса (address class). Класс адреса определяет, сколько байт используется для идентификации сети. Звучит замысловато, но на самом деле все это гораздо проще, чем может пока­заться сначала. В таблице 2.3 приведены основы схемы шифрования классов адресов. В сетях TCP/IP требуется, чтобы каждый сетевой интерфейс одной и той же физической сети обладал одним и тем же идентификатором сети. Для адресации отдельных компьютеров используют оставшиеся свободные биты (их называютидентификатором хоста).
ОПРЕДЕЛЕНИЕ типов АДРЕСОВ
Адреса класса А могут пользоваться только одним байтом для адресации. Поскольку старший бит этого байта определяет тип класса, к классу А относится всего 127 (27-1) различных идентификаторов сетей. Однако, поскольку для ад­ресации компьютера в каждой сети остаются 24 бита, в сети класса А могут входить 16 777 216 компьютеров. Реально же адреса этого класса используются для всех сетей, состоящих более чем из 65 536 хостов. Поскольку количество таких сетей невелико, то число 127 — вполне разумная цифра.
Адреса класса В используют для адресации сети два байта. Поскольку два старших бита этих байт используются для определения типа адреса, в классе В можно адресовать 16 383 (2м-1) сетей. Каждая из этих сетей может связывать до 65 536 хостов. Группа IETF (Internet Engineering Task Force) зарезервировала адреса класса В для сетей, объединяющих более 256 компьютеров.
Адреса класса С используют до трех байт для определения сети и типа класса, оставляя 1 байт для идентификационного номера компьютера. Поскольку адре­сация класса С требует 3 старших бита, то для шифрования адресов остается доступным 21 бит. В результате в рамках класса С можно адресовать 2 097 151 сеть, каждая из которых содержит до 256 хостов.
IETF отводит класс D для адресов широковещания, а класс Е зарезервирован для использования в будущем.
Существуют специальные организации, которые следят за тем, чтобы IP-адреса оставались уникальными (такие как Internic в США http://www.internic.net). Кроме того, есть блоки адресов, которые никому не присвоены и используются для узлов протоколов и частных сетей.
В вы узнаете о том, как протоколы организуют
иди структурируют данные. Если вы уже читали какую-либо литературу об Internet, то должны были встретить термин ок­тет. Вообще говоря, понятия октет и байт взаимозаменяемы.
«Все стандарты Internet и большинство книг по ТСР/1Риспользуют термин октет вместо термина байт. Появление этого благозвучного, но причудливого I термина связано с тем, что TCP/IP создавался на машинах DEC-10, у кото­рых байты состояли не из восьми бит».
Стивене указал на то, что большинство современных компьютеров зуют байты, состоящие из восьми бит. Поэтому в своей книге он заменяет термин октет более привычным и известным термином байт, связанным восьмибитными частями информации. В этой книге я последую примеру
Стивенса и буду использовать термин байт.

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика