Desenvolvimento de Produtos Mecatrônicos

Documentos relacionados
SEM 544 Desenvolvimento de Produtos Mecatrônicos

Camada de Transporte Protocolos TCP e UDP

Arquitetura TCP/IP - Internet Protocolo IP Protocolo ICMP

Modelo de Referência OSI

Modelo OSI x Modelo TCP/IP

Resumo P2. Internet e Arquitetura TCP/IP

Protocolos de Rede. Protocolos em camadas

Aula de Socket. Rafael De Tommaso do Valle

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

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

Sockets - Conceitos Básicos. COMUNICAÇÃO ENTRE PROCESSOS Sockets. Conceitos Básicos. Tipos de Sockets

PROTOCOLOS DE COMUNICAÇÃO

Nível de Transporte Portas, Protocolos UDP e TCP

Sistemas Distribuídos

INFO ARQ REDES. Prova 2 Bimestre. Obs: Questões RASURADAS são consideradas como ERRADAS GABARITO

Protocolos de Interligação de Redes Locais e a Distância Protocolos de Transporte. Thiago Leite

Camada de Rede Fundamentos e Protocolos. 6/7/18 Organizado por Bruno Pereira Pontes brunopontes.com.br

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

Redes de Computadores

Redes de Computadores. Protocolos TCP/IP

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

Comunicação entre processos. Sistema centralizado

Redes de Computadores e Aplicações

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

Modelos de referência de arquiteturas de redes: OSI e TCP/IP Profsº Luciano / Roberto

Funcionalidades da camada de rede

Redes de Computadores Nível de Rede

Camada de rede. Introdução às Redes de Computadores

UNIVERSIDADE DA BEIRA INTERIOR Faculdade de Engenharia Departamento de Informática

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

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

REDES DE COMPUTADORES Prof. Ricardo Rodrigues Barcelar

REDES DE COMPUTADORES

Protocolos de Interligação de Redes Locais e a Distância Camada de Transporte

Redes de Computadores

Sistemas Operacionais - Básico e Avançado - Prof. Celso Maciel da Costa Mestrado em Informática - PUCRS

MODELOS DE REFERENCIA OSI TCP/IP

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

Jéfer Benedett Dörr

Introdução à Programação Sockets

Capítulo 5 Sumário. Formato das Mensagens ICMP. Tipos de Mensagens ICMP

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

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

Capítulo 4 - Sumário

Aula Prática. Comunicação em SOCKTS. Disciplina: INF01151

Resumo. Redes de Computadores. História da Internet. História da Internet. História da Internet. História da Internet

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

Prof. Samuel Henrique Bucke Brito

Parte 3: Camada de Rede

Protocolos TCP e UDP. Protocolo TCP. Protocolo TCP. A necessidade de uma comunicação segura: Transmission Control Protocol

Arquitetura de Redes de Computadores

REDES DE COMPUTADORES

Modelo Cliente/Servidor e Introdução a Sockets

Modelo em Camadas Arquitetura TCP/IP/Ethernet. Edgard Jamhour

Redes de Computadores

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

REDES DE COMPUTADORES

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

Redes de Computadores. Protocolos de Internet

Programação com Sockets

Redes de Computadores

Modelo de Camadas. Redes de Computadores

Protocolo TCP/IP. Protocolo TCP/IP. Protocolo TCP/IP. Origem:

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

Camada de Transporte. Protocolos TCP e UDP

Redes de Computadores Arquitetura TCP/IP. Prof. Alberto Felipe

Aplicações de Redes de Computadores

REDES DE COMPUTADORES

Arquitetura TCP/IP - Internet Protocolo IP Protocolo ICMP

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

Fundamentos de Rede. Aula 2 - Modelo OSI

Redes de Computadores

Redes de Computadores

Redes de Computadores

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

Data and Computer Network Endereçamento IP

Curso de Pós-Graduação Lato-Sensu em Redes de Computadores. Arquitetura TCP/IP. Hermes Senger DC/UFSCar 2012

Fundamentos de Redes de Computadores Modelo de Referência ISO/OSI

Capítulo 2. Camada de aplicação

Protocolos da Arquitetura TCP/IP

Redes de Computadores

Redes de Computadores e Aplicações. Aula 43 - Camada de Transporte TCP (Transmission Control Protocol)

Sockets. André Restivo. April 29, Faculdade de Engenharia da Universidade do Porto. André Restivo (FEUP) Sockets April 29, / 27

Reinaldo Gomes Conjunto de redes de escala mundial, ligadas pelo

Introdução à Programação Sockets. Programação Sockets. (c) Volnys Bernal. Agenda. Introdução à Programação Sockets

Redes de Computadores

Aula 5 Camada de rede (TCP/IP):

Sistemas Operacionais II

Arquitetura da Internet TCP/IP

API de Sockets. Modelo Cliente/Servidor (2/2) Modelo Cliente/Servidor (1/2) José Pedro Oliveira Sistemas Operativos I

Introdução a Redes e a Internet. Introdução ao Computador 2010/01 Renan Manola

Redes de Computadores 2 Prof. Rodrigo da Rosa Righi - Aula 6

Redes de Computadores

Tecnologia de Redes. Arquitetura de Rede de Computadores

Conceito de Serviço Universal. Conceito de Serviço Universal. Arquitetura de uma internet. Hardware básico de uma internet. Serviço universal:

1 TECNOLGIA DA INTERNET

Transcrição:

SEM 0544 Desenvolvimento de Produtos Mecatrônicos Glauco Caurin José Martins Jr

Roteiro da aula Conceitos básicos Histórico das redes Redes locais Modelo de referência OSI Arquitetura TCP/IP Camada de Inter-redes IP Camada de transporte TCP e UDP Camada de aplicação Serviços e protocolos bem conhecidos Paradigma cliente-servidor Desenvolvimento de aplicações usando sockets Prática: implementação de aplicações cliente e servidora

Histórico sobre redes 60 s primeiros padrões. Ex.: RS-232 Comunicação de dados DTE x DCE modems (Dialup) Surgimento da ARPANet (projeto do DoD) 70 s soluções proprietárias para redes locais Rede pública de dados X.25 80 s padronização de redes Frame relay, Ethernet (IEEE 802.3), OSI, TCP/IP 90 s popularização do uso das redes locais Wireless LANs, ATM, Web, ISPs, redes pessoais

Principais características Altas taxas de transmissão Baixo custo Redes locais Principal entidade normativa: IEEE IEEE 802 família de normas para LANs e MANs Principal padrão atual: IEEE 802.3 (Ethernet) Taxas de 10Mbps a 10Gbps Meio compartilhado: barramento (BUS) Controle de acesso baseado em contenção CSMA/CD Componente aleatório do algoritmo implica em não determinismo Uma solução: uso de switches para se evitarem colisões

Família 802 Escopo das normas

Quadro Ethernet

Modelo OSI (Open System Interconnection) da ISO Modelo de referência Diferentes níveis de abstração para um mesmo problema 7 camadas (inspirado nas 8 camadas da SNA IBM) (1) Física (2) Enlace (3) Rede (4) Transporte (5) Sessão (6) Apresentação (7) Aplicação Cada camada define seu PDU (Protocol Data Unit) Header (controle) + payload (PDU da camada superior)

Modelo OSI (Open System Interconnection) da ISO Interface da camada n provê o acesso aos serviços à camada n+1 npdu = H n + (n+1)pdu

Arquitetura TCP/IP 1981: o protocolo IPv4 é publicado (RFC 791) Normas publicadas em RFCs: http://www.ietf.org/ Internet timeline: http://www.zakon.org/robert/internet/timeline/ Modelo TCP/IP padrão de fato e aberto 4 camadas Rede local (nada define para ela) Inter-redes Transporte Aplicação Não define camadas de sessão e apresentação A implementação de suas funções fica a cargo da aplicação

Modelo TCP/IP x OSI

Camada de inter-redes Equivalente à camada de rede do modelo OSI Encaminhamento best-effort de mensagens Datagramas são roteados individualmente do host de origem ao de destino, a cada hop, entre gateways IP (Internet Protocol) RFC 791 Versão oficial em uso: 4 (desde 1981) Características de serviço Connectionless entrega fora de ordem Não confiável pode perder datagramas É encapsulado por quadros (camada 2) em cada enlace

O cabeçalho IP

Campos do cabeçalho IP Version: versão do protocolo IP IHL (Internet Header Length): tamanho total do header ( 5) em palavras de 32 bits ToS (Type of Service): qualidade do serviço de roteamento desejada Total Length: tamanho total do datagrama em bytes (tamanho máximo é de 65535) Identification: identificação do datagrama Flags: informa se permite/não a fragmentação e se é/não último fragmento Fragment Offset: indica a posição de início do fragmento TTL (Time To Live): tempo máximo de vida de um datagrama Protocol: tipo de payload (numeração IANA RFC 1700) Header Checksum: soma binária para conferência do cabeçalho Source IP Address: endereço IP do remetente Destination IP Address: endereço IP do destinatário Options: de tamanho variável informações adicionais sobre o datagrama Padding: de tamanho variável complementa options com zeros (múltiplo de 32 bits)

Endereçamento IP Classe A: bit mais significativo do byte a é 0 (zero) byte a no intervalo 0-127 Prefixo (redes): combinatória dos outros 7 bits do byte a 2 7 redes Sufixo (hosts): combinatória dos bytes b, c e d 2 24 hosts Classe B: 2 bits mais significativos do byte a valem 1 e 0 byte a no intervalo 128-191 Prefixo (redes): combinatória dos outros 6 bits do byte a, mais o byte b 2 14 redes Sufixo (hosts): combinatória dos bytes c e d 2 16 hosts Classe C: 3 bits mais significativos do byte a valem 1, 1 e 0 byte a no intervalo 192-223 Prefixo (redes): combinatória dos outros 5 bits do byte a, mais os bytes b e c 2 21 redes Sufixo (hosts): combinatória do byte d 2 8 hosts Endereço para loopback 127.0.0.0 Endereços para Intranets RFC 1918 Endereços de rede valores 0 são atribuídos ao sufixo Endereços broadcast valores 1 são atribuídos ao sufixo

Máscara de rede (netmask) Delimitam a abrangência de uma rede (ou subrede) O prefixo da máscara (rede) é composto por bits de valor 1 O sufixo da máscara (hosts) é composto por bits de valor 0 Exemplos: Máscara de rede classe A: 255.0.0.0 (notação abreviada: endereço/8) Máscara de rede classe B: 255.255.0.0 (notação abreviada: endereço/16) Máscara de rede classe C: 255.255.255.0 (notação abreviada: endereço/24) Divisão de uma classe C em 2 subredes de 128 hosts: 255.255.255.128 (endereço/25) Subredes: a.b.c.0 e a.b.c.128 Divisão de uma classe C em 8 subredes de 32 hosts: 255.255.255.224 (endereço/27) Exercício: calcular os números das subredes e seus broadcasts

Uso da netmask A partir de uma operação lógica AND sobre um endereço de destino obtém-se o endereço da rede Exemplos: Para um host configurado com: Endereço IP 200.201.202.203 e máscara 255.255.255.0, o número da rede será 200.201.202.0 Endereço IP 200.201.202.203 e máscara 255.255.255.224, número da rede será 200.201.202.192 Analisando o último byte: 203 = 11001011 224 = 11100000 (AND) -------- 192 = 11000000

Protocolos de controle ICMP (Internet Control Message Protocol) RFC 792 Comunicação de mensagens (informação e erro) ARP (Address Resolution Protocol) RFC 826 Resolução de endereços IP em endereços MAC

Dois protocolos UDP TCP Características Camada fim-a-fim Funções Controle de fluxo Camada de transporte Controle de congestionamento Escolha de MTU evitar fragmentação do IP Identificação de aplicações Porta: número inteiro de 16 bits controlado pela IANA (RFC 3232)

UDP (User Datagram Protocol) RFC 768 Extremamente simples Basicamente: portas de origem e de destino Tipo de serviço (idêntico ao IP) Connectionless entrega fora de ordem Não confiável pode perder datagramas Exemplos de uso Sistemas distribuídos RPC (Remote Procedure Call) RFC 1057 Vídeo RT junto com RTP (Real Time Protocol) RFC 1889

TCP (Transmission Control Protocol) RFC 793 Mais completo header maior Serviço baseado em stream (fluxo) Orientado à conexão entrega em ordem Confiável faz confirmação de cada unidade Processo de conexão e desconexão Three-way handshake Negocia tamanho da janela Exemplos de uso Maioria das aplicações

O cabeçalho TCP

Campos do cabeçalho TCP Source port: porta de origem Destination port: porta de destino Sequence number: número de seqüência (distinto por conexão) do TPDU Acknowledgement number: número de seqüência do TPDU que está sendo confirmado TCP header length: tamanho do cabeçalho TCP em palavras de 32 bits Flags: URG (Urgent pointer foi usado) ACK (Acknowledgement foi usado) PSH (PUSHed data entrega cada mensagem que chega) RST(reset de uma conexão) SYN (solicitar/aceitar o estabelecimento de uma conexão) FIN (solicitar/aceitar o encerramento de uma conexão) Window size: tamanho da janela para controle de fluxo

Camada de aplicação Protocolos de aplicação são associados a serviços Exemplos DNS nomes de domínio SMTP transmissão de mensagens eletrônicas FTP transferência de arquivos HTTP serviço Web Associação serviços x portas Well Known Ports menores que 1024. Ex: 80 - Web server Registered Port Numbers maiores que 1023 Podem também ser utilizadas por aplicativos de usuários

DNS (Domain Name System) RFCs 1034 e 1035 Tradução entre nomes simbólicos e endereços IP FQDN (Full-Qualified Domain Name) Seqüências de alfanuméricos separados pontos Parte mais à esquerda: nome do host Parte da direita: domínio (e sua hierarquia) Hierarquia: define zonas de autoridade Mais altas: TLDs (Top Level Domains) países e atividades Banco de dados distribuído Resolução DNS request x reply Iterativa sobre a hierarquia Inicia no TLD (parte mais à direita do nome) e segue abaixo Porta default do servidor DNS: 53

Exemplo de hierarquia no DNS / br pe usp com eesc icmc terra mecatronica www www www.mecatronica.eesc.usp.br

SMTP (Simple Mail Transfer Protocol) RCF 2821 Serviço de transferência de correio eletrônico Mail boxes (caixas postais): login_name@host Cliente Acessa a caixa postal de um usuário (login) Contacta o servidor para encaminhamento de mensagens (MTA Message Transfer Agent) Servidor porta default 25 Contacta o MTA de destino (cada um) e encaminha a mensagem MTA de destino grava mensagem na caixa postal do destinatário Transporta exclusivamente texto (ASCII) Anexos com outros conteúdos são convertidos para texto e identificados MIME (Multipurpose Internet Mail Extensions) RFCs 2045 e 2049

FTP (File Transfer Protocol) RFC 959 Serviço de transferência de arquivos na Internet Formas distintas de transferência para conteúdos ASCII Binário Duas portas servidoras 21 canal de controle (comandos, etc) 20 canal de dados Modos Ativo cliente conecta porta 21 do servidor e informa uma porta para ser conectada para o canal de dados Passivo cliente conecta porta 21 do servidor, informa modo passivo e abre uma conexão com a porta 20 do servidor

HTTP (HyperText Transfer Protocol) RFC 2616 Serviço de transferência de hipertextos Conteúdo exclusivamente ASCII (também usa o MIME) Cada par requisição/resposta usa uma conexão Cliente (browser) requisita uma página de hipertexto referenciada por um URL (Uniform Resource Locator) RFC 1738 Cada objeto hipermídia (figuras, sons..) inserido na página é requisitado em uma nova conexão Métodos de encaminhamento: PUT, GET e POST Servidor Web pode suportar interpretadores e recursos para desenvolvimento de sistemas Porta default do servidor: 80

Paradigma cliente-servidor Aplicações relacionam-se em pares com diferentes papéis Cliente: tem comportamento ativo (mestre) Solicita conexão e serviços a um servidor Servidor: tem comportamento passivo (escravo) Aguarda solicitações do cliente, através de uma porta previamente registrada e informada à camada de transporte

Modelo de interação Comportamento solicitação-resposta (request-reply) Cliente demanda um serviço e fica aguardando a resposta Servidor recebe a solicitação, processa o pedido e envia resposta ao cliente Dois tipos de serviços de comunicação Orientados à conexão (SOCK_STREAM) Não-orientado à conexão (SOCK_DGRAM)

Formatos de mensagens A definição de formato em um protocolo de aplicação descreve características sintáticas de mensagens Mensagens são usadas para Coordenação entre cliente e servidor Troca de dados Estratégias Campos de tamanho fixo (a exemplo do IP, TCP,..) Delimitadores de campos de caracteres (como SMTP, HTTP,..) Exemplos: Cabeçalho fixo: 1;José;Professor Cabeçalho variável: codigo=1;nome=josé;tipo=professor Problema: caracteres delimitadores no conteúdo de um campo Solução: byte stuffing

Desenvolvimento de aplicações usando sockets API de sockets Berkeley Labs (1980's) Interface da camada de transporte Conjunto de funções e estruturas de alto nível Extensão das abstrações de operações com arquivos Um descritor de socket é mantido na tabela de arquivos abertos As operações para ler e escrever em um socket são semelhantes às realizadas em arquivos read, write, close, etc.. Multiplataforma: funções idênticas/semelhantes na maioria dos SOs (Linux/Unix, Windows, VxWorks) e linguagens (Java, C, e outras) CUIDADO: operações de leitura são geralmente BLOQUEANTES

Modelo geral de comportamento: SOCK_STREAM

Modelo geral de comportamento: SOCK_DGRAM

Funções de sockets (resumo) int socket(int domain, int type, int protocol) cria e retorna um descritor de socket int bind(int sockfd, struct sockaddr *my_addr, socklen_t addrlen) registra um socket a um número de porta, junto à entidade de transporte int listen(int sockfd, int backlog) usado pelo servidor, coloca o socket no modo passivo int connect(int sockfd, const struct sockaddr *serv_addr, socklen_t addrlen) usado pelo cliente, inicia a conexão de um socket int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen) usado pelo servidor aceita uma conexão através de um socket ssize_t send(int sockfd, const void *buf, size_t len, int flags) envia dados através de uma conexão (SOCK_STREAM). Opcionalmente, usar a função write ssize_t sendto(int s, const void *buf, size_t len, int flags, const struct sockaddr *to, socklen_t tolen) envia dados através de datagrama (SOCK_DGRAM) ssize_t recv(int sockfd, void *buf, size_t len, int flags) recebe dados da conexão (SOCK_STREAM) e escreve no buffer. Opcionalmente, usar a função read ssize_t recvfrom(int s, void *buf, size_t len, int flags, struct sockaddr *from, socklen_t *fromlen) recebe dados através de datagrama (SOCK_DGRAM) int close(int fd) fecha a conexão e libera o descritor do socket (Windows: closesocket)

Funções auxiliares int getsockname(int sockfd, struct sockaddr *name, socklen_t *namelen) retorna o identificador do registro de um socket struct hostent *gethostbyname(const char *name) retorna a identificação de um host (consulta DNS) int setsockopt(int s, int level, int optname, const void *optval, socklen_t optlen) permite a modificação de opções para um socket Para operação com porta: uint16_t htons(uint16_t hostshort) converte um número de 16 bits da ordem usada no host para usada na rede uint16_t ntohs(uint16_t netshort) converte um número de 16 bits da ordem usada na rede para usada no host Para operação com endereço IP: uint32_t htonl(uint32_t hostlong) converte um número de 32 bits da ordem de bytes usada no host para a usada na rede uint32_t ntohl(uint32_t netlong) converte um número de 32 bits da ordem usada na rede para usada no host

Desenvolvimento de aplicação no Workbench Aplicações host em plataforma nativa (Windows) New => Native Application Project Forneça um nome para o projeto (sem espaços) Siga até a tela Build Target Nessa tela, selecione C-Linker, como Build Tool Conclua a inicialização Em Properties do projeto Selecione Build Properties e, na tela, a aba Libraries Selecione Add Para a opção Add library file (-l), insira wsock32 Crie o código fonte.c (obs.: veja exemplos fornecidos) (continua)

Desenvolvimento de aplicação no Workbench (continuação) Compile o projeto Selecione Build Project A tela Generate Includes será oferecida, aceite-a até concluir Execute o projeto Selecione Open Workbench Development Shell Caminhe (cd) até o subdiretório Debug Chame o executável, passando argumentos, se necessários

Desenvolvimento de aplicação no Workbench Aplicações target em plataforma VxWorks New => VxWorks Real Time Process Project Forneça um nome para o projeto (sem espaços) Conclua a inicialização Crie o código fonte.c (obs.: veja exemplos fornecidos) Compile o projeto Selecione Build Project A tela Generate Includes será oferecida, aceite-a até concluir (continua)

Desenvolvimento de aplicação no Workbench (continuação) Crie uma nova conexão com o target Na aba Remote Systems selecione New connection Escolha Wind River VxWorks 6.x Simulator Connection Em Advanced Boot Parameters, selecione, para Boot device: a opção simnet, e conclua Execute o projeto no terminal VxWorks Caminhe (cd) até o subdiretório Debug. Ex.: cd "/WindRiver/workspace/vxWorksUdpServer/SIMPENTIUMdiab_RTP/vxWorksUdpServer/Debug/" Carregue o RTP criado (.vxe) com o comando rtpsp. Ex.: rtpsp "./vxworksudpserver.vxe Obs.: se tiver dúvidas, use os comandos pwd (mostra o diretório atual) e ls (lista o diretório)

Exercícios Implemente projetos para todos os exemplos de aplicações clientes e servidoras, fornecidos em classe, para ambas as plataformas (Windows e VxWorks) Realize os seguintes testes de comunicação: Cliente UDP Windows com: servidor UDP Windows e servidor UDP VxWorks Cliente TCP Windows com: servidor TCP Windows e servidor TCP VxWorks

Fontes para estudo e pesquisa Livros: TANENBAUM, A.S. Redes de Computadores. 4. ed. Elsevier, 2003. Sites: TANENBAUM, A.S. Distributed systems: principles and paradigms. Prent.Hall, 2002 STEVENS, W.R. UNIX network programming. Prentice Hall, 1998. RFCs: http://www.ietf.org/ IEEE 802: http://standards.ieee.org/getieee802/ Outros Man Pages de funções, no Linux Documentação do VxWorks e do Workbench