14
Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes de Computadores Instituto de Computação – UNICAMP Juliana Freitag Borin

Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Modelo Cliente/Servidor e Introdução a Sockets

MC 833 – Programação em Redes de ComputadoresInstituto de Computação – UNICAMP

Juliana Freitag Borin

Page 2: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

O modelo OSI de 7 camadas

Aplicação

Apresentação

Sessão

Rede

Enlace

Física

Transporte

Aplicação

Apresentação

Sessão

Rede

Enlace

Física

Transporte

Modelo OSI

Nó origem

Aplicação

Apresentação

Sessão

Rede

Enlace

Física

Transporte

Nó destino

Rede

Enlace

Física

Rede

Enlace

Física

Page 3: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

OSI x TCP/IP

Aplicação

Apresentação

Sessão

Rede

Enlace

Física

Transporte

Modelo OSI

Aplicação

Transporte

Rede

Enlace

Física

TCP/IP

Page 4: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Foco nas camadas de transporte e rede

Aplicação

Transporte

Rede

Enlace

Protocolo TCP Protocolo UDP

Física

Aplicação Aplicação Aplicação

Protocolo IP

Protocolos de acesso ao meio (Ethernet, 802.11, ...)

hardware

Page 5: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Modelo Cliente/Servidor

● Principal motivação: “Problema do encontro” (Rendezvous problem)

Page 6: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Modelo Cliente/Servidor

● Principal motivação: “Problema do encontro” (Rendezvous problem)

● Modelo: para qualquer par de aplicações que se comunicam, um dos lados deve iniciar a execução e esperar (indefinidamente) até ser contactado pelo outro lado.

Page 7: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Modelo Cliente/Servidor

● De maneira geral, uma aplicação que inicia uma comunicação par-a-par é chamada cliente.

● Comparativamente, um servidor é um programa que espera por requisições de um cliente.

Page 8: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Comunicação entre cliente e servidor

● Cliente e servidor usam comunicação entre processos (IPC - inter-process communication) para conversar entre si.

● Há vários mecanismos de IPC - focaremos em sockets (Berkeley Unix).

● Sockets - API padrão para TCP/IP IPCAplicação

Transporte

Rede

Enlace

Física

sockets

Page 9: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

TCP/IP é um sistema de arquivos?

● Sockets trata o TCP/IP como se fosse um sistema de arquivos ○ rotinas para abrir e fechar uma conexão○ rotinas para ler e escrever

Aplicação Aplicação

escreve( )

escreve( )

lê( )

lê( )

Page 10: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Sockets e TCP/IP● TCP/IP

○ cada ponto final é identificado por uma tupla: (porta TCP, endereço IP)

○ a conexão 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○ através da conexão entre sockets

é possível conectar pontos finais e fazer operações de E/S

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

Page 11: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Sockets API para o clienteint 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 endereço/porta para um descritor de socket (sd)- Opcional para o cliente - pode deixar o kernel escolher uma porta disponível com o endereço IP padrão.int connect (int sd, struct sockaddr *addr, u_int addr_len)

- Conecta com a porta + endereço do destinoint send(int sd, void *buf, int len, int flags)

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

- Comunicação int shutdown(int sd, int how)

- Finalização parcial ou completa da conexãoBaseado nos slides de Ben Nham - Introduction to Computer Networking - Stanford University

Page 12: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Sockets API para o Servidorint 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 conexão de um cliente a essa porta

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

○ - Aceita uma conexão 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

Page 13: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Exemplo de interação entre um par cliente-servidor

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

Page 14: Juliana Freitag Borin Instituto de Computação – UNICAMP MC ...juliana/cursos/mc833/aula4.pdf · Modelo Cliente/Servidor e Introdução a Sockets MC 833 – Programação em Redes

Exemplo de interação entre um par cliente-servidor

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