Faculdade Senac Pelotas Curso Superior em Tecnologia de Redes de Computadores Unidade Curricular - Redes de Computadores II Prof. Eduardo Maroñas Monks Camada de Transporte: Portas, Sockets, Aplicações em Rede Sumário Endereçamento das aplicações Sockets Aplicações com sockets Estudo de Casos Referências Bibliográficas 2 Formas de endereçamento Portas e Sockets: O uso de Portas e Sockets como forma de endereçamento possibilita a uniformidade e a exclusividade da identidade da comunicação. Para determinar qual processo em um determinado host se comunica com determinado processo em um host remoto e com qual protocolo, são usadas Portas e Sockets com os protocolos UDP e TCP. 3 Formas de endereçamento Portas Conhecidas (Números 0 a 1023) - Esses números estão ● reservados para serviços e aplicações. Eles são comumente usados para aplicações como o HTTP (servidor web) POP3/SMTP (servidor de e-mail) e Telnet. Através da definição destas portas conhecidas para aplicações de servidor, aplicações de clientes podem ser programados para solicitar uma conexão com essa porta específica e seu serviço associado. •Portas Registradas (Números 1024 a 49151) - Estes números de portas são designados para processos ou aplicações de usuário. Estes processos são principalmente aplicações individuais que um usuário escolheu para instalar em vez de aplicações comuns que receberiam uma Porta Conhecida. Quando não usadas para um recurso de servidor, estas portas também podem ser dinamicamente selecionadas por um cliente como sua porta de origem. •Portas Dinâmicas ou Privadas (Números 49152 a 65535) - Elas são geralmente designadas dinamicamente a aplicações de cliente quando se inicia uma conexão. Não é muito comum um cliente se conectar a um serviço usando uma Porta Dinâmica ou Privada (embora alguns programas de compartilhamento de arquivos peer-to-peer o façam). 4 Formas de endereçamento Tipos de Portas: É possível o uso de uma mesmo número de porta para diferentes protocolos. E também é possível o uso de protocolos diferentes para um mesmo serviço, no mesmo número de porta. Exemplo: DNS -> TCP (53) DNS -> UDP (53) 5 Sockets Sockets: API (Application Programming Interface) para comunicação com os protocolos. Conceito introduzido no sistema operacional BSD 4.2 Padrão de fato para programação de aplicações em rede Possibilita a comunicação entre processos em sistemas operacionais e arquiteturas de hardware diferentes 6 Sockets O que é um Socket? É um manipulador de arquivos usado por um processo para requisitar serviços de rede do sistema operacional. Exemplo da declaração de um socket, para TCP, em Python: serversocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 7 Sockets Forma de endereçamento de um socket: Endereço: <protocolo, endereço local, processo local> Exemplo: <tcp, 192.168.22.33, 12345> 8 Sockets Conceitos relacionados a sockets: Conversação: comunicação entre dois processos; Associação: tupla com 5 campos que define completamente a conexão entre 2 processos: <protocolo,endereço local, processo local, endereço externo, processo externo> Exemplos: <tcp, 193.44.234.3, 1500, 193.44.234.5, 21> <udp, 203.44.24.3, 1500, 191.42.2.5, 53> 9 Sockets TCP Sockets: Provê comunicação de fluxo de bytes de forma bi-direcional entre dois processos; A aplicação não precisa gerenciar este fluxo, pois o gerenciamento é feito pelo protocolo TCP; Identificação: <tcp, endereço IP, Número da Porta> A comunicação entre dois processos, possui identificação única: <tcp, IP local, Porta Local, IP Remoto, Porta Remota> Obs.: Um servidor tem a capacidade de gerenciar múltiplas conversações por uma única porta (multiplexação). 10 Aplicações em Rede Requisitos: O mecanismo de sockets deve estar disponível no sistema operacional MS Windows, Linux, FreeBSD, MacOS, Android… A linguagem de programação deverá possuir uma biblioteca de sockets C, Java, Python, Perl, PHP, Ruby, C#, .NET… Uso da primitivas de comunicação SEND, RECEIVE, OPEN, CLOSE 11 Aplicações em Rede Requisitos: A aplicação deverá utilizar um socket de acordo com o protocolo TCP – Fluxo de bytes (STREAM) UDP – Datagrama (DATAGRAM) Ao se definir o tipo de socket, TCP ou UDP, a comunicação entre aplicações em cada host obedecerão as funcionalidades do protocolo da camada de transporte Em caso de uso do UDP, não haverá garantias de entrega, controle de fluxo ou ordenação dos dados Neste caso, estes controles deverão ser implementados na aplicação 12 Aplicações em Rede Requisitos: O significado dos dados transportados pelo UDP ou TCP, deverá ser garantido por um protocolo da camada de aplicação Exemplo: HTTP 13 Aplicações em Rede Exemplo de aplicação: Conexão com TCP a um servidor de HTTP (Python) Servidor TCP simples (Python) 14 Aplicações em Rede Servidor de Eco (TCP) Cliente de Eco (TCP) 15 Aplicações em Rede Servidor de Eco (UDP) Cliente de Eco (UDP) 16 Estudos de Caso Jogos em Rede DemonStar (http://www.mking.com/demonstar/index.html) Jogo da Velha em Rede (http://www.cs.ucr.edu/~ddreier/p2.html) Little Fighter 2 (http://lf2.net/) 17 Bibliografia TCP/IP Tutorial and Technical Overview – RODRIGUEZ, Adolfo; GATRELL, John; KARAS, John; PESCHKE, Roland - IBM Red Books – 2006 – Disponível em: http:// ibm.com /redbooks FreeBSD Handkbook – disponível em: http://www.freebsd.org/doc/en/books/developershandbook/book.html#SOCKETS GOERZEn, John. Foundations of Python Network Programming. Apress, 2004. 18