Сообщения TCP и обмен данными — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Типы сооружений для обработки осадков: Септиками называются сооружения, в которых одновременно происходят осветление сточной жидкости...

Сообщения TCP и обмен данными

2020-05-07 110
Сообщения TCP и обмен данными 0.00 из 5.00 0 оценок
Заказать работу

Самая основная разница между TCP и UDP (User Datagram Protocol, протоколом дейтаграмм пользователя), который является его двоюродным братом на том же самом уровне, состоит в том, что он передаёт данные некоторым организованным и надёжным образом. Тот факт что все операции гарантируют доставку обычно характеризует TCP как протокол, ориентированный на соединение. Он осуществляет это первичным установлением троекратного квитирования (handshake) для синхронизации имеющейся нумерации последовательности между передающей и принимающей сторонами SYN, SYN-ACK и ACK.

Подтверждение (acknowledgement) применяется для отслеживания последовательных сегментов при их диалоге. Наконец, по окончанию данного диалога одна сторона отправит сообщение FIN, причём другая сторона ответит ACK на это сообщение FIN а также отправит некое сообщение FIN со своей стороны. Затем сторона инициатор выдаст ACK на полученный FIN.

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

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

UDP

UDP также является ключевым участником имеющегося комплекта протокола Интернет. Как и TCP, он находится на 4 уровне модели OSI, который отвечает за доставку сегментов данных между прикладным уровнем и уровнем IP. В отличие от TCP его заголовок состоит всего лишь из 64 бит, который содержит только порт источника и получателя, длину и контрольную сумму. Такой легковесный заголовок делает его идеальным для приложений, предпочитающих более быструю доставку без установления определённого сеанса между двумя хостами или необходимости гарантированной доставки данных. Возможно это сложно представить в наши дни быстрых соединений интернет, однако такой дополнительный заголовок составлял значительную разницу в скорости передачи в ранние дни X.21 и соединений ретрансляции кадров (frame relay). Несмотря на важность сбережения скорости самой по себе, отсутствие установления различных состояний подобных TCP также сберегает вычислительные ресурсы на имеющихся двух оконечных точках.

 

Рисунок 6


Заголовок UDP (источник

 

Теперь вы можете задаться вопросом зачем вообще пользоваться UDP в наши дни; принимая во внимание отсутствие надёжной передачи, разве мы не желаем чтобы все наши соединения были надёжными и свободными от ошибок? Если вы задумаетесь о некотором мультимедийном приложении видео потока или вызове Skype { Прим. пер.: или сеансе удалённого рабочего места RDP Windows/ VMware/ XenServer/ FusionAccess/ VNC }, такие приложения получат преимущества от более лёгкого заголовка в случае, когда приложению всего лишь нужно доставить текужую дейтаграмму так быстро, как это только возможно. Вы также можете рассмотреть процесс просмотра DNS. Когда набранный вами в браузере адрес переводится в понятный компьютеру адрес, этот пользователь получает выгоду от более лёгкого процесса так как это случится даже "до" доставки самого первого бита информации вам с вашего любимого вебсайта.

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

IP

Как сказали бы сетевые инженеры, они сами ";живут" на уровне IP, который является 3 уровнем согласно модели OSI. IP имеет задание адресации и маршрутизации между оконечными узлами, помимо всего прочего. Именно адресация IP, вероятно, является наиболее важным заданием. Само адресное пространство подразделяется на две части; сетевую порцию и порцию хоста. Именно маска подсети указывает какая порция адреса относится к сетевой части, а какая к самому хосту. И IPv4, и, позднее, IPv6 отображают имеющийся адрес в нотации с точками, например, 192.168.0.1. Маска подсети может либо представляться в нотации с точками (255.255.255.0), либо с применением переднего слеша для отображения числа бит, которые должны рассматриваться как биты сети (/24).

 

Рисунок 7


Заголовок IPv4 (источник

 

Заголовок IPv6, последующее за IPv4 поколение заголовка IP, имеет некую фиксированную порцию и различные расширяющие заголовки.

 

Рисунок 8


Заголовок IPv6 (источник

 

Поле Next Header в разделе фиксированного заголовка может указывать некий последующий расширительный заголовок, который несёт дополнительную информацию. Такие расширительные заголовки могут содержать информацию о маршрутизации и фрагментации. Как бы сильно разработчики протокола не желали перейти с IPv4 на IPv6, интернет сегодня всё ещё достаточно много адресации выполняет при помощи IPv4.

NAT IP и безопасность

NAT (Network Address Translation, трансляция сетевого адреса) обычно используется для трансляции диапазона частных IPv4 адресов в общедоступные, допускающие маршрутизацию адреса IPv4. Но также это может означать и некую трансляцию между IPv4 в IPv6, например, в пограничных областях, когда IPv6 используется внутри самой сетевой среды, которые подлежат трансляции в IPv4 в том случае, когда эти пакета покидают данную сетевую среду. Порой NAT6to6 используется также по причинам безопасности.

Безопасность - это непрерывный процесс, который объединяет все аспекты сетевого взаимодействия, включая автоматизацию и Python. Данная книга имеет целью применение Python чтобы помочь вам в управлении сетевой средой; безопасности будет посвящена часть той главы которая применяет SSHv2 поверх telnet. Мы также рассмотрим, как мы можем применять Python и другие цепочки инструментов для получения визуализации сети.

Понятия маршрутизации IP

По моему личному мнению, маршрутизация IP состоит в том, чтобы иметь все необходимые промежуточные устройства между двумя оконечными пунктами обмена всеми пакетами между ними на основе имеющегося IP заголовка. Для каждого взаимодействия в интернете данный пакет будет перемещаться по различным промежуточным устройствам. Как уже упоминалось, такие промежуточные устройства состоят из маршрутизаторов, коммутаторов, оптического оборудования и различного прочего снаряжения, которые не рассматриваются за пределами сетевого и транспортного уровня. При аналогии с поездкой по дорогам вы можете отправиться в путешествие по Соединённым Штатам из города Сан Диего в Калифорнии в город Сиэтл в Вашингтоне. Адрес IP источника будет аналогом Сан Диего, а адресом IP назначения может быть указан Сеэтл. По своему пути вы можете останавливаться во множестве разнообразных промежуточных пунктах, таких Лос Анжелес, Сан Франциско и Портленд. Их все можно рассматривать как маршрутизаторы и коммутаторы между источником и пунктом назначения.

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

Обзор языка Python

Если коротко, данная книга посвящена облегчению нашей жизни при помощи Python. Но что такое Python и почему именно он является избранным языком для многих инженеров DevOps? Словами фонда Python Executive Summary (https://www.python.org/doc/essays/blurb/):

Python является языком программирования с интерпретатором и объектно- ориентацией, а также обладающим высоким уровнем и при этом с динамической семантикой. Его встроенная структура данных высокого уровня в комбинации с динамической типизацией и динамическим связыванием делают его очень привлекательным для Быстрой разработки приложений, а также для применения в качестве языка сценариев или склеивающего языка для соединения имеющихся компонентов в одно целое. Python прост, обладает лёгким в освоении синтаксисе придающем особую значимость читабельности и, тем самым, снижает стоимость сопровождения.

Если вы в какой- то степени новичок в программировании, тогда слова объектно- ориентированная, динамическая семантика не означают для вас чего- то существенного. Однако я думаю, что все мы согласимся что Быстрая разработка приложений, простота и лёгкость обучения синтаксису звучат как хорошие понятия. Python как язык интерпретатора означает, что не требуется никакой процесс компиляции, поэтому значительно возрастает скорость процесса написания, проверки и изменения ваших программ. Для простых сценариев, в случае падения вашего сценария несколько операторов печати это обычно всё что вам нужно чтобы выяснить что идёт не так. Применение интерпретатора также означает, что Python просто переносится на различные типы операционных систем и программы Python, написанные в Windows могут применяться в Linux и Mac.

Объектно- ориентированная природа поощряет повторное применение кода посредством его разбиения на простые многоразовые формы такие как модули и пакеты. Фактически все файлы Python являются модулями, которые могут повторно применяться или импортироваться в другую программу Python. Это делает простым совместное использование программ между инженерами и поощряет повторное применение кода. У Python также имеются некий батарейки с мантрами, что означает, что нет нужды загружать дополнительный код для общих задач. Чтобы достичь этого и при том не раздувать черезчур сам код, при установке самого интерпретатора Python устанавливается некий набор стандартных библиотек. Для распространённых задач, таких как регулярные выражения, математические функции, а также декодирование JSON, всё что вам нужно, это оператор import и ваш интерпретатор перемести эти функции в вашу программу. Именно это я бы хотел рассмотреть как одно из убийственных свойств Python.

Наконец, тот факт, что код Python может стартовать с относительно небольшого сценария в несколько строк кода и превращаться в полноценную производственную систему, это очень удобно для сетевых инженеров. Как многие из нас знают, сама сетевая среда обычно органично развивается без некоего генерального плана. Язык, который может расти вместе с вашей сетью в размере неоценим. Вы можете быть удивлены, увидев язык, который многими считался языком сценариев и который при этом применялся для полноценных производственных систем (организации, применяющие Python, https://wiki.python.org/moin/OrganizationsUsingPython).

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

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

Версии Python

на момент написания данной книги в начале 2017, Python Python пребывает в процессе перехода с Python версии 2 на Python версии 3. К сожалению Python 3 не совместим в обратную сторону с Python 2. Когда я произношу переход, имейте в виду, что Python 3 был выпущен в далёком 2008, более 9 лет назад с активной разработкой и наиболее поздней версией 3.6. Самый последний выпуск Python 2.x, 2.7 был выпущен шесть лет тому назад, в 2010. К счастью, на одной и той же машине могут сосуществовать обе версии. Что касается лично меня, я применяю Python 2 в качестве своего интерпретатора по умолчанию, когда я набираю Python в приглашении командной строки и я использую Python 3 когда мне необходимо применять Python 3. Дополнительная информация приводится в нашем следующем разделе об исполнении интерпретатора Python, однако вот пример исполнения Python 2 и Python 3 на машине Ubuntu Linux:

echou @pythonicNeteng:~$ python


Поделиться с друзьями:

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

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Своеобразие русской архитектуры: Основной материал – дерево – быстрота постройки, но недолговечность и необходимость деления...

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



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.018 с.