Professional Documents
Culture Documents
Pgina 1
Roteiro
Introduo A Arquitetura TCP/IP O Protocolo IP O Protocolo UDP O Protocolo TCP Qual Protocolo Usar: UDP ou TCP? Socket com TCP Socket com TCP: Exemplo de Aplicao Socket com UDP Socket com UDP: Exemplo de Aplicao Servidor Web Simples
Pgina 2
Introduo
Objetivo: aprender a construir aplicaes cliente/servidor usando sockets. Os sockets apareceram pela primeira vez em uma implementao do BSD Unix 4.1 em 1981.
Devem ser explicitamente criados, usados e liberados. Paradigma cliente/servidor. So a forma mais usada de comunicao entre processos (IPC Inter Process Communication).
A Arquitetura TCP/IP
Aplicaes cliente/servidor
Servio orientado conexo e confivel. SEGMENTO
Aplicao TCP IP
Rede Fsica
UDP
Servio no orientado conexo e no confivel. DATAGRAMA Servio no orientado conexo e no confivel. DATAGRAMA
A Arquitetura TCP/IP
Os endereos IP so formados por quatro nmeros, tipicamente separados por pontos. Cada nmero tem o tamanho de 1 byte (0 255). Exemplo: 10.125.3.45 Alguns endereos IP so reservados (no nos interessam neste momento)! H tambm os nomes simblicos, que devem ser traduzidos para endereos IP por algum servio, tal como o DNS. Exemplo: www.fib.br.
Prof. Othon Batista (othonb@yahoo.com) Pgina 5
Arquitetura TCP/IP
Conveno para os nmeros de portas:
0 at 1023 portas privilegiadas; 1024 at 65535 portas sem restries.
Pgina 6
O Protocolo IP
Camada mais baixa da arquitetura TCP/IP. No fim-a-fim. No orientada conexo. Usada pelos protocolos UDP e TCP. Servio de datagrama no confivel:
a entrega de um datagrama no garantida; os datagramas podem ser entregues fora de ordem; podem ser recebidos datagramas duplicados.
O Protocolo UDP
datagramas UDP
Usado diretamente pelos programas. fim-a-fim. No orientado conexo. Servio de datagrama no confivel. Mais gil de TCP. Usado por: DNS, NFS, SNMP, RIP...
Prof. Othon Batista (othonb@yahoo.com) Pgina 8
O Protocolo TCP
segmentos TCP
Usado diretamente pelos programas. fim-a-fim. Orientado conexo. Servio confivel. Usado por: FTP, TELNET, SMTP, POP3...
Pgina 9
Internet
Cliente
Servidor
Pgina 11
Pgina 13
Cliente l linha da entrada padro (doUsurio), envia para servidor via socket (paraServidor). Servidor l linha do socket. Servidor converte linha para letras maisculas, devolve para o cliente. Cliente l linha modificada do socket (doServidor), imprime-a.
para_servidor
do_usuario
do_servidor
Fluxo de entrada: seqncia de bytes recebida pelo processo. Fluxo de sada: seqncia de bytes transmitida pelo processo.
Servidor
Cliente
aguarda chegada de configurao pedido de conexo socketConexo = socketRecepo.accept() l pedido de socketConexo escreve resposta para socketConexo fecha socketConexo
TCP
cria socket, abre conexo a nomeHosp, porta=x socketCliente = Socket() Envia pedido usando socketCliente
Pgina 15
Pgina 16
Pgina 17
Cria socket para recepo na porta 6789 Aguarda, no socket para recepo, o contato do cliente Cria fluxo de entrada, ligado ao socket
Pgina 18
Pgina 19
Pgina 20
Cliente
cria socket, socketCliente = DatagramSocket() cria, enderea (nomeHosp, porta=x, envia pedido em datagrama usando socketCliente
l pedido do socketServidor escreve resposta ao socketServidor especificando endereo IP, nmero de porta do cliente
Pgina 21
Pgina 22
Cria fluxo de entrada Cria socket de cliente Traduz nome de hospedeiro ao endereo IP usando DNS
Pgina 23
Pgina 24
Pgina 25
Pgina 26
InetAddress IPAddress = pacoteRecebido.getAddress(); int porta = pacoteRecebido.getPort(); String fraseEmMaiusculas = frase.toUpperCase(); dadosEnviados = fraseEmMaiusculas.getBytes();
Pgina 27
Pgina 28
Pgina 29
Associa o fluxo inFile ao arquivo fileName Determina o tamanho do arquivo e constri um vetor de bytes do mesmo tamanho
Pgina 30
Pgina 31