B2B99PPC Praktické programování v C/C++ Stanislav Vítek

Podobné dokumenty
HTTP protokol. Zpracoval : Petr Novotný

HTTP protokol. HTTP protokol - úvod. Zpracoval : Petr Novotný novotny0@students.zcu.cz

Hypertext Transfer Protocol (HTTP/1.1 RFC 2616) Počítačové sítě Pavel Šinták

Identifikátor materiálu: ICT-3-03

Webové služby. Martin Sochor

RESTful API TAMZ 1. Cvičení 11

Webové služby a XML. Obsah přednášky. Co jsou to webové služby. Co jsou to webové služby. Webové služby a XML

WWW technologie. HTTP protokol

Relační vrstva SMB-Síťový komunikační protokol aplikační vrstvy, který slouží ke sdílenému přístupu k souborům, tiskárnám, sériovým portům.

Sít ová komunikace v C++

Úvod do Web Services

Ing. Přemysl Brada, MSc., Ph.D. Ing. Martin Dostal. Katedra informatiky a výpočetní techniky, FAV, ZČU v Plzni

Komunikační protokoly počítačů a počítačových sítí

Referenční rozhraní. Jiří Kosek. Ministerstvo informatiky ČR. ISSS 25. března 2003

Úvod Úrovňová architektura sítě Prvky síťové architektury Historie Příklady

Ing. Michal Martin. MQTT na zařízeních Weintek

Michal Krátký, Miroslav Beneš

1. Webové služby. K čemu slouží? 2. RPC Web Service. 3. SOA Web Service. 4. RESTful Web services

Tvorba informačních systémů

Schéma e-pošty. UA (User Agent) rozhraní pro uživatele MTA (Message Transfer Agent) zajišťuje dopravu dopisů. disk. odesilatel. fronta dopisů SMTP

7. Aplikační vrstva. Aplikační vrstva. Počítačové sítě I. 1 (5) KST/IPS1. Studijní cíl. Představíme si funkci aplikační vrstvy a jednotlivé protokoly.

Protokol HTTP 4IZ228 tvorba webových stránek a aplikací

Úvod Jednoduchá komunikace Sockety Konec. Programování v C# Síťová komunikace. Petr Vaněček 1 / 33

Analýza aplikačních protokolů

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Internet Information Services (IIS) 6.0

BI-AWD. Administrace Webového a Databázového serveru Virtualizace HTTP serveru

Počítačová síť. je skupina počítačů (uzlů), popřípadě periferií, které jsou vzájemně propojeny tak, aby mohly mezi sebou komunikovat.

Pokročilé Webové služby a Caché security. Š. Havlíček

Hodinový rozpis kurzu Správce počítačové sítě (100 hod.)

Počítačové sítě. Lekce 4: Síťová architektura TCP/IP

Počítačové sítě Systém pro přenos souborů protokol FTP

Inovace bakalářského studijního oboru Aplikovaná chemie

Internet protokol, IP adresy, návaznost IP na nižší vrstvy

File Transfer Protocol (FTP)

Počítačové sítě. Počítačová síť. VYT Počítačové sítě

Ing. Jitka Dařbujanová. , SSL, News, elektronické konference

Požadavky pro výběrová řízení TerraBus ESB/G2x

MODELY POČÍTAČOVÝCH SÍTÍ

Inovace bakalářského studijního oboru Aplikovaná chemie

1 Protokol TCP/IP (Transmission Control Protocol/Internet Protocol) a OSI model

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

JAK ČÍST TUTO PREZENTACI

3.17 Využívané síťové protokoly

Počítačové sítě Transportní vrstva. Transportní vrstva

Úvod Virtuální kanál TCP Datagramová služba UDP URL TCP, UDP, URL. Fakulta elektrotechnická

6. Transportní vrstva

Maturitní okruhy pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

SIMATIC S IT. Micro Automation. Promoters Meeting October Představení CP IT SPIDER CONTROL TELESERVIS. TESTOVACÍ server.

íta ové sít TCP/IP Protocol Family de facto Request for Comments

Architektura TCP/IP je v současnosti

Příklad aplikace Klient/Server s Boss/Worker modelem (informativní)

Užitečné odkazy:

SSL Secure Sockets Layer

X33EJA Web Services. Martin Ptáček, KOMIX s.r.o.

metodický list č. 1 Internet protokol, návaznost na nižší vrstvy, směrování

Analýza síťového provozu. Ing. Dominik Breitenbacher Mgr. Radim Janča

TFTP Trivial File Transfer Protocol

MQTT

Protokoly: IP, ARP, RARP, ICMP, IGMP, OSPF

Maturitní témata pro 1.KŠPA Kladno, s.r.o. Počítačové sítě a komunikace

API pro volání služby kurzovního lístku KB

ERP-001, verze 2_10, platnost od

Počítačové sítě II. 18. World Wide Web, HTTP Miroslav Spousta,

Registrační číslo projektu: CZ.1.07/1.5.00/ Elektronická podpora zkvalitnění výuky CZ.1.07 Vzděláním pro konkurenceschopnost

Web Services na SOAP

JSON API pro zjišťování cen MtG karet

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE

Artlingua Translation API

Formuláře. Aby nám mohli uživatelé něco hezného napsat třeba co si o nás myslí!

DUM 16 téma: Protokoly vyšších řádů

POČÍTAČOVÉ SÍTĚ A KOMUNIKACE OBOR: INFORMAČNÍ TECHNOLOGIE

Principy fungování WWW serverů a browserů. Internetové publikování

Použití databází na Webu

Model ISO - OSI. 5 až 7 - uživatelská část, 1 až 3 - síťová část

Počítačové sítě II. 14. Transportní vrstva: TCP a UDP. Miroslav Spousta, 2005

WCF. IW5 - Programování v.net a C# WCF

Softwarové komponenty a Internet

4. Síťová vrstva. Síťová vrstva. Počítačové sítě I. 1 (6) KST/IPS1. Studijní cíl. Představíme si funkci síťové vrstvy a jednotlivé protokoly.

PODMÍNKY POSKYTOVÁNÍ PŘÍSTUPU K PORTÁLU NAMĚŘENÝCH DAT POMOCÍ WEBOVÝCH SLUŽEB SPOLEČNOSTI ČEZ DISTRIBUCE, A. S.

A7B36PSI Úvod 1/29. Jan Kubr. Honza Kubr - 1_uvod

EMBARCADERO DATASNAP. OBSAH Úvod... 2 DataSnap a DBExpress... 2 Serverová část... 2 VCL Klient... 6 Nasazení... 7

Platební systém XPAY [

Obsah PODĚKOVÁNÍ...11

VZOROVÝ STIPENDIJNÍ TEST Z INFORMAČNÍCH TECHNOLOGIÍ

Počítačové sítě II 17. WWW, HTTP. Miroslav Spousta, 2005

Bezpečnost vzdáleného přístupu. Jan Kubr

TÉMATICKÝ OKRUH Počítače, sítě a operační systémy

Komunikace s automaty MICROPEL. správa systému lokální a vzdálený přístup do systému vizualizace, umístění souborů vizualizace

Zajištění kvality služby (QoS) v operačním systému Windows

Radek Krej í. NETCONF a YANG NETCONF. 29. listopadu 2014 Praha, IT 14.2

Připravil: Ing. Jiří Lýsek, Ph.D. Verze: Webové aplikace

Vhodnost nasazení jednotlivých webových architektur, sdílení dat, perzistence, webové služby a REST, asynchronnost, messaging

Základy počítačových sítí Model počítačové sítě, protokoly

Ing. Jitka Dařbujanová. TCP/IP, telnet, SSH, FTP

Java Message Service (JMS) Martin Ptáček, KOMIX s.r.o.

Západočeská univerzita v Plzni Fakulta aplikovaných věd Katedra informatiky a výpočetní techniky UPS. FTP Klient. A05463 fboranek@atlas.

Počítačové sítě. Lekce 3: Referenční model ISO/OSI

X36PKO Úvod Jan Kubr - X36PKO 1 2/2006

Přístup k transportní vrstvě z vrstvy aplikační rozhraní služeb služby pro systémové aplikace, služby pro uživatelské aplikace DNS

Transkript:

10. Qt síťové služby B2B99PPC Praktické programování v C/C++ Stanislav Vítek Katedra radioelektroniky Fakulta elektrotechnická České vysoké učení v Praze 1/31

Počítačové sítě Propojují počítače za účelem výměny informací, používá se specifický protokol Jednotlivé vrstvy komunikace popisuje referenční ISO/OSI model Třetí (síťová) vrstva Internet protocol IP Adresování zařízení v síti IPv4 32b adresa, 4 dekadická čísla IPv6 128b adresa, 8 hexadecimálních čísel Čtvrtá vrstva Transmission control protocol TCP Kontrola doručení, zajištěno správné pořadí dat Nevhodné pro broadcasting Čtvrtá vrstva User datagram protocol UDP Bez kontroly doručení, na rozdíl od TCP neumožňuje opětovné poslání dat Vhodné pro broadcast, multicast, anycast a unicast 2/31

Komunikační model Request-Response Request-Response je komunikační model, ve kterém klient posílá požadavky server na tyto požadavky odpovídá. Když server obdrží požadavek, rozhodne se, jak odpoví, načte data, načte zdroj reprezentace (např. šablona odpovědi), připraví odpověď a poté odešle odpověď klientovi. 3/31

Komunikační model Publish-Subscribe Publish-Subscribe je model, který zahrnuje vydavatele (publish), zprostředkovatele (broker) a spotřebitele (consumer) informace. Zdrojem dat je vydavatel, který posílá data v rámci téma (topic), které spravuje zprostředkovatel. Vydavatel neví nic o spotřebiteli. Spotřebitel se příhlašuje k odběru (subscribe) téma Zprostředkoval přeposílá data od vydavatele všem přihlášeným spotřebitelům 4/31

Komunikační model Push-Pull Push-Pull je komunikační model, ve kterém producenti dat odesílají data do front a konzumenti je z front odebírají. Producenti nemusí vědět o konzumentech. Fronty pomáhají oddělit zasílání zpráv mezi producenty a spotřebiteli. Fronty také fungují jako vyrovnávací paměť, která pomáhá v situacích, kdy dochází k výpadkům z důvodu nesouladu mezi rychlostí, kterou producenti odesílají data, a rychlostí, kterou spotřebitelé data stahují. 5/31

Komunikační model Exclusive Pair Exclusive Pair je obousměrný, plně duplexní komunikační model, který používá trvalé spojení mezi klientem a serverem. Jakmile je spojení nastaveno zůstane otevřené, dokud klient odešle požadavek na ukončení. Klient a server mohou posílat si navzájem posílat zprávy po navázání spojení. 6/31

Programování síťových aplikací Přístup k síti (networking) je služba poskytovaná OS API (WIN32, POSIX) Kód síťových aplikací může značně záviset na platformě Privilegované porty Komunikace není deterministická nelze říct kdy a jak bude zpráva doručena Řada událostí se děje současně nutné paralelní zpracování Síťové aplikace v Qt Multiplatformní kód a nástroje, modul network (QT += network) Kĺıčové třídy: QTcpSocket zpracuje jedno TCP spojení QTcpServer vytvoří socket a zpracuje příchozí TCP spojení QUdpSocket zpracuje UDP spojení (server není třeba) QSslSocket zpracuje šifrované spojení 7/31

Hierarchie tříd QIODevice QNetworkReply QAbstractSocket QLocalSocket QFileDevice QBuffer QUdpSocket QTcpSocket QSslSocket Další třídy: QProcess,... 8/31

Základ komunikace QAbstractSocket metody 1 bool bind( 2 const QHostAddress &address, quint16 port = 0, 3 BindMode mode = DefaultForPlatform); 4 // mode: ShareAddress ReuseAddressHint DontShareAddress 5 virtual void connecttohost( 6 const QHostAddress &address, quint16 port, 7 OpenMode mode = ReadWrite, 8 NetworkLayerProtocol protocol = AnyIPProtocol); 9 // mode: NotOpen ReadOnly WriteOnly Append Truncate Text 10 // protocol: IPv4Protocol IPv6Protocol 11 virtual void disconnectfromhost(); 12 // 13 virtual bool waitforreadyread(int ms = 30000); 14 // 15 virtual bool waitforbyteswritten(int ms = 30000); 9/31

Základ komunikace QAbstractSocket signály 1 void connected(); 2 // 3 void disconnected(); 4 // 5 void error(qabstractsocket::socketerror nsocketerror); 6 // 7 void hostfound(); 8 // 9 void statechanged(qabstractsocket::socketstate nsocketstate); 10/31

UDP komunikace QUdpSocket čtení a zápis 1 bool haspendingdatagrams() const; 2 // 3 qint64 pendingdatagramsize() const; 4 // 5 qint64 readdatagram( 6 char *data, qint64 max_size, 7 QHostAddress *address = Q_NULLPTR, quint16 *port = Q_NULLPTR); 8 // 9 qint64 writedatagram( 10 const char *data, qint64 size, 11 const QHostAddress &address, quint16 port); 12 // 13 qint64 writedatagram( 14 const QByteArray &datagram, 15 const QHostAddress &host, quint16 port); 11/31

UDP komunikace sender 1 #include <QCoreApplication> 2 #include <QUdpSocket> 3 4 int main(int argc, char ** argv) 5 { 6 QCoreApplication a(argc, argv); 8 QHostAddress address("127.0.0.1"); // QHostAddress::LocalHost 9 QByteArray datagram = "Hello from Sender"; 10 QUdpSocket socket; 11 socket.writedatagram( 12 datagram.data(), datagram.size(), address, 1234); 14 return a.exec(); 15 } lec12/01-udp-sender 12/31

UDP komunikace receiver 1 QUdpSocket socket; 2 socket.bind(1234, QUdpSocket::ShareAddress); 3 // 4 while (socket.haspendingdatagrams()) 5 { 6 QByteArray datagram; 7 datagram.resize(socket.pendingdatagramsize()); 8 QHostAddress address; 9 quint16 port; 10 socket.readdatagram( 11 datagram.data(), datagram.size(), &address, &port); 12 qdebug() << datagram.data(); 13 } lec12/01-udp-receiver 13/31

UDP komunikace QUdpSocket signály readyread na socket dorazila data a lze je zpracovat disconnected host se odpojil od socketu 1 QObject::connect(&socket, QUdpSocket::readyRead, [&socket](){ 2 QByteArray datagram; 3 datagram.resize(socket.pendingdatagramsize()); 4 QHostAddress address; 5 quint16 port; 6 socket.readdatagram( 7 datagram.data(), datagram.size(), &address, &port); 8 qdebug() << datagram.data(); 9 }); 14/31

TCP komunikace QTcpServer Metody 1 bool listen( 2 const QHostAddress &address = QHostAddress::Any, 3 quint16 port = 0); 4 // 5 virtual QTcpSocket *nextpendingconnection(); 6 // 7 bool waitfornewconnection(int ms = 0, bool *timeout = Q_NULLPTR); 8 // 9 void pauseaccepting(); 10 // 11 void resumeaccepting(); Signál 1 void newconnection(); 15/31

HTTP protokol zkratka z Hyper-Text Transfer Protocol možnost přenášet jakákoliv data (soubor, obrázek, výsledek dotazu) obvykle provozován nad TCP, port 80 (alternativně 8080) existují 4 verze HTTP/0.9, HTTP/1.0, HTTP/1.1, HTTP/2.0 Transakce GET /questions HTTP/1.1 HTTP/1.1 302 Found Date: Tue, 26 Apr 2022 06:50:44 GMT Server: Apache/2.4.25 (Debian) Content-Length: 0 Connection: close Content-Type: text/html; charset=utf-8 16/31

HTTP metody Protokol HTTP definuje několik metod, pomocí kterých lze na straně serveru požadovat různé typy služeb OPTIONS dovoluje klientovi získat informace o možnostech souvisejících se získáním daného prostředku, a schopnostech serveru GET získá veškeré informace o zdroji (obvykle stažení HTML obsahu) HEAD je obdobou GET, ale stahuje se jen hlavička POST umožňuje předat data z formuláře PUT má obdobnou funkci jako POST DELETE umožňuje smazat (skrýt) zdroj, pokud to server podporuje TRACE možňuje klientovi vidět požadavek přesně tak, jak dorazil na server CONNECT se používá pro připojení s proxy servery, které se umí dynamicky přepnout na funkci tunelování (např. SSL tunelování) 17/31

Cookies Slouží k uchování určitých dat na straně klienta i po zániku spojení Klient pošle pomocí metody POST serveru nějaká data Server je zpracuje, a pošle klientu odezvu obsahující v hlavičce Set-Cookie Součástí každého dalšího požadavku souvisejícího s daným prostředkem je hlavička s Cookie s údaji zaslanými serverem Po ukončení spojení a opětovném navázání obsahuje Cookie data z předchozího spojení, což umožňuje serveru navázat na minulou relaci 18/31

Webové služby Metoda komunikace dvou elektronických zařízení pomocí webu a vhodného protokolu Zpravidla postavena na architektuře server/klient (tzv. WebService) Historie 1998 WDDX - Web Distributed Data Exchange, založeno na XML XML-RPC 1999 SOAP - Simple Object Access Protocol 2000 REST - Representational state transfer 2005(1.0), 2009 (2.0) JSON-RPC 19/31

SOAP HTTP & XML WSDL Web Services Description Language popis funkcí, které nabízí webová služba založeno na XML Výhody popíšu webovou službu pomocí WSDL generátor kódu vygeneruje potřebné C/C++ rozhraní, které pak implementuji Nevýhody velmi ukecaný protokol fakt hodně pomalé, obtížný (spíše nemožný) přenos binárních dat 20/31

JSON-RPC JavaScript Object Notation Object: {} Array: [] Primitivní datové typy: number, string, bool (true, false), null Jednoduché parsování, human readable 1 {"menu": { 2 "id": "file", 3 "value": "File", 4 "popup": { 5 "menuitem": [ 6 {"value": "New", "onclick": "CreateNewDoc()"}, 7 {"value": "Open", "onclick": "OpenDoc()"}, 8 {"value": "Close", "onclick": "CloseDoc()"} 9 ] 10 } 11 }} 21/31

REST REpresentional State Transfer Umožňuje přistupovat k datům na určitém místě (zdroj) pomocí standardních metod HTTP (CRUD): Create vytvoření dat POST Retrieve získání dat GET Update změna dat PUT Delete smazání dat DELETE Typ dat v podstatě libovolný binární data XML, JSON, HTML 22/31

QNetworkAccessManager Metody 1 void connecttohost(const QString &hostname, quint16 port = 80); 2 // 3 QNetworkReply *head(const QNetworkRequest &request); 4 // 5 QNetworkReply *get(const QNetworkRequest &request); 6 // 7 QNetworkReply *put( 8 const QNetworkRequest &request, const QByteArray &data); 9 // 10 QNetworkReply *post( 11 const QNetworkRequest &request, const QByteArray &data); Signál 1 void finished(qnetworkreply *preply); 23/31

QNetworkRequest/QNetworkReply QNetworkRequest 1 QVariant header(qnetworkrequest::knownheaders header) const; 2 // 3 void setheader(knownheaders header, const QVariant &value); QNetworkReply 1 QVariant header(qnetworkrequest::knownheaders header) const; QNetworkRequest::KnownHeaders UserAgentHeader ServerHeader LastModifiedHeader CookieHeader SetCookieHeader LocationHeader ContentTypeHeader ContentDispositionHeader ContentLengthHeader 24/31

MQTT (Message Queue Telemetry Transport Protocol) Protokol aplikační vrstvy ve skutečnosti úroveň ISO/OSI 5-7: aplikační, prezentační a relační vrstva Je jednoduchý a lehký Navržen pro zařízení s omezenou šířkou pásma, nespolehlivou konektivitou a sítě s vysokou latencí Používá model Public-subscribe Zajišťuje spolehlivost Poskytuje některé mechanismy pro zajištění doručení Je určen pro sítě TCP/IP (používá TCP) Pro sítě bez TCP existuje implementace MQTT-SN 25/31

Architektura MQTT Vydavatelé a odběratelé vystupují vůči zprostředkovateli jako klienti. Zprostředkovatel je mimo firewally Zprostředkovatel je centrálním bodem a je kritickou součástí sítě Vydavatelé, zprostředkovatel a odběratelé bývají oddělená zařízení a/nebo software Vydavatel může současně působit jako odběratel. 26/31

MQTT broker Broker je vlastně server pro obě části (vydavatele a odběratele). Zajišťuje QoS Může uchovávat zprávy (data) Vydavatel rozhoduje o tom, zda si broker zprávu ponechá. V tomto případě každý odběratel při odběru automaticky obdrží nejnovější hodnotu, takže Broker udržuje jakýsi stav. Předává obsah zájemcům z řad odběratelů (obsah pochází od vydavatelů) 27/31

MQTT data MQTT je textový protokol a je datově agnostický. Zprávy (obsah) jsou uspořádány do témat ve formě stromové struktury (jako je adresářová cesta) Oddělovačem je / (lomítko) Odběratel se může přihlásit k odběru konkrétního tématu nebo může použít zástupný vzor pro odběr různých témat: # znamená celou větev + znamená jednoúrovňové Příklad Vydavatel vydává např: CVUT/FEL/209/Sensor/Temperature Odběratel se přihlásí k odběru: CVUT/FEL/+/Senzor/# Odběratel pak bude upozorněn vždy, když zařízení odešle informaci o jakémkoli měření (tj. teploty, ale také vlhkosti a znečištění vzduchu) provedeném /Senzor/ někde v budově CVUT/FEL (může to být místnost, ale také třeba chodba) 28/31

MQTT QoS Neuznaná služba Doručeno každému odběrateli maximálně jednou Uznávaná služba Zajišťuje doručení zprávy alespoň jednou. Broker očekává potvrzení, jinak zprávu znovu odešle Zajištěná služba Dvoustupňové doručení Zajišťuje, že zpráva je každému účastníkovi doručena přesně jednou 29/31

Vlastnosti MQTT Příznak čisté relace (volitelný) - trvanlivá připojení: Pokud je true, Broker odstraní všechny klientské odběry při odpojení klienta. Pokud je false, spojení zůstane nečinné a všechny zprávy se shromažďují (QoS v závislosti na typu připojení) a doručeny, jakmile je připojení obnoveno. Klient může brokerovi nařídit, aby ho nechal odeslat konkrétní téma (nebo témata), když se objeví neočekávané spojení. Zjištění selhání/havárie: vhodné např. pro kritické a bezpečnostní systémy Bezpečnost Slabá uživatelská jména a hesla zasílána v prostém textu Lze využít zabezpečený kanál (SSL/TLS) 30/31

MQTT vs HTTP MQTT HTTP Orientace data dokumenty Model komunikace publish / subscribe request / response Komplexita nízká vyšší Velikost zprávy velmi malá, 2B hlavička velká QoS tři úrovně všechny zprávy mají stejnou QoS Distribuce 1-0, 1-1, 1-N 1-1 31/31