Передача данных по сети. Стек протоколов TCP/IP.¶
Обмен информацией между компьютерами (по проводному соединению или нет) происходит путем передачи пакетов (фрагментов) данных через сеть. Такая передача должна проходить по определённым правилам или стандартам, которые и называют протоколом передачи данных.
Протокол передачи данных — это набор соглашений интерфейса логического уровня, которые определяют обмен данными между различными программами.
Для передачи данных в сети Интернет используется стек протоколов TCP/IP. В протоколе TCP/IP строго описаны правила передачи информации от отправителя к получателю и обратно. Передача сообщений проходит несколько уровней, каждый из которых работает независимо от предыдущего, используя т.н. инкапсуляцию.
Формат данных, их шифрование
HTTP (веб-страницы), SMTP (почта), FTP (файлы)
1 уровень — Сетевых интерфейсов
Физическая передача данных
Общий ход передачи информации выглядит следующим образом:
- Данные от приложения отправляются протоколу транспортного уровня.
- Получив данные от приложения, протокол разделяет всю информацию на небольшие блоки (пакеты). К каждому пакету добавляется адрес назначения, а затем пакет передается на следующий уровень — уровень протоколов Интернет (сетевой уровень).
- На сетевом уровне пакет помещается в дейтаграмму протокола Интернет (IP), к которой добавляется заголовок и концевик. Протокол сетевого уровня определяет адрес следующего пункта назначения IP-дейтаграммы и отправляет его на уровень сетевого интерфейса.
- Уровень сетевого интерфейса принимает IP-дейтаграмму и передает их в виде кадров с помощью аппаратного обеспечения (например, сетевой карты).
Пакеты доставляются на компьютер получателя, после чего проходят все уровни протоколов в обратном порядке. На каждом уровне удаляются соответствующие этому уровню заголовки, после чего данные передаются на уровень приложения.
Практика¶
1. Напишите функции для передачи данных с помощью модели TCP/IP от клиента сети. Каждая функция должна имитировать работу одного из уровней передачи данных. Используйте заготовку кода ниже:
''' 4 уровень, функция application() - отвечает за формат данных, их шифрование input функции - данные, которые хотим отправить по сети, протокол данных ('SMTP','HTTP','FTP') output: данные + информация про формат данных и шифрование ''' def application (data, protocol): . ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку input: результат работы функции application(), протокол транспортировки данных ('TCP', 'UDP') output: данные + информация про транспортировку''' def transport(data, protocol): . ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные input: результат работы функции transport() output: данные + информация про адресата и маршрут доставки''' def internet(data): . '''1 уровень, функция network_interface - отвечает за соединение с сетью input: результат работы функции internet(), информация о соединении output: кортеж из 2 значений: 1. данные, преобразованные в бинарный формат 2. информация о типе соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection")''' def network_interface (data, connection): . data = '01101' print (data) data_app = application(data,'SMTP') print ('application level - ', data_app) data_transport = transport (data_app,'TCP') print ('transport level - ', data_transport) data_ip = internet (data_transport) print ('internet level - ', data_ip) data_from_network = network_interface (data_ip,'Wi-Fi') print ('network_interface level - ', data_from_network)
2. Напишите функции для получения данных из сети клиентом с помощью модели TCP/IP. Каждая функция должна имитировать работу одного из уровней передачи данных. Используйте заготовку кода ниже, учтите потери данных:
'''1 уровень, функция network_interface - отвечает за соединение с сетью передаём в функцию 2 аргумента: 1 аргумент, data - это данные в виде бинарного числа 2 аргумент, connection - это тип соединения (1 - 'Ethernet', 2 -'Wi-Fi', другие числа - "No connection") возвращаем: - если удалось установить соединение - то кортеж из 2 значений: данные в виде строки из нулей и единиц и тип соединения - если не удалось установить соединение, то строку "No connection"''' def network_interface(data, connection): . ''' 2 уровень, функция internet() - отвечает за маршрутизацию в сети. Она ищет кому и как доставить данные передаём в функцию результат работы функции network_interface() возвращаем данные в виде строки, если данные переданы в кортеже и адресованы нам, иначе - передаём None''' def internet(data): . ''' 3 уровень, функция transport() - отвечает за способ передачи данных и их транспортировку передаём в функцию результат работы функции internet() возвращаем: - если c предыдущего уровня получены данные, то формируем кортеж из 2 значений: данные, протокол передачи - None - если данные не получены''' def transport(data): . ''' 4 уровень, функция application() - отвечает за формат данных, их расшифровку передаём в функцию результат работы функции transport() возвращаем: ''' def application (data): . data = 0b110110111 print (bin(data)) data_from_network = network_interface (data,1) print ('network_interface level - ', data_from_network) data_ip = internet (data_from_network) print ('internet level - ', data_ip) data_transport = transport (data_ip) print ('transport level - ', data_transport) data_app = application(data_transport) print ('application level - ', data_app)
© Copyright Revision d00c0df4 .
13.3. Протоколы передачи данных
Протокол — это набор соглашений, который определяет обмен данными между различными программами. Протоколы задают способы передачи сообщений и обработки ошибок в сети, а также позволяют разрабатывать стандарты, не привязанные к конкретной аппаратной платформе.
Сетевые протоколы предписывают правила работы компьютерам, которые подключены к сети. Они строятся по многоуровневому принципу. Протокол некоторого уровня определяет одно из технических правил связи. В настоящее время для сетевых протоколов используется модель OSI.
Модель OSI– это семиуровневая логическая модель работы сети. Модель OSI реализуется группой протоколов и правил связи, организованных в несколько уровней.
На физическом уровне определяются физические (механические, электрические, оптические) характеристики линий связи.
На канальном уровне определяются правила использования физического уровня узлами сети.
Сетевой уровень отвечает за адресацию и доставку сообщений.
Транспортный уровень контролирует очередность прохождения компонент сообщения.
Задача сеансного уровня— координация связи между двумя прикладными программами, работающими на разных рабочих станциях.
Уровень представления служит для преобразования данных из внутреннего формата компьютера в формат передачи. Прикладной уровень является пограничным между прикладной программой и другими уровнями.
Прикладной уровень обеспечивает удобный интерфейс связи сетевых программ пользователя.
Протокол TCP/IP — это два протокола нижнего уровня, являющиеся основой связи в Интернет. Протокол TCP (Transmission Control Protocol) разбивает передаваемую информацию на порции и нумерует все порции. С помощью протокола IP (Internet Protocol) все части передаются получателю. Далее с помощью протокола TCP проверяется, все ли части получены. При получении всех порций TCP располагает их в нужном порядке и собирает в единое целое.
Рассмотрим наиболее известные протоколы, используемые в сети Интернет.
HTTP (Hyper Text Transfer Protocol) – это протокол передачи гипертекста. Протокол HTTP используется при пересылке Web-страниц с одного компьютера на другой.
FTP (File Transfer Protocol)- это протокол передачи файлов со специального файлового сервера на компьютер пользователя. FTP дает возможность абоненту обмениваться двоичными и текстовыми файлами с любым компьютером сети. Установив связь с удаленным компьютером, пользователь может скопировать файл с удаленного компьютера на свой или скопировать файл со своего компьютера на удаленный.
POP (Post Office Protocol) — это стандартный протокол почтового соединения. Серверы POP обрабатывают входящую почту, а протокол POP предназначен для обработки запросов на получение почты от клиентских почтовых программ.
Стандарт SMTP (Simple Mail Transfer Protocol) задает набор правил для передачи почты. Сервер SMTP возвращает либо подтверждение о приеме, либо сообщение об ошибке, либо запрашивает дополнительную информацию.
UUCP (Unix to Unix Copy Protocol) — это ныне устаревший, но все еще применяемый протокол передачи данных, в том числе для электронной почты. Этот протокол предполагает использование пакетного способа передачи информации, при котором сначала устанавливается соединение клиент- сервер и передается пакет данных, а затем автономно происходит его обработка, просмотр или подготовка писем.
TELNET – это протокол удаленного доступа. TELNET дает возможность абоненту работать на любой ЭВМ сети Интернет, как на своей собственной, то есть запускать программы, менять режим работы и т.д. На практике возможности лимитируются тем уровнем доступа, который задан администратором удаленной машины.
WWW (World Wide Web — всемирная паутина) – это служба, предоставляющая доступ к различным ресурсам Интернет – документам, графике, аудио и видеозаписям, использующая протокол HTTP и язык HTML.
Технология WWW была разработана в 1989 г. в Женеве, в Лаборатории физики элементарных частиц Европейского центра ядерных исследований (CERN).
HTTP – это протокол передачи гипертекстовых документов. HTML (Hypertext Markup Language) – это язык разметки гипертекста.Гипертекст – это формат документа, который кроме текста, может содержать ссылки на другие гипертекстовые документы, картинки, музыку и файлы. Гиперссылки— это ссылки, позволяющие переходить от одного Web-ресурса к другому щелчком мыши. При просмотре Web-страницы в браузере ссылки выделяются визуально.
HTML – это формат гипертекстовых документов, использующихся в WWW для предоставления информации. Формат этот не описывает то, как документ должен выглядеть, а его структуру и связи. Внешний вид документа на экране пользователя определяется программой просмотра WWW — браузером. Если работать за графическим или текстовым терминалом, то в каждом случае документ будет выглядеть по-разному, но структура его останется неизменной, поскольку она задана форматом HTML. Имена файлов в формате HTML обычно имеют расширение htm, html, dhtml, shtml.
HTML – это язык тегов. Теги – это команды языка html. От остального текста они отделяются треугольными скобками. Например,
,
. Теги ставятся парами для определения начала и окончания области кода HTML, на которую они действуют. Например,— открывающий тег,
— закрывающий тег. Теги определяют, какие параметры имеет текст в области их действия, размер, начертание шрифта, выравнивание, цвет, расположение объектов в документе и т.д..Web-мастера — это пользователи сети, создающие web-странички и сайты. Для создания html-документов web-мастера используют визуальные редакторы (Microsoft Front Page) или простые текстовые редакторы (Блокнот Windows). Создание страниц с помощью визуальных редакторов удобнее, но редактор создает не такой оптимальный html-код, как опытный web-мастер. Кроме того, встраивать многие элементы html-кода возможно, только непосредственно редактируя код странички.
WWW работает по принципу клиент-серверы: существует множество серверов, которые по запросу клиента возвращают ему гипертекстовый документ. Чтобы использовать WWW, пользователь должен иметь специальное программное обеспечение, которое, как правило, распространяется по сети бесплатно или поставляется в комплекте с большинством других программ и услуг Интернет. Когда в браузере загружается Web-страница, то он выполняет команды, записанные на языке HTML, и выводит страничку на экран. Программные средства WWW являются универсальными для различных сервисов Интернет, а сама информационная система WWW играет интегрирующую роль.