Кто изобрел протокол тср

Обновлено: 04.07.2024

В общем случае термин TCP/IP обозначает целое семейство протоколов: TCP (Transmission Control Protocol/Internet Protocol) для надежной доставки данных, UDP (User Datagram Protocol) для негарантированной доставки, IP (Internet Protocol) и других прикладных служб.

TCP/IP является открытым коммуникационным протоколом. Открытость означает, что он обеспечивает связь в любых комбинациях устройств независимо от того, насколько они различаются на физическом уровне.

Международная организация по стандартизации (ISO, International Organization for Standardization) разработала эталонную модель взаимодействия открытых систем (OSI, Open Systems Interconnection) в 1978/1979 годах для упрощения открытого взаимодействия компьютерных систем. Открытым называется взаимодействие, которое может поддерживаться в неоднородных средах, содержащих системы разных поставщиков. Модель OSI устанавливает глобальный стандарт, определяющий состав функциональных уровней при открытом взаимодействии между компьютерами.

Следует заметить, что модель настолько успешно справилась со своими исходными целями, что в настоящее время ее достоинства уже практически не обсуждаются. Существовавший ранее закрытый, интегрированный подход уже не применяется на практике, в наше время открытость коммуникаций является обязательной. Как ни странно, очень не многие продукты полностью соответствуют стандарту OSI. Вместо этого базовая многоуровневая структура часто адаптируется к новым стандартам. Тем не менее, эталонная модель OSI остается ценным средством для демонстрации принципов работы сети.

Эталонная модель TCP / IP

В отличие от эталонной модели OSI, модель ТСР/IP в большей степени ориентируется на обеспечение сетевых взаимодействий, нежели на жесткое разделение функциональных уровней. Для этой цели она признает важность иерархической структуры функций, но предоставляет проектировщикам протоколов достаточную гибкость в реализации. Соответственно, эталонная модель OSI гораздо лучше подходит для объяснения механики межкомпьютерных взаимодействий, но протокол TCP/IP стал основным межсетевым протоколом.

Гибкость эталонной модель TCP/IP по сравнению с эталонной моделью OSI продемонстрирована на рисунке.

Стек протоколов TCP/IP состоит из четырех функциональных уровней: прикладного, межхостового, межсетевого и уровня сетевого доступа.

Прикладной уровень

Межхостовой уровень

К функциям этого уровня относится сегментирование данных в приложениях для пересылки по сети, выполнение математических проверок целостности принятых данных и мультиплексирование потоков данных ( как передаваемых, так и принимаемых) для нескольких приложений одновременно. Отсюда следует, что межхостовой уровень располагает средствами идентификации приложений и умеет переупорядочивать данные, принятые не в том порядке.

В настоящее время межхостовой уровень состоит из двух протоколов: протокола управления передачей TCP и протокола пользовательских дейтаграмм UDP. С учетом того, что Интернет становится все более транзакционно-ориентированным, был определен третий протокол, условно названный протоколом управления транзакциями/передачей T/TCP (Transaction/Transmission Control Protocol). Тем не менее, в большинстве прикладных сервисов Интернета на межхостовом уровне используются протоколы TCP и UDP.

Межсетевой уровень

Межсетевой уровень IPv4 состоит из всех протоколов и процедур, позволяющих потоку данных между хостами проходить по нескольким сетям. Следовательно, пакеты, в которых передаются данные, должны быть маршрутизируемыми. За маршрутизируемость пакетов отвечает протокол IP (Internet Protocol).

Межсетевой уровень должен поддерживать маршрутизацию и функции управления маршрутами. Эти функции предоставляются внешними протоколами, которые называются протоколами маршрутизации. К их числу относятся протоколы IGP (Interior Gateway Protocols) и EGP (Exterior Gateway Protocols).

Уровень сетевого доступа

Уровень сетевого доступа состоит из всех функций, необходимых для физического подключения и передачи данных по сети. В эталонной модели OSI (Open Systems Interconnection) этот набор функций разбит на два уровня: физический и канальный. Эталонная модель TCP/IP создавалась после протоколов, присутствующих в ее названии, и в ней эти два уровня были слиты воедино, поскольку различные протоколы IP останавливаются на межсетевом уровне. Протокол IP предполагает, что все низкоуровневые функции предоставляются либо локальной сетью, либо подключением через последовательный интерфейс.

Протокол TCP/IP обеспечивает возможность межплатформенных сетевых взаимодействий ( то есть связи в разнородных сетях). Например, сеть под управлением Windows NT/2000 может содержать рабочие станции Unix и Macintosh, и даже другие сети более низкого порядка. TCP/IP обладает следующими характеристиками:

o Хорошие средства восстановления после сбоев.

o Возможность добавления новых сетей без прерывания текущей работы.

o Устойчивость к ошибкам.

o Независимость от платформы реализации.

o Низкие непроизводительные затраты на пересылку служебных данных.

Уровни и протоколы TCP/ IP

Протоколы TCP и IP совместно управляют потоками данных ( как входящими, так и исходящими) в сети. Но если протокол IP просто передает пакеты, не обращая внимания на результат, TCP должен проследить за тем, чтобы пакеты прибыли в положенное место. В частности, TCP отвечает за выполнение следующих задач:

o Открытие и закрытие сеанса.

o Управление пакетами.

o Управление потоком данных.

o Обнаружение и обработка ошибок.

Протокол TCP/IP обычно рассматривается в контексте эталонной модели, определяющей структурное деление его функций. Однако модель TCP/IP разрабатывалась значительно позже самого комплекса протоколов, поэтому она ни как не могла быть взята за образец при проектировании протоколов.

Семейство протоколов IP состоит из нескольких протоколов, часто обозначаемых общим термином “TCP/IP”:

o IP – протокол межсетевого уровня;

o TCP – протокол межхостового уровня, обеспечивающий надежную доставку;

o UDP – протокол межхостового уровня, не обеспечивающий надежной доставки;

o ICMP – многоуровневый протокол, упрощающий контроль, тестирование и управление в сетях IP. Различные протоколы ICMP распространяются на межхостовой и прикладной уровни.

Связи между этими протоколами изображены на рисунке.

Благодаря неустанной работе IETF протокол IP постоянно развивается. В последующих RFC (Request for Comments) были добавлены многочисленные новые возможности. Тем не менее, все они строятся на основе, заложенной в RFC 791. С архитектурной точки зрения текущая версия IP имеет номер 4 (Ipv4). Со временем новая версия (Ipv6) постепенно вытеснит Ipv4, но в настоящее время повсеместно поддерживается стандарт Ipv4.

Задачи протокола IP

Заголовок пакета IP содержит всю информацию, необходимую для выполнения основных сетевых операций. К числу таких операций относятся:

o адресация и маршрутизация;

o фрагментация и повторная сборка;

o выявление и исправление данных, поврежденных в процессе пересылки;

Протокол TCP (Transmission Control Protocol) пользуется сервисом IP для обеспечения надежной доставки прикладных данных. ТСР создает между двумя или более хостами сеанс, ориентированный на соединение. Он обладает такими возможностями, как поддержка нескольких потоков данных, координация потока и контроль ошибок и даже восстановление нарушенного порядка пакетов. Протокол ТСР также разрабатывался посредством публикации общедоступных документов RFC группой IETF.

Задачи протокола ТСР

В сеансе связи ТСР обеспечивает ряд важных функций, большая часть которых связана с обеспечением интерфейса между различными приложениями и сетью. К числу этих функций относятся:

o мультиплексирование данных между приложениями и сетью;

o проверка целостности полученных данных;

o восстановление нарушенного порядка данных;

o подтверждение успешного получения данных;

o регулирование скорости передачи данных;

o измерение временных характеристик;

o координация повторной передачи данных, поврежденных или потерянных в процессе пересылки.

Задачи протокола UDP

Протокол UDP намеренно проектировался как эффективный транспортный протокол с минимальными издержками, что напрямую отражено в структуре его заголовка. Информации, хранящейся в заголовке, хватает только для того, чтобы переслать дейтаграмму нужному приложению (то есть номеру порта) и выполнить простейшую проверку ошибок.

UDP не обладает ни одной из нетривиальных возможностей, обеспечиваемых протоколом ТСР. В нем не предусмотрены таймеры, средства управления потоком или регулировки скорости передачи, подтверждения, механизмы ускоренной доставки срочных данных и т.д. Протокол UDP просто пытается доставить дейтаграмму. Если попытка по какой-либо причине завершается неудачей, дейтаграмма теряется без каких-либо попыток повторной передачи данных.

В системах Unix поддержка FTP обычно обеспечивается программами ftpd и ftp. По умолчанию протокол FTP работает на портах 20 (пересылка данных) и 21 (пересылка команд). FTP отличается от всех остальных протоколов ТСР/IP тем, что команды могут передаваться одновременно с передачей данных в реальном времени; у других протоколов подобная возможность отсутствует.

Клиенты и сервера FTP в той или иной форме существуют во всех операционных системах. Приложения FTP на базе MacOS имеют графический интерфейс, как и большинство приложений для системы Windows. Преимущество графических клиентов FTP заключается в том, что команды, обычно вводимые вручную, теперь автоматически генерируются клиентом, что снижает вероятность ошибок, упрощает и ускоряет работу. С другой стороны, серверы FTP после первоначальной настройки не требуют дополнительного внимания, поэтому графический интерфейс для них оказывается лишним.

Название протокола TFTP (Trivial FTP) выбрано весьма удачно. TFTP поддерживает лишь малое подмножество функций FTP. Он работает на базе протокола UDP. TFTP не следит за доставкой пакетов и практически не обладает средствами обработки ошибок. С другой стороны, эти ограничения снижают непроизводительные затраты при пересылке. TFTP не выполняет аутентификации; он просто устанавливает соединение. В качестве защитной меры TFTP позволяет перемещать только общедоступные файлы.

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

Протокол SMTP (Simple Mail Transfer Protocol) является фактическим стандартом пересылки электронной почты в сетях, особенно в Интернете. Во всех операционных системах имеются почтовые клиенты с поддержкой SMTP, а большинство поставщиков услуг Интернета использует SMTP для работы с исходящей почтой. Серверы SMTP существуют для всех операционных систем, включая Windows 9x/NT/2K, MacOS, семейство Unix, Linux, BeOS, и даже AmigaOS.

Файловая система NFS (Network File System) создавалась компанией Sun Microsystems, Inc. для решения проблем в сетях с несколькими операционными системами. NFS поддерживает только совместны доступ к файлам и является компонентом многих операционных систем семейства Unix. Кроме того, NFS хорошо поддерживается большинством других операционных систем.

В NFS версии 1 и 2 в качестве основного транспортного протокола использовался протокол UDP. Поскольку UDP не обеспечивает гарантированной доставки, для ненадежных каналов эта проблема должна решаться на уровне NFS, а не на уровне протокола. Из-за этого в некоторых ранних реализациях NFS существовали проблемы с порчей содержимого файлов.

Начиная с NFS версии 3, в качестве транспортного протокола может использоваться TCP. Впрочем, появившаяся в NFS 3 поддержка TCP не оптимизирована. При использовании TCP в качестве транспортного протокола NFS может использовать надежность ТСР для повышения качества доставки по ненадежным каналам. Соответственно, NFS версии 3 лучше работает в глобальных сетях и в Интернет.

Механизм доступа к файлам через NFS прямолинеен и прозаичен. После монтирования том NFS становится частью системы конечного пользователя. Никаких дополнительных шагов не требуется – естественно, не считая процесса экспортирования, необходимого для синхронизации конфигурации NFS на сервере и у клиентов.

Сетевые устройства передают информацию о себе через базу управляющей информации MIB (Management Information Base). Эти данные, описывающие устройство, передаются станции управления SNMP (SNMP Management Station), которая поочередно идентифицирует каждое устройство и сохраняет информацию о нем. Станция управляет всеми SNMP-совместимыми устройствами. Для каждого устройства запускается агент SNMP, представляющий клиентскую сторону операций с устройствами. Когда станция управления запрашивает информацию о порте командой GET, агент возвращает эту информацию.

World Wide Web часто называют технологическим прорывом 1990-х годов. Web стала величайшим достижением с первых дней революции, произведенной широким внедрением персональных компьютеров.

Концепция World Wide Web разрабатывалась в Европейской лаборатории по ядерным исследованиям (CERN) для упрощения совместного доступа к файлам и обмена информацией между учеными-физиками. В 1993 году в Национальном центре по использованию суперкомпьютеров (NCSA) был разработан первый графический браузер Mosaic. С разработки этого web-клиента началась World Wide Web в том виде, в котором она существует сегодня.

Семейство протоколов TCP/IP (включая UDP и ICMP) удовлетворяло быстро растущие потребности пользователей и приложений более 20 лет. За это время протоколы постоянно обновлялись, что объяснялось новыми технологическими разработками и превращением Интернета из исследовательской среды с ограниченным кругом пользователей в общедоступную коммерческую инфраструктуру.

Коммерциализация Интернета вызвала бурный рост сообщества пользователей и изменила его демографическую структуру. В свою очередь, это обусловило необходимость в новых адресах и поддержки новых типов сервиса на уровне Интернета. Ограниченные возможности Ipv4 привели к разработке совершенно новой версии протокола. Новой версии IP был присвоен номер 6 (Ipv6), но также часто используется термин Ipng (Internet Protocol: Next Generation).

TCP / IP . Для профессионалов. 3-е издание / Т. Паркер, К. Сиян –СПб.: Питер, 2004

Персональные компьютеры в сетях TCP/IP / Крейг Хант; перев. с англ. - BHV-Киев, 1997.

Высокопроизводительные сети. Энциклопедия пользователя / Марк А. Спортак и др.; перев. с англ. - Киев, ДиаСофт, 1998

Сети ЭВМ: протоколы, стандарты, интерфейсы / Ю. Блэк; перев. с англ. - М.: Мир, 1990.

Аннотация: TCP/IP (Transmission Control Protocol/Internet Protocol - Протокол управления передачей/Межсетевой протокол) был и остается протоколом, с помощью которого работает интернет. За то время, что интернет базировался на TCP/IP, он превратился в протокол, который используется в сетях любых конфигураций и размеров. В этой лекции исследуется протокол TCP/IP и возможность его применения в сети, работающей под операционной системой Windows XP Professional.

TCP/IP

Вся прелесть протокола TCP/IP заключается в том, что он позволяет обмениваться информацией между компьютерами, работающими в разных операционных системах. Например, Novell NetWare умеет "разговаривать" на языке TCP/IP , как и Windows XP Professional .

TCP/IP разработан DARPA ( Defense Advanced Research Projects Agency ) в 1970-х годах. Целью его разработки являлось создание возможности для обмена информацией между различными компьютерами, независимо от их местоположения. С самого начала TCP/IP разрабатывался на компьютерах UNIX , что способствовало росту популярности протокола, так как производители включали TCP/IP в набор программного обеспечения каждого UNIX -компьютера. TCP/IP находит свое отображение в эталонной модели OSI , как это показано на рисунке 3.1.

Протокол TCP/IP функционирует за счет того, что он связан с моделью OSI на двух самых нижних уровнях - на уровне передачи данных и физическом уровне. Это позволяет TCP/IP находить общий язык практически с любой сетевой технологией и, как результат, с любой компьютерной платформой. TCP/IP включает в себя четыре абстрактных уровня, перечисленных ниже.

Благодаря своему широкому распространению протокол TCP/IP фактически стал интернет -стандартом. Компьютер , на котором реализована сетевая технология , основанная на модели OSI ( Ethernet или Token Ring ), имеет возможность устанавливать связь с другими устройствами. В "Основы организации сети" мы рассматривали уровни 1 и 2 при обсуждении LAN -технологий. Теперь мы перейдем к стеку OSI и посмотрим, каким образом компьютер устанавливает связь в интернете или в частной сети. В этом разделе рассматривается протокол TCP/IP и его конфигурации.

Что такое TCP/IP

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

TCP и UDР

UDР называют ненадежным протоколом, так как он даже не пытается устанавливать связь с получателем, чтобы убедиться в доставке.

Формат IP-дейтаграммы

Примечание. Пусть вас не вводит в заблуждение величина поля данных в дейтаграмме. Дейтаграмма не перегружена дополнительными данными. Поле данных является на самом деле самым большим полем дейтаграммы.

Важно помнить, что IP-пакеты могут иметь различную длину. В "Основы организации сети" говорилось о том, что информационные пакеты в сети Ethernet имеют размер от 64 до 1400 байт. В сети Token Ring их длина составляет 4000 байт, в сети ATM - 53 байта.

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

Если вы еще раз посмотрите на формат дейтаграммы на рисунке 3.3, то заметите, что крайние поля слева имеют постоянную величину. Так происходит, потому что центральный процессор, работающий с пакетами, должен знать, где начинается каждое поле. Без стандартизации этих полей конечные биты будут представлять собой мешанину из нулей и единиц. В правой части дейтаграммы находятся пакеты переменной длины. Назначение различных полей дейтаграммы состоит в следующем.

Руководство по стеку протоколов TCP/IP для начинающих

Cтек протоколов TCP/IP широко распространен. Он используется в качестве основы для глобальной сети интернет. Разбираемся в основных понятиях и принципах работы стека.

Основы TCP/IP

Стек протоколов TCP/IP (Transmission Control Protocol/Internet Protocol, протокол управления передачей/протокол интернета) — сетевая модель, описывающая процесс передачи цифровых данных. Она названа по двум главным протоколам, по этой модели построена глобальная сеть — интернет. Сейчас это кажется невероятным, но в 1970-х информация не могла быть передана из одной сети в другую, с целью обеспечить такую возможность был разработан стек интернет-протоколов также известный как TCP/IP.

Разработкой этих протоколов занималось Министерство обороны США, поэтому иногда модель TCP/IP называют DoD (Department of Defence) модель. Если вы знакомы с моделью OSI, то вам будет проще понять построение модели TCP/IP, потому что обе модели имеют деление на уровни, внутри которых действуют определенные протоколы и выполняются собственные функции. Мы разделили статью на смысловые части, чтобы было проще понять, как устроена модель TCP/IP:


Уровневая модель TCP/IP

Три верхних уровня — прикладной, транспортный и сетевой — присутствуют как в RFC, так и у Таненбаума и других авторов. А вот стоит ли говорить только о канальном или о канальном и физическом уровнях — нет единого мнения. В RFC они объединены, поскольку выполняют одну функцию. В статье мы придерживаемся официального интернет-стандарта RFC и не выделяем физический уровень в отдельный. Далее мы рассмотрим четыре уровня модели.

Канальный уровень (link layer)

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

Этот уровень также вычисляет максимальное расстояние, на которое пакеты возможно передать, частоту сигнала, задержку ответа и т.д. Все это — физические свойства среды передачи информации. На канальном уровне самым распространенным протоколом является Ethernet, но мы рассмотрим его на примере в конце статьи.

Межсетевой уровень (internet layer)

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

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

Маска подсети и IP-адреса


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

Протокол интернета — IP (Internet Protocol) используется маршрутизатором, чтобы определить, к какой подсети принадлежит получатель. Свой уникальный IP-адрес есть у каждого сетевого устройства, при этом в глобальной сети не может существовать два устройства с одинаковым IP. Он имеет два подвида, первым был принят IPv4 (IP version 4, версии 4) в 1983 году.

IPv4 предусматривает назначение каждому устройству 32-битного IP-адреса, что ограничивало максимально возможное число уникальных адресов 4 миллиардами (2 32 ). В более привычном для человека десятичном виде IPv4 выглядит как четыре блока (октета) чисел от 0 до 255, разделенных тремя точками. Первый октет IP-адреса означает его класс, классов всего 4: A, B, C, D.

IPv6 имеет вид восьми блоков по четыре шестнадцатеричных значения, а каждый блок разделяется двоеточием. IPv6 выглядит следующим образом:

Так как IPv6 адреса длинные, их разрешается сокращать по следующим правилам: ведущие нули допускается опускать, например в адресе выше :00FF: позволяется записывать как :FF:, группы нулей, идущие подряд тоже допустимо сокращать и заменять на двойное двоеточие, например, 2DAB:FFFF::01AA:00FF:DD72:2C4A. Допускается делать не больше одного подобного сокращения в адресе IPv6.

IP предназначен для определения адресата и доставки ему информации, он предоставляет услугу для вышестоящих уровней, но не гарантирует целостность доставляемой информации.

ICMP и IGMP


ICMP никогда не вызывается сетевыми приложениями пользователя, кроме случаев диагностики сети, к примеру, пинг (ping) или traceroute (tracert). ICMP не передает данные, это отличает его от транспортных TCP и UDP, расположенных на L3, которые переносят любые данные. ICMP работает только с IP четвертой версии, с IPv6 взаимодействует ICMPv6.

Сетевые устройства объединяются в группы при помощи IGMP, используемый хостами и роутерами в IPv4 сетях. IGMP организует multicast-передачу информации, что позволяет сетям направлять информацию только хостам, запросившим ее. Это удобно для онлайн-игр или потоковой передаче мультимедиа. IGMP используется только в IPv4 сетях, в сетях IPv6 используется MLD (Multicast Listener Discovery, протокол поиска групповых слушателей), инкапсулированный в ICMPv6.

Транспортный уровень (transport layer)

Постоянные резиденты транспортного уровня — протоколы TCP и UDP, они занимаются доставкой информации.

TCP (протокол управления передачей) — надежный, он обеспечивает передачу информации, проверяя дошла ли она, насколько полным является объем полученной информации и т.д. TCP дает возможность двум хостам производить обмен пакетами через установку соединения. Он предоставляет услугу для приложений, повторно запрашивает потерянную информацию, устраняет дублирующие пакеты, регулируя загруженность сети. TCP гарантирует получение и сборку информации у адресата в правильном порядке.

UDP (протокол пользовательских датаграмм) — ненадежный, он занимается передачей автономных датаграмм. UDP не гарантирует, что всех датаграммы дойдут до получателя. Датаграммы уже содержат всю необходимую информацию, чтобы дойти до получателя, но они все равно могут быть потеряны или доставлены в порядке отличном от порядка при отправлении.

UDP обычно не используется, если требуется надежная передача информации. Использовать UDP имеет смысл там, где потеря части информации не будет критичной для приложения, например, в видеоиграх или потоковой передаче видео. UDP необходим, когда делать повторный запрос сложно или неоправданно по каким-то причинам.

Протоколы L3 не интерпретируют информацию, полученную с верхнего или нижних уровней, они служат только как канал передачи, но есть исключения. RSVP (Resource Reservation Protocol, протокол резервирования сетевых ресурсов) может использоваться, например, роутерами или сетевыми экранами в целях анализа трафика и принятия решений о его передаче или отклонении в зависимости от содержимого.

Прикладной уровень (application layer)

В модели TCP/IP отсутствуют дополнительные промежуточные уровни (представления и сеансовый) в отличие от OSI. Функции форматирования и представления данных делегированы библиотекам и программным интерфейсам приложений (API) — своего рода базам знаний. Когда службы или приложения обращаются к библиотеке или API, те в ответ предоставляют набор действий, необходимых для выполнения задачи и полную инструкцию, каким образом эти действия нужно выполнять.

Зачем нужен порт и что означает термин сокет

IP присваивается каждому компьютеру межсетевым уровнем, но обмен данными происходит не между компьютерами, а между приложениями, установленными на них. Чтобы получить доступ к тому или иному сетевому приложению недостаточно только IP, для идентификации приложений применяют порты. Комбинация IP-адреса и порта называется сокетом или гнездом (socket). Поэтому обмен информацией происходит между сокетами. Нередко слово сокет употребляют как синоним для хоста или пользователя, также сокетом называют гнездо подключения процессора.

Из привилегий у приложений на прикладном уровне можно выделить наличие собственных протоколов для обмена данными, а также фиксированный номер порта для обращения к сети. Администрация адресного пространства интернет (IANA), занимающаяся выделением диапазонов IP-адресов, отвечает еще за назначение сетевым приложениям портов.


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

Стек протоколов, снова канальный уровень

После ознакомления с уровневой структурой модели становится понятно, что информация не может передаваться между двумя компьютерами напрямую. Сначала кадры передаются на межсетевой уровень, где компьютеру отправителя и компьютеру получателя назначается уникальный IP. После чего, на транспортном уровне, информация передается в виде TCP-фреймов либо UDP-датаграмм.

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

Point-to-Point протоколы


Отдельно расскажем о Point-to-Point (от точки к точке, двухточечный) протоколе также известном как PPP. PPP уникален по своим функциям, он применяется для коммуникации между двумя маршрутизаторами без участия хоста или какой-либо сетевой структуры в промежутке. При необходимости, PPP обеспечивает аутентификацию, шифрование, а также сжатие данных. Он широко используется при построении физических сетей, например, кабельных телефонных, сотовых телефонных, сетей по кабелю последовательной передачи и транк-линий (когда один маршрутизатор подключают к другому для увеличения размера сети).

У PPP есть два подвида — PPPoE (PPP по Ethernet) и PPPoA (PPP через асинхронный способ передачи данных — ATM), интернет-провайдеры часто их используют для DSL соединений.

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

Заключение

Стек TCP/IP регламентирует взаимодействие разных уровней. Ключевым понятием в здесь являются протоколы, формирующие стек, встраиваясь друг в друга с целью передать данные. Рассмотренная модель по сравнению с OSI имеет более простую архитектуру.

Сама модель остается неизменной, в то время как стандарты протоколов могут обновляться, что еще дальше упрощает работу с TCP/IP. Благодаря всем преимуществам стек TCP/IP получил широкое распространение и использовался сначала в качестве основы для создания глобальной сети, а после для описания работы интернета.

Протокол TCp

На этом уровне есть два протокола, протокол UDP, который уже рассматривали и протокол TCP, который является одним из основных протоколов стека TCP/IP и интернет.

p, blockquote 3,0,0,0,0 -->

Протокол TCP в модели OSI

p, blockquote 4,0,0,0,0 -->

p, blockquote 5,0,0,0,0 -->

Поток байт

От приложения, протокол TCP получает поток байт, который может быть очень большим. Например, вы можете скачивать из интернета файл, который составляет несколько мегабайт или несколько гигабайт. Данные файлы приходят на транспортный уровень в виде одного большого потока байт.

p, blockquote 6,0,0,0,0 -->

поток байт в протоколе TCP

p, blockquote 7,0,0,0,0 -->

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

p, blockquote 8,0,0,0,0 -->

Гарантия доставки: подтверждение получения

p, blockquote 9,0,0,0,0 -->

Гарантия доставки в TCP

p, blockquote 10,0,0,0,0 -->

Гарантия доставки: повторная отправка

p, blockquote 11,0,0,0,0 -->

Гарантия доставки, повторное отправление

p, blockquote 12,0,0,0,0 -->

Предположим, что в этот раз сегмент дошел, получатель отправляет подтверждение, отправитель может передавать следующий сегмент данных.

p, blockquote 13,0,0,0,0 -->

Повторная доставка прошла успешно

p, blockquote 14,0,1,0,0 -->

Протокол TCP: скользящее окно

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

p, blockquote 15,0,0,0,0 -->

  • Остановка и ожидание (Wi-Fi, канальный уровень)
  • Скользящее окно (TCP, транспортный уровень)

Варианты подтверждения доставки

Рассмотрим остановку и ожидание. Отправитель передает данные и останавливается ожидая подтверждение. Получатель присылает подтверждение после этого передается следующая порция данных. Снова подтверждение, снова данные и снова подтверждение.

p, blockquote 17,0,0,0,0 -->

Варианты подтверждения доставки: скользящее окно

p, blockquote 18,0,0,0,0 -->

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

p, blockquote 19,0,0,0,0 -->

p, blockquote 20,0,0,0,0 -->

В локальных сетях, например Wi-Fi используется метод подтверждения остановка и ожидания. В крупных современных сетях с высокоскоростными каналами связи большой протяженности, например если вы хотите скачать чего-нибудь с американского сайта, такой объем данных может быть очень большой. И в этой ситуации ожидания подтверждения приводит к существенному снижению производительности.

p, blockquote 21,0,0,0,0 -->

Пример подтверждения доставки

Рассмотрим на примере работу сети.

Скользящее окно

Почему термин называется скользящее окно? Удобно представлять себе окно, которое скользит по потоку байт получаемых от приложений. У есть поток байт, разделенный на отдельные сегменты, часть сегментов уже передана, часть еще не отправлены. Для некоторых сегментов, которые уже переданы, получено подтверждение. И отправлено некоторое количество сегментов соответствующие размеру окна, для которых подтверждение не получено.

p, blockquote 23,0,0,0,0 -->

скользящее окно

p, blockquote 24,0,0,0,0 -->

Размер окна — это количество байтов данных, которые могут быть переданы без получения подтверждения.

p, blockquote 26,0,0,0,0 -->

перемещается скользящее окно

p, blockquote 27,0,0,0,0 -->

Тип подтверждения

Есть два типа подтверждения, которые могут использоваться совместно с алгоритмом скользящего окна.

  • Кумулятивное подтверждение, говорит о том что получен указанный байт данных и все предыдущие. Такой подход используется в TCP по умолчанию. Сейчас из-за того что распространились высокоскоростные каналы связи большой протяженности, размер окна в TCP может быть увеличен до 1 гигабайта. Представьте, что вы передали гигабайт данных и у вас потерялся всего лишь один сегмент, который находится в середине. С помощью кумулятивного подтверждения вы можете подтвердить получение только первых 500 мегабайт, получится что вам придётся повторно передавать 500 мегабайт данных, которые уже есть у получателя.

Для устранения этой проблемы предложено выборочное подтверждение. В этом случае получатель подтверждает получение диапазона принятых байт. Он получил первые 500 мегабайт и вторые 500 мегабайт из гигабайта и не получил всего лишь один сегмент. Отправитель вместо вторых 500 мегабайт, повторно передает всего лишь один недостающий сегмент. Выборочное подтверждение эффективно при большом размере окна TCP, но выборочное подтверждение по умолчанию не используется для этого необходимо применение дополнительных полей заголовка TCP, которые называются параметрами.

p, blockquote 29,0,0,0,0 -->

p, blockquote 30,0,0,0,0 -->

p, blockquote 31,0,0,0,0 -->

Дублирование сегментов

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

p, blockquote 32,0,0,0,0 -->

Пример передачи данных в TCP

p, blockquote 33,0,0,0,0 -->

p, blockquote 34,0,0,0,0 -->

p, blockquote 35,0,0,0,0 -->

p, blockquote 36,0,0,0,0 -->

В нашем примере 4 сегмента первый сегмент содержит байты от 0 до 1023, второй от 1024 до 2047 и так далее.

p, blockquote 37,0,0,0,0 -->

Нумерация байтов

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

p, blockquote 38,0,0,0,0 -->

Нумерация байтов

  • Например сегмент данных, байт 0, он содержит байты с 0 до 1023.
  • Получатель отправляет подтверждение и в подтверждение включает номер следующего байта, который ожидается байт 1024.
  • Отправитель передает следующий сегмент, включая в него номер первого байта, сегмент данных, номер первого байта 1024 содержит данные до номера байта 2047.
  • Получатель отправляет подтверждение, что он ждет байт с номером 2048, если сегменты придут в неправильном порядке, то получатель по номерам байтов всегда сможет выставить их в правильной последовательности.

Дублирование сегментов

Рассмотрим как решается ситуация с дублированием сегментов.

p, blockquote 40,0,0,0,0 -->

Дублирование сегментов

  • Отправитель включает в сегмент номер первого передаваемого байта 1024.
  • Получатель отправляет подтверждение, где говорит что ждет байт в 2048.
  • Но так как подтверждение не дошло, то отправитель передает тот же самый сегмент 1024.
  • Однако получатель видит, что этот сегмент у него уже есть поэтому он этот сегмент игнорирует и снова отправляет подтверждение, где говорит что он ожидает байт 2048.

Соединение TCP

TCP для передачи данных использует соединение. Соединение нужно установить перед тем, как начать передачу данных, а после того как передача данных завершена, соединение разрывается.

p, blockquote 42,0,0,1,0 -->

Задачи соединения

  • Убедиться в том, что отправитель и получатель действительно хотят передавать данные друг другу
  • Договориться о нумерации потоков байт. С точки зрения практической реализации нельзя всегда нумеровать данные в потоке байт с нуля. Каждый раз начальное значение для нумерации байт выбираются по определенному алгоритму и отправитель и получатель должны договориться между собой какое начальное значение они будут использовать для нумерации потока байт.
  • При установке соединения происходит договоренность о некоторых параметрах соединения.

Установка соединения в TCP

p, blockquote 43,0,0,0,0 -->

Установка соединения в TCP

p, blockquote 44,0,0,0,0 -->

p, blockquote 45,0,0,0,0 -->

p, blockquote 46,0,0,0,0 -->

Разрыв соединения в TCP

Соединение в TCP дуплексное — это означает, что после установки соединения передавать данные можно в две стороны. Есть две схемы разрыва соединения. Возможен одновременный разрыв соединения, в этом случае обе стороны разрывают соединение в одно и то же время, либо односторонние, в этом случае одна сторона говорит о том, что данные для передачи у нее закончились, но другая сторона может передавать данные еще достаточно долго.

p, blockquote 47,0,0,0,0 -->

p, blockquote 48,0,0,0,0 -->

p, blockquote 49,0,0,0,0 -->

Разрыв соединения в TCP

p, blockquote 50,0,0,0,0 -->

p, blockquote 51,0,0,0,0 -->

Заключение

p, blockquote 52,0,0,0,0 -->

TCP использует соединение между отправителем и получателем, которое необходимо установить до того, как начнется передача данных, а после завершения передачи соединение необходимо разорвать.

p, blockquote 53,0,0,0,0 -->

p, blockquote 54,0,0,0,0 -->

p, blockquote 55,0,0,0,0 --> p, blockquote 56,0,0,0,1 -->

Читайте также: