Podcast
Questions and Answers
Koji od navedenih elemenata su ključni za komunikaciju udaljenih procesa?
Koji od navedenih elemenata su ključni za komunikaciju udaljenih procesa?
- Lokalni operativni sistem
- Direktna memorija računara
- Baza podataka operativnog sistema
- Mrežni protokoli i fizička infrastruktura (correct)
Šta predstavlja socket API u kontekstu mrežnog programiranja?
Šta predstavlja socket API u kontekstu mrežnog programiranja?
- Hardverski deo računara zadužen za mrežne operacije
- Sistem za upravljanje bazama podataka
- Mrežni aplikativni interfejs koji omogućava komunikaciju između aplikacija (correct)
- Fizički interfejs za povezivanje računara na mrežu
Koja komanda operativnog sistema se koristi za prikaz liste svih soketa?
Koja komanda operativnog sistema se koristi za prikaz liste svih soketa?
- tasklist
- netstat (correct)
- soketview
- ipconfig
Koje godine su nastale utičnice (sockets) kao aplikativni programski interfejs?
Koje godine su nastale utičnice (sockets) kao aplikativni programski interfejs?
U kom operativnom sistemu su se utičnice (sockets) koristile pod nazivom Berkeley sockets?
U kom operativnom sistemu su se utičnice (sockets) koristile pod nazivom Berkeley sockets?
Koji je najčešći tip socket
aplikacija?
Koji je najčešći tip socket
aplikacija?
Za šta se koristi modul socket
u programskom jeziku Python?
Za šta se koristi modul socket
u programskom jeziku Python?
Koja metoda modula socket
se koristi za kreiranje utičnice?
Koja metoda modula socket
se koristi za kreiranje utičnice?
Koja metoda modula socket
se koristi za povezivanje utičnice sa određenim portom?
Koja metoda modula socket
se koristi za povezivanje utičnice sa određenim portom?
Koja metoda modula socket
se koristi za prihvatanje konekcije sa klijentom?
Koja metoda modula socket
se koristi za prihvatanje konekcije sa klijentom?
U mrežnom programiranju, na šta se svodi pojam mrežnog programiranja (socket programming)?
U mrežnom programiranju, na šta se svodi pojam mrežnog programiranja (socket programming)?
Šta omogućava veb programiranje u kontekstu mrežnog programiranja?
Šta omogućava veb programiranje u kontekstu mrežnog programiranja?
Koji protokol se koristi za razmenu strukturiranih informacija u implementaciji veb servisa?
Koji protokol se koristi za razmenu strukturiranih informacija u implementaciji veb servisa?
Šta predstavlja arhitektura nekog sistema?
Šta predstavlja arhitektura nekog sistema?
Koja od navedenih arhitektura podrazumeva da se celokupna obrada izvršava na centralnom računaru?
Koja od navedenih arhitektura podrazumeva da se celokupna obrada izvršava na centralnom računaru?
Koja arhitektura je karakteristična po tome što svaki član ima najveći nivo autonomije?
Koja arhitektura je karakteristična po tome što svaki član ima najveći nivo autonomije?
Koji je glavni nedostatak arhitekture ravnopravnih članova?
Koji je glavni nedostatak arhitekture ravnopravnih članova?
Koji od navedenih pristupa se koristi za komunikaciju na aplikativnom nivou u servisno orijentisanoj arhitekturi (SOA)?
Koji od navedenih pristupa se koristi za komunikaciju na aplikativnom nivou u servisno orijentisanoj arhitekturi (SOA)?
Šta karakteriše arhitekturu bez servera (serverless)?
Šta karakteriše arhitekturu bez servera (serverless)?
Šta omogućava usluga Function-as-a-Service (FaaS) u kontekstu arhitekture bez servera (serverless)?
Šta omogućava usluga Function-as-a-Service (FaaS) u kontekstu arhitekture bez servera (serverless)?
Šta podrazumeva realizacija aplikacija u klijent-server arhitekturi?
Šta podrazumeva realizacija aplikacija u klijent-server arhitekturi?
Koji je glavni princip klijent-server obrade podataka?
Koji je glavni princip klijent-server obrade podataka?
Kojom vrstom arhitekture korisnici pristupaju centralnoj bazi podataka putem aplikacije na svom računaru?
Kojom vrstom arhitekture korisnici pristupaju centralnoj bazi podataka putem aplikacije na svom računaru?
Šta čini treći serverski sloj u troslojnoj aplikaciji?
Šta čini treći serverski sloj u troslojnoj aplikaciji?
U klijent-server arhitekturi, kako se definišu pojmovi klijent i server?
U klijent-server arhitekturi, kako se definišu pojmovi klijent i server?
U kontekstu obrade višestrukih zahteva, na šta se serveri dele u zavisnosti od načina raspoređivanja obrade?
U kontekstu obrade višestrukih zahteva, na šta se serveri dele u zavisnosti od načina raspoređivanja obrade?
Koja je glavna karakteristika iterativne obrade zahteva na serveru?
Koja je glavna karakteristika iterativne obrade zahteva na serveru?
Koja je prednost iterativne obrade zahteva u odnosu na konkurentnu?
Koja je prednost iterativne obrade zahteva u odnosu na konkurentnu?
Koja je glavna prednost konkurentne obrade zahteva?
Koja je glavna prednost konkurentne obrade zahteva?
Zašto je softver kompleksniji kod konkurentne obrade zahteva?
Zašto je softver kompleksniji kod konkurentne obrade zahteva?
Koji protokol koristi tip soketa SOCK_STREAM u modulu socket
jezika Python?
Koji protokol koristi tip soketa SOCK_STREAM u modulu socket
jezika Python?
Koja karakteristika izdvaja TCP (Transmission Control Protocol) od UDP (User Datagram Protocol) u kontekstu prenosa podataka?
Koja karakteristika izdvaja TCP (Transmission Control Protocol) od UDP (User Datagram Protocol) u kontekstu prenosa podataka?
Kada bi se koristio tip soketa SOCK_DGRAM umesto SOCK_STREAM u mrežnom programiranju?
Kada bi se koristio tip soketa SOCK_DGRAM umesto SOCK_STREAM u mrežnom programiranju?
Koji su osnovni koraci u komunikaciji klijenta i servera putem soketa korišćenjem TCP protokola?
Koji su osnovni koraci u komunikaciji klijenta i servera putem soketa korišćenjem TCP protokola?
Šta je karakteristično za trostepeno usaglašavanje (three-way handshake) u TCP protokolu?
Šta je karakteristično za trostepeno usaglašavanje (three-way handshake) u TCP protokolu?
Koji su ključni elementi implementacije klijent-server aplikacije u jeziku Python koristeći sokete?
Koji su ključni elementi implementacije klijent-server aplikacije u jeziku Python koristeći sokete?
Koje su osnovne razlike između centralizovane i klijent-server arhitekture u obradi podataka?
Koje su osnovne razlike između centralizovane i klijent-server arhitekture u obradi podataka?
Šta je karakteristično za proces odlučivanja o izboru između iterativne i konkurentne obrade na serverskoj strani?
Šta je karakteristično za proces odlučivanja o izboru između iterativne i konkurentne obrade na serverskoj strani?
Flashcards
Komunikacija udaljenih procesa
Komunikacija udaljenih procesa
Komunikacija između procesa na udaljenim sistemima, zahteva mrežne protokole i infrastrukturu.
Mrežni aplikativni interfejs (socket API)
Mrežni aplikativni interfejs (socket API)
Aplikativni interfejs za komunikaciju putem Interneta, podržan od strane mnogih operativnih sistema.
Klijent-server aplikacije
Klijent-server aplikacije
Posebna vrsta aplikacija kod kojih jedna strana (klijent) šalje zahteve, a druga (server) odgovara.
Socket u Pythonu
Socket u Pythonu
Signup and view all the flashcards
Mrežno programiranje
Mrežno programiranje
Signup and view all the flashcards
Veb programiranje
Veb programiranje
Signup and view all the flashcards
Arhitektura sistema
Arhitektura sistema
Signup and view all the flashcards
Centralizovana arhitektura
Centralizovana arhitektura
Signup and view all the flashcards
Klijent-server arhitektura
Klijent-server arhitektura
Signup and view all the flashcards
Arhitektura ravnopravnih članova (peer-to-peer)
Arhitektura ravnopravnih članova (peer-to-peer)
Signup and view all the flashcards
Servisno orijentisana arhitektura (SOA)
Servisno orijentisana arhitektura (SOA)
Signup and view all the flashcards
Arhitektura bez servera (serverless)
Arhitektura bez servera (serverless)
Signup and view all the flashcards
Koncept klijenta i servera
Koncept klijenta i servera
Signup and view all the flashcards
Iterativna obrada zahteva
Iterativna obrada zahteva
Signup and view all the flashcards
Konkurentna obrada zahteva
Konkurentna obrada zahteva
Signup and view all the flashcards
Metod socket.socket()
Metod socket.socket()
Signup and view all the flashcards
Jednostavna klijent-server aplikacija
Jednostavna klijent-server aplikacija
Signup and view all the flashcards
Study Notes
Tema 03: Internet Mrežno Programiranje
- Mrežno programiranje se odnosi na korišćenje mrežnih protokola i aplikativnih interfejsa za komunikaciju između udaljenih procesa.
- Komunikacija između udaljenih procesa zahteva korišćenje mrežnih protokola i fizičke infrastrukture.
- Termin, „Mrežno programiranje (socket programming)“ se svodi na izbor odgovarajuće softverske arhitekture i razvoj protokola na sloju aplikacije, uz korišćenje usluga povezivanja operativnih sistema.
- Termin „Veb programiranje“ omogućava korišćenje već postojećih protokola na sloju aplikacije (HTTP, HTTPS, SOAP).
- SOAP je protokol za razmenu strukturiranih informacija, koji se koristi u implementaciji Veb servisa u računarskim mrežama.
Mrežni Aplikativni Interfejs (Socket API)
- Aplikacije koriste poseban aplikativni interfejs (API), poznat kao socket API, za međusobnu komunikaciju putem Interneta.
- Većina operativnih sistema kao što su Microsoft Windows, Apple OS-X, Android, UNIX i Linux podržava socket API.
- Kada aplikacija kreira soket (utičnicu), operativni sistem vraća celobrojni deskriptor, koji se koristi kao referenca na soket.
- Aplikativni interfejs se sastoji od većeg broja funkcija s malim brojem parametara, koje su namenjene klijentu (connect), serveru (accept, bind, listen, itd.) ili su zajedničke (close, recv, send, socket itd.).
netstat
je OS komanda koja daje listu svih soketa.
Nastanak Utičnica (Sockets)
- Utičnice (sockets) su aplikativni programski interfejs (API) nastao 1971. godine tokom razvoja mreže ARPANET.
- Korišćen je u operativnom sistemu BSD Unix (1983) pod imenom Berkeley sockets.
- Razvojem Interneta i Veba devedesetih, razvilo se i Internet programiranje, te su korisničke mrežne aplikacije počele koristiti utičnice.
- Osnovni protokoli koje koristi socket API nastavili su razvoj, kreirani su i novi protokoli, ali je API niskog nivoa ostao nepromenjen.
- Najčešći tip socket aplikacija su klijent-server aplikacije, gde jedna strana deluje kao server i čeka na konekcije od strane klijenata (npr. Veb serveri, aplikacije za ćaskanje, klijenti e-pošte).
Aplikativni Interfejs Mrežnog Programiranja u Pythonu
- Standardna biblioteka Pythona sadrži module za rad sa serverima i Internet protokolima visokog nivoa (HTTP, SMTP), kao i modul socket za mrežno programiranje niskog nivoa.
- Osnovni metodi modula socket su:
socket()
: kreiranje utičnice.bind()
: povezivanje utičnice i porta.listen()
: osluškivanje konekcije sa klijenta.accept()
: prihvatanje konekcije sa klijenta.connect()
: konekcija (preko novog porta, koji kreira kernel).connect_ex()
: konekcija (u slučaju greške vraća status umesto izuzetaka).send()
: slanje podataka.recv()
: prijem podataka.close()
: zatvaranje konekcije i oslobađanje porta.
Softverske Arhitekture
- Arhitektura sistema predstavlja osnovnu organizaciju sistema, uključujući komponente, relacije, okruženje i principe dizajna i razvoja.
- Softverske arhitekture definišu način organizovanja funkcija softvera za distribuiranu obradu podataka.
- Postoje različite softverske arhitekture:
- Centralizovana arhitektura (host based, mainframe).
- Klijent-server arhitektura (client-server).
- Arhitektura ravnopravnih članova (peer-to-peer).
- Servisno orijentisana arhitektura (service-oriented).
- Arhitektura bez servera (serverless), arhitektura mikroservisa (microservices).
Pregled Softverskih Arhitektura
- Ključne arhitekture uključuju:
- Centralizovanu (host based).
- Klijent-server (CS).
- Arhitekturu ravnopravnih članova (peer-to-peer).
- Servisno orijentisanu (SOA).
- Arhitekturu bez servera (serverless).
Centralizovana Arhitektura (Host Based)
- Centralni (mainframe) računari i na njih priključeni terminali.
- Celokupnu obradu izvršava centralni računar, a terminali su interfejs ka krajnjim korisnicima.
- Elementi ove arhitekture se ponovo javljaju kroz Veb aplikacije i računarstvo u oblaku (cloud computing).
Klijent-Server Arhitektura
- To je popularna softverska arhitektura.
- Predstavlja korak dalje od centralizovane arhitekture ka obradi podataka na klijentima, uz određenu centralizovanu obradu na serveru.
Klijent-Server Arhitektura Detaljnije
- Realizacija aplikacija podrazumeva postojanje uparenih softverskih komponenti: klijentske i serverske.
- Server se rasterećuje izmeštanjem određenih funkcija na klijente, ali zadržava mogućnost centralizovanja određenih funkcija za potrebe bezbednosti i stabilnosti.
Arhitektura Ravnopravnih Članova (Peer-to-Peer)
- Najviši nivo autonomije u distribuiranoj obradi.
- Nema hijerarhije članova; svi obavljaju lokalnu obradu podataka.
- Članovi se mogu obratiti drugim članovima za funkcije i resurse koji im nisu lokalno dostupni.
- Nedostatak je otežana administracija i kontrola članova.
Administracija i Upravljanje Članovima Mreže Ravnopravnih Učesnika
- Nedostatak ove arhitekture je adresiranje članova, jer svi članovi mreže moraju raspolagati adresama ostalih članova.
- Postoje varijante ove arhitekture:
- Decentralizovana: svi članovi direktno komuniciraju, bez centralnog registra.
- Centralizovana: postoji centralni registar članova, ali članovi mreže direktno razmenjuju podatke.
- Hibridna: koristi se u mrežama sa velikim brojem čvorova, gde više računara vodi evidenciju članova (tzv. "super čvorovi"), zavisno od udaljenosti pojedinih čvorova.
Servisno Orijentisana Arhitektura (SOA)
- SOA predstavlja savremeni pristup distribuiranom računarstvu.
- Aplikacije se sastavljaju (eng. assembly) od dobro definisanih i testiranih komponenti, poznatih kao Veb servisi.
- Za komunikaciju na aplikativnom nivou koriste se otvoreni standardi zasnovani na XML, poput protokola SOAP (Simple Object Access Protocol).
- SOA omogućava korišćenje softverskih funkcija na drugim računarima putem računarske mreže.
- Nezavisnost servisa olakšava razvoj i održavanje informacionih sistema, a osnovni principi su nezavisni od proizvođača, proizvoda i tehnologija.
Arhitektura Bez Servera (Serverless)
- Aplikacije se i dalje izvršavaju na serverima, ali upravljanje serverima vrši sistem nezavisnih provajdera infrastrukturnih servisa (npr. Amazon Web Services (AWS), Microsoft Azure i Google Cloud Platform).
- Arhitektura bez servera omogućava razvoj i izvršavanje Veb aplikacija i servisa bez razmatranja problema servera.
- Provajderi cloud servisa upravljaju svim aktivnostima vezanim za servere (obezbeđivanje, skaliranje, održavanje); Usluga Function-as-a-Service (FaaS) omogućava izvršavanje modula bez upravljanja kompleksnom infrastrukturom, automatsko prilagođavanje i naplatu stvarne upotrebe resursa.
- Programeri se usmeravaju na programski kod, čime se povećava produktivnost i olakšava isporuka aplikacija.
Klijent-Server Obrada Podataka
- Ključni aspekti uključuju:
- Princip klijent-server obrade.
- Model klijent-server obrade.
- Slojeve klijent-server obrade.
Princip Klijent-Server Obrade
- Danas najčešći pristup distribuiranoj obradi podataka.
- Sličnost sa centralizovanom arhitekturom je da postoji jedan član sposoban za izvršavanje zadataka koje ostali članovi ne mogu izvršavati.
- Za razliku od centralizovane (mainframe) arhitekture, klijenti imaju mogućnost lokalne obrade podataka dobijenih od servera.
Slojevi Klijent-Server Obrade
- Softversko rešenje se razlaže na klijentsku i serversku komponentu.
- Podrazumevaju se dva sloja: sloj klijenta i sloj servera.
- Primer jednostavne klijent server obrade: korisnici putem aplikacije na svom računaru (klijentu) pristupaju centralnoj bazi podataka (file-server arhitektura).
Troslojne Aplikacije
- Čest primer su klijent-server aplikacije sa tri sloja:
- Klijent - Veb čitač (browser).
- Srednji sloj - aplikativni Veb server.
- Treći sloj - server baze podataka.
- Srednji sloj je realizovan kao serverska komponenta za Veb čitač i kao klijentska komponenta sa aspekta servera baze podataka.
- Centralizovana zaštita podataka i kontrola pristupa olakšava rešavanje problema bezbednosti.
Pojmovi Klijent i Server
- Pojmovi "klijent" i "server" se ne odnose na hardverske karakteristike računara, već na tipove procesa.
- Ako proces ili neki njegov deo zahteva uslugu drugog procesa, smatra se klijentskim delom aplikacije.
- Obrnuto, ako proces ili neki njegov deo čeka i izvršava zahteve, smatra se serverskim delom aplikacije.
Iterativna i Konkurentna Obrada
- Postoje različiti načini obrade zahteva:
- Iterativna obrada zahteva.
- Konkurentna obrada zahteva.
Obrada Višestrukih Zahteva
- Veliki broj različitih strategija se koristi za optimalno iskorišćenje resursa (procesora, memorije, komunikacija).
- U zavisnosti od načina raspoređivanja obrade višestrukih zahteva, serveri se dele na one sa iterativnom i one sa konkurentnom obradom.
Iterativna Obrada Zahteva
- Serveri sa iterativnom obradom osluškuju na dodeljenom portu, čekajući zahtev klijenta.
- Nakon prihvatanja zahteva, zahtevi ostalih klijenata se odbacuju ili čekaju u ulaznom baferu dok se prihvaćeni zahtev ne obradi.
- Nedostatak je lošija izvedba u odnosu na konkurentni pristup (broj obrađenih zahteva u jedinici vremena).
- Prednost je da ne postoji problem konkurentnog pristupa internim resursima servera.
Konkurentna Obrada Zahteva
- Omogućava bolje performanse u situacijama kada server obrađuje veliki broj zahteva od strane više klijenata.
- Sastoji se od obrade više zahteva paralelno.
- Pokreće se novi proces (ili nit, zavisno od softvera i OS) za svaki klijentski zahtev.
- Dispečerski deo prihvata zahteve i pokreće proces obrade.
- Nedostatak je da ponekad ima slabije performanse od iterativnog pristupa zbog trošenja procesorskog vremena.
- Softver je kompleksniji i mora rešiti konkurentni pristup resursima.
Primer Mrežnog Programiranja
- Primer obuhvata:
- Komunikaciju klijenta i servera.
- Modul socket standardne biblioteke jezika Python.
- Jednostavna aplikacija u jeziku Python.
Komunikacija Klijenta i Servera
- Komunikacija klijenta i servera pomoću TCP/IP protokola se realizuje uz socket API funkcije operativnog sistema.
- Status soketa se prati komandom operativnog sistema:
netstat -an
. - Trostepeno usaglašavanje (three-way handshake) koristi TCP protokol za uspostavljanje pouzdane veze između klijenta i servera pre prenosa podataka.
Modul Socket Standardne Biblioteke Jezika Python
- Modul socket omogućava mrežno programiranje niskog nivoa u jeziku Python i obezbeđuje sve neophodne metode za uspostavljanje veze, prijem i slanje podataka.
- Osnovni metod je
socket.socket()
, koji se koristi za kreiranje objekta tipa socket (utičnica) na serverskoj i klijentskoj strani. - Tip soketa
SOCK_STREAM
koristi Transmission Control Protocol (TCP) koji je pouzdan jer pošiljalac detektuje izgubljene pakete i šalje ih po redosledu. - Za veću brzinu prenosa se koristi tip soketa
SOCK_DGRAM
, odnosno User Datagram Protocol (UDP), ali se tada javljaju problemi paketnog prenosa.
Jednostavna Aplikacija u Pythonu
- Primer klijent-server aplikacije sastoji se od dve programske celine:
- Klijenta, koji šalje jednostavnu poruku serveru putem zadanog porta.
- Servera, koji osluškuje zadani port i obrađuje poruku tako što je menja i vraća pošiljaocu.
Studying That Suits You
Use AI to generate personalized quizzes and flashcards to suit your learning preferences.