MC833A Programação de Redes de Computadores Professor Nelson Fonseca http://www.lrc.ic.unicamp.br/mc833/ 1
Roteiro Objetivo: revisar conceitos aprendidos em MC822 e uma breve introdução a programação com sockets (Capítulos 1 e 2 do livro texto) Arquitetura Internet Detalhes de uma comunicação via Internet TCP x UDP Portas e serviços Protocolos e serviços Sockets em SOs Unix-like Programas úteis no GNU/Linux Como seriam os algoritmos?
Arquitetura Internet (1)
Arquitetura Internet (2) TCP/IP Funções bem definidas Encapsulamento Abstração Facilidade na implementação Obs.: Foco em cliente-servidor
Cliente-Servidor
Passo-a-passo da comunicação - cliente Usuário acessa máquina pelo nome Protocolo de aplicação DNS descobre o endereço IP No acesso todas camadas envolvidas Pode haver cache Pode haver mais de um endereço IP Aplicação solicita serviço da camada de transporte Prepara conexão ou começa a enviar dados Define valores que garantem exclusividade na comunicação (cliente-servidor) Faz verificação de erro (na verdade em muitas camadas)
Passo-a-passo da comunicação - cliente Transporte solicita da rede o serviço de buscar o caminho Análise do endereço IP, máscara, gateway padrão Protocolo de roteamento Rede solicita ao enlace que identifique os pontos da comunicação Endereço de hardware Rede local Switches Enlace solicita da física que transmita os bits Volts, cabos, luz
Passo-a-passo da comunicação - servidor Física informa chegada de dados na placa de rede Luz, volts transformados em bits internamente Enlace verifica os dados de endereço físico e passa restante para a camada de rede Camada de rede verifica endereço IP e repassa para transporte Transporte verifica porta e repassa para aplicação (Aplicação descoberta) Aplicação detecta pedido do cliente e toma a ação necessária (DNS reverso, respostas, confirmação da conexão, negação)
Em resumo (1 cliente e 1 servidor)
Arquitetura Internet (visão geral) TCP/IP
Internet Protocol Tree Commonly Used Protocols Application-Layer Protocols BGP FTP Telnet SMTP POP3 HTTP NNTP NFS DNS DHCP RPC TFTP Mount RIP SNMPP Transport-Layer protocols OSPF TCP UDP Network-Layer protocols Physical+Data Link(Type of Network) ARP PPP RARP IP ICMP BOOTP Ethernet Wireless LAN xdsl OC-3 Chapter 1: Fundamentals 11
TCP Transferência confiável Um pipe entre dois processos remotos Entrega em ordem e garantida (buffers fazem um papel fundamental) Criado e mantido pela aplicação Controlado pelo sistema operacional processo socket TCP com buffers, variáveis internet processo socket TCP com buffers, variáveis Criado e mantido pela aplicação Controlado pelo sistema operacional 12
TCP Estabelecimento de conexão 3-way handshake Garantia de entrega ACK Controle de fluxo, controle de congestionamento Janelas deslizantes Crescimento exponencial, aditivo, decrescimento multiplicativo Full-duplex Cabeçalho: Porta fonte, Porta destino, Número de sequência, ACK, flags, janela, checksum, etc... Quais as vantagens? Garantia de entrega Network friendly Quais as desvantagens? Overhead no estabelecimento, fechamento e no cabeçalho Ideal para transferência de arquivos Em uma rede com muitas conexões TCP e datagramas UDP, algum protocolo é mais prejudicado? 13
TCP: Seq e ACK envia C A B cenário simples de telnet tempo 14
TCP: transferência confiável evento: dados recebidos da aplicação create e envia segmentos espera wait por for event evento evento: tempo limite para o segmento seq #y retransmita segmento evento: ACK recebido, com ACK #y Processa ACK 15
TCP: cenários de retransmissão Host A Host B Host A Host B Time out X perda Temp.p/ Seq=92 Timeout Seq=100 tempo ACKs duplicados tempo Timeout cedo 16
TCP: fechamento da conexão cliente servidor fechar fechar Para que o tempo de espera? Tempo de espera fechada 17
TCP: gerência da conexão 18
TCP: transição de estados 19
TCP diagrama de estados 20
UDP Serviço melhor esforço Segmentos UDP podem ser: Perdidos Entregues fora de ordem Sem conexão: Não há estabelecimento de conexão Cada mensagem é processada individualmente Cabeçalho: Porta fonte, Porta destino, comprimento e checksum Quais as vantagens? Sem o overhead do estabelecimento das conexões Sem overhead do cabeçalho maior Quais as desvantagens? Sem controle de congestionamento Sem controle de fluxo Ideal para multimídia Pode ser usado em transmissão de arquivos? 21
Números de portas IANA Portas bem conhecidas são de 0 a 1023 Em um SO Unix-like elas são acessíveis somente pelo root Arquivo /etc/services Portas IANA bem conhecidas Portas IANA registradas Portas IANA dinâmicas ou registradas 1 1023 1024 49151 49152 65535 Portas BSD reservadas Portas BSD temporárias Servidores BSD (sem privilégio) 1 1023 1024 3000 3001 65535 rresvport Portas Solaris temporárias 513-1023 32768 65535 22
Números de portas Como implementar a associação de portas temporárias? Quais os cuidados que devem ser tomados? 23
Aplicações e protocolos 24
Sockets API Sockets Em SOs Unix-like, tudo é arquivo! Socket = o arquivo para comunicação de programas via rede cliente/servidor Dois tipos de serviço de transporte via API Sockets Datagrama, entrega não confiável Fluxo de bytes, entrega confiável socket Uma interface ( porta ), local, criada e mantida pela aplicação e controlada pelo sistema operacional, que permite mandar e receber mensagens para processos remotos 25
Identificação de sockets <endereço IP local, porta local, endereço IP remoto, porta remota> 206.168.112.219 12.106.32.254 192.168.42.1 Client1 {206.168.112.219:1500, 12.106.32.254:21} Client2 {206.168.112.219:1501, 12.106.32.254:21} Server {* : 21,* : *} listening socket Server (child1) {12.106.32.254:21, 206.168.112.219:1500} Server (child 2) fork Connected socket {12.106.32.254:21, 206.168.112.219:1501} Connected socket 26
1.4 Open Source Implementations Open vs. closed Taxonomy of open source packages Software architecture in Linux systems Kernel modules Interface drivers Clients and daemon servers Chapter 1: Fundamentals 27
Open vs. Closed What to open: interface or implementation? Open: Internet (interface), Linux (implementation) Closed: IBM SNA (System Network Architecture), Microsoft Virtues to open interface Interoperability Virtues to open implementation World-wide contributors Fast updates and patches Better code quality Chapter 1: Fundamentals 28
Software Architecture in Linux Systems: Router User Space Routed (RIP) / gated or zebra (RIP, OSPF, BGP, etc.) Inetd (ftp, telnet, etc.) update Routing Table Kernel Space Protocol Driver Adapter Driver Adapter Driver Control Plane Data Plane Control Plane Data Plane Chapter 1: Fundamentals 29
Software Architecture in Linux Systems: Host Chapter 1: Fundamentals 30
Kernel Components User Programs & Applications Application Level System call Process Management Process Management Memory Management Memory Management File System File System Device Control Device Control Networking Networking Kernel Level Kernel Parts Concurrency Multitasking Architecture Dependent Architecture Dependent Code Code Virtual Memory Memory Manager Memory Manager Files & Directorys FS types FS types Block Device Block Device TTY & Device access Device Control Device Control Connectivity Network Subsystem Network Subsystem IF drivers IF drivers Features Implemented Software Support Hardware Control CPU CPU RAM RAM Disks & CDs Disks & CDs Console, Serial Console, Ports Serial Ports Network Interfaces Network Interfaces Hardware Level Chapter 1: Fundamentals 31
Clients and Daemon Servers Socket APIs: TCP, UDP, raw, link, routing Chapter 1: Fundamentals 32
Interface Drivers: In and Out Chapter 1: Fundamentals 33
Book Roadmap Packets Life in a Web Server Chapter 1: Fundamentals 34
Performance Matters: From Socket to Driver within a Server Chapter 1: Fundamentals 35 35
Kernel Space User Space Book Roadmap A Packet s Life in a Router Log and detect Intrusion by Snort (ch8) Routing by Zebra (ch4) to local process check input chain TX router NIC 2 ch2/ch3 check ouput chain IPv4 Dest. IP isn t local check forward chain masquerad routing for ip ing IP is local RX make routing decision Src. check post traffic control (ch7) Adapter Driver gateway Dest. IP is local check prerouting table for (1) transparency proxy(ch6) & (2) flow classification(ch7) version, len, and error chk Adapter Driver TX RX NIC 1 ch2/ch3 ch4 ch3 hub host Chapter 1: Fundamentals 36
Performance Matters: From Input Port to Output Port within a Router Chapter 1: Fundamentals 37
Algoritmos (Exercício) Escrever os algoritmos (alto nível) Cliente/servidor TCP Cliente/servidor UDP Laboratório de Teleprocessamento e Redes 38