Internet Mrežno Programiranje

Choose a study mode

Play Quiz
Study Flashcards
Spaced Repetition
Chat to Lesson

Podcast

Play an AI-generated podcast conversation about this lesson
Download our mobile app to listen on the go
Get App

Questions and Answers

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?

  • 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?

  • tasklist
  • netstat (correct)
  • soketview
  • ipconfig

Koje godine su nastale utičnice (sockets) kao aplikativni programski interfejs?

<ol start="1971"> <li>(C)</li> </ol> Signup and view all the answers

U kom operativnom sistemu su se utičnice (sockets) koristile pod nazivom Berkeley sockets?

<p>BSD Unix (C)</p> Signup and view all the answers

Koji je najčešći tip socket aplikacija?

<p>Klijent-server aplikacije (D)</p> Signup and view all the answers

Za šta se koristi modul socket u programskom jeziku Python?

<p>Za mrežno programiranje niskog nivoa (D)</p> Signup and view all the answers

Koja metoda modula socket se koristi za kreiranje utičnice?

<p><code>socket()</code> (B)</p> Signup and view all the answers

Koja metoda modula socket se koristi za povezivanje utičnice sa određenim portom?

<p><code>bind()</code> (A)</p> Signup and view all the answers

Koja metoda modula socket se koristi za prihvatanje konekcije sa klijentom?

<p><code>accept()</code> (A)</p> Signup and view all the answers

U mrežnom programiranju, na šta se svodi pojam mrežnog programiranja (socket programming)?

<p>Na izbor odgovarajuće softverske arhitekture i razvoj protokola na sloju aplikacije (D)</p> Signup and view all the answers

Šta omogućava veb programiranje u kontekstu mrežnog programiranja?

<p>Korišćenje postojećih protokola na sloju aplikacije (B)</p> Signup and view all the answers

Koji protokol se koristi za razmenu strukturiranih informacija u implementaciji veb servisa?

<p>SOAP (D)</p> Signup and view all the answers

Šta predstavlja arhitektura nekog sistema?

<p>Osnovnu organizaciju sistema, koja obuhvata njegove komponente, njihove relacije, okruženje i principe dizajna i razvoja (D)</p> Signup and view all the answers

Koja od navedenih arhitektura podrazumeva da se celokupna obrada izvršava na centralnom računaru?

<p>Centralizovana arhitektura (B)</p> Signup and view all the answers

Koja arhitektura je karakteristična po tome što svaki član ima najveći nivo autonomije?

<p>Arhitektura ravnopravnih članova (peer-to-peer) (A)</p> Signup and view all the answers

Koji je glavni nedostatak arhitekture ravnopravnih članova?

<p>Otežana administracija i kontrola članova (B)</p> Signup and view all the answers

Koji od navedenih pristupa se koristi za komunikaciju na aplikativnom nivou u servisno orijentisanoj arhitekturi (SOA)?

<p>Otvoreni standardi zasnovani na XML, kao što je protokol SOAP (D)</p> Signup and view all the answers

Šta karakteriše arhitekturu bez servera (serverless)?

<p>Upravljanje serverima vrši sistem nezavisnih provajdera infrastrukturnih servisa (B)</p> Signup and view all the answers

Šta omogućava usluga Function-as-a-Service (FaaS) u kontekstu arhitekture bez servera (serverless)?

<p>Izvršavanje modula bez upravljanja složenom infrastrukturom (C)</p> Signup and view all the answers

Šta podrazumeva realizacija aplikacija u klijent-server arhitekturi?

<p>Postojanje uparenih softverskih komponenti – klijentske i serverske (D)</p> Signup and view all the answers

Koji je glavni princip klijent-server obrade podataka?

<p>Postoji jedan član (server) sposoban za izvršavanje zadataka koje ostali članovi (klijenti) ne mogu (D)</p> Signup and view all the answers

Kojom vrstom arhitekture korisnici pristupaju centralnoj bazi podataka putem aplikacije na svom računaru?

<p>File-server arhitektura (D)</p> Signup and view all the answers

Šta čini treći serverski sloj u troslojnoj aplikaciji?

<p>Server baze podataka (B)</p> Signup and view all the answers

U klijent-server arhitekturi, kako se definišu pojmovi klijent i server?

<p>Pojmovi se ne odnose na hardverske karakteristike računara, već na tipove procesa (D)</p> Signup and view all the answers

U kontekstu obrade višestrukih zahteva, na šta se serveri dele u zavisnosti od načina raspoređivanja obrade?

<p>Na servere sa iterativnom i konkurentnom obradom (B)</p> Signup and view all the answers

Koja je glavna karakteristika iterativne obrade zahteva na serveru?

<p>Server osluškuje na dodeljenom portu i obrađuje jedan po jedan zahtev (B)</p> Signup and view all the answers

Koja je prednost iterativne obrade zahteva u odnosu na konkurentnu?

<p>Nema problema konkurentnog pristupa internim resursima servera (B)</p> Signup and view all the answers

Koja je glavna prednost konkurentne obrade zahteva?

<p>Bolje performanse u situacijama kada server obrađuje veliki broj zahteva (A)</p> Signup and view all the answers

Zašto je softver kompleksniji kod konkurentne obrade zahteva?

<p>Zato što se mora rešiti konkurentni pristup resursima (B)</p> Signup and view all the answers

Koji protokol koristi tip soketa SOCK_STREAM u modulu socket jezika Python?

<p>Transmission Control Protocol (TCP) (B)</p> Signup and view all the answers

Koja karakteristika izdvaja TCP (Transmission Control Protocol) od UDP (User Datagram Protocol) u kontekstu prenosa podataka?

<p>TCP je pouzdan, jer pošiljalac otkriva izgubljene pakete (D)</p> Signup and view all the answers

Kada bi se koristio tip soketa SOCK_DGRAM umesto SOCK_STREAM u mrežnom programiranju?

<p>Za veću brzinu prenosa, ali se tada javljaju problemi paketnog prenosa (D)</p> Signup and view all the answers

Koji su osnovni koraci u komunikaciji klijenta i servera putem soketa korišćenjem TCP protokola?

<p>Kreiranje soketa, povezivanje, slanje i prijem podataka, zatvaranje konekcije (C)</p> Signup and view all the answers

Šta je karakteristično za trostepeno usaglašavanje (three-way handshake) u TCP protokolu?

<p>Koristi se za uspostavljanje pouzdane veze između klijenta i servera (D)</p> Signup and view all the answers

Koji su ključni elementi implementacije klijent-server aplikacije u jeziku Python koristeći sokete?

<p>Kreiranje klijenta i servera koji šalju i primaju poruke putem soketa (D)</p> Signup and view all the answers

Koje su osnovne razlike između centralizovane i klijent-server arhitekture u obradi podataka?

<p>U centralizovanoj obradi svi podaci se obrađuju na serveru, dok u klijent-server arhitekturi klijenti imaju mogućnost lokalne obrade podataka (B)</p> Signup and view all the answers

Šta je karakteristično za proces odlučivanja o izboru između iterativne i konkurentne obrade na serverskoj strani?

<p>Izbor zavisi od broja klijenata i kompleksnosti obrade svakog pojedinačnog zahteva (B)</p> Signup and view all the answers

Flashcards

Komunikacija udaljenih procesa

Komunikacija između procesa na udaljenim sistemima, zahteva mrežne protokole i infrastrukturu.

Mrežni aplikativni interfejs (socket API)

Aplikativni interfejs za komunikaciju putem Interneta, podržan od strane mnogih operativnih sistema.

Klijent-server aplikacije

Posebna vrsta aplikacija kod kojih jedna strana (klijent) šalje zahteve, a druga (server) odgovara.

Socket u Pythonu

Standardna biblioteka u Pythonu koja omogućava mrežno programiranje niskog nivoa.

Signup and view all the flashcards

Mrežno programiranje

Izbor softverske arhitekture i razvoj protokola na nivou aplikacije, uz korišćenje usluga operativnog sistema.

Signup and view all the flashcards

Veb programiranje

Omogućava korišćenje postojećih protokola na nivou aplikacije, kao što su HTTP, HTTPS.

Signup and view all the flashcards

Arhitektura sistema

Predstavlja osnovnu organizaciju sistema, uključujući komponente, relacije, okruženje i principe razvoja.

Signup and view all the flashcards

Centralizovana arhitektura

Svi računari su povezani na centralni računar koji obavlja svu obradu.

Signup and view all the flashcards

Klijent-server arhitektura

Jedna strana (klijent) šalje zahteve, druga strana (server) odgovara na zahteve.

Signup and view all the flashcards

Arhitektura ravnopravnih članova (peer-to-peer)

Svi članovi mreže su ravnopravni i mogu da dele resurse i funkcije.

Signup and view all the flashcards

Servisno orijentisana arhitektura (SOA)

Aplikacije se grade od dobro definisanih i testiranih komponenti(Veb servisa) i koriste se otvoreni standardi zasnovani na XML.

Signup and view all the flashcards

Arhitektura bez servera (serverless)

Upravljanje serverima vrši sistem nezavisnih provajdera infrastrukturnih servisa.

Signup and view all the flashcards

Koncept klijenta i servera

Koncept da se klijent i server ne odnose se na hardverske karakteristike računara, već na tipove procesa

Signup and view all the flashcards

Iterativna obrada zahteva

Server obrađuje jedan po jedan zahtev, odbacujući ili stavljajući ostale u čekanje.

Signup and view all the flashcards

Konkurentna obrada zahteva

Server obrađuje više zahteva istovremeno, koristeći više niti ili procesa.

Signup and view all the flashcards

Metod socket.socket()

Osnovni metod modula socket koji kreira objekat tipa socket (utičnica) i na serverskoj i na klijentskoj strani

Signup and view all the flashcards

Jednostavna klijent-server aplikacija

Klijent šalje poruku serveru putem zadanog porta, a server odgovara izmenjenom porukom.

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.

Quiz Team

Related Documents

More Like This

Use Quizgecko on...
Browser
Browser