Você está na página 1de 14

Modelo Cliente/Servidor e

Introduo a Sockets

MC 833 Programao em Redes de Computadores


Instituto de Computao UNICAMP

Juliana Freitag Borin


O modelo OSI de 7 camadas
N origem N destino

Aplicao Aplicao

Apresentao Apresentao

Sesso Sesso

Transporte Transporte

Rede Rede Rede Rede

Enlace Enlace Enlace Enlace

Fsica Fsica Fsica Fsica


OSI x TCP/IP

Aplicao

Apresentao Aplicao

Sesso

Transporte Transporte

Rede Rede

Enlace Enlace

Fsica Fsica

Modelo OSI TCP/IP


Foco nas camadas de transporte e
rede

Aplicao Aplicao Aplicao


Aplicao

Protocolo TCP Protocolo UDP


Transporte

Rede Protocolo IP

Protocolos de acesso ao meio


Enlace (Ethernet, 802.11, ...)

hardware
Fsica
Modelo Cliente/Servidor
Principal motivao: Problema do encontro (Rendezvous
problem)
Modelo Cliente/Servidor
Principal motivao: Problema do encontro (Rendezvous
problem)

Modelo: para qualquer par de aplicaes que se comunicam,


um dos lados deve iniciar a execuo e esperar
(indefinidamente) at ser contactado pelo outro lado.
Modelo Cliente/Servidor
De maneira geral, uma aplicao que inicia uma
comunicao par-a-par chamada cliente.

Comparativamente, um servidor um programa que espera


por requisies de um cliente.
Comunicao entre cliente e
servidor
Cliente e servidor usam comunicao entre processos (IPC -
inter-process communication) para conversar entre si.
H vrios mecanismos de IPC - focaremos em sockets
(Berkeley Unix).
Sockets - API padro para TCP/IP IPC
Aplicao

sockets
Transporte

Rede

Enlace

Fsica
TCP/IP um sistema de arquivos?
Sockets trata o TCP/IP como se fosse um sistema de
arquivos
rotinas para abrir e fechar uma conexo
rotinas para ler e escrever

Aplicao Aplicao

escreve( )

l( )

escreve( )

l( )
Sockets e TCP/IP
TCP/IP
cada ponto final identificado por
uma tupla: (porta TCP, endereo
IP)
a conexo entre dois pontos
finais identificada pelo par [(IP,
porta)origem, (IP, porta)destino]

Em sistemas Unix todo fluxo de


E/S identificado por um descritor
socket mapeia um descritor para
um ponto final
atravs da conexo entre sockets
possvel conectar pontos finais
e fazer operaes de E/S
Baseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University
Sockets API para o cliente
int socket(int domain, int type, int protocol)
- Retorna um descritor associado com um novo ponto final.
int bind(int sd, struct sockaddr *addr, u_int addr_len)
- Mapeia endereo/porta para um descritor de socket (sd)
- Opcional para o cliente - pode deixar o kernel escolher uma porta disponvel
com o endereo IP padro.
int connect (int sd, struct sockaddr *addr, u_int
addr_len)
- Conecta com a porta + endereo do destino
int send(int sd, void *buf, int len, int flags)
int recv(int sd, void *buf, int len, int flags)
- Comunicao
int shutdown(int sd, int how)
- Finalizao parcial ou completa da conexo
Baseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University
Sockets API para o Servidor
int socket(int domain, int type, int protocol)
int bind(int sd, struct sockaddr *addr, u_int addr_len)

int listen(int sd, int backlog)


- Espera pela conexo de um cliente a essa porta

int accept (int sd, struct sockaddr *addr, u_int


*addr_len)
- Aceita uma conexo retornando um novo descritor para o par [(IP,
porta)origem, (IP, porta)destino]

int send(int sd, void *buf, int len, int flags)


int recv(int sd, void *buf, int len, int flags)
int shutdown(int sd, int how)
Baseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University
Exemplo de interao entre um par
cliente-servidor

Baseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University
Exemplo de interao entre um par
cliente-servidor

Baseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University

Você também pode gostar