Académique Documents
Professionnel Documents
Culture Documents
Dobrodosli!
Mreze za developere - ground up
Mrezna infrastruktura
Petar Stupar
Plan radionice
Wired Wireless
Mrezni hardver
Switch Hub
Device
Interrupt (hardware i software interrupt)
MSI (Message Signaled Interrupt)
Interrupt handler
Mrezni drajveri
Application
Socket
Network Protocol
Driver
Mrezni drajveri
Ethernet
Mrezni drajveri
Svaki fizicki i logicki mrezni uredjaj je definisan mreznim interfejsom (ifnet) koji
omogucava slanje i primanje poruka.
ifnet sadrzi:
Lokalnu adresu
Broadcast adresu
Network mask
Pointer ka interfejsu (*ifnet)
Pointer ka sledecoj adresi (*ifaddr)
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
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
Hvala na paznji!