Sunteți pe pagina 1din 36

Nothing in this world can take the place of persistence.

Talent will not: nothing is more common than


unsuccessful men with talent.
Genius will not: unrewarded genius is almost a proverb.
Education will not: the world is full of educated derelicts.
Persistence and determination alone are omnipotent. -
Calvin Coolidge
Mreze za developere - ground up

Dobrodosli!
Mreze za developere - ground up

Mrezna infrastruktura

Petar Stupar
Plan radionice

Mrezni hardver i drajveri


Pauza
Networking u kontekstu Standardne C biblioteke
Pauza
Analiza: Primer Chat aplikacije u C programskom
jeziku
Mrezni hardver i drajveri

Koji hardver koristimo za mrezno povezivanje i


komunikaciju?
Mrezni hardver

Wired Wireless
Mrezni hardver

Gateway Router Bridge

Switch Hub

Modem WAP Cables


Drajveri

Drajveri su procesi koji omogucavaju racunarskom sistemu da komunicira sa


uredjajima.

Device
Interrupt (hardware i software interrupt)
MSI (Message Signaled Interrupt)
Interrupt handler
Mrezni drajveri

Mrezni podsistem obezbedjuje univerzalne interfejse za komunikaciju izmedju


procesa i racunarskih sistema. Kao takav on je najkompleksniji podsistem
operativnog sistema.

Mrezni drajveri su deo mreznog podsistema koji:

1. Podesavaju mrezne uredjaje tokom boot-ovanja sistema


2. Kontrolisu i upravljaju uredjajima tokom rada sistema
3. Salju, Prihvataju, Prosledjuju i Odbacuju pakete podataka
Mrezni drajveri

Mrezni podsistem ima vise nivoa apstrakcije

Application
Socket
Network Protocol
Driver
Mrezni drajveri

Mrezni podsistem se moze podeliti na tri logicke celine:

Interprocesni prenos podataka (transport)

Medjumrezno adresiranje i rout-ovanje poruka (network)

Podrska za prenosni medijum (link)


Mrezni drajveri
Socket DATA
Socket

Transport TCP DATA

Network IP TCP DATA


Protocol
Software interrupt
Input
Queue
Link ETHER IP TCP DATA
Device interrupt

Ethernet
Mrezni drajveri
Svaki fizicki i logicki mrezni uredjaj je definisan mreznim interfejsom (ifnet) koji
omogucava slanje i primanje poruka.

ifnet sadrzi:

Interface identifier (index, string name)


Interface properties (flags)
Interface routines
Interface data (line speed, etc.)
Listu adresa povezanih sa interfejsom

ifnet je definisan u net/if_var.h


Mrezni drajveri
Adrese (ifaddr) sadrze:

Lokalnu adresu
Broadcast adresu
Network mask
Pointer ka interfejsu (*ifnet)
Pointer ka sledecoj adresi (*ifaddr)

ifaddr je definisan u net/if_var.h


Mrezni drajveri
Prenosni medijum definisan je u ifmedia strukturi
Mrezni drajveri
Funkcija em_setup_interface definisana je u sys/dev/e1000/if_em.c
Mrezni drajveri
mbuf je struktura koja sadrzi pakete podatka. Linked-list mbuf-ova zove se chain,
a povezani chain-ovi cine queue.

Svaki mbuf sadrzi header i podatke.

mbuf je definisan u sys/mbuf.h


Pauza
Networking u kontekstu stdlibc

Sta su soketi? Kada ih koristimo?

Kako izgleda API koji koristimo kada pravimo mrezne


aplikacije u C programskom jeziku?
Networking u kontekstu stdlibc

int
getaddrinfo(const char *hostname, const char *servname,
const struct addrinfo *hints, struct addrinfo **res);

void
freeaddrinfo(struct addrinfo *ai);
Networking u kontekstu stdlibc

int socket(int domain, int type, int protocol);


Networking u kontekstu stdlibc

int
bind(int s, const struct sockaddr *addr, socklen_t addrlen);
Networking u kontekstu stdlibc

int
connect(int s, const struct sockaddr *name, socklen_t namelen);
Networking u kontekstu stdlibc

int
listen(int s, int backlog);

int
accept(int s, struct sockaddr * restrict addr,
socklen_t * restrict addrlen);
Networking u kontekstu stdlibc

int
select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds,
struct timeval *timeout);
Networking u kontekstu stdlibc

ssize_t
send(int s, const void *msg, size_t len, int flags);

ssize_t
recv(int s, void *buf, size_t len, int flags);
Networking u kontekstu stdlibc

ssize_t
sendto(int s, const void *msg, size_t len, int flags,
const struct sockaddr *to, socklen_t tolen);

ssize_t
recvfrom(int s, void *buf, size_t len, int flags,
struct sockaddr * restrict from, socklen_t * restrict fromlen);
Networking u kontekstu stdlibc

int
close(int fd);

int
shutdown(int s, int how);
Networking u kontekstu stdlibc

int
getnameinfo(const struct sockaddr *sa, socklen_t salen, char *host,
size_t hostlen, char *serv, size_t servlen, int flags);

int
getpeername(int s, struct sockaddr * restrict name,
socklen_t * restrict namelen);
Networking u kontekstu stdlibc

int
getsockopt(int s, int level, int optname, void * restrict optval,
socklen_t * restrict optlen);

int
setsockopt(int s, int level, int optname, const void *optval,
socklen_t optlen);
Pauza
Chat aplikacija u C programskom jeziku

Analiza
Literatura
2014 - McKusick, M. K.; Neville-Neil, G. V.; Watson, R. N.M. - The Design and Implementation of
the FreeBSD Operating System, Second Edition, Addison-Wesley Professional
2012 - Kong, J. - FreeBSD Device Drivers: A Guide for the Intrepid, No Starch Press
2011 - Baldwin, J. - Writing and Adapting Device Drivers for FreeBSD,
https://people.freebsd.org/~jhb/papers/drivers/slides.pdf
2009 - Neville-Neil, G. V. - Networking from the Bottom Up: Device Drivers,
http://www.bsdcan.org/2009/schedule/attachments/102_devices.pdf
ifnet(9)
mbuf(9)
2016 - Hall, B. - Beej's Guide to Network Programming,
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html
Na sledecoj radionici

Mrezni standardi i protokoli


Apache i PHP interpreter
Analiza: Primer Chat aplikacije u PHP programskom
jeziku, uz koriscenje Laravel Framework-a
Nothing in this world can take the place of persistence.
Talent will not: nothing is more common than
unsuccessful men with talent.
Genius will not: unrewarded genius is almost a proverb.
Education will not: the world is full of educated derelicts.
Persistence and determination alone are omnipotent. -
Calvin Coolidge
Mreze za developere - ground up

Hvala na paznji!

S-ar putea să vă placă și