Обзор современных протоколов в системах промавтоматики
Содержание:
- Что такое таблицы маршрутизации
- Что такое TCP/IP
- Реализация протокола FBUS в компании Fastwel
- „ругие типы оборудованиЯ
- Сравнение с моделью OSI
- Соединение TCP
- Сетевой (межсетевой) уровень
- Внедрение IPv6
- 2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G
- Восстановление после ошибок TCP
- Заголовок TCP
- Обзор протокола SMTP
Что такое таблицы маршрутизации
И вот мы плавно добрались и до них. И так.. Что же за таблицы такие.
Организация или пользователь может иметь несколько точек подключения к Интернету (например, резервные каналы на случай, если у первого провайдера что-то выйдет из строя, а интернет таки очень нужен) или содержать в своей структуре несколько 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.
В заключение
Вот вы и узнали, что это такое, постарался объяснить все просто, для «чайников». Следующие материалы также будут посвящены технологии передачи данных в интернете.
Реализация протокола FBUS в компании Fastwel
Долго думали, включать ли в этот список российскую компанию Fastwel с ее отечественной реализацией промышленного протокола FBUS, но потом все же решились написать пару абзацев для лучшего понимания реалий импортозамещения.
Существует две физические реализации FBUS. Одна из них — это шина, в которой протокол FBUS работает поверх стандарта RS485. Кроме этого есть реализация FBUS в промышленной сети Ethernet.
FBUS сложно назвать быстродействующим протоколом, время ответа сильно зависит от количества модулей ввода-вывода на шине и от параметров обмена, обычно оно колеблется в пределах 0,5—10 миллисекунд. Один подчиненный узел FBUS может содержать только 64 модуля ввода-вывода. Для полевой шины длина кабеля не может превышать 1 метр, поэтому о распределенных системах речь не идет. Вернее идет, но только при использовании промышленной сети FBUS поверх TCP/IP, что означает увеличение времени опроса в несколько раз. Для подключения модулей могут использоваться удлинители шины, что позволяет удобно расположить модули в шкафу автоматики.
„ругие типы оборудованиЯ
‚ больших сооружениЯх, типа университета Groucho Marx, Ethernet обычно не
единственный тип используемого оборудованиЯ. ‚ Groucho Marx локальнаЯ сеть
каждого отдела свЯзана с университетской магистралью, котораЯ ЯвлЯетсЯ
оптическим кабелем FDDI (Fiber Distributed Data Interface
). FDDI использует совершенно другой подход к передаче данных, который
основываетсЯ на рассылке определенных маркеров (tokens
) и только, если машина получает этот маркер, она может послать некий
блок (один или несколько пакетов) информации. ѓлавное преимущество FDDI
скорость, достигающаЯ 100 Mbps, и максимальнаЯ длина кабелЯ до 200 км. Љроме
того, там нет столкновений пакетов из-за того, что сеть основана на передаче
маркера.
…сли ‚ы работаете с аппаратурой IBM, часто придетсЯ иметь дело с сетью IBM
Token Ring. Token Ring ЯвлЯетсЯ альтернативой Ethernet в LAN и использует
решениЯ, аналогичные применЯемым в FDDI, но на низкой скорости (4 Mbps или
16 Mbps). ‚ Linux Token Ring настраиваетсЯ аналогично Ethernet, так что Я не
буду рассматривать его отдельно. ђаньше за право быть наиболее
распространенным стандартом бились Ethernet и Token Ring. ‚ конце концов
победил Ethernet, но стандарты по своим возможностЯм находЯтсЯ примерно на
одном уровне.
…сть и совершенно другие сетевые технологии, например, ArcNet и DECNet.
Linux поддерживает и их, но из-за малой популЯрности, Я не буду говорить о
них в этой работе.
Њногие сетевые операторы предлагают пакетные протоколы передачи. ‚ероЯтно,
наиболее популЯрный из них стандарт X.25. Њногие публичные сети подобно
Tymnet в ‘Ђ, Austpac в Ђвстралии и Datex-P в ѓермании предлагают это
обслуживание. X.25 определЯет собственный набор протоколов, но часто
используетсЯ, чтобы соединить сети, работающие под TCP/IP и другими
протоколами. ’ак как IP-пакеты не могут быть прЯмо отображены на X.25 (и
наоборот), они просто вставлЯютсЯ в X.25-пакеты и посылаютсЯ по сети. X.25
требует синхронной свЯзи и, следовательно, специальные синхронные аппаратные
средства последовательного порта. Њожно использовать X.25 с нормальными
последовательными портами, если ‚ы используете специальное устройство
PAD (Packet Assembler Disassembler). PAD автономное устройство. Ћно
обеспечивает асинхронные и синхронные последовательные порты. ќто управлЯет
протоколом X.25 так, чтобы простые устройства терминала могли создавать и
принимать X.25-подключениЯ. €меетсЯ экспериментальнаЯ реализациЯ протокола
X.25 длЯ Linux.
Ѓолее современный протокол называетсЯ Frame Relay.
Frame Relay совместно использует рЯд технических свойств с X.25, но гораздо
больше похож в поведении на IP. Џодобно X.25 Frame Relay требует специальных
синхронных последовательных аппаратных средств. €з-за их сходства много плат
поддерживают оба эти протокола. „оступен вариант, который не требует никаких
специальных внутренних аппаратных средств. ќто Frame Relay Access Device
(FRAD), который формирует пакеты Frame Relay из пакетов Ethernet длЯ передачи
по сети. Frame Relay идеально подходит длЯ переноса TCP/IP между сайтами.
Linux обеспечивает драйверы многих внутренних устройств Frame Relay.
…сли ‚ы нуждаетесь в работе с высокоскоростной сетью, ‚ас должен
заинтересовать ATM (Asynchronous Transfer Mode). ATM ЯвлЯетсЯ новой сетевой
технологией, специально созданной длЯ того, чтобы обеспечить управлЯемый,
быстрый, с низким временем ожиданиЯ обмен данными. Ћна обеспечивает контроль
над качеством обслуживание (QoS). Њного компаний создают сети ATM, потому что
это позволЯет свести много услуг на одну платформу. ATM часто используетсЯ
длЯ передачи TCP/IP. Networking-HOWTO предлагает информацию относительно
поддержки ATM в Linux.
—асто радиолюбители используют свое оборудование длЯ созданиЯ сети из
своих компьютеров. ќто называетсЯ пакетное радио (packet
radio) или ham-радио. Џротокол, используемый ham-радио, назван AX.25 (он
получен из X.25). Ћн также используетсЯ длЯ передачи TCP/IP и других
протоколов. AX.25 подобно X.25 требует последовательных аппаратных средств,
способных к синхронному действию, или внешнее устройство Terminal Node
Controller, чтобы преобразовать пакеты. …сть немало плат с поддержкой этого
протокола, они имеют общее название «Z8530 SCC based» (по имени наиболее
популЯрного контроллера свЯзи, используемого в проектах). …сть два протокола,
которые работают поверх AX.25: NetRom и Rose, ЯвлЯющиесЯ протоколами
сетевого уровнЯ. Linux поддерживает полные реализации AX.25, NetRom и Rose.
AX25-HOWTO ЯвлЯетсЯ хорошим источником информации по использованию этих
протоколов в Linux.
Сравнение с моделью OSI
Три верхних уровня в модели OSI, то есть уровень приложения, уровень представления и уровень сеанса, отдельно не различаются в модели TCP/IP, которая имеет только прикладной уровень над транспортным уровнем. Хотя некоторые чистые приложения протокола OSI, такие как X.400, также объединяют их, нет требования, чтобы стек протокола TCP/IP должен накладывать монолитную архитектуру над транспортным уровнем. Например, протокол NFS-приложений работает через протокол представления данных External Data Representation (XDR), который, в свою очередь, работает по протоколу Remote Procedure Call (RPC). RPC обеспечивает надежную передачу данных, поэтому он может безопасно использовать транспорт UDP с максимальным усилием.
Различные авторы интерпретировали модель TCP/IP по-разному и не согласны с тем, что уровень связи или вся модель TCP/IP охватывает проблемы первого уровня модели OSI (физический уровень) или предполагается, что аппаратный уровень ниже уровня канала.
Несколько авторов попытались включить слои 1 и 2 модели OSI в модель TCP/IP, поскольку они обычно упоминаются в современных стандартах (например, IEEE и ITU). Это часто приводит к модели с пятью слоями, где уровень связи или уровень доступа к сети разделяются на слои 1 и 2 модели OSI.
Например, считается, что уровни сеанса и представления пакета OSI включены в прикладной уровень пакета TCP/IP. Функциональность уровня сеанса можно найти в протоколах, таких как HTTP и SMTP, и более очевидна в таких протоколах, как Telnet и протокол инициации сеанса (SIP). Функциональность уровня сеанса также реализована с нумерацией портов протоколов TCP и UDP, которые охватывают транспортный уровень в наборе TCP/IP. Функции уровня представления реализуются в приложениях TCP/IP со стандартом MIME при обмене данными.
Конфликты очевидны также в оригинальной модели OSI, ISO 7498, когда не рассматриваются приложения к этой модели, например, ISO 7498/4 Management Framework или ISO 8648 Internal Organization of the Network layer (IONL). Когда рассматриваются документы IONL и Management Framework, ICMP и IGMP определяются как протоколы управления уровнем для сетевого уровня. Аналогичным образом IONL предоставляет структуру для «зависимых от подсетей объектов конвергенции», таких как ARP и RARP.
Протоколы IETF могут быть инкапсулированы рекурсивно, о чем свидетельствуют протоколы туннелирования, такие как Инкапсуляция общей маршрутизации (GRE). GRE использует тот же механизм, который OSI использует для туннелирования на сетевом уровне.
Существуют разногласия в том, как вписать модель TCP/IP в модель OSI, поскольку уровни в этих моделях не совпадают.
К тому же, модель OSI не использует дополнительный уровень — «Internetworking» — между канальным и сетевым уровнями. Примером спорного протокола может быть ARP или STP.
Вот как традиционно протоколы TCP/IP вписываются в модель OSI:
TCP/IP | OSI | ||
7 | Прикладной | Прикладной | напр., HTTP, SMTP, SNMP, FTP, Telnet, SSH, SCP, SMB, NFS, RTSP, BGP |
6 | Представления | напр., XDR, AFP, TLS, SSL | |
5 | Сеансовый | напр., ISO 8327 / CCITT X.225, RPC, NetBIOS, PPTP, L2TP, ASP | |
4 | Транспортный | Транспортный | напр., TCP, UDP, SCTP, SPX, ATP, DCCP, GRE |
3 | Сетевой | Сетевой | напр., IP, ICMP, IGMP, CLNP, OSPF, RIP, IPX, DDP |
2 | Канальный | Канальный | напр., Ethernet, Token ring, HDLC, PPP, X.25, Frame relay, ISDN, ATM, SPB, MPLS, ARP |
1 | Физический | напр., электрические провода, радиосвязь, волоконно-оптические провода, инфракрасное излучение |
Обычно в стеке TCP/IP верхние 3 уровня модели OSI (прикладной, представления и сеансовый) объединяют в один — прикладной. Поскольку в таком стеке не предусматривается унифицированный протокол передачи данных, функции по определению типа данных передаются приложению.
Соединение TCP
TCP для передачи данных использует соединение. Соединение нужно установить перед тем, как начать передачу данных, а после того как передача данных завершена, соединение разрывается.
Задачи соединения
- Убедиться в том, что отправитель и получатель действительно хотят передавать данные друг другу
- Договориться о нумерации потоков байт. С точки зрения практической реализации нельзя всегда нумеровать данные в потоке байт с нуля. Каждый раз начальное значение для нумерации байт выбираются по определенному алгоритму и отправитель и получатель должны договориться между собой какое начальное значение они будут использовать для нумерации потока байт.
- При установке соединения происходит договоренность о некоторых параметрах соединения.
Установка соединения в TCP
Отправитель посылает запрос на установку соединения сообщение SYN от слова синхронизация. Также в сегмент включаются порядковый номер передаваемого байта.
Получатель в ответ передаёт сообщение SYN, куда включает подтверждение получения предыдущего сообщения ACK от слова acknowledge и порядковый номер байта, который он ожидает 7538, потому что на предыдущем этапе был получен байт с номером 7537.
Также отправитель включает в сегмент номер байта в потоке байт 36829. Номера байт в первом сообщении не могут быть всегда нулевыми, они выбираются по достаточно сложным алгоритмам, но для простоты можно представлять себе что эти номера выбираются случайным образом.
На третьем этапе пересылается подтверждение получения предыдущего запроса на установку соединения ACK номер следующего ожидаемого байта 36830, а также номер байта в сообщении. После этого соединение считается установленным и можно передавать данные.
Разрыв соединения в TCP
Соединение в TCP дуплексное — это означает, что после установки соединения передавать данные можно в две стороны. Есть две схемы разрыва соединения. Возможен одновременный разрыв соединения, в этом случае обе стороны разрывают соединение в одно и то же время, либо односторонние, в этом случае одна сторона говорит о том, что данные для передачи у нее закончились, но другая сторона может передавать данные еще достаточно долго.
Протокол TCP предусматривает два варианта разрыва соединения: корректное, с помощью одностороннего разрыва соединения и сообщения FIN и разрыв из-за критической ситуации с помощью сообщения RST.
Рассмотрим, как выполняется корректный разрыв соединения. Сторона, которая хочет разорвать соединение пересылает другой стороне сообщение FIN и в ответ получает сообщение ACK. Однако соединение разорвано только с одной стороны.
Когда другая сторона решила, что данные для передачи у нее закончились, она также передает сообщение FIN в ответ получает сообщение ACK подтверждение. На этом этапе соединение закрыто полностью в обе стороны.
Для разрыва соединения в критической ситуации из-за ошибок в приложении или с оборудованием используется одно сообщение RST. В этом случае соединение закрывается в обе стороны. Хотя сообщение RST предназначено для использования в критических ситуациях, некоторые протоколы используют его для быстрого закрытия соединения.
Сетевой (межсетевой) уровень
Основным протоколом этого уровня является протокол IP, который доставляет блоки данных (дейтаграммы) от одного IP-адреса к другому. IP-адрес является уникальным 32-х битным идентификатором компьютера, точнее его сетевого интерфейса. Данные для дейтаграммы передаются IP модулю транспортным уровнем. IP модуль добавляет к этим данным заголовок, содержащий IP-адрес отправителя и получателя, и другую служебную информацию.
Таким образом, сформированная дейтаграмма передается на уровень доступа к среде передачи, для отправки по каналу передачи данных.
Не все компьютеры могут непосредственно связаться друг с другом, часто чтобы передать дейтаграмму по назначению требуется направить ее через один или несколько промежуточных компьютеров по тому или ному маршруту. Задача определения маршрута для каждой дейтаграммы решается протоколом IP.
Когда модуль IP получает дейтаграмму с нижнего уровня, он проверяет IP адрес назначения, если дейтаграмма адресована данному компьютеру, то данные из нее передаются на обработку модулю вышестоящего уровня, если же адрес назначения дейтаграммы чужой, то модуль IP может принять два решения:
- Уничтожит дейтаграмму;
- Отправить ее дальше к месту назначения, определив маршрут следования, так поступают промежуточные станции – маршрутизаторы.
Также может потребоваться на границе сетей, с различными характеристиками, разбить дейтаграмму на фрагменты, а потом собрать их в единое целое на компьютере получателя. Это также задача протокола IP.
Также протокол IP может отправлять сообщения – уведомления с помощью протокола ICMP, например, в случае уничтожения дейтаграммы. Более никаких средств контроля корректности данных, подтверждения или доставки, предварительного соединения в протоколе нет, эти задачи возложены на транспортный уровень.
Внедрение IPv6
Таким образом, IPv6 это новый, улучшенный и упрощенный протокол сетевого уровня, который позволяет решить проблему нехватки и адресов IPv4. Однако проблема заключается в том, что протоколы IPv4 и IPv6 несовместимы друг с другом. На практике это означает, что если вы хотите использовать IPv6, то необходимо поменять оборудование и программное обеспечение, на то которое поддерживает протокол IPv6 и провести значительную перенастройку сетевого оборудования, и все эти действия заметны, как пользователям так и администраторам.
Заменить все сетевое оборудование и программное обеспечение в один момент невозможно, поэтому разработчики IPv6 предполагали, что две версии протокола, будут сосуществовать в интернет достаточно долгое время.
Для того, чтобы можно было плавно перейти на протокол IPv6 были предложены две возможные технологии:
- Первая технология это двойной стек, все современное оборудование и программное обеспечение поддерживает работу как, по протоколу IPv4, так и по протоколу IPv6. Таким образом, для того чтобы начать использование IPv6, вам нужно просто сконфигурировать протокол IPv6 на своем оборудовании, и скорее всего все начнет работать. Но имейте ввиду чтобы подключиться к интернет по протоколу IPv6, эту версию протокола должен поддерживать ваш провайдер.
- Другая возможность совместного использования протоколов IPv4 и IPv6, это туннелирование, предположим что у нас есть несколько сетей внутри которых используется протокол IPv6, но эти сети разрознены и между ними находится сеть IPv4. В этом случае можно создать так называемый туннель, в туннеле пакеты IPv6 будут вкладываться внутрь пакетов IPv4, и таким образом передаваться из одной сети IPv6 в другую сеть IPv6, между которыми есть соединение только по протоколу IPv4.
Для того чтобы ускорить внедрение протокола IPv6, многие крупные компании объединились и устроили мировой запуск протокола IPv6, он произошел 6 июня 2012 года, в нем участвовали многие крупные компании-производители сетевого оборудования, такие как Cisco и D-Link, интернет-компании такие как Google, Facebook, компании производители программного обеспечения, такие как Microsoft, а также большое количество других компаний.
2015: Операторы связи выявили проблемы с решениями на основе TCP/IP в сетях 4G
В 2015 году несколько операторов мобильной связи выявили проблемы с технологиями на основе TCP/IP, применяемыми в 4G. Сложности связаны с неэффективным использованием спектра в результате добавления функций мобильности, безопасности, качества обслуживания и других к протоколу, который никогда для них не разрабатывался. Последующие исправления и обходные пути, предназначенные для решения этих проблем, сами стали приводят к увеличению затрат, задержкам и большему энергопотреблению. Поэтому TCP/IP был признан не оптимальным для более продвинутых услуг 5G.
Группа по протоколам следующего поколения (ISG NGP) проанализировала проблемы и предложила альтернативные решения. По результатам работы были определены требования к технологиям-кандидатам, которые заключались в сильном уменьшении размеров заголовков, времени обработки пакетов и задержки на сети, но, кроме этого, в совместимости с текущими сетями TCP/IP, SDN и MPLS.
Восстановление после ошибок TCP
Чтобы понять, что делают протоколы транспортного уровня, вы должны вспомнить об уровне выше транспортного уровня, об уровне приложений. Зачем? Каждый уровень предоставляет услуги вышестоящему уровню, например, восстановление после ошибок, предоставляемое протоколом TCP протоколам прикладного уровня.
Например, Роб и Гарри использовали HTTP для передачи домашней страницы с веб-сервера Гарри в веб-браузер Роба (). Но что произошло бы, если бы HTTP-запрос GET Роба был потерян при передаче через сеть TCP/IP? Или что произошло бы, если бы ответ Гарри, в который входил контент домашней страницы, был утерян? Как и следовало ожидать, в любом случае страница не отобразилась бы в браузере Роба.
TCP/IP нуждается в механизме, гарантирующем доставку данных через сеть. Поскольку, возможно, многим протоколам прикладного уровня необходим способ, гарантировать доставку данных по сети, создатели TCP добавили в него функцию восстановления после ошибок. Для восстановления после ошибок TCP использует концепцию подтверждений. На рисунке 1 представлена основная идея того, как TCP обнаруживает потерянные данные и просит отправителя попробовать передать их снова.
Рисунок 1 – Служба восстановления после ошибок TCP, предоставленная протоколу HTTP
На рисунке 1 показан веб-сервер Гарри, отправляющий веб-страницу веб-браузеру Роба, используя три отдельных сообщения
Обратите внимание, что на этом рисунке показаны те же заголовки HTTP, что и на , а также на нем показаны заголовки TCP. В заголовках TCP показан порядковый номер () каждого сообщения. В данном примере в сети возникла проблема, и сеть не может доставить сообщение TCP (называемое сегментом) с порядковым номером 2
Когда Роб получает сообщения с порядковыми номерами 1 и 3, но не получает сообщение с порядковым номером 2, он понимает, что сообщение 2 было потеряно. Эта реализация TCP-логики заставляет Роба отправить TCP-сегмент обратно Гарри с просьбой снова отправить сообщение 2
В данном примере в сети возникла проблема, и сеть не может доставить сообщение TCP (называемое сегментом) с порядковым номером 2. Когда Роб получает сообщения с порядковыми номерами 1 и 3, но не получает сообщение с порядковым номером 2, он понимает, что сообщение 2 было потеряно. Эта реализация TCP-логики заставляет Роба отправить TCP-сегмент обратно Гарри с просьбой снова отправить сообщение 2.
Заголовок 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 программы используют зарезервированные или хорошо известные номера портов, как показано на следующем рисунке.
Обзор протокола SMTP
Простой протокол передачи почты (SMTP) основан на сквозной доставке сообщений. Клиент SMTP, чтобы отправить почту, связывается с SMTP-сервером конечного хоста через общеизвестный порт 25. Затем клиент ожидает, пока сервер отправит сообщение . После получения сообщения 220 клиент отправляет команду . Затем сервер отвечает сообщением «».
После этого передача почты начнется с команды , которая указывает идентификатор отправителя, а также поля , содержащего адрес, на который следует сообщать об ошибках.
После успешной команды отправитель выдает серию команд , которые идентифицируют получателей почтового сообщения. Получатель будет подтверждать каждую команду , отправляя или отправляя сообщение об ошибке (такого пользователя здесь нет).
После подтверждения всех команд отправитель выдает команду , чтобы сообщить получателю, что отправитель готов передать полное почтовое сообщение. Получатель отвечает сообщением с конечной последовательностью, которую отправитель должен использовать для завершения данных сообщения. Последовательность завершения состоит из 5 символов: возврат каретки, перевод строки, точка, возврат каретки и перевод строки ().
Теперь клиент отправляет данные построчно, заканчивая строки 5-символьной последовательностью , после чего получатель отправляет подтверждение или соответствующее сообщение об ошибке, если что-то пошло не так.
После завершения отправки клиент может выполнить любое из следующих действий.
Завершение сеанса: если у текущего клиента SMTP больше нет сообщений для отправки, соединение может быть закрыто командой , на которую будет дан ответ .
Изменение ролей: если у текущего клиента SMTP больше нет сообщений для отправки, но он готов принимать любые сообщения от текущего сервера SMTP, он может отправить команду . Теперь SMTP-клиент и SMTP-сервер поменяются своими ролям отправителя/получателя, и отправитель (ранее получатель) теперь может отправлять сообщения, выдав команду .
Отправка других писем: если у клиент SMTP (отправитель) есть еще одно сообщение для отправки, он может выдать новую команду .