Capítulo 2. Camada de aplicação

Tamanho: px
Começar a partir da página:

Download "Capítulo 2. Camada de aplicação"

Transcrição

1 1 Capítulo 2 Camada de aplicação

2 2 Redes de computadores I Prof.: Leandro Soares de Sousa leandro.uff.puro@gmail.com Site: Não deixem a matéria acumular!!! Datas das avaliações, exercícios propostos, transparências,... no site!

3 3 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

4 4 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

5 Princípios de aplicações de rede O ponto central do desenvolvimento de aplicação de rede é escrever programas que rodem em sistemas finais diferentes e se comuniquem entre si. Ao desenvolver sua nova aplicação, você precisará escrever um software que rode em vários sistemas finais. 5

6 Princípios de aplicações de rede Esse software poderia ser criado, por exemplo, em C, Java ou Python. Você não precisará escrever programas que executem nos elementos do núcleo de rede, como nos roteadores. 6

7 Arquiteturas de aplicação de rede A arquitetura de rede é fixa e provê um conjunto específico de serviços. A arquitetura da aplicação é projetada pelo programador e determina como a aplicação é organizada nos vários sistemas finais. 7

8 Arquiteturas de aplicação de rede Em uma arquitetura cliente-servidor há um hospedeiro sempre em funcionamento, denominado servidor, que atende a requisições de muitos outros hospedeiros, denominados clientes. Ex.: web, , ftp, telnet, ssh, scp, 8

9 Arquiteturas de aplicação de rede 9 A comunicação de uma aplicação de rede ocorre entre sistemas finais (hospedeiros) na camada de aplicação.

10 Arquiteturas de aplicação de rede A arquitetura P2P utiliza a comunicação direta entre duplas de hospedeiros conectados alternadamente, denominados pares. Uma das características mais fortes da arquitetura P2P é sua autoescalabilidade. Compartilhamento de arquivos (BitTorrent), telefonia pela Internet (Skype), IPTV (KanKan, Ppstream,...) 10

11 Arquiteturas de aplicação de rede As futuras aplicações P2P estão diante de três principais desafios: 1. ISP Amigável: atual banda assimétrica, mas com P2P pode colocar pressão nos ISPs 2. Segurança: proteção complicada! 3. Incentivos: usuários participativos 11

12 Arquiteturas de aplicação de rede 12

13 Comunicação entre processos 13 Processos de aplicação, sockets e protocolo de transporte subjacente.

14 Comunicação entre processos 14 Uma aplicação de rede consiste em pares de processos que enviam mensagens uns para os outros por meio de uma rede. Um processo envia mensagens para a rede e recebe mensagens dela através de uma interface de software denominada socket. Para identificar o processo receptor, duas informações devem ser especificadas: 1. o endereço do hospedeiro e 2. um identificador que especifica o processo receptor no hospedeiro de destino.

15 Serviços de transporte disponíveis para aplicações 15 Transferência confiável de dados: a aplicação tolera perdas? Vazão: restrição de banda na aplicação? Temporização: o tempo fim-a-fim é relevante? Segurança: o transporte tem restrição de segurança? (cap.8)

16 Serviços de transporte disponíveis para aplicações Serviço TCP: 16 orientado a conexão: inicialização requerida entre cliente e servidor / transporte confiável entre processos remetente e receptor controle de fluxo: remetente não vai afogar receptor controle de congestionamento: estrangular remetente quando a rede estiver carregada não provê: garantias temporais ou de banda mínima Serviço UDP: transferência de dados não confiável entre processos remetente e receptor não provê: estabelecimento da conexão, confiabilidade, controle de fluxo, controle de congestionamento, garantias temporais ou de banda mínima Pergunta: Qual é o interesse em ter um UDP?

17 Serviços de transporte providos pela Internet 17 A Internet disponibiliza dois protocolos de transporte para aplicações, o UDP e o TCP. Requisitos de aplicações de rede selecionadas:

18 Serviços de transporte providos pela Internet 18 Aplicações populares da Internet, seus protocolos de camada de aplicação e seus protocolos de transporte subjacentes:

19 Protocolos de camada de aplicação 19 Um protocolo de camada de aplicação define: Os tipos de mensagens trocadas. A sintaxe dos vários tipos de mensagens, tais como os campos da e como os campos são delineados. A semântica dos campos, isto é, o significado da informação nos campos. Regras para determinar quando e como um processo envia mensagens e responde a mensagens.

20 20 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

21 21 A Web e o HTTP Talvez o que mais atraia a maioria dos usuários da Web é que ela funciona por demanda. O HTTP Protocolo de Transferência de Hipertexto (HyperText Transfer Protocol), o protocolo da camada de aplicação da Web, está no coração da Web e é definido no [RFC 1945] e no [RFC 2616]. O HTTP é executado em dois programas: 1. um cliente e 2. outro servidor.

22 22 A Web e o HTTP Uma página Web é constituída de objetos. Um objeto é apenas um arquivo que se pode acessar com um único URL. (ex.: - hospedeiro caminho) A maioria das páginas Web é constituída de um arquivo-base HTML e diversos objetos referenciados. O HTTP usa o TCP como seu protocolo de transporte subjacente (porta 80). O HTTP é denominado um protocolo sem estado (stateless vários protocolos são assim).

23 23 A Web e o HTTP Mecânica do processo:

24 Conexões persistentes e não persistentes 24 Quando a interação cliente-servidor acontece por meio de conexão TCP, o programador da aplicação precisa tomar uma importante decisão: Conexões não persistentes (http 1.0) cada par de requisição/resposta deve ser enviado por uma conexão TCP distinta. Conexões persistentes (http 1.1) todas as requisições e suas respostas devem ser enviadas por uma mesma conexão TCP.

25 Conexões persistentes e não persistentes 25

26 Conexões persistentes e não persistentes 26 Quando a interação cliente-servidor acontece por meio de conexão TCP, o programador da aplicação precisa tomar uma importante decisão: Conexões não persistentes (http 1.0) cada par de requisição/resposta deve ser enviado por uma conexão TCP distinta. Conexões persistentes (http 1.1) todas as requisições e suas respostas devem ser enviadas por uma mesma conexão TCP (com ou sem paralelismo configuração no navegador).

27 Formato da HTTP 27 Mensagem de requisição HTTP Apresentamos a seguir uma de requisição HTTP típica: GET /somedir/page.html HTTP/1.1 Host: Connection: close User-agent: Mozilla/5.0 Accept-language: fr

28 Formato da HTTP Formato geral de uma de requisição HTTP 28

29 Formato da HTTP Mensagem de resposta HTTP Apresentamos a seguir uma de resposta HTTP típica: HTTP/ OK Connection: close Date: Tue, 09 Aug :44:04 GMT Server: Apache/2.2.3 (CentOS) Last-Modified: Tue, 09 Aug :11:03 GMT Content-Length: 6821 Content-Type: text/html (dados dados dados dados dados...) 29

30 Formato da HTTP Formato geral de uma de resposta HTTP 30

31 Formato da HTTP 31 Na primeira linha da de resposta servidor cliente. Alguns códigos típicos: 200 OK sucesso, objeto pedido segue mais adiante nesta 301 Moved Permanently objeto pedido mudou de lugar, nova localização especificado mais adiante nesta (Location:) 400 Bad Request de pedido não entendida pelo servidor 404 Not Found documento pedido não se encontra neste servidor 505 HTTP Version Not Supported versão de http do pedido não usada por este servidor

32 Interação usuário-servidor: cookies 32 Cookies, definidos no [RFC 6265], permitem que sites monitorem seus usuários (privacidade?). A tecnologia dos cookies tem quatro componentes: 1. uma linha de cabeçalho de cookie na de resposta HTTP; 2. uma linha de cabeçalho de cookie na de requisição HTTP; 3. um arquivo de cookie mantido no sistema final do usuário e gerenciado pelo navegador do usuário; 4. um banco de dados de apoio no site.

33 Interação usuário-servidor: cookies 33 Mantendo o estado do usuário com cookies.

34 34 Caches Web Um cache Web também denominado servidor proxy é uma entidade da rede que atende requisições HTTP em nome de um servidor Web de origem. Clientes requisitando objetos por meio de um cache Web:

35 35 GET condicional GET condicional mecanismo que permite que um cache verifique se seus objetos estão atualizados. Meta: não enviar objeto se cliente já tem (no cache) versão atual cache: especifica data da cópia no cache no pedido http If-modified-since: <date> servidor: resposta não contém objeto se cópia no cache é atual: HTTP/ Not Modified

36 36 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

37 37 Transferência de arquivo: FTP Em uma sessão FTP típica, o usuário quer transferir arquivos de ou para um hospedeiro remoto. HTTP e FTP são protocolos de transferência de arquivos e têm muitas características em comum. ftp: RFC 959 servidor ftp: porta 21

38 Transferência de arquivo: FTP 38 FTP transporta arquivos entre sistemas de arquivo local e remoto:

39 Transferência de arquivo: FTP 39 Conexões de controle e de dados, protocolo dito fora de banda (texto aberto na conexão de controle):

40 40 Camadas e respostas FTP Alguns dos comandos mais comuns são descritos a seguir: USER username: usado para enviar identificação do usuário ao servidor. PASS password: usado para enviar a senha do usuário ao servidor. LIST: usado para pedir ao servidor que envie uma lista com todos os arquivos existentes no atual diretório remoto. RETR filename: usado para extrair um arquivo do diretório atual do hospedeiro remoto.

41 41 Camadas e respostas FTP STOR filename: usado para armazenar um arquivo no diretório atual do hospedeiro remoto. Algumas respostas típicas, mensagens, são as seguintes: junto com suas possíveis 331 Nome de usuário OK, senha requisitada 125 Conexão de dados já aberta; iniciando transferência 425 Não é possível abrir a conexão de dados 452 Erro ao escrever o arquivo

42 42 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

43 Correio eletrônico na Internet 43 Uma visão do sistema de da Internet. Três grandes componentes: agentes de usuário (UA) servidores de correio simple mail transfer protocol: SMTP

44 Correio eletrônico na Internet 44 Servidores de correio caixa de correio contém mensagens de chegada (ainda não lidas) p/ usuário fila de mensagens contém mensagens de saída (a serem enviadas) protocolo SMTP entre servidores de correio para transferir mensagens de correio cliente: servidor de correio que envia servidor: servidor de correio que recebe

45 SMTP (RFC 2821) 45 Usa TCP para a transferência confiável de msgs do correio do cliente ao servidor, porta 25 transferência direta: servidor remetente ao servidor receptor três fases da transferência interação comando/resposta handshaking (cumprimento) transferência das mensagens encerramento comandos: texto ASCII resposta: código e frase de status mensagens precisam ser em ASCII de 7-bits

46 Interação SMTP típica S: 220 doces.br C: HELO consumidor.br S: 250 Hello consumidor.br, pleased to meet you C: MAIL FROM: S: 250 Sender ok C: RCPT TO: S: 250 Recipient ok C: DATA S: 354 Enter mail, end with "." on a line by itself C: Voce gosta de chocolate? C: Que tal sorvete? C:. S: 250 Message accepted for delivery C: QUIT S: 221 doces.br closing connection 46

47 47 SMTP O SMTP transfere mensagens de servidores de correio remetentes para servidores de correio destinatários. O SMTP é um protocolo push (empurre) e o HTTP pull (puxe) Alice envia uma a Bob:

48 Formatos de de correio 48 Um cabeçalho de típico é semelhante a: From: To: Subject: Searching for the meaning of life. Após o cabeçalho da, vem uma linha em branco e, em seguida, o corpo da (em ASCII com 7 bits). Se é ASCII de 7 bits, como envio as fotos, vídeos,? (MIME)

49 Formatos de de correio: extensões multimídia 49 MIME: multimedia mail extension, RFC 2045, 2056 linhas adicionais no cabeçalho da msg declaram tipo do conteúdo MIME

50 Formatos de de correio: extensões multimídia 50 Text subtipos exemplos: plain, html charset= iso , ascii Image subtipos exemplos : jpeg, gif Video subtipos exemplos : mpeg, quicktime Áudio subtipos exemplos : basic (8-bit codificado mu-law), 32kadpcm (codificação 32 kbps) Application outros dados que precisam ser processados por um leitor para serem visualizados subtipos exemplos : msword, octet-stream

51 Formatos de de correio: extensões multimídia Tipo Multipart: From: To: Subject: Picture of yummy crepe. MIME-Version: 1.0 Content-Type: multipart/mixed; boundary= Content-Transfer-Encoding: quoted-printable Content-Type: text/plain Dear Bob, Please find a picture of a crepe Content-Transfer-Encoding: base64 Content-Type: image/jpeg base64 encoded data base64 encoded data

52 Protocolos de acesso ao correio SMTP: entrega/armazenamento no servidor do receptor protocolo de acesso ao correio: recupera do servidor POP: Post Office Protocol [RFC 1939] autorização (agente <-->servidor) e transferência IMAP: Internet Mail Access Protocol [RFC 1730] mais comandos (mais complexo) manuseio de msgs armazenadas no servidor HTTP: Hotmail, Yahoo! Mail, Webmail, etc. 52

53 Protocolos de acesso ao correio POP3 fase de autorização comandos do cliente: user: declara nome pass: senha servidor responde +OK -ERR fase de transação, cliente: list: lista números das msgs retr: recupera msg por número dele: apaga msg quit: S: C: S: C: S: C: S: S: S: C: S: S: C: C: S: S: C: C: S: 53 +OK POP3 server ready user ana +OK pass faminta +OK user successfully logged on list retr 1 <message 1 contents>. dele 1 retr 2 <message 1 contents>. dele 2 quit +OK POP3 server signing off

54 Protocolos de acesso ao correio Mais sobre o POP3 O exemplo anterior usa o modo download e delete. Bob não pode reler as mensagens se mudar de cliente Download-e-mantenha : copia as mensagens em clientes diferentes POP3 não mantém estado entre conexões IMAP Mantém todas as mensagens num único lugar: o servidor Permite ao usuário organizar as mensagens em pastas O IMAP mantém o estado do usuário entre sessões: nomes das pastas e mapeamentos entre as IDs das mensagens e o nome da pasta 54

55 55 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

56 DNS: o serviço de diretório da Internet Pessoas: muitos identificadores: CPF, nome, no. da Identidade hospedeiros, roteadores Internet: endereço IP (32 bit) - usado p/ endereçar datagramas nome, ex., jambo.ic.uff.br - usado por gente Pergunta: como mapear entre nome e endereço IP? 56

57 DNS: o serviço de diretório da Internet 57 Domain Name System: base de dados distribuída implementada na hierarquia de muitos servidores de nomes O DNS é (1) um banco de dados distribuído executado em uma hierarquia de servidores de DNS, e (2) um protocolo de camada de aplicação que permite que hospedeiros consultem o banco de dados distribuído. nota: função imprescindível da Internet implementada como protocolo de camada de aplicação complexidade na borda da rede Roda sobre UDP e usa a porta 53 RFCs 1034, 1035 Atualizado em outras RFCs

58 DNS: o serviço de diretório da Internet 58 O DNS provê alguns outros serviços importantes além da tradução de nomes de hospedeiro para endereços IP: Apelidos (aliasing) de hospedeiro. Apelidos de servidor de correio. Distribuição de carga.

59 DNS: o serviço de diretório da Internet 59 Nenhum servidor DNS isolado tem todos os mapeamentos para todos os hospedeiros da Internet. Em vez disso, os mapeamentos são distribuídos pelos servidores DNS. Parte da hierarquia de servidores DNS

60 DNS: o serviço de diretório da Internet Por que não centralizar o DNS? ponto único de falha volume de tráfego base de dados centralizada e distante manutenção (da BD) 60

61 DNS: o serviço de diretório da Internet 61 Servidores DNS raiz em 2012 (nome, organização, localização)

62 DNS: o serviço de diretório da Internet 62 Servidores DNS locais: Não pertence necessariamente à hierarquia Cada ISP (ISP residencial, companhia, universidade) possui um. Também chamada do servidor de nomes default Quando um hospedeiro faz uma consulta DNS, a mesma é enviada para o seu servidor DNS local Atua como um intermediário, enviando consultas para a hierarquia.

63 DNS: o serviço de diretório da Internet 63 Interação dos diversos servidores DNS: consulta recursiva: transfere a responsabilidade de resolução do nome para o servidor de nomes contatado carga pesada? consulta interativa: servidor consultado responde com o nome de um servidor de contato Não conheço este nome, mas pergunte para esse servidor

64 DNS: o serviço de diretório da Internet O DNS explora extensivamente o cache para melhorar o desempenho quanto ao atraso e reduzir o número de mensagens DNS que dispara pela Internet. Consultas recursivas em DNS 64

65 Registros e mensagens DNS 65 Um RR (registro de recurso) é uma tupla de quatro elementos que contém os seguintes campos: (Nome, Valor, Tipo, Sobrevida) Tipo=A nome é nome de hospedeiro valor é o seu endereço IP Tipo=NS nome é domínio (p.ex. foo.com.br) valor é endereço IP de servidor oficial de nomes para este domínio Tipo=CNAME nome é nome alternativo (alias) para algum nome canônico (verdadeiro) valor é o nome canônico Tipo=MX nome é domínio valor é nome do servidor de correio para este domínio

66 Registros e mensagens DNS 66 DNS: mensagens de pedido e resposta, ambas com o mesmo formato de cabeçalho de msg: identificação: ID de 16 bit para pedido e resposta ao pedido usam mesmo ID flags: pedido ou resposta recursão desejada recursão permitida resposta é oficial

67 Registros e mensagens DNS Inserindo registros no DNS Exemplo: acabou de cria a empresa Network Utopia Registra o nome netutopia.com.br em uma entidade registradora (e.x., Registro.br) 67 Tem de prover para a registradora os nomes e endereços IP dos servidores DNS oficiais (primário e secundário) Registradora insere dois RRs no servidor TLD.br: (netutopia.com.br, dns1.netutopia.com.br, NS) (dns1.netutopia.com.br, , A) Põe no servidor oficial um registro do tipo A para e um registro do tipo MX para netutopia.com.br Como as pessoas vão obter o endereço IP do seu site?

68 68 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

69 69 Aplicações P2P Distribuição de arquivos P2P Na distribuição de arquivos P2P, cada par pode redistribuir qualquer parte do arquivo recebido para outros pares, auxiliando, assim, o servidor no processo de distribuição. O tempo de distribuição é o tempo necessário para que todos os N pares obtenham uma cópia do arquivo. O BitTorrent é um protocolo P2P popular para distribuição de arquivos.

70 70 Aplicações P2P Distribuição de arquivos P2P Um problema ilustrativo de distribuição de arquivo

71 71 Aplicações P2P Distribuição de arquivos P2P Tempo de distribuição para arquiteturas P2P e clienteservidor

72 72 Aplicações P2P Distribuição de arquivos P2P Distribuição de arquivos com o BitTorrent

73 73 Aplicações P2P Distributed Hash Tables (DHTs) Vamos considerar como montar uma versão distribuída, P2P, de um banco de dados, que guardará os pares (chave, valor) por milhões. No sistema P2P, cada par só manterá um pequeno subconjunto da totalidade (chave, valor). Permitiremos que qualquer par consulte o banco de dados distribuído com uma chave em particular.

74 74 Aplicações P2P Distributed Hash Tables (DHTs) O banco de dados distribuído, então, localizará os pares que possuem os pares (chave, valor) correspondentes e retornará os pares chave valor ao consultante. Qualquer par também poderá inserir novos pares chavevalor no banco de dados. Esse banco de dados distribuído é considerado como uma tabela hash distribuída (DHT Distributed Hash Table). Problema: cada nó deve conter apontamentos para todos os outros nós?

75 75 Aplicações P2P Distributed Hash Tables (DHTs) O DHT circular oferece uma solução bastante elegante para reduzir a quantidade de informação sobreposta que cada par deve gerenciar.

76 76 Aplicações P2P Distributed Hash Tables (DHTs) Em sistemas P2P, um par pode vir ou ir sem aviso. Suponha que o par 5 da figura anterior saia de modo abrupto. Os dois pares precedentes ao que saiu (4 e 3) saberão que o par saiu, pois não responde mais às mensagens de ping. Os pares 4 e 3 precisam, portanto, atualizar as informações do estado de seu sucessor.

77 77 Aplicações P2P Distributed Hash Tables (DHTs) Consideraremos agora como o par 4 atualiza seu estado: 1. O par 4 substitui seu primeiro sucessor (par 5) por seu segundo sucessor (par 8). 2. O par 4, então, pergunta a seu novo primeiro sucessor (par 8) o identificador e o endereço IP de seu sucessor imediato (par 10). O par 4, então, torna o par 10 seu segundo sucessor.

78 78 Sumário 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP 2.3 Transferência de arquivos: FTP 2.4 Correio eletrônico na Internet 2.5 DNS: o serviço de diretório da Internet 2.6 Aplicações P2P 2.7 Programação de Sockets: criando aplicações de rede

79 Programação de sockets: criando aplicações de rede 79 Há dois tipos de aplicações de rede. Um deles é uma execução cuja operação é especificada em um padrão de protocolo. O outro tipo de aplicação de rede é uma aplicação de rede proprietária. Programação de sockets Usaremos a aplicação cliente-servidor simples a seguir para demonstrar a programação de socket para UDP e TCP:

80 Programação de sockets com UDP Um cliente lê uma linha de caracteres (dados) do teclado e a envia para o servidor. 2. O servidor recebe os dados e converte os caracteres para maiúsculas. 3. O servidor envia os dados modificados ao cliente. 4. O cliente recebe os dados modificados e apresenta a linha em sua tela.

81 Programação de sockets com UDP A aplicação clienteservidor usando UDP 81

82 Programação de sockets com TCP O processo TCPServer tem dois sockets 82

83 Programação de sockets com TCP A aplicação clienteservidor usando TCP 83

84 Programação de sockets 84 No livro texto podem ser encontrados os fontes em Python dos programas. No site do curso estão disponíveis as versões em: Java, Python e C. Aqui vou apresentar em C

85 Programação de sockets 85 Cliente/Servidor de repetição (echo client/server) O cliente envia uma que é repetida de volta Mensagem Cliente Servidor Mensagem

86 Programação de sockets 86 Cliente/Servidor de repetição (echo client/server) O cliente envia uma que é repetida de volta Os fontes estão no site, tanto para TCP quanto para UDP!!! Vamos executar em sala de aula!!! Cliente (tc.c/uc.c) Mensagem Mensagem Servidor (ts.c/us.c)

87 Programação de sockets 87 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

88 Programação de sockets 88 Cliente/Servidor UDP Servidor (US.C) CABEÇALHO Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

89 Programação de sockets Cliente/Servidor UDP (Servidor - cabeçalho) // No codeblocks (Windows) inclua no menu em: Project -> // Build Options...-> Linker settings -> Other link options: // -l wsock32 // Se for no Linux comente essa linha e compile no terminal: // gcc -o us us.c #define WIN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef WIN #include <winsock2.h> #else #include <sys/socket.h> #include <arpa/inet.h> #endif #define TAM_MENSAGEM 255 /* de maior tamanho */ #define PORTA_SERVIDOR_UDP

90 Programação de sockets 90 Cliente/Servidor UDP Servidor (US.C) MAIN() Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

91 Programação de sockets Cliente/Servidor UDP (Servidor main - variáveis) int main() { /* Socket */ int sock; /* Resultado das funções */ int resultado; /* Endereço do Cliente */ struct sockaddr_in endereco; /* Buffer para a recepção da string de echo */ char [TAM_MENSAGEM]; #ifdef WIN /* Início do ambiente Windows */ WORD wpackedvalues; WSADATA SocketInfo; int nlasterror, nversionminor = 1, nversionmajor = 1; wpackedvalues = (WORD)(((WORD)nVersionMinor)<< 8) (WORD)nVersionMajor; nlasterror = WSAStartup(wPackedValues, &SocketInfo); #endif 91

92 Programação de sockets 92 Cliente/Servidor UDP (Servidor main - variáveis) sock = criar_socket(porta_servidor_udp); if (sock < 0) {printf("\nerro na criação do socket!\n");return(1);} for (;;) /* Loop eterno */ { /* Recebe do cliente */ resultado = receber_(,sock,&endereco); if (resultado < 0) {printf("\nerro no recebimento da \n");return(1 /* Devolve a para o cliente */ resultado = enviar_(,sock,&endereco); if (resultado < 0) {printf("\nerro no envio da \n");return(1);} } /* não passa por aqui */ }

93 Programação de sockets 93 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

94 Programação de sockets 94 Cliente/Servidor UDP (Servidor criar_socket) int criar_socket(int porta) { int sock; /* Socket para retornar */ struct sockaddr_in endereco; /* Endereço Local */ /* Criação do socket datagrama/udp para recepção e envio de pacotes */ if ((sock = socket(pf_inet, SOCK_DGRAM, IPPROTO_UDP)) < 0) {printf("\nerro na criação do socket!\n");fflush(stdout);return(-1);} /* Se precisar de uma porta específica */ if (porta > 0) { /* Construção da estrutura de endereço local */ /* Zerar a estrutura */ memset(&endereco, 0, sizeof(endereco)); /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Qualquer interface de entrada */ endereco.sin_addr.s_addr = htonl(inaddr_any); /* Porta local */ endereco.sin_port = htons(porta); /* Instanciar o endereco local */ if (bind(sock, (struct sockaddr *) &endereco, sizeof(endereco)) < 0) {printf("\nerro no bind()!\n");fflush(stdout);return(-1);} } return(sock); } // socket(int socket_family, int socket_type, int protocol);

95 Programação de sockets 95 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

96 Programação de sockets Cliente/Servidor UDP (Servidor receber_) int receber_(char *,int sock, struct sockaddr_in *endereco) { /* Define o tamanho do endereço de recepção e envio */ int tamanho_endereco = sizeof(struct sockaddr_in); /* Limpar o buffer da */ memset((void *),(int) NULL,TAM_MENSAGEM); /* Espera pela recepção de alguma de algum cliente */ if (recvfrom(sock,, TAM_MENSAGEM - 1, 0, (struct sockaddr *) endereco, &tamanho_endereco) < 0) { printf("\nerro na recepção da \n");fflush(stdout); return(-1); } printf("\nudp Servidor: Recebi (%s)\n",);fflush(stdout); return(0); } // ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags, struct sockaddr *src_addr, socklen_t *addrlen); 96

97 Programação de sockets 97 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

98 Programação de sockets Cliente/Servidor UDP (Servidor receber_) int enviar_(char *,int sock, struct sockaddr_in *endereco) { /* Devolve o conteúdo do datagrama para o cliente */ if (sendto(sock,, strlen(), 0, (struct sockaddr *) endereco, sizeof(struct sockaddr))!= strlen()) { printf("\nerro no envio da \n"); return(-1); } printf("\nudp Servidor: Enviei (%s)\n",); return(0); } //ssize_t sendto(int sockfd, const void *buf, size_t len, int flags, const struct sockaddr *dest_addr, socklen_t addrlen); 98

99 Programação de sockets 99 Cliente/Servidor UDP Servidor (US.C) CABEÇALHO Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

100 Programação de sockets Cliente/Servidor UDP (Cliente - cabeçalho) // No codeblocks (Windows) inclua no menu em: Project -> // Build Options...-> Linker settings -> Other link options: // -l wsock32 // Se for no Linux comente essa linha e compile no terminal: // gcc -o uc uc.c #define WIN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef WIN #include <winsock2.h> #else #include <sys/socket.h> #include <arpa/inet.h> #endif #define TAM_MENSAGEM 255 /* de maior tamanho */ #define PORTA_SERVIDOR_UDP

101 Programação de sockets 101 Cliente/Servidor UDP Servidor (US.C) MAIN() Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

102 Programação de sockets Cliente/Servidor UDP (Cliente main - variáveis) int main(int argc, char **argv) { /* Socket */ int sock; /* Resultado das funções */ int resultado; /* IP do servidor */ char IP[TAM_MENSAGEM]; /* Buffer para a recepção da string de echo */ char [TAM_MENSAGEM]; #ifdef WIN /* Início do ambiente Windows */ WORD wpackedvalues; WSADATA SocketInfo; int nlasterror, nversionminor = 1, nversionmajor = 1; wpackedvalues = (WORD)(((WORD)nVersionMinor)<< 8) (WORD)nVersionMajor; nlasterror = WSAStartup(wPackedValues, &SocketInfo); #endif 102

103 Programação de sockets 103 Cliente/Servidor UDP Servidor (US.C) MAIN() Cliente (UC.C) Mensagem / IP Servidor receber_parâmetros() socket_servidor = criar_socket(8888) socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

104 Programação de sockets 104 Cliente/Servidor UDP (Cliente main - Parâmetros) /* Parâmetros - INICIO */ /* Testa se o número de parâmetros está correto */ if (argc!= 3) { printf("uso: %s <IP Servidor> <Palavra de Echo>\n", argv[0]); Return(1); /* exemplo: uc oi */ /* exemplo: uc oi estou aqui */ } memset((void *) IP,(int) NULL,TAM_MENSAGEM); strcpy(ip,argv[1]); /* IP Servidor (local ) */ memset((void *),(int) NULL,TAM_MENSAGEM); strcpy(,argv[2]); /* Mensagem */ /* Parâmetros - FINAL */

105 Programação de sockets 105 Cliente/Servidor UDP (Cliente main -cont.) } sock = criar_socket(0); if (sock < 0) {printf("\nerro na criação do socket!\n");return(1);} /* Envia para o servidor */ resultado = enviar_(,sock,ip); if (resultado < 0) {printf("\nerro no envio da \n");return(1);} /* Recebe do servidor */ resultado = receber_(sock); if (resultado < 0) {printf("\nerro no recebimento da \n");return(1);} /* Fecha o socket e retorna */ close(sock); return(0);

106 Programação de sockets 106 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

107 Programação de sockets 107 Cliente/Servidor UDP (Cliente criar_socket) int criar_socket(int porta) { int sock; /* Socket para retornar */ struct sockaddr_in endereco; /* Endereço Local */ /* Criação do socket datagrama/udp para recepção e envio de pacotes */ if ((sock = socket(pf_inet, SOCK_DGRAM, IPPROTO_UDP)) < 0) {printf("\nerro na criação do socket!\n");fflush(stdout);return(-1);} /* Se precisar de uma porta específica */ if (porta > 0) { /* Construção da estrutura de endereço local */ /* Zerar a estrutura */ memset(&endereco, 0, sizeof(endereco)); /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Qualquer interface de entrada */ endereco.sin_addr.s_addr = htonl(inaddr_any); endereco.sin_port = htons(porta); /* Porta local */ /* Instanciar o endereco local */ if (bind(sock, (struct sockaddr *) &endereco, sizeof(endereco)) < 0) {printf("\nerro no bind()!\n");fflush(stdout);return(-1);} } return(sock); }

108 Programação de sockets 108 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

109 Programação de sockets 109 Cliente/Servidor UDP (Cliente enviar_) int enviar_(char *,int sock,char *IP) { struct sockaddr_in endereco; /* Endereço do Servidor */ /* Construção da estrutura de endereço do servidor */ /* Zerar a estrutura */ memset(&endereco, 0, sizeof(endereco)); /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Endereço IP do Servidor */ endereco.sin_addr.s_addr = inet_addr(ip); /* Porta do Servidor */ endereco.sin_port = htons(porta_servidor_udp); /* Enviar para o servidor */ if (sendto(sock,, strlen(), 0, (struct sockaddr *) &endereco, sizeof(struct sockaddr_in))!= strlen()) {printf("\nerro no envio da \n");return(-1);} printf("\nudp Cliente: Enviei (%s)\n",); return(0); }

110 Programação de sockets 110 Cliente/Servidor UDP Servidor (US.C) Cliente (UC.C) Mensagem / IP Servidor socket_servidor = criar_socket(8888) receber_parâmetros() socket_cliente = criar_socket(0) Mensagem / IP Servidor receber_ (socket_servidor, ) enviar_ (socket_cliente, IP_servidor, porta_servidor, ) enviar_ (socket_servidor, IP_cliente, porta_cliente ) receber_ (socket_cliente, ) fechar_socket, socket_cliente)

111 Programação de sockets 111 Cliente/Servidor UDP (Cliente receber_) int receber_(int sock) { /* Buffer para a recepção da string de echo */ char [TAM_MENSAGEM]; struct sockaddr_in endereco; /* Endereço do Servidor */ /* Define o tamanho do endereço de recepção e envio */ int tamanho_endereco = sizeof(struct sockaddr_in); /* Limpar o buffer da */ memset((void *),(int) NULL,TAM_MENSAGEM); /* Espera pela recepção de alguma de algum cliente */ if (recvfrom(sock,, TAM_MENSAGEM - 1, 0, (struct sockaddr *) &endereco, &tamanho_endereco) < 0) { printf("\nerro na recepção da \n");fflush(stdout); return(-1); } printf("\nudp Cliente: Recebi (%s)\n",);fflush(stdout); return(0); }

112 Programação de sockets 112 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

113 Programação de sockets 113 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

114 Programação de sockets Cliente/Servidor TCP (Servidor - cabeçalho) // No codeblocks (Windows) inclua no menu em: Project -> // Build Options...-> Linker settings -> Other link options: // -l wsock32 // Se for no Linux comente essa linha e compile no terminal: // gcc -o ts ts.c #define WIN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef WIN #include <winsock2.h> #else #include <sys/socket.h> #include <arpa/inet.h> #endif #define TAM_MENSAGEM 255 /* de maior tamanho */ /* Número máximo de requisições para conexão pendentes */ #define MAXPENDING 5 #define PORTA_SERVIDOR_TCP

115 Programação de sockets Cliente/Servidor TCP (Servidor main - variáveis) int main() { /* Socket */ int sock; /* Socket da conexão com o cliente */ int socket_cliente; /* Resultado das funções */ int resultado; /* Buffer para a recepção da string de echo */ char [TAM_MENSAGEM]; #ifdef WIN /* Início do ambiente Windows */ WORD wpackedvalues; WSADATA SocketInfo; int nlasterror, nversionminor = 1, nversionmajor = 1; wpackedvalues = (WORD)(((WORD)nVersionMinor)<< 8) (WORD)nVersionMajor; nlasterror = WSAStartup(wPackedValues, &SocketInfo); #endif 115

116 Programação de sockets Cliente/Servidor TCP (Servidor main cont.) sock = criar_socket(porta_servidor_tcp); if (sock < 0){printf("\nErro na criação do socket!\n");return(1);} for (;;) /* Loop eterno */ { /* Aguarda por uma conexão e a aceita criando o socket de contato com o cliente */ socket_cliente = aceitar_conexao(sock); if (socket_cliente == 0) {printf("\nerro na conexao do socket!\n");return(1);} /* Recebe a do cliente */ resultado = receber_(,socket_cliente); if (resultado < 0) {printf("\nerro no recebimento da \n");return(1);} /* Devolve o conteúdo da para o cliente */ resultado = enviar_(,socket_cliente); if (resultado < 0) {printf("\nerro no envio da \n");return(1);} close(socket_cliente); /* Fecha o socket do cliente */ } /* não passa por aqui */ } 116

117 Programação de sockets 117 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

118 Programação de sockets 118 Cliente/Servidor TCP (Servidor criar_socket) int criar_socket(int porta) { int sock; struct sockaddr_in endereco; /* Endereço Local */ /* Criação do socket TCP para recepção e envio de pacotes */ if ((sock = socket(pf_inet, SOCK_STREAM, 0)) < 0) {printf("\nerro na criação do socket!\n");return(-1);} if (porta > 0) { /* Construção da estrutura de endereço local */ memset(&endereco, 0, sizeof(endereco)); /* Zerar a estrutura */ /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Qualquer interface de entrada */ endereco.sin_addr.s_addr = htonl(inaddr_any); endereco.sin_port = htons(porta); /* Porta local */ /* Instanciar o endereco local */ if (bind(sock, (struct sockaddr *) &endereco, sizeof(endereco)) < 0) {printf("\nerro no bind()!\n");return(-1);} /* Indica que o socket escutara as conexões */ if (listen(sock, MAXPENDING) < 0) {printf("\nerro no listen()!\n");return(-1);} } } return(sock);

119 Programação de sockets 119 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

120 Programação de sockets Cliente/Servidor TCP (Servidor aceitar_conexao) int aceitar_conexao(int sock) { int socket_cliente; struct sockaddr_in endereco; /* Endereço Local */ int tamanho_endereco; /* Define o tamanho do endereço de recepção e envio */ tamanho_endereco = sizeof(endereco); /* Aguarda pela conexão de um cliente */ if ((socket_cliente = accept(sock, (struct sockaddr *) &endereco, &tamanho_endereco)) < 0) { printf("\nerro no accept()!\n");fflush(stdout); return(0); } return(socket_cliente); } 120

121 Programação de sockets 121 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

122 Programação de sockets 122 Cliente/Servidor TCP (Servidor receber_) int receber_(char *,int sock) { /* Limpar o buffer da */ memset((void *),(int) NULL,TAM_MENSAGEM); /* Espera pela recepção de alguma do cliente conectado */ if (recv(sock,, TAM_MENSAGEM, 0) < 0) { printf("\nerro na recepção da \n"); return(-1); } printf("\ntcp Servidor: Recebi (%s)\n",); return(0); } // ssize_t recv(int sockfd, void *buf, size_t len, int flags);

123 Programação de sockets 123 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

124 Programação de sockets 124 Cliente/Servidor TCP (Servidor enviar_) int enviar_(char *,int sock) { /* Devolve o conteúdo da para o cliente */ if (send(sock,, strlen(), 0)!= strlen()) { printf("\nerro no envio da \n"); return(-1); } printf("\ntcp Servidor: Enviei (%s)\n",); return(0); } // ssize_t send(int sockfd, const void *buf, size_t len, int flags);

125 Programação de sockets 125 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

126 Programação de sockets Cliente/Servidor TCP (Cliente - cabeçalho) // No codeblocks (Windows) inclua no menu em: Project -> // Build Options...-> Linker settings -> Other link options: // -l wsock32 // Se for no Linux comente essa linha e compile no terminal: // gcc -o tc tc.c #define WIN #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #ifdef WIN #include <winsock2.h> #else #include <sys/socket.h> #include <arpa/inet.h> #endif #define TAM_MENSAGEM 255 /* de maior tamanho */ /* Número máximo de requisições para conexão pendentes */ #define PORTA_SERVIDOR_TCP

127 Programação de sockets Cliente/Servidor TCP (Cliente main - variáveis) int main(int argc, char **argv) { /* Socket */ int sock; /* Resultado das funções */ int resultado; /* Buffer para a recepção da string de echo */ char [TAM_MENSAGEM]; /* Endereço IP do Servidor */ char IP[TAM_MENSAGEM]; #ifdef WIN /* Início do ambiente Windows */ WORD wpackedvalues; WSADATA SocketInfo; int nlasterror, nversionminor = 1, nversionmajor = 1; wpackedvalues = (WORD)(((WORD)nVersionMinor)<< 8) (WORD)nVersionMajor; nlasterror = WSAStartup(wPackedValues, &SocketInfo); #endif 127

128 Programação de sockets 128 Cliente/Servidor TCP (Cliente main - parâmetros) /* Parâmetros - INICIO */ /* Testa se o número de parâmetros está correto */ if (argc!= 3) { printf("uso: %s <IP Servidor> <Palavra de Echo>\n", argv[0]); return(1);/* exemplo: tc oi */ /* exemplo: tc oi estou aqui */ } memset((void *) IP,(int) NULL,TAM_MENSAGEM); strcpy(ip,argv[1]); /* IP Servidor */ memset((void *),(int) NULL,TAM_MENSAGEM); strcpy(,argv[2]); /* Parâmetros - FINAL */

129 Programação de sockets 129 Cliente/Servidor TCP (Cliente main cont.) /* Criação do socket */ sock = criar_socket(0); if (sock < 0) {printf("\nerro na criação do socket!\n");return(1);} /* Estabelecer conexão com o servidor */ resultado = conectar_com_servidor(sock,ip,porta_servidor_tcp); if (resultado < 0) {printf("\nerro no recebimento da \n");return(1);} /* Enviar para o servidor */ resultado = enviar_(,sock); if (resultado < 0) {printf("\nerro no envio da \n");return(1);} /* Recebendo como resposta a mesma string vinda do servidor */ resultado = receber_(,sock); if (resultado < 0) {printf("\nerro no recebimento da \n");return(1);} /* Fechar socket */ close(sock); return(0); }

130 Programação de sockets 130 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

131 Programação de sockets Cliente/Servidor TCP (Cliente criar_socket) 131 int criar_socket(int porta) { int sock; struct sockaddr_in endereco; /* Endereço Local */ /* Criação do socket TCP para recepção e envio de pacotes */ if ((sock = socket(pf_inet, SOCK_STREAM, 0)) < 0) {printf("\nerro na criação do socket!\n");return(-1);} if (porta > 0) { /* Construção da estrutura de endereço local */ /* Zerar a estrutura */ memset(&endereco, 0, sizeof(endereco)); /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Qualquer interface de entrada */ endereco.sin_addr.s_addr = htonl(inaddr_any); endereco.sin_port = htons(porta); /* Porta local */ /* Instanciar o endereco local */ if (bind(sock, (struct sockaddr *) &endereco, sizeof(endereco)) < 0) {printf("\nerro no bind()!\n");return(-1);} /* Indica que o socket escutara as conexões */ if (listen(sock, MAXPENDING) < 0) {printf("\nerro no listen()!\n");return(-1);} } return(sock); }

132 Programação de sockets 132 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

133 Programação de sockets 133 Cliente/Servidor TCP (Cliente - conectar_com_servidor) int conectar_com_servidor(int sock,char *IP,int porta) { struct sockaddr_in endereco; /* Endereço Local */ /* Construção da estrutura de endereço do servidor */ /* Zerar a estrutura */ memset(&endereco, 0, sizeof(endereco)); /* Família de endereçamento da Internet */ endereco.sin_family = AF_INET; /* Endereço IP do Servidor */ endereco.sin_addr.s_addr = inet_addr(ip); /* Porta do Servidor */ endereco.sin_port = htons(porta); /* Estabelecimento da conexão com o servidor de echo */ if (connect(sock, (struct sockaddr *) &endereco, sizeof(endereco)) < 0) {printf("\nerro no connect()!\n");fflush(stdout);return(-1);} return(0); }

134 Programação de sockets 134 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

135 Programação de sockets Cliente/Servidor TCP (Cliente - enviar_) int enviar_(char *,int sock) { /* Envia o conteúdo da para o cliente */ if (send(sock,, strlen(), 0)!= strlen()) { printf("\nerro no envio da \n"); return(-1); } printf("\ntcp Cliente: Enviei (%s)\n",); return(0); } 135

136 Programação de sockets 136 Cliente/Servidor TCP Servidor (TS.C) / Cliente (TC.C) IP Servidor Receber parâmetros sock = criar_socket(0) sock = criar_socket(9999) socket_cliente = aceitar_conexao(sock) conexão conectar_com_servidor (sock,ip,9999) receber_ (,socket_cliente) enviar_ (,sock) enviar_ (,socket_cliente) receber_ (,sock)

137 Programação de sockets 137 Cliente/Servidor TCP (Cliente - receber_) int receber_(char *,int sock) { /* Limpar o buffer da */ memset((void *),(int) NULL,TAM_MENSAGEM); /* Espera pela recepção de alguma do cliente conectado*/ if (recv(sock,, TAM_MENSAGEM, 0) < 0) { printf("\nerro na recepção da \n"); return(-1); } printf("\ntcp Cliente: Recebi (%s)\n",); } return(0);

138 Programação de sockets Testem os programas! Vejam como eles funcionam! Coloquem mensagens de instrumentação no código para acompanhar os passos! 138

139 139 Capítulo 2 - FIM

Leandro Soares de Sousa (DSc.) Página: Aula 05 - desenvolvimento com sockets

Leandro Soares de Sousa (DSc.)   Página:   Aula 05 - desenvolvimento com sockets Tópicos Especiais Leandro Soares de Sousa (DSc.) e-mail: lsousa@id.uff.br Página: http://www.ic.uff.br/~lsousa Aula 05 - desenvolvimento com sockets Mais e mais ferramentas! 2 Aplicações distribuídas:

Leia mais

Leandro Soares de Sousa (DSc.) Página: Parte III

Leandro Soares de Sousa (DSc.)   Página:   Parte III Tópicos Especiais em Sistemas Computacionais Leandro Soares de Sousa (DSc.) e-mail: leandro.uff.puro@gmail.com Página: http://www.ic.uff.br/~lsousa Parte III Mais e mais ferramentas! 2 Aplicações distribuídas:

Leia mais

Capítulo 2. Camada de aplicação

Capítulo 2. Camada de aplicação INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIADO RIO GRANDE DO NORTE IFRN Disciplina: Arquitetura de redes de computadores e Tecnologia de Implementação de Redes Professor: M. Sc. Rodrigo Ronner T.

Leia mais

Redes de Computadores RES 12502

Redes de Computadores RES 12502 Instituto Federal de Santa Catarina Redes de Computadores Redes de Computadores RES 12502 2014 2 Área de Telecomunicações slide 1 O material para essas apresentações foi retirado das apresentações disponibilizadas

Leia mais

REDES DE COMPUTADORES II. TÁSSIO JOSÉ GONÇALVES GOMES

REDES DE COMPUTADORES II. TÁSSIO JOSÉ GONÇALVES GOMES REDES DE COMPUTADORES II TÁSSIO JOSÉ GONÇALVES GOMES www.tassiogoncalves.com.br tassiogoncalvesg@gmail.com APRESENTAÇÃO TÁSSIO JOSÉ GONÇALVES GOMES Mestrando em Informática pela UFAL e Bacharel em Sistemas

Leia mais

Camada de Aplicação Protocolo FTP e Correio Eletrônico

Camada de Aplicação Protocolo FTP e Correio Eletrônico e Tecnologia de Implementação de Redes 2016.1 Camada de Aplicação Protocolo FTP e Correio Eletrônico Curso Técnico Integrado em Informática Turma: INT.INF.3M Conteúdo Programático (1 o Bimestre) Comunicação

Leia mais

PTC Aula Web e HTTP 2.3 Correio eletrônico na Internet 2.4 DNS O serviço de diretório da Internet

PTC Aula Web e HTTP 2.3 Correio eletrônico na Internet 2.4 DNS O serviço de diretório da Internet PTC 3450 - Aula 07 2.2 Web e HTTP 2.3 Correio eletrônico na Internet 2.4 DNS O serviço de diretório da Internet (Kurose, p. 83-96) (Peterson, p. 239-240 e 425-444) 28/03/2017 Muitos slides adaptados com

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Aplicação HTTP FTP SMTP Slide 1 Mensagem de Requisição HTTP linha de pedido (comandos GET, POST,HEAD ) linhas de cabeçalho Carriage return, line feed indica fim da mensagem

Leia mais

Correio eletrônico. Sistema de correio da Internet composto de

Correio eletrônico. Sistema de correio da Internet composto de Correio eletrônico Sistema de correio da Internet composto de Agentes de usuário Servidores de correio ou agentes de transferência de mensagens Protocolo simples de transferência de correio (Simple Mail

Leia mais

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES

Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Redes de Computadores e Aplicações Camada de aplicação IGOR ALVES Camada de aplicação Um protocolo da camada de aplicação define como processos de uma aplicação, que funcionam em sistemas finais diferentes,

Leia mais

Servidor de s e Protocolo SMTP. Prof. MSc. Alaor José da Silva Junior

Servidor de  s e Protocolo SMTP. Prof. MSc. Alaor José da Silva Junior Servidor de E-mails e Protocolo SMTP Prof. MSc. Alaor José da Silva Junior Definições Servidor de Mensagens Um servidor de mensagens é responsável pela recepção e envio de mensagens. Dentro deste processo

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Aplicação Slide 1 Protocolo da Camada de Aplicação Tipos de mensagens trocadas; A sintaxe dos vários tipos de mensagens; A semântica dos campos; Regras para determinar quando

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Prof. Marcelo Gonçalves Rubinstein Programa de Pós-Graduação em Engenharia Eletrônica Faculdade de Engenharia Universidade do Estado do Rio de Janeiro Ementa Introdução a Redes de

Leia mais

Arquitetura TCP/IP Nível de Aplicação (HTTP, SMTP, FTP & DNS) Prof. Helber Silva

Arquitetura TCP/IP Nível de Aplicação (HTTP, SMTP, FTP & DNS) Prof. Helber Silva Arquitetura TCP/IP Nível de Aplicação (HTTP, SMTP, FTP & DNS) Prof. Helber Silva 1 Roteiro Introdução Protocolo HTTP Protocolo SMTP Protocolo FTP Protocolo DNS Conclusão 2 Introdução Desenvolvimento de

Leia mais

Protocolos da camada aplicação

Protocolos da camada aplicação Protocolos da camada aplicação Definem como processos de uma aplicação trocam mensagens Mais especificamente definem Tipos de mensagens trocadas Sintaxe dos vários tipos de mensagens Ex.: campos Semântica

Leia mais

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte

Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte Estruturas de Comunicação de Dados Aula 3 Camadas de Aplicação e Transporte Escola Maria Eduarda Ramos de Barros Curso técnico em redes de computadores Carpina - PE Roteiro Aplicações de Rede Transporte

Leia mais

Capítulo 2: Camada de Aplicação

Capítulo 2: Camada de Aplicação Capítulo 2: Camada de Aplicação Metas do capítulo: aspectos conceituais e de implementação de protocolos de aplicação em redes modelos de serviço da camada de transporte paradigma cliente servidor paradigma

Leia mais

DNS. Usa o UDP e a porta 53. Não é uma aplicação com a qual o usuário interage diretamente Complexidade nas bordas da rede

DNS. Usa o UDP e a porta 53. Não é uma aplicação com a qual o usuário interage diretamente Complexidade nas bordas da rede DNS Sistema de nomes de domínio (Domain Name System) Serviço de diretórios da Internet Nomes são mais fáceis de lembrar Descrito nas RFCs 1034, 1035 e outras DNS consiste em Banco de dados distribuído

Leia mais

Redes de Computadores. Profa. Kalinka Castelo Branco. Junho de Universidade de São Paulo. Camadas de Aplicação. Profa.

Redes de Computadores. Profa. Kalinka Castelo Branco. Junho de Universidade de São Paulo. Camadas de Aplicação. Profa. Redes de Computadores Castelo Universidade de São Paulo Junho de 2019 1 / 42 Roteiro 1 2 / 42 camada de aplicação Parte importante das aplicações, pois definem como as mensagens são trocadas: Definem tipos

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Capítulo 2 - Camada de Aplicação Prof. Jó Ueyama Março/2017 1 Cap. 2: Camada de Aplicação 2.1. Princípios de aplicações de rede 2.2. Web e HTTP 2.3. FTP 2.4. Correio eletrônico SMTP,

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Capítulo 2 - Camada de Aplicação Prof. Jó Ueyama Março/2014 1 Cap. 2: Camada de Aplicação 2.1. Princípios de aplicações de rede 2.2. Web e HTTP 2.3. FTP 2.4. Correio eletrônico SMTP,

Leia mais

Redes de Computadores

Redes de Computadores Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 16 de maio de 2017 Visão Geral 1 Introdução 2 3 Mensagem Eletrônica Os três componentes principais são: cliente de email. servidor

Leia mais

Correio eletrônico. Sistema de correio da Internet composto de

Correio eletrônico. Sistema de correio da Internet composto de Correio eletrônico Sistema de correio da Internet composto de Agentes de usuário Servidores de correio ou agentes de transferência de mensagens Protocolo simples de transferência de correio (Simple Mail

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores HTTP Prof. Thiago Dutra Agenda Definição de HTTP Hipertexto Características do HTTP O HTTP e a Web Conexões HTTP Mensagens HTTP Cookies Caches Web GET Condicional

Leia mais

Redes de Computadores

Redes de Computadores Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 18 de maio de 2017 Visão Geral 1 Visão Geral 2 3 4 Web e o HTTP Relembrando rapidamente, página web é construída com objetos um objeto

Leia mais

PTC Aula Princípios das aplicações de rede 2.2 A Web e o HTTP. (Kurose, p ) (Peterson, p ) 21/03/2017

PTC Aula Princípios das aplicações de rede 2.2 A Web e o HTTP. (Kurose, p ) (Peterson, p ) 21/03/2017 PTC 3450 - Aula 05 2.1 Princípios das aplicações de rede 2.2 A Web e o HTTP (Kurose, p. 62-73) (Peterson, p. 425-444) 21/03/2017 Muitos slides adaptados com autorização de J.F Kurose and K.W. Ross, All

Leia mais

Transferência de arquivos (FTP)

Transferência de arquivos (FTP) Transferência de arquivos (FTP) Protocolo de transferência de arquivos (File Transfer Protocol) Descrito na RFC 959 Usa o TCP, a porta 21 (conexão de controle) e a porta 20 (conexão de dados) Em uma mesma

Leia mais

Redes de Computadores I. Sockets e Arquitetura HTTP

Redes de Computadores I. Sockets e Arquitetura HTTP v.2016 Redes de Computadores I Sockets e Arquitetura HTTP Prof. Ricardo Couto A. da Rocha rcarocha@ufg.br UFG Regional Catalão HTTP - O Servidor Web Prof. Dr. Ricardo Couto Antunes da Rocha - Depto. de

Leia mais

Redes de Computadores. Protocolos de Internet

Redes de Computadores. Protocolos de Internet Redes de Computadores Protocolos de Internet Gustavo Reis gustavo.reis@ifsudestemg.edu.br O que é a Internet? Milhões de elementos de computação interligados Hospedeiros = sistemas finais Executando aplicações

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Prof. José Augusto Suruagy Monteiro suruagy@unifacs.br www.nuperc.unifacs.br/suruagy/redes 2a: Camada de Aplicação 1 Livro Texto: Kurose, J., Ross, K., Computer Networking: A Top-Down

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES Prof. Esp. Fabiano Taguchi fabianotaguchi@gmail.com http://fabianotaguchi.wordpress.com SUÍTE TCP 1 Camada de aplicação Protocolo Hypertext Transfer Protocol 2 HTTP Uma página WWW

Leia mais

FTP: protocolo de transferência de arquivos

FTP: protocolo de transferência de arquivos FTP: protocolo de transferência de arquivos no hospedeiro interface cliente de FTP FTP sistema de arquivo local transf. de arquivos servidor FTP sistema de arquivo remoto transfere arquivo de/para hospedeiro

Leia mais

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão

FUNDAMENTOS DE REDES DE COMPUTADORES Unidade 5 Camada de Transporte e Aplicação. Luiz Leão Unidade 5 Camada de Transporte e Aplicação Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 5.1 Protocolo UDP 5.2 Protocolo TCP 5.3 Principias Protocolos de Aplicação 5.3.1 SMTP

Leia mais

Mônica Oliveira Primo de Lima Edervan Soares Oliveira TRABALHO SOBRE PROTOCOLO HTTP

Mônica Oliveira Primo de Lima Edervan Soares Oliveira TRABALHO SOBRE PROTOCOLO HTTP Mônica Oliveira Primo de Lima Edervan Soares Oliveira TRABALHO SOBRE PROTOCOLO HTTP 1. FORMATO DA MENSAGEM HTTP Assim como todo protocolo, o HTTP tem possui definições de como devem ser as mensagens. Existem

Leia mais

Camada de Aplicação da Arquitetura TCP/IP

Camada de Aplicação da Arquitetura TCP/IP Arquitetura de Redes de Computadores e Tecnologia de Implementação de Redes 2016.1 Camada de Aplicação da Arquitetura TCP/IP Curso Técnico Integrado em Informática Turma: INT.INF.3M Arquitetura de Redes

Leia mais

Aula 6. Disciplina: IF66B Redes de Computadores 2018/1 Universidade Tecnológica Federal do Paraná Câmpus Curitiba. Aula 6. Prof. Daniel F.

Aula 6. Disciplina: IF66B Redes de Computadores 2018/1 Universidade Tecnológica Federal do Paraná Câmpus Curitiba. Aula 6. Prof. Daniel F. Camadas de Sessão, Apresentação e Disciplina: IF66B Redes de Computadores 2018/1 Universidade Tecnológica Federal do Paraná Câmpus Curitiba 1 / 43 Roteiro 1 2 3 4 5 2 / 43 Modelo OSI Sessão Cuida dos processos

Leia mais

Transferência de Arquivo: Protocolo FTP

Transferência de Arquivo: Protocolo FTP Para iniciar uma sessão FTP (File Transfer Protocol) típica e acessar uma conta, o usuário deve fornecer uma identificação e uma senha; Após a identificação o usuário pode realizar operações de transferência

Leia mais

Correio Eletrônico e os protocolos SMTP, POP3 e IMAP

Correio Eletrônico e os protocolos SMTP, POP3 e IMAP Correio Eletrônico e os protocolos, POP3 e IMAP Thiago Cunha Pinto Correio eletrônico Três componentes principais: s do servidores de Simple Mail Transfer Protocol: Agente do também chamado leitor de redigir,

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores SMTP Prof. Thiago Dutra Agenda n Definição de SMTP n Correio Eletrônico n Características do SMTP n Problemas do SMTP n Operação Básica do SMTP n Mensagens

Leia mais

Programação de Aplicações em. Rede usando Sockets

Programação de Aplicações em. Rede usando Sockets Programação de Aplicações em Objetivos: Rede usando Sockets Conhecer a API Sockets, que permite a programas de aplicação comunicar-se através da Internet Aplicações e Protocolo de Aplicação Aplicação:

Leia mais

SMTP Simple Mail Transport Protocol

SMTP Simple Mail Transport Protocol Simple Mail Transport Protocol Carlos Gustavo A. da Rocha Introdução Correio eletrônico existe desde o início da Internet Uma das aplicações mais populares e de maior sucesso Com o tempo ficou mais elaborado

Leia mais

AULA 3 - REDES. Prof. Pedro Braconnot Velloso

AULA 3 - REDES. Prof. Pedro Braconnot Velloso AULA 3 - REDES Prof. Pedro Braconnot Velloso Resumo da última aula Começo da Internet Princípios básicos Comutação pacotes x circuitos Protocolos Arquitetura em camadas Arquitetura TCP/IP APLICAÇÃO TRANSPORTE

Leia mais

PTC Aula A Web e o HTTP. (Kurose, p ) (Peterson, p ) 24/03/2017

PTC Aula A Web e o HTTP. (Kurose, p ) (Peterson, p ) 24/03/2017 PTC 3450 - Aula 06 2.2 A Web e o HTTP (Kurose, p. 73-83) (Peterson, p. 425-444) 24/03/2017 Muitos slides adaptados com autorização de J.F Kurose and K.W. Ross, All Rights Reserved Capítulo 2: conteúdo

Leia mais

Capítulo 2 Camada de Aplicação

Capítulo 2 Camada de Aplicação Redes de Computadores DCC/UFJ Capítulo 2 Camada de Aplicação Material fortemente baseado nos slides do livro: Computer Networking: A Top-Down Approach Featuring the Internet. Os slides foram disponibilizados

Leia mais

Servidor de E-mails e Protocolo SMTP. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes

Servidor de E-mails e Protocolo SMTP. Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes Campus Cachoeiro Curso Técnico em Informática Servidor de E-mails e Protocolo SMTP Professor: João Paulo de Brito Gonçalves Disciplina: Serviços de Redes Definições Servidor de Mensagens Um servidor de

Leia mais

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio

Camada de Aplicação. Redes Industriais Prof. Rone Ilídio Camada de Aplicação Redes Industriais Prof. Rone Ilídio Itens do Livro Redes de Computadores e a Internet, Kurose 5ª edição 2 Camada de Aplicação 2.1 Princípios de aplicações de rede 2.1.1 Arquiteturas

Leia mais

Construção de Sites. Introdução ao Universo Web. Prof. Nícolas Trigo

Construção de Sites. Introdução ao Universo Web. Prof. Nícolas Trigo Construção de Sites Introdução ao Universo Web Prof. Nícolas Trigo trigo.nicolas@gmail.com CONCEITOS BÁSICOS Internet à conglomerado de redes de computadores que permite o acesso a informações e a transferência

Leia mais

INTRODUÇÃO À INTERNET E À WORLD WIDE WEB

INTRODUÇÃO À INTERNET E À WORLD WIDE WEB INTRODUÇÃO À INTERNET E À WORLD WIDE WEB CURSO TÉCNICO DE INFORMÁTICA MODALIDADE SUBSEQÜENTE DESENVOLVIMENTO WEB I PROF. ALEXANDRO DOS SANTOS SILVA 1 1 SUMÁRIO Conceitos básicos Histórico Principais modelos

Leia mais

Redes de Computadores I

Redes de Computadores I UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO DEPARTAMENTO DE CIÊNCIAS EXATAS E NATURAIS CURSO DE CIÊNCIA DA COMPUTAÇÃO Redes de Computadores I Nível de Aplicação (HTTP) Prof. Helcio Wagner da Silva. p.1/24

Leia mais

Protocolos e Serviços de Redes

Protocolos e Serviços de Redes Protocolos e Serviços de Redes Redes de Computadores Charles Tim Batista Garrocho Instituto Federal de São Paulo IFSP Campus Campos do Jordão garrocho.ifspcjo.edu.br/rdc charles.garrocho@ifsp.edu.br Técnico

Leia mais

Protocolos e Serviços de Redes

Protocolos e Serviços de Redes Protocolos e Serviços de Redes Redes de Computadores Charles Tim Batista Garrocho Instituto Federal de Minas Gerais IFMG Campus Ouro Branco garrocho.github.io charles.garrocho@ifmg.edu.br Sistemas de Informação

Leia mais

Redes de Computadores Aula 03 - Camada de Aplicação

Redes de Computadores Aula 03 - Camada de Aplicação Instituto Federal de Santa Catarina Redes de Computadores Aula 03 - Camada de Aplicação Prof. Tomás Grimm! tomas.grimm@ifsc.edu.br!1 2005 by Pearson Education Camada de aplicação 2.1 Princípios de aplicações

Leia mais

Capítulo 7. A camada de aplicação

Capítulo 7. A camada de aplicação Capítulo 7 A camada de aplicação slide 1 2011 Pearson Prentice Hall. Todos os direitos reservados. Computer Networks, Fifth Edition by Andrew Tanenbaum and David Wetherall, Pearson Education-Prentice Hall,

Leia mais

REDES DE COMPUTADORES. Prof. Evandro Cantú

REDES DE COMPUTADORES. Prof. Evandro Cantú REDES DE COMPUTADORES Prof. Evandro Cantú Prof. Evandro Cantú, evandro.cantu@ifpr.edu.br Slides adaptados de J. Kurose & K. Ross 2 Curso de Capacitação Intelbras Redes Computadores Maio 2007 Camada de

Leia mais

Aula de Socket. Rafael De Tommaso do Valle

Aula de Socket. Rafael De Tommaso do Valle Aula de Socket Rafael De Tommaso do Valle 20 de agosto de 2009 Socket O que é um socket? É uma interface com qual processos em diferentes hosts se comunicam através da rede; Também chamado de interface

Leia mais

Introdução. Caixa postal (mailbox) Componentes do sistema de correio eletrônico. Correio eletrônico (SMTP, POP e IMAP)

Introdução. Caixa postal (mailbox) Componentes do sistema de correio eletrônico. Correio eletrônico (SMTP, POP e IMAP) Introdução Inst tituto de Info ormátic ca - UF FRGS Rd Redes de Computadores td Correio eletrônico (, POP e IMAP) Trabalho sob a Licença Atribuição-SemDerivações-SemDerivados 3.0 Brasil Creative Commons.

Leia mais

Capítulo 7. A camada de aplicação

Capítulo 7. A camada de aplicação Capítulo 7 A camada de aplicação slide 1 slide 2 DNS Sistema de Nomes de Domínio O espaço de nomes DNS Registros de recursos de domínio Servidores de nome slide 3 O espaço de nomes DNS (1) Parte do espaço

Leia mais

Aplicação de rede. GA-027 Redes de Computadores. Camada de Aplicação. Artur Ziviani LNCC/MCT. Execução nos sistemas finais com comunicação via rede

Aplicação de rede. GA-027 Redes de Computadores. Camada de Aplicação. Artur Ziviani LNCC/MCT. Execução nos sistemas finais com comunicação via rede GA-027 Redes de Computadores Camada de Aplicação Artur Ziviani LNCC/MCT Aplicação de rede Execução nos sistemas finais com comunicação via rede Processos no SO usando infra-estrutura de comunição Ex: software

Leia mais

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: REDES DE COMPUTADORES I PROFESSOR: Valdemir Junior

UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: REDES DE COMPUTADORES I PROFESSOR: Valdemir Junior UNIVERSIDADE FEDERAL DO PIAUÍ COLÉGIO TÉCNICO DE TERESINA-TÉCNICO EM INFORMÁTICA DISCIPLINA: REDES DE COMPUTADORES I PROFESSOR: Valdemir Junior CAMADA DE APLICAÇÃO Alyson Pereira Barbosa Erisvaldo dos

Leia mais

Capítulo 11 Sumário. Serviço de Correio Eletrônico - SMTP e POP3. Serviço de Páginas - Protocolo HTTP, Linguagem HTML

Capítulo 11 Sumário. Serviço de Correio Eletrônico - SMTP e POP3. Serviço de Páginas - Protocolo HTTP, Linguagem HTML 1 Capítulo 11 Sumário Serviço de Nomes de Domínios DNS Serviço de Acesso Remoto - TELNET Serviço de Correio Eletrônico - SMTP e POP3 Serviço de Páginas - Protocolo HTTP, Linguagem HTML Serviço de Transferência

Leia mais

Redes de Computadores

Redes de Computadores Prof. Universidade Federal de Mato Grosso do Sul brivaldo@facom.ufms.br 16 de maio de 2017 Visão Geral 1 Camada de Aplicação 2 3 4 Camada de Aplicação Ao analisar esta camada devemos focar em alguns objetivos:

Leia mais

Camada de Aplicação. Prof. Arliones Hoeller.

Camada de Aplicação. Prof. Arliones Hoeller. Camada de Aplicação arliones.hoeller@ifsc.edu.br 1 Camada de aplicação 2.1 Princípios de aplicações de rede 2.2 Web e HTTP 2.3 FTP 2.4 Correio electrônico SMTP, POP3, IMAP 2.5 DNS 2.6 Compartilhamento

Leia mais

INTRODUÇÃO ÀS REDES DE COMPUTADORES

INTRODUÇÃO ÀS REDES DE COMPUTADORES INTRODUÇÃO ÀS REDES DE COMPUTADORES CAMADA DE APLICAÇÃO Teresa Vazão 2 INTRODUÇÃO Internet para todos.. 1979 Tim Burners Lee (invesngador do CERN): Inventor do conceito de navegação por hyper- texto 25

Leia mais

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão

Programação com Sockets TCP e UDP - Cliente. Gustavo Leitão Programação com Sockets TCP e UDP - Cliente Gustavo Leitão 5/24/2010 INTRODUÇÃO Objetivo da Aula OBJETIVO DA AULA Apresentar ao aluno conceitos e prática em sockets INTRODUÇÃO O que é um socket? INTRODUÇÃO

Leia mais

Servidor de E-mails e Protocolo SMTP

Servidor de E-mails e Protocolo SMTP Campus Cachoeiro Curso Técnico em Informática Servidor E-mails e Protocolo SMTP Professor: João Paulo Brito Gonçalves Disciplina: Serviços Res Definições Servidor Mensagens Um servidor mensagens é responsável

Leia mais

Redes de Computadores

Redes de Computadores Introdução Redes de Computadores HyperText Transfer Protocol Aula 25 Serviço world wide web Aplicação cliente-servidor Originalmente visando publicação de documentos (servidor) e a recuperação e visualização

Leia mais

Teleprocessamento e Redes

Teleprocessamento e Redes Teleprocessamento e Redes Aula 21: 06 de julho de 2010 1 2 3 (RFC 959) Sumário Aplicação de transferência de arquivos de/para um host remoto O usuário deve prover login/senha O usa duas conexões TCP em

Leia mais

SMTP x POP3, TCP X UDP, FTP, HTTP RESUMO

SMTP x POP3, TCP X UDP, FTP, HTTP RESUMO SMTP x POP3, TCP X UDP, FTP, HTTP Celso Cardoso Neto Márcia Carvalho de Almeida Lucas de Oliveira Raposo RESUMO A pesquisa aborda os significados, conceitos, características, funcionamento e emprego associados

Leia mais

REDES DE COMPUTADORES

REDES DE COMPUTADORES REDES DE COMPUTADORES Prof. Esp. Fabiano Taguchi fabianotaguchi@gmail.com http://fabianotaguchi.wordpress.com BENEFÍCIOS MODELO OSI Menor complexidade; Interfaces padronizadas; Interoperabilidade entre

Leia mais

Exercício Programa Mini Web Server

Exercício Programa Mini Web Server 2004-2017 Volnys Bernal 1 Exercício Programa PSI 2653 Meios Eletrônicos Interativos I 2004-2017 Volnys Bernal 2 Objetivo Desenvolvimento de um programa servidor WEB Composição do grupo 4 pessoas (obrigatório)

Leia mais

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP)

Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) II - UFRGS Programação em Sockets visando verificar a diferença entre transmissão confiável (TCP) e não confiável (UDP) Valter Roesler Universidade Federal do Rio Grande do Sul (UFRGS) Instituto de Informática

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Resumo

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2013 Volnys Bernal 1 2004-2013 Volnys Bernal 2 Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys 2004-2013 Volnys Bernal 3 2004-2013 Volnys Bernal 4 Lado Cliente Lado Servidor sd1

Leia mais

Redes de Computadores

Redes de Computadores Elmano R. Cavalcanti Redes de Computadores Camada de Aplicação elmano.cavalcanti@garanhuns.ifpe.edu.br http://elmano.tk Esta apresentação contém slides fornecidos pela Editora Pearson como material de

Leia mais

Redes de Computadores. Prof. MSc André Y. Kusumoto

Redes de Computadores. Prof. MSc André Y. Kusumoto Redes de Computadores Prof. MSc André Y. Kusumoto andrekusumoto.unip@gmail.com Nível de Aplicação Responsável por interagir com os níveis inferiores de uma arquitetura de protocolos de forma a disponibilizar

Leia mais

INTERNET. A figura mostra os inúmeros backbones existentes. São cabos de conexão de altíssima largura de banda que unem o planeta em uma rede mundial.

INTERNET. A figura mostra os inúmeros backbones existentes. São cabos de conexão de altíssima largura de banda que unem o planeta em uma rede mundial. INTERNET A figura mostra os inúmeros backbones existentes. São cabos de conexão de altíssima largura de banda que unem o planeta em uma rede mundial. DNS (Domain Name System) Sistema de Nome de Domínio

Leia mais

Camada de aplicação. Camada de aplicação

Camada de aplicação. Camada de aplicação Camada de aplicação Camada de aplicação Nossos objetivos: Conceitual, aspectos de implementação de protocolos de aplicação de redes Modelos de serviço da camada de transporte Paradigma cliente-servidor

Leia mais

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP

Servidor UDP Volnys Borges Bernal Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 1 Servidor UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2017 Volnys Bernal 2 Resumo das Chamadas UDP 2004-2017

Leia mais

Por Fernando Koyanagi

Por Fernando Koyanagi Por Fernando Koyanagi Recursos usados 18 jumpers fêmea x fêmea Módulo de 16 relés com optoacoplador Raspberry Pi 3 Rede interna (TCP/IP) Intenção dessa aula 1. Iniciar automação com Raspberry Pi PI 2.

Leia mais

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos

Sumário. Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos Sumário Introdução ao TCP/IP e à Internet API Sockets para comunicação via redes Exemplos A Internet: Endereços Cada computador ligado à Internet tem um endereço único que o distingue dos restantes (endereço

Leia mais

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP

Servidor UDP. Programação Sockets Volnys Bernal. Servidor UDP Resumo das Chamadas UDP. Resumo de Chamadas UDP. Resumo de Chamadas UDP 2004-2015 Volnys Bernal 1 2004-2015 Volnys Bernal 2 Resumo das Chamadas UDP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP 2004-2015 Volnys Bernal

Leia mais

Fernando M. V. Ramos, RC (LEI), TP02. HTTP. Redes de Computadores

Fernando M. V. Ramos, RC (LEI), TP02. HTTP. Redes de Computadores TP02. HTTP Redes de Computadores Objetivos Uma introdução ao protocolo HTTP Um olhar com algum detalhe para dentro do protocolo Noções básicas Uma página web consiste num conjunto de objetos Ficheiros

Leia mais

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP

Servidor TCP. Programação Sockets. (c) Volnys Bernal. Servidor TCP Resumo das Chamadas TCP. Resumo das Chamadas TCP. Resumo das Chamadas TCP 2004-2016 Volnys Bernal 1 2004-2016 Volnys Bernal 2 Resumo das Chamadas TCP Volnys Borges Bernal volnys@lsi.usp.br Departamento de Sistemas Eletrônicos Escola Politécnica da USP Resumo das Chamadas TCP

Leia mais

Redes de Computadores e Aplicações

Redes de Computadores e Aplicações Instituto Federal de Educação, Ciência e Tecnologia do Rio Grande do Norte Campus Currais Novos Redes de Computadores e Aplicações Aula 13 - Camada de Aplicação Visão Geral Prof. Diego Pereira

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Sockets, FTP, Correio Eletrônico, P2P Prof. Jó Ueyama Março/2014 1 Capítulo 2.7 e 2.8 - Camada de Aplicação Programação de sockets 2 Programação de Sockets Objetivo: Socket: aprender

Leia mais

Disciplina: Redes de Computadores. Nível de Aplicação DNS, Correio Eletrônico, WWW

Disciplina: Redes de Computadores. Nível de Aplicação DNS, Correio Eletrônico, WWW Departamento de Ciência da Computação - UFF Disciplina: Nível de Aplicação DNS, Correio Eletrônico, WWW Profa. Débora Muchaluat Saade debora@midiacom.uff.br Protocolos de Nível de Aplicação Aplicação Transporte

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP. 2002-2004 Volnys Bernal 1 2002-2004 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada connect() Chamada send() Chamada sendto()

Leia mais

HYPERTEXT TRANSFER PROTOCOL

HYPERTEXT TRANSFER PROTOCOL REDES DE COMPUTADORES Prof. Esp. Fabiano Taguchi http://fabianotaguchi.wordpress.com fabianotaguchi@gmail.com HYPERTEXT TRANSFER PROTOCOL 1 HTTP Uma página WWW é composta de objetos e endereçado por uma

Leia mais

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket()

Cliente TCP. Programação sockets. Agenda. Cliente TCP. Chamadas sockets para TCP. Chamada socket() Chamada socket() 2002-2009 Volnys Bernal 1 2002-2009 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo das chamadas sockets para TCP Chamada close() 2002-2009 Volnys Bernal

Leia mais

Introdução. Página web. Tipos de documentos web. HyperText Transfer Protocol. Rd Redes de Computadores. Aula 27

Introdução. Página web. Tipos de documentos web. HyperText Transfer Protocol. Rd Redes de Computadores. Aula 27 Introdução Inst tituto de Info ormátic ca - UF FRGS Rd Redes de Computadores td HyperText Transfer Protocol Aula 27 Serviço world wide web Aplicação cliente-servidor Publicação de documentos (servidor)

Leia mais

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO

CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DO RIO GRANDE DO NORTE DEPARTAMENTO ACADÊMICO DE TECNOLOGIA DA INFORMAÇÃO http:// www.cefetrn.br/datinf ARQUITETURA TCP/IP Nome: Curso: Turma: LISTA DE EXERCÍCIO

Leia mais

Informática. Conceitos Gerais. Professor Márcio Hunecke.

Informática.   Conceitos Gerais. Professor Márcio Hunecke. Informática E-mail: Conceitos Gerais Professor Márcio Hunecke www.acasadoconcurseiro.com.br Informática E-MAIL: CONCEITOS GERAIS O correio eletrônico tornou-se popular devido a sua grande facilidade em

Leia mais

Redes de Computadores

Redes de Computadores Redes de Computadores Camada de Transporte Parte I Prof. Thiago Dutra Agenda n Parte I n Introdução n Protocolos de Transporte Internet n Multiplexação e n UDP n Parte II n TCP

Leia mais

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP.

Cliente UDP. Programação sockets. Agenda. Cliente UDP. Resumo de Chamadas UDP. Chamadas UDP. Resumo de Chamadas UDP. 2002-2013 Volnys Bernal 1 2002-2013 Volnys Bernal 2 Agenda Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Resumo de Chamadas UDP Chamada Chamada Chamada 2002-2013 Volnys Bernal 3

Leia mais

Firewall - Inspeção com estado. (Stateful Inspection)

Firewall - Inspeção com estado. (Stateful Inspection) Proxy e FIREWALL Firewall - Inspeção com estado. (Stateful Inspection) As primeiras gerações de firewall eram ditos "stateless". Cada pacote é analisado individualmente, sem levar em conta pacotes anteriores

Leia mais

Escola Politécnica da Universidade de São Paulo

Escola Politécnica da Universidade de São Paulo Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Telecomunicações e Controle PTC3450 - Redes de Comunicação - 1o semestre 2017 Lista de Exercícios Suplementares 1 1) (2014-P1)

Leia mais

PTC Aula DNS O serviço de diretório da Internet. (Kurose, p ) (Peterson, p ) 31/03/2016

PTC Aula DNS O serviço de diretório da Internet. (Kurose, p ) (Peterson, p ) 31/03/2016 PTC 3450 - Aula 08 2.4 DNS O serviço de diretório da Internet (Kurose, p. 95-106) (Peterson, p. 239-242) 31/03/2016 Muitos slides adaptados com autorização de J.F Kurose and K.W. Ross, All Rights Reserved

Leia mais

Capítulo 2: Camada de Aplicação

Capítulo 2: Camada de Aplicação Capítulo 2: Camada de Aplicação Nossos objetivos: conceitual, aspectos de implementação de protocolos de aplicação para redes paradigma clienteservidor modelos de serviço aprenda sobre protocolos examinando

Leia mais

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI)

Protocolo HTTP. - Características. - Modelo Requisição/Resposta. - Common Gateway Interface (CGI) Protocolo HTTP - Características - Modelo Requisição/Resposta - Common Gateway Interface (CGI) Características Hypertext Transfer Protocol (HTTP) Protocolo utilizado para transferir documentos de hipertexto

Leia mais