ѕодпишитесь на наш Telegram-канал Ѕудьте в курсе последних новостей 👇 😉 ѕодписатьс€
ѕоддержим в трудное врем€ —пециальное предложение на техническую поддержку вашей »“ - инфраструктуры силами наших экспертов ѕодобрать тариф
ѕоставка оборудовани€ √аранти€ и помощь с настройкой. —кидка дл€ наших читателей по промокоду WIKIMERIONET  упить
»нтерфейс статистики Merion Mertics показывает ключевые диаграммы и графики по звонкам, а также историю звонков в формате, который легко поймет менеджер ѕопробовать бесплатно
¬недрение
офисной телефонии
Ўаг на пути к созданию доступных унифицированных коммуникаций в вашей компании ¬недрить
»нтеграци€ с CRM ѕомогаем навести пор€док с данными
и хранить их в единой экосистеме
ѕодключить
»“ Ѕезопасность ”мна€ информационна€ безопасность дл€ вашего бизнеса «аказать
ћерион Ќетворкс

9 минут чтени€

“ранспортный уровень OSI (уровень 4) определ€ет несколько функций, наиболее важными из которых €вл€ютс€ восстановление после ошибок и управление потоком. “очно так же протоколы транспортного уровн€ TCP / IP также реализуют те же типы функций. ќбратите внимание, что и модель OSI, и модель TCP / IP называют этот уровень транспортным. Ќо, как обычно, когда речь идет о модели TCP / IP, им€ и номер уровн€ основаны на OSI, поэтому любые протоколы транспортного уровн€ TCP / IP считаютс€ протоколами уровн€ 4.

 лючевое различие между TCP и UDP заключаетс€ в том, что TCP предоставл€ет широкий спектр услуг приложени€м, а UDP-нет. Ќапример, маршрутизаторы отбрасывают пакеты по многим причинам, включа€ битовые ошибки, перегрузку и случаи, в которых не известны правильные маршруты. »звестно, что большинство протоколов передачи данных замечают ошибки (процесс, называемый error detection), и затем отбрасывают кадры, которые имеют ошибки. TCP обеспечивает повторную передачу (error recovery) и помогает избежать перегрузки (управление потоком), в то врем€ как UDP этого не делает. ¬ результате многие прикладные протоколы предпочитают использовать TCP.

–азница между TCP и UDP в одном видео

ќднако не думайте, что отсутствие служб у UDP делает UDP хуже TCP. ѕредоставл€€ меньше услуг, UDP требует меньше байтов в своем заголовке по сравнению с TCP, что приводит к меньшему количеству байтов служебных данных в сети. ѕрограммное обеспечение UDP не замедл€ет передачу данных в тех случа€х, когда TCP может замедл€тьс€ намеренно.  роме того, некоторым приложени€м, особенно сегодн€, к передаче голоса по IP (VoIP) и видео по IP, не требуетс€ восстановление после ошибок, поэтому они используют UDP. »так, сегодн€ UDP также занимает важное место в сет€х TCP / IP.

¬ таблице 1 перечислены основные функции, поддерживаемые TCP/UDP. ќбратите внимание, что только первый элемент, указанный в таблице, поддерживаетс€ UDP, тогда как TCP поддерживаютс€ все элементы в таблице.

“аблица є 1 ‘ункции транспортного уровн€ TCP/IP

‘ункции ќписание
ћультиплексирование с использованием портов ‘ункци€, котора€ позвол€ет принимающим хостам выбирать правильное приложение, дл€ которого предназначены данные, на основе номера порта.
¬осстановление после ошибок (надежность) ѕроцесс нумерации и подтверждени€ данных с помощью полей заголовка Sequence и Acknowledgment
”правление потоком с использованием окон ѕроцесс, использующий размеры окна дл€ защиты буферного пространства и устройств маршрутизации от перегрузки трафиком.
”становление и завершение соединени€ ѕроцесс, используемый дл€ инициализации номеров портов, а также полей Sequence и Acknowledgment.
”пор€доченна€ передача данных и сегментаци€ данных Ќепрерывный поток байтов от процесса верхнего уровн€, который "сегментируетс€" дл€ передачи и доставл€етс€ процессам верхнего уровн€ на принимающем устройстве с байтами в том же пор€дке

ƒалее описываютс€ возможности TCP, а затем приводитс€ краткое сравнение с UDP.


Transmission Control Protocol

 аждое приложение TCP / IP обычно выбирает использование TCP или UDP в зависимости от требований приложени€. Ќапример, TCP обеспечивает восстановление после ошибок, но дл€ этого он потребл€ет больше полосы пропускани€ и использует больше циклов обработки. UDP не выполн€ет исправление ошибок, но требует меньшей пропускной способности и меньшего количества циклов обработки. Ќезависимо от того, какой из этих двух протоколов транспортного уровн€ TCP / IP приложение выберет дл€ использовани€, вы должны понимать основы работы каждого из этих протоколов транспортного уровн€.

TCP, как определено в Request For Comments (RFC) 793, выполн€ет функции, перечисленные в таблице 1, через механизмы на конечных компьютерах. TCP полагаетс€ на IP дл€ сквозной доставки данных, включа€ вопросы маршрутизации. ƒругими словами, TCP выполн€ет только часть функций, необходимых дл€ доставки данных между приложени€ми.  роме того, роль, которую он играет, направлена на предоставление услуг дл€ приложений, установленных на конечных компьютерах. Ќезависимо от того, наход€тс€ ли два компьютера в одном Ethernet или разделены всем »нтернетом, TCP выполн€ет свои функции одинаково.

Ќа рисунке 1 показаны пол€ заголовка TCP. ’от€ вам не нужно запоминать названи€ полей или их расположение, оставша€с€ часть этой лекции относитс€ к нескольким пол€м, поэтому весь заголовок включен сюда дл€ справки.

ѕол€ заголовка TCP

—ообщение, созданное TCP, которое начинаетс€ с заголовка TCP, за которым следуют данные приложени€, называетс€ сегментом TCP. ¬ качестве альтернативы также может использоватьс€ более общий термин PDU уровн€ 4 или L4PDU.

ћультиплексирование с использованием номеров портов TCP

» TCP, и UDP используют концепцию, называемую мультиплексированием. ѕоэтому этот подраздел начинаетс€ с объ€снени€ мультиплексировани€ с TCP и UDP. ѕосле этого исследуютс€ уникальные возможности TCP.

ћультиплексирование по TCP и UDP включает в себ€ процесс того, как компьютер думает при получении данных. Ќа компьютере может быть запущено множество приложений, таких как веб-браузер, электронна€ почта или приложение Internet VoIP (например, Skype). ћультиплексирование TCP и UDP сообщает принимающему компьютеру, какому приложению передать полученные данные.

ќпределенные примеры помогут сделать очевидной необходимость мультиплексировани€. —еть из примера состоит из двух компьютеров, помеченных как јнна и √риша. јнна использует написанное ею приложение дл€ рассылки рекламных объ€влений, которые по€вл€ютс€ на экране √ригори€. ѕриложение отправл€ет √ригорию новое объ€вление каждые 10 секунд. јнна использует второе приложение, чтобы отправить √рише деньги. Ќаконец, јнна использует веб-браузер дл€ доступа к веб-серверу, который работает на компьютере √ригори€. –екламное приложение и приложение дл€ электронного перевода €вл€ютс€ воображаемыми, только дл€ этого примера. ¬еб-приложение работает так же, как и в реальной жизни.

Ќа рисунке 2 показан пример сети, в которой √риша запускает три приложени€:

  • –екламное приложение на основе UDP
  • ѕриложение дл€ банковских переводов на основе TCP
  • ѕриложение веб-сервера TCP
ќтправка данных с трех приложений јнной √рише

√рише необходимо знать, в какое приложение передавать данные, но все три пакета поступают из одного и того же Ethernet и IP-адреса. ¬ы могли подумать, что √ригорий может посмотреть, содержит ли пакет заголовок UDP или TCP, но, как вы видите на рисунке, два приложени€ (wire transfer и web) используют TCP.

TCP и UDP решают эту проблему, использу€ поле номера порта в заголовке TCP или UDP соответственно.  аждый из сегментов TCP и UDP јнны использует свой номер порта назначени€, чтобы √ригорий знал, какому приложению передать данные. Ќа рисунке 3 показан пример.

ћультиплексирование основываетс€ на концепции, называемой сокетом. —окет состоит из трех частей:

  • IP-адрес
  • “ранспортный протокол
  • Ќомер порта
јнна отправл€ет пакеты √ригорию с трех приложений, использующими номера портов дл€ мультиплексировани€

»так, дл€ приложени€ веб-сервера √ригори€, сокет будет (10.1.1.2, TCP, порт 80), потому что по умолчанию веб-серверы используют хорошо известный порт 80.  огда веб-браузер јнны подключаетс€ к веб-серверу, јнна также использует сокет - возможно, такой: (10.1.1.1, TCP, 49160). ѕочему 49160? „то ж, јнне просто нужен номер порта, уникальный дл€ јнны, поэтому јнна видит этот порт 49160.

Internet Assigned Numbers Authority (IANA), организаци€, котора€ управл€ет распределением IP-адресов во всем мире, и подраздел€ет диапазоны номеров портов на три основных диапазона. ѕервые два диапазона резервируют номера, которые IANA затем может назначить конкретным протоколам приложений через процесс приложени€ и проверки, а треть€ категори€ резервирует порты, которые будут динамически выдел€тьс€ дл€ клиентов, как в примере с портом 49160 в предыдущем абзаце. »мена и диапазоны номеров портов (более подробно описано в RFC 6335):

  • ’орошо известные (системные) порты: номера от 0 до 1023, присвоенные IANA, с более строгим процессом проверки дл€ назначени€ новых портов, чем пользовательские порты.
  • ѕользовательские (зарегистрированные) порты: номера от 1024 до 49151, присвоенные IANA с менее строгим процессом назначени€ новых портов по сравнению с хорошо известными портами.
  • Ёфемерные (динамические, частные) порты: номера от 49152 до 65535, не назначены и не предназначены дл€ динамического выделени€ и временного использовани€ дл€ клиентского приложени€ во врем€ его работы.

Ќа рисунке 4 показан пример, в котором используютс€ три временных порта на пользовательском устройстве слева, а сервер справа использует два хорошо известных порта и один пользовательский порт.  омпьютеры используют три приложени€ одновременно; следовательно, открыто три сокетных соединени€. ѕоскольку сокет на одном компьютере должен быть уникальным, соединение между двум€ сокетами должно идентифицировать уникальное соединение между двум€ компьютерами. Ёта уникальность означает, что вы можете использовать несколько приложений одновременно, разговарива€ с приложени€ми, запущенными на одном или разных компьютерах. ћультиплексирование на основе сокетов гарантирует, что данные будут доставлены в нужные приложени€.

—оединени€ между сокетами

Ќомера портов €вл€ютс€ важной частью концепции сокетов. —ерверы используют хорошо известные порты (или пользовательские порты), тогда как клиенты используют динамические порты. ѕриложени€, которые предоставл€ют услуги, такие как FTP, Telnet и веб-серверы, открывают сокет, использу€ известный порт, и прослушивают запросы на подключение. ѕоскольку эти запросы на подключение от клиентов должны включать номера портов источника и назначени€, номера портов, используемые серверами, должны быть известны заранее. “аким образом, кажда€ служба использует определенный хорошо известный номер порта или номер пользовательского порта.  ак общеизвестные, так и пользовательские порты перечислены на www.iana.org/assignments/servicenames-port-numbers/service-names-port-numbers.txt.

Ќа клиентских машинах, откуда исход€т запросы, можно выделить любой локально неиспользуемый номер порта. ¬ результате каждый клиент на одном и том же хосте использует другой номер порта, но сервер использует один и тот же номер порта дл€ всех подключений. Ќапример, 100 веб-браузеров на одном и том же хост-компьютере могут подключатьс€ к веб-серверу, но веб-сервер со 100 подключенными к нему клиентами будет иметь только один сокет и, следовательно, только один номер порта (в данном случае порт 80). —ервер может определить, какие пакеты отправлены от какого из 100 клиентов, посмотрев на порт источника полученных сегментов TCP. —ервер может отправл€ть данные правильному веб-клиенту (браузеру), отправл€€ данные на тот же номер порта, который указан в качестве порта назначени€.  омбинаци€ сокетов источника и назначени€ позвол€ет всем участвующим хостам различать источник и назначение данных. ’от€ в примере объ€сн€етс€ концепци€ использовани€ 100 TCP-соединений, та же концепци€ нумерации портов примен€етс€ к сеансам UDP таким же образом.

ѕочитайте продолжение цикла про попул€рные приложени€ TCP/IP.