
- •Глава 1. Понятие «сетевой протокол»………………………………….......3
- •Глава 2. Мобильный протокол mTproto в Telegram………………………7
- •Глава 1. Понятие «сетевой протокол»
- •1.1 Сетевой протокол
- •1.2 Примеры сетевых протоколов.
- •Глава 2. Мобильный протокол mTproto в Telegram.
- •2.1 Общее описание
- •2.2 Краткий обзор компонент
- •2.3 Запрос состояния сообщений
- •2.4 Авторизация и криптография
- •2.4 Мобильный протокол: подробное описание
ГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ
ВЫСШЕГО ПРОФЕССИОНАЛЬНОГО ОБРАЗОВАНИЯ
«РОССИЙСКАЯ ПРАВОВАЯ АКАДЕМИЯ
МИНИСТЕРСТВА ЮСТИЦИИ РОССИЙСКОЙ ФЕДЕРАЦИИ»
(РПА Минюста России)
Юридический факультет
Кафедра информационного права, информатики и математики
Реферат
Тема: Telegram как применение протокола MTproto.
Выполнил студент 1 курса
3 группы
Глухарев Максим Сергеевич
Научный руководитель
Крылов Григорий Олегович
профессор кафедры,
к.ю.н., д.ф.-м.н.,профессор
Москва 2013
Оглавление
Глава 1. Понятие «сетевой протокол»………………………………….......3
1.1 Сетевой протокол……………………………………………………......3
1.2 Примеры сетевых протоколов………………………………………......4
1.3 API - Интерфейс программирования приложений…………………….5
Глава 2. Мобильный протокол mTproto в Telegram………………………7
2.1 Общее описание………………………………………………………….7
2.2 Краткий обзор компонент……………………………………………….7
2.3 Запрос состояния сообщений…………………………………………...8
2.4 Авторизация и криптография…………………………………………...9
Глава 1. Понятие «сетевой протокол»
1.1 Сетевой протокол
Набор правил и действий (очерёдности действий), позволяющий осуществлять соединение и обмен данными между двумя и более включёнными в сеть устройствами – сетевой протокол.
Названия «протокол» и «стек протоколов» также указывают на программное обеспечение, которым реализуется протокол. Новые протоколы для Интернета определяются IETF(Инжене́рный сове́т Интерне́та), а прочие протоколы — IEEE или ISO. ITU-T занимается телекоммуникационными протоколами и форматами. Наиболее распространённой системой классификации сетевых протоколов является так называемая модель OSI, в соответствии с которой протоколы делятся на 7 уровней по своему назначению — от физического (формирование и распознавание электрических или других сигналов) до прикладного (интерфейс программирования приложений для передачи информации приложениями). Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Они строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. В настоящее время для сетевых протоколов используется модель OSI (Open System Interconnection — взаимодействие открытых систем, ВОС). Модель OSI — это 7-уровневая логическая модель работы сети.
Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней:
на физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи;
на канальном уровне определяются правила использования физического уровня узлами сети; сетевой уровень отвечает за адресацию и доставку сообщений; транспортный уровень контролирует очередность прохождения компонентов сообщения;
задача сеансового уровня — координация связи между двумя прикладными программами, работающими на разных рабочих станциях;
уровень представления служит для преобразования данных из внутреннего формата компьютера в формат передачи;
прикладной уровень является пограничным между прикладной программой и другими уровнями — обеспечивает удобный интерфейс связи сетевых программ пользователя.
1.2 Примеры сетевых протоколов.
TCP/IP — набор протоколов передачи данных, получивший название от двух принадлежащих ему протоколов: TCP (англ. Transmission Control Protocol) и IP (англ. Internet Protocol)[1]
Наиболее известные протоколы, используемые в сети Интернет: HTTP (Hyper Text Transfer Protocol) — это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц с одного компьютера на другой. FTP (File Transfer Protocol) — это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети.
Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный. POP (Post Office Protocol) — это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.
SMTP (Simple Mail Transfer Protocol) — протокол, который задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.
Telnet — это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ сети Интернет, как и на своей собственной, то есть запускать программы, менять режим работы и так далее. На практике возможности лимитируются тем уровнем доступа, который задан администратором удаленной машины. Далее, мы с вами перейдем к наиболее интересной вещи – интерфейсу программирования приложений.
1.3 API - Интерфейс программирования приложений.
Интерфейс программирования приложений (иногда интерфейс прикладного программирования) (англ. application programming interface)— набор готовых классов, процедур, функций, структур и констант, предоставляемых приложением (библиотекой, сервисом) для использования во внешних программных продуктах. Используется программистами для написания всевозможных приложений.
Практически все операционные системы (UNIX, Windows, Mac OS, и т. д.) имеют API, с помощью которого программисты могут создавать приложения для этой операционной системы. Главный API операционных систем — это множество системных вызовов.
В индустрии программного обеспечения общие стандартные API для стандартной функциональности имеют важную роль, так как они гарантируют, что все программы, использующие общий API, будут работать одинаково хорошо или, по крайней мере, типичным привычным образом. В случае API графических интерфейсов это означает, что программы будут иметь похожий пользовательский интерфейс, что облегчает процесс освоения новых программных продуктов.
С другой стороны, отличия в API различных операционных систем существенно затрудняют перенос приложений между платформами. Существуют различные методы обхода этой сложности — написание «промежуточных» API (API графических интерфейсов WxWidgets, Qt, GTK, и т. п.), написание библиотек, которые отображают системные вызовы одной ОС в системные вызовы другой ОС (такие среды исполнения, как Wine, cygwin, и т. п.), введение стандартов кодирования в языках программирования (например, стандартная библиотека языка C), написание интерпретируемых
языков, реализуемых на разных платформах (sh, python, perl, php, tcl, Java, и т. д.).
Также необходимо отметить, что в распоряжении программиста часто находится несколько различных API, позволяющих добиться одного и того же результата. При этом каждый API обычно реализован с использованием API программных компонент более низкого уровня абстракции.
Например: для того, чтобы увидеть в браузере строчку «Hello, world!», достаточно лишь создать HTML-документ с минимальным заголовком и простейшим телом, содержащим данную строку. Когда браузер откроет этот документ, программа-браузер передаст имя файла (или уже открытый дескриптор файла) библиотеке, обрабатывающей HTML-документы, та, в свою очередь, при помощи API операционной системы прочитает этот файл и разберётся в его устройстве, затем последовательно вызовет через API библиотеки стандартных графических примитивов операции типа «очистить окошко», «написать “Hello, world!” выбранным шрифтом». Во время выполнения этих операций библиотека графических примитивов обратится к библиотеке оконного интерфейса с соответствующими запросами, уже эта библиотека обратится к API операционной системы, чтобы записать данные в буфер видеокарты.
При этом практически на каждом из уровней реально существует несколько возможных альтернативных API. Например: мы могли бы писать исходный документ не на HTML, а на LaTeX, для отображения могли бы использовать любой браузер. Различные браузеры, вообще говоря, используют различные HTML-библиотеки, и, кроме того, всё это может быть (вообще говоря) собрано с использованием различных библиотек примитивов и на различных операционных системах. Основными сложностями существующих многоуровневых систем API, таким образом, являются:
сложность портирования программного кода с одной системы API на другую (например, при смене ОС);
потеря функциональности при переходе с более низкого уровня на более высокий. Грубо говоря, каждый «слой» API создаётся для облегчения выполнения некоторого стандартного набора операций. Но при этом реально затрудняется, либо становится принципиально невозможным выполнение некоторых других операций, которые предоставляет более низкий уровень API.