Tcp/ip
Содержание:
- Заголовок TCP
- Соединение TCP
- Функционирование сети TCP/IP
- 2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G
- Что такое сетевые порты
- Типы адресов стека протоколов TCP/IP
- Что такое TCP/IP
- Описание модели TCP/IP в технической литературе
- В чем разница между IPv4 и IPv6
- Что такое таблицы маршрутизации
- Application Layer
- Что такое маска адреса (подсеть)
Заголовок TCP
- Порядковый номер выполняет две задачи:
-
- Если установлен флаг SYN, то это начальное значение номера последовательности — ISN (Initial Sequence Number), и первый байт данных, которые будут переданы в следующем пакете, будет иметь номер последовательности, равный ISN + 1.
- В противном случае, если SYN не установлен, первый байт данных, передаваемый в данном пакете, имеет этот номер последовательности.
- Номер подтверждения — если установлен флаг ACK, то это поле содержит номер последовательности, ожидаемый получателем в следующий раз. Помечает этот сегмент как подтверждение получения.
- Длина заголовка — задается словами по 32бита.
- Размер окна — количество байт, которые готов принять получатель без подтверждения.
- Контрольная сумма — включает псевдо заголовок, заголовок и данные.
- Указатель срочности — указывает последний байт срочных данных, на которые надо немедленно реагировать.
- URG — флаг срочности, включает поле «Указатель срочности», если =0 то поле игнорируется.
- ACK — флаг подтверждение, включает поле «Номер подтверждения, если =0 то поле игнорируется.
- PSH — флаг требует выполнения операции push, модуль TCP должен срочно передать пакет программе.
- RST — флаг прерывания соединения, используется для отказа в соединении
- SYN — флаг синхронизация порядковых номеров, используется при установлении соединения.
- FIN — флаг окончание передачи со стороны отправителя
Рассмотрим структуру заголовка TCP с помощью сетевого анализатора Wireshark:
TCP порты
Так как на одном и том же компьютере могут быть запущены несколько программ, то для доставки TCP-пакета конкретной программе, используется уникальный идентификатор каждой программы или номер порта.
Номер порта — это условное 16-битное число от 1 до 65535, указывающее, какой программе предназначается пакет.
TCP порты используют определенный порт программы для доставки данных, передаваемых с помощью протокола управления передачей (TCP). TCP порты являются более сложными и работают иначе, чем порты UDP. В то время как порт UDP работает как одиночная очередь сообщений и как точка входа для UDP-соединения, окончательной точкой входа для всех соединений TCP является уникальное соединение. Каждое соединение TCP однозначно идентифицируется двумя точками входа.
Каждый отдельный порт сервера TCP может предложить общий доступ к нескольким соединениям, потому что все TCP соединения идентифицируются двумя значениями: IP-адресом и TCP портом (сокет).
Все номера портов TCP, которые меньше чем 1024 — зарезервированы и зарегистрированы в Internet Assigned Numbers Authority (IANA).
Номера портов UDP и TCP не пересекаются.
TCP программы используют зарезервированные или хорошо известные номера портов, как показано на следующем рисунке.
Соединение TCP
TCP для передачи данных использует соединение. Соединение нужно установить перед тем, как начать передачу данных, а после того как передача данных завершена, соединение разрывается.
Задачи соединения
- Убедиться в том, что отправитель и получатель действительно хотят передавать данные друг другу
- Договориться о нумерации потоков байт. С точки зрения практической реализации нельзя всегда нумеровать данные в потоке байт с нуля. Каждый раз начальное значение для нумерации байт выбираются по определенному алгоритму и отправитель и получатель должны договориться между собой какое начальное значение они будут использовать для нумерации потока байт.
- При установке соединения происходит договоренность о некоторых параметрах соединения.
Установка соединения в TCP
Отправитель посылает запрос на установку соединения сообщение SYN от слова синхронизация. Также в сегмент включаются порядковый номер передаваемого байта.
Получатель в ответ передаёт сообщение SYN, куда включает подтверждение получения предыдущего сообщения ACK от слова acknowledge и порядковый номер байта, который он ожидает 7538, потому что на предыдущем этапе был получен байт с номером 7537.
Также отправитель включает в сегмент номер байта в потоке байт 36829. Номера байт в первом сообщении не могут быть всегда нулевыми, они выбираются по достаточно сложным алгоритмам, но для простоты можно представлять себе что эти номера выбираются случайным образом.
На третьем этапе пересылается подтверждение получения предыдущего запроса на установку соединения ACK номер следующего ожидаемого байта 36830, а также номер байта в сообщении. После этого соединение считается установленным и можно передавать данные.
Разрыв соединения в TCP
Соединение в TCP дуплексное — это означает, что после установки соединения передавать данные можно в две стороны. Есть две схемы разрыва соединения. Возможен одновременный разрыв соединения, в этом случае обе стороны разрывают соединение в одно и то же время, либо односторонние, в этом случае одна сторона говорит о том, что данные для передачи у нее закончились, но другая сторона может передавать данные еще достаточно долго.
Протокол TCP предусматривает два варианта разрыва соединения: корректное, с помощью одностороннего разрыва соединения и сообщения FIN и разрыв из-за критической ситуации с помощью сообщения RST.
Рассмотрим, как выполняется корректный разрыв соединения. Сторона, которая хочет разорвать соединение пересылает другой стороне сообщение FIN и в ответ получает сообщение ACK. Однако соединение разорвано только с одной стороны.
Когда другая сторона решила, что данные для передачи у нее закончились, она также передает сообщение FIN в ответ получает сообщение ACK подтверждение. На этом этапе соединение закрыто полностью в обе стороны.
Для разрыва соединения в критической ситуации из-за ошибок в приложении или с оборудованием используется одно сообщение RST. В этом случае соединение закрывается в обе стороны. Хотя сообщение RST предназначено для использования в критических ситуациях, некоторые протоколы используют его для быстрого закрытия соединения.
Функционирование сети TCP/IP
Чтобы лучше понять, как работают некоторые протоколы из набора
TCP/IP, рассмотрим работу небольшой сети, состоящей из
двух компьютеров, на которых запущено несколько сетевых приложений.
Итак, на одном компьютере работает Саша, на другом — Коля. Их компьютеры
видны в сети под теми же именами. Саша запустил приложение, каждые 10 секунд
отправляющее сообщения, которые появляются на экране Коли. На Сашином компьютере
также работает приложение для отправки Коле электронных денег. И, наконец, Саша
использует Web-обозреватель для доступа к
Web-серверу, работающему на Колином компьютере.
Приложение Саши, отправляющее сообщения, не использует подтверждения о
доставке, т.к. в любом случае через 10 секунд отправится очередное сообщение, и
необязательно знать, получил пользователь последнее сообщение или нет. Для
передачи важных сведений, а также электронных денег используется функция
подтверждения. Приложение для сообщений использует протокол
UDP, а для отправки денег — TCP, т.к.
UDP, в отличие от TCP, не
использует подтверждения.
Однако эти приложения не заработают, пока не будут произведены некоторые
подготовительные действия. Например, в Ethernet-кадрах,
которые идут от Саши к Коле, должна быть информация, которой Саша пока не
располагает, — IP-адрес получателя и его
MAC-адрес.
Саша знает имя своего компьютера, IP- и
MAC-адрес, т.к. все эти параметры прописаны в
конфигурации его компьютера. Остается узнать только IP-
и MAC-адрес компьютера Коли. Для этого Саша должен
воспользоваться системой доменных имен (DNS) и
протоколом разрешения адресов (ARP). Саша знает
IP-адрес DNS, т.к. он
прописан в конфигурации Сашиной машины. Далее Саша отправляет
DNS-запрос системе DNS, спрашивая у нее
IP-адрес Колиной машины. DNS
отвечает адресом 10.1.1.2. Но Саше все еще нужен адрес
Ethernet MAC, использующий адрес 10.1.1.2, поэтому он выполняет
широковещательный ARP-зарос. Такой запрос отправляется
по широковещательному Ethernet-адресу, чтобы все
компьютеры, находящиеся в сети, его получили. Поскольку компьютер Коли подключен
к сети, он получает этот запрос. А так как адрес его компьютера 10.1.1.2, а
ARP-запрос ищет MAC-адрес,
связанный с адресом 10.1.1.2, Коля сообщает свой MAC-адрес.
На рис.1 схематически показан весь этот процесс.
Рис. 1. Работа служб DNS и протокола
ARP
Теперь Саша знает адреса IP и
Ethernet MAC, которые необходимы для отправки данных Коле
Весь этот
процесс проходит автоматически, невидимо для пользователя, но важно знать, как
это все происходит, чтобы уметь решать возникающие проблемы
Что делать, если после всех этих приготовлений приложения все равно не
работают? Любой сетевой администратор скажет вам, что дело в приложениях. Если
же вы обратитесь в службу поддержки приложений, они наверняка скажут вам, что
проблема в сети. Что же делать? В этом случае Саше следует проверить наличие
связи с компьютером Коли по сети с помощью команды ping.
Команда ping (Packet
Internet Groper) использует протокол ICMP (Internet
Control Message Protocol — протокол контроля сообщений в сети Интернет)
для отправки сообщения по определенному IP-адресу,
которое называется эхо-запрос ICMP. Компьютер с таким
IP-адресом должен ответить эхо-ответом
ICMP. Если так и произошло, значит,
IP-сеть успешно протестирована, и проблема, скорее всего, кроется в
приложении. Протокол ICMP не зависит ни от какого
приложения и проверяет только наличие связи в IP-сети,
т.е. работает на уровнях 1, 2 и 3 модели OSI.
Нам осталось рассмотреть еще один важный момент. В нашем примере
задействованы все три приложения — передача сообщений, отправка денег и
использование Web-обозревателя. Коля получает от Саши
пакеты для всех этих приложений.
Коле, соответственно, необходимо знать, какому приложению какие данные
предназначаются, но все три пакета приходят от одного IP-
и MAC-адреса. Можно было бы, конечно, распределять
пришедшие пакеты по использованному при передаче протоколу
UDP или TCP, но в нашем случае два из трех
приложений используют протокол TCP. К счастью,
разработчики протоколов UDP и TCP
позаботились о распределении пакетов по приложениям и вставили в передаваемые
пакеты специальное поле, которое называется номером порта. Процесс
разбиения данных по номерам портов называется мультиплексированием, т.е.
определение приложения, которое получает данные из пакета. Каждое приложение
Саши использует разные номера портов, поэтому Коля знает, какому приложению
предназначаются данные.
Итак, мы рассмотрели, как работает элементарная сеть с несколькими
приложениями. Давайте теперь познакомимся с использованными в данном примере
протоколами немного поближе.
2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G
В 2015 году несколько операторов мобильной связи выявили проблемы с технологиями на основе TCP/IP, применяемыми в 4G. Сложности связаны с неэффективным использованием спектра в результате добавления функций мобильности, безопасности, качества обслуживания и других к протоколу, который никогда для них не разрабатывался. Последующие исправления и обходные пути, предназначенные для решения этих проблем, сами стали приводят к увеличению затрат, задержкам и большему энергопотреблению. Поэтому TCP/IP был признан не оптимальным для более продвинутых услуг 5G.
Группа по протоколам следующего поколения (ISG NGP) проанализировала проблемы и предложила альтернативные решения. По результатам работы были определены требования к технологиям-кандидатам, которые заключались в сильном уменьшении размеров заголовков, времени обработки пакетов и задержки на сети, но, кроме этого, в совместимости с текущими сетями TCP/IP, SDN и MPLS.
Что такое сетевые порты
При передаче данных кроме IP-адресов отправителя и получателя пакет информации содержит в себе номера портов. Пример: 192.168.1.1:80, — в данном случае 80 — это номер порта. Порт — это некое число, которое используется при приеме и передаче данных для идентификации процесса (программы), который должен обработать данные. Так, если пакет послан на 80-й порт, то это свидетельствует, что информация предназначена серверу HTTP.
Номера портов с 1-го до 1023-й закреплены за конкретными программами (так называемые well-known-порты). Порты с номерами 1024-65 535 могут быть использованы в программах собственной разработки. При этом возможные конфликты должны решаться самими программами путем выбора свободного порта. Иными словами, порты будут распределяться динамически: возможно, что при следующем старте программа выберет иное значение порта, если, конечно, Вы вручную через настройки не задавали ей порт.
Типы адресов стека протоколов TCP/IP
Любой протокол передачи данных TCP/IP для идентификации узлов использует один из следующих типов адресов:
- Локальные (аппаратные) адреса.
- Сетевые адреса (IP адреса).
- Доменные имена.
Локальные адреса (MAC-адреса) — используются в большинстве технологий локальных вычислительных сетей, для идентификации сетевых интерфейсов. Под словом локальный, говоря о TCP/IP, следует понимать интерфейс, который действует не в составной сети, а в пределах отдельно взятой подсети. Например, подсеть интерфейса, подключенного к интернет — будет локальной, а сеть интернет — составной. Локальная сеть может быть построена на любой технологии, и независимо от этого, с точки зрения составной сети машина, находящаяся в отдельно выделенной подсети, будет называться локальной. Таким образом, когда пакет попадает в локальную сеть, дальше его IP адрес ассоциируется с локальным адресом, и пакет направляется уже на MAC-адрес сетевого интерфейса.
Сетевые адреса (IP-адреса). В технологии TCP/IP предусмотрена собственная глобальная адресация узлов, для решения простой задачи — объединения сетей с разной технологией в одну большую структуру передачи данных. IP-адресация совершенно не зависит от технологии, которая используется в локальной сети, однако IP адрес позволяет сетевому интерфейсу представлять машину в составной сети.
В итоге была разработана система, при которой узлам назначается IP адрес и маска подсети. Маска подсети показывает, какое количество бит отводится под номер сети, а какое количество под номер узла. IP адрес состоит из 32 бит, разделенных на блоки по 8 бит.
При передаче пакета ему назначается информация о номере сети и номере узла, в который пакет должен быть направлен. Сначала маршрутизатор направляет пакет в нужную подсеть, а потом выбирается узел, который его ждет. Этот процесс осуществляется протоколом разрешения адресов (ARP).
Доменные адреса в сетях TCP/IP управляются специально разработанной системой доменных имен (DNS). Для этого существуют серверы, которые сопоставляют доменное имя, представленное в виде строки текста, с IP адресом, и отправляет пакет уже в соответствии с глобальной адресацией. Между именем компьютера и IP адресом не предусмотрено соответствий, поэтому, чтобы преобразовать доменное имя в IP адрес, передающему устройству необходимо обратиться к таблице маршрутизации, которая создается на DNS сервере. Например, мы пишем в браузере адрес сайта, DNS сервер сопоставляет его с IP адресом сервера, на котором сайт расположен, и браузер считывает информацию, получая ответ.
Кроме сети интернет, есть возможность выдавать компьютерам доменные имена. Таким образом, упрощается процесс работы в локальной сети. Пропадает необходимость запоминать все IP-адреса. Вместо них можно придумать каждому компьютеру любое имя и использовать его.
Что такое TCP/IP
TCP/IP — это набор протоколов, специальных правил, которые упорядочивают и обеспечивают надежный обмен информацией среди устройств, объединенных в сеть. Это может быть локальная сетка из двух компьютеров, так и глобальная паутина.
Полностью пишется, как, Transmission Control Protocol/Internet Protocol, что в переводе означает — Протокол управления передачи/Интернета.
Позволяет взаимодействовать между собой устройствам, находящимся в разных сетях и с различными операционными системами, например, между Windows, Mac OS, Linux и т.д.
Название данного стека — набора правил сложилось из основных двух:
- Протокол IP — берет на себя задачу по адресации, определяет, где в передаваемых данных: адрес, содержимое.
- Протокол TCP — обеспечивает и контролирует надежную передачу информации и ее целостность.
Также включает в себя и другие, но так, как эти являются базовыми, закрепилось именно такое называние. Как видите, все оказалось довольно просто.
Как работает TCP/IP — принцип работы
У каждого компьютера и ноутбука в сети есть свой уникальный ip адрес. Программы, которые используются на компьютере применяют свой уникальный порт для их идентификации. Порт необходим, чтобы программы различали друг друга, т.к. только по айпи будет не понятно, какой софт запрашивает информацию и куда ее следует отправлять.
Так обмениваются между собой программы по сети:
Программа 1 — отправитель:
IP адрес: 192.168.0.32
Порт: 2054
Программа 2 — получатель:
IP адрес: 192.168.0.34
Порт: 2071
Пересылаемые данные пакета:
— — —
IP — это уникальный адрес компьютера. Порт — это идентификатор приложение установленного на нем. Связка, IP + порт называется — сокет.
Стек протоколов TCP/IP
Стек разделяется на четыре уровня, в каждом из которых свои протоколы. Все они функционируют одновременно, поэтому у каждого есть свои правила, чтобы они работали без перебоев и конфликтов.
1. Прикладной / Для приложений. Это: HTTP, SMTP, DNS, FTP и т.д. Т.е. Веб, почта, передача файлов и прочее.2. Транспортный. Это: TCP, UPD и т.д. Отвечает за связь между компьютерами и за доставку данных.3. Сетевой (межсетевой). IP, IGMP и т.д. Отвечает за адресацию.4. Канальный / Сетевые интерфейсы. Это: Ethernet, Wi-Fi, DSL.
На этом стеке и реализовано все взаимодействие пользователей в IP сетях. Также, существуют и другие стеки: OSI, IPX/SPX, IPX/SPX.
В заключение
Вот вы и узнали, что это такое, постарался объяснить все просто, для «чайников». Следующие материалы также будут посвящены технологии передачи данных в интернете.
Описание модели TCP/IP в технической литературе
В модели TCP/IP, в отличие от модели OSI, физический уровень никак не описывается. Тем не менее, в некоторых учебниках, для лучшего понимания, описывается «гибридная модель TCP/IP — OSI» из 5 уровней, содержащая дополнительный — физический уровень.
Следующая таблица показывает различные вариации в описании модели TCP/IP. Количество уровней варьируется от трёх до семи.
Kurose, Forouzan | Comer, Kozierok | Stallings | Tanenbaum | Cisco Academy | OSI model | ||
---|---|---|---|---|---|---|---|
Пять уровней | Четыре + 1 уровень | Пять уровней | Пять уровней | Четыре уровня | Четыре уровня | Три уровня | Семь уровней |
«Five-layer Internet model» or «TCP/IP protocol suite» | «TCP/IP 5-layer reference model» | «TCP/IP model» | «TCP/IP 5-layer reference model» | «Internet model» | «Internet model» | «Arpanet reference model» | OSI model |
Application | Application | Application | Application | Application (Прикладной) | Application | Application/Process | Application |
Presentation | |||||||
Session | |||||||
Transport | Transport | Host-to-host or transport | Transport | Transport (Транспортный) | Transport | Host-to-host | Transport |
Network | Internet | Internet | Internet | Internet (Сетевой) | Internetwork | Network | |
Data link | Data link (Network interface) | Network access | Data link | Link (Канальный) | Network interface | Network interface | Data link |
Physical | (Hardware) | Physical | Physical | Physical |
В чем разница между IPv4 и IPv6
Возможно, вы также заметили при просмотре настроек другой тип IP-адреса, называемый адресом IPv6. Типы IP-адресов, о которых мы говорили до сих пор, – это адреса, используемые протоколом IP версии 4 (IPv4), разработанным в конце 70-х годов. Они используют 32 бинарных бита, о которых мы говорили (в четырех октетах), чтобы обеспечить в общей сложности 4,29 миллиарда возможных уникальных адреса. Хотя это много, все общедоступные адреса давно были «потреблены» предприятиям. Многие из них сейчас не используются, но они назначены и недоступны для общего использования.
В середине 90-х годов, обеспокоенная потенциальной нехваткой IP-адресов, специальная рабочая группа Internet Engineering Task Force (IETF) разработала IPv6. IPv6 использует 128-битный адрес вместо 32-разрядного адреса IPv4, поэтому общее количество уникальных адресов многократно выросло и стало достаточно большим (вряд ли когда-либо закончится).
В отличие от точечной десятичной нотации, используемой в IPv4, адреса IPv6 выражаются в виде восьми групп номеров, разделенных двоеточиями. Каждая группа имеет четыре шестнадцатеричных цифры, которые представляют 16 двоичных цифр (это называется хекстетом). Типичный IPv6-адрес может выглядеть примерно так:
Дело в том, что нехватка адресов IPv4, вызвавшая беспокойство, в значительной степени смягчалась увеличением использования частных IP-адресов через маршрутизаторы. Всё больше и больше людей создавали свои собственные частные сети, используя частные IP-адреса.
Что такое таблицы маршрутизации
И вот мы плавно добрались и до них. И так.. Что же за таблицы такие.
Организация или пользователь может иметь несколько точек подключения к Интернету (например, резервные каналы на случай, если у первого провайдера что-то выйдет из строя, а интернет таки очень нужен) или содержать в своей структуре несколько IP-сетей. В этом случае, чтобы система знала каким путем (через какой шлюз) посылать ту или иную информацию, используются таблицы маршрутизации. В таблицах маршрутизации для каждого шлюза указываются те подсети Интернета, для которых через них должна передаваться информация. При этом для нескольких шлюзов можно задать одинаковые диапазоны, но с разной стоимостью передачи данных: например, информация, будет пересылаться по каналу, имеющему самую низкую стоимость, а в случае выхода его из строя по тем или иным причинам, автоматически будет использоваться следующее доступное наиболее дешевое соединение.
Application Layer
Application layer interacts with an application program, which is the highest level of OSI model. The application layer is the OSI layer, which is closest to the end-user. It means the OSI application layer allows users to interact with other software application.
Application layer interacts with software applications to implement a communicating component. The interpretation of data by the application program is always outside the scope of the OSI model.
The function of the Application Layers are:
- Application-layer helps you to identify communication partners, determining resource availability, and synchronizing communication.
- It allows users to log on to a remote host
- This layer provides various e-mail services
- This application offers distributed database sources and access for global information about various objects and services.
Что такое маска адреса (подсеть)
Понятие подсети введено, чтобы можно было выделить часть IP-адресов одной организации, часть другой и тд. Подсеть представляет собой диапазон IP-адресов, которые считаются принадлежащими одной локальной сети. При работе в локальной сети информация пересылается непосредственно получателю. Если данные предназначены компьютеры с IP-адресом, не принадлежащим локальной сети, то к ним применяются специальные правила для вычисления маршрута для пересылки из одной сети в другую.
Маска — это параметр, который сообщает программному обеспечению о том, сколько компьютеров объединено в данную группу (подсеть). Маска адреса имеет такую же структуру как и сам IP-адрес: это набор из четырех групп чисел, каждое из которых может быть в диапазоне от 0 до 255. При этом, чем меньше значение маски, тем больше компьютеров объединено в данную подсеть. Для сетей небольших компаний маска обычно имеет вид 255.255.255.x (например, 255.255.255.224). Маска сети присваивается компьютеру одновременно с IP-адресом. Так, например, сеть 192.168.0.0 с маской 255.255.255.0 может содержать в себе компьютеры с адресами от 192.168.0.1 до 192.168.254. А сеть 192.168.0.0 с маской 255.255.255.128 допускает адреса от 192.168.0.1 до 192.168.0.127. Думаю, смысл понятен. Как правило сети с небольшим возможным числом компьютеров используются провайдерами с целью экономии IP-адресов. Например, клиенту, может быть назначен адрес с маской 255.255.255.252. Такая подсеть содержит в себе только два компьютера.
После того как компьютер получил IP-адрес и ему стало известно значение маски подсети, программа может начать работу в данной локальной подсети. Однако же, чтобы обмениваться информацией с другими компьютерами в глобальной сети, необходимо знать правила, куда пересылать информацию для внешней сети. Для этого служит такая характеристика как адрес шлюза (Gateway).