MC833A Programação de Redes de Computadores · Ideal para transferência de arquivos Em uma rede...
Transcript of MC833A Programação de Redes de Computadores · Ideal para transferência de arquivos Em uma rede...
1
MC833A – Programação de Redes de Computadores
Professor Nelson Fonseca
http://www.lrc.ic.unicamp.br/mc833/
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”
Chapter 1: Fundamentals 11
Internet Protocol Tree Commonly Used Protocols
Application-Layer Protocols
Transport-Layer protocols
Network-Layer protocols
Physical+Data Link(Type of Network)
FTP
Telnet SMTP
POP3
DNS RPC TFTP
NFS Mount
UDP TCP
BOOTP RARP ARP ICMP IP
Wireless LAN Ethernet xDSL OC-3
RIP
OSPF
HTTP NNTP
DHCP
BGP
SNMPP
PPP
12
TCP
Transferência confiável
Um “pipe” entre dois processos remotos
Entrega em ordem e garantida (buffers fazem um papel fundamental)
processo
TCP com
buffers,
variáveis
socket
Criado e mantido
pela aplicação
Controlado pelo
sistema operacional
processo
TCP com
buffers,
variáveis
socket
Criado e mantido
pela aplicação
Controlado pelo
sistema operacional internet
13
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?
14
TCP: Seq e ACK A B
envia ‘C’
tempo cenário simples de telnet
15
TCP: transferência confiável
wait
for
event
espera
por
evento
evento: dados recebidos da aplicação
evento: tempo limite para o segmento seq #y
evento: ACK recebido, com ACK #y
create e envia segmentos
retransmita segmento
Processa ACK
16
TCP: cenários de retransmissão
Host A
perda
Tim
e out
tempo ACKs duplicados
Host B
X
Host A
Tem
p.p/ Seq=9
2
Timeout cedo
Host B
Tim
eout S
eq=10
0
tempo
17
TCP: fechamento da conexão
cliente servidor
fechar
fechar
fechada
Tem
po
de e
spera
Para que o tempo de espera?
18
TCP: gerência da conexão
19
TCP: transição de estados
20
TCP diagrama de estados
21
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?
22
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
Portas BSD reservadas
Portas BSD temporárias Servidores BSD (sem privilégio)
rresvport Portas Solaris temporárias
1 1023 1024 49151 49152 65535
1 1023 1024 3000 3001 65535
513-1023 32768 65535
23
Números de portas
Como implementar a associação de portas temporárias?
Quais os cuidados que devem ser tomados?
24
Aplicações e protocolos
25
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
Uma interface (“porta”),
local,
criada e mantida pela
aplicação e controlada
pelo sistema operacional ,
que permite mandar
e receber mensagens para
processos remotos
socket
26
Identificação de sockets <endereço IP local, porta local, endereço IP remoto, porta
remota>
Client1
Client2
Server
Server (child1)
Server (child 2)
206.168.112.219 12.106.32.254 192.168.42.1
{206.168.112.219:1500, 12.106.32.254:21}
{206.168.112.219:1501, 12.106.32.254:21}
{12.106.32.254:21, 206.168.112.219:1501}
{12.106.32.254:21, 206.168.112.219:1500}
{* : 21,* : *} listening socket
Connected socket
Connected socket
fork
Chapter 1: Fundamentals 27
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 28
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 29
Software Architecture in Linux Systems: Router
Routed (RIP) / gated or zebra (RIP, OSPF, BGP, etc.)
Inetd (ftp, telnet, etc.)
Kernel Space
User Space
Routing Table
update
Protocol Driver
Adapter Driver
Adapter Driver
Control Plane
Data Plane
Control Plane
Data Plane
Chapter 1: Fundamentals 30
Software Architecture in Linux Systems: Host
Chapter 1: Fundamentals 31
Kernel Components
User Programs & Applications
Process Management
Process Management Memory
Management
Memory Management File System
File System Device Control
Device Control Networking
Networking
Architecture Dependent
Code
Architecture Dependent
CodeMemory Manager
Memory Manager
FS typesFS types
Device Control
Device Control
Block DeviceBlock Device
Network Subsystem
Network Subsystem
ConnectivityTTY & Device
accessFiles &
DirectorysVirtual Memory
Concurrency Multitasking
Application Level
Kernel Level
Kernel Parts
Features Implemented
IF driversIF drivers
Software Support
Hardware Control
Hardware Level
CPUCPU
RAMRAM
Disks & CDsDisks & CDs Console,
Serial Ports
Console, Serial Ports Network
Interfaces
Network Interfaces
System call
Chapter 1: Fundamentals 32
Clients and Daemon Servers Socket APIs: TCP, UDP, raw, link, routing
Chapter 1: Fundamentals 33
Interface Drivers: In and Out
Chapter 1: Fundamentals 34
Book Roadmap Packets’ Life in a Web Server
Chapter 1: Fundamentals
Performance Matters: From Socket to Driver within a Server
35 35
Chapter 1: Fundamentals 36
hub
router NIC 2 ch2/ch3
TX Adapter Driver
Ke
rne
l S
pa
ce
ch4
ch3
NIC 1 ch2/ch3
RX Adapter Driver
check input chain
check ouput chain
check forward chain
to local process
check prerouting table for (1) transparency proxy(ch6)
& (2) flow classification(ch7)
host
masquerading
version, len, and error chk
make routing
decision
TX RX
Log and detect Intrusion by Snort (ch8) U
se
r S
pa
ce
Dest. IP is local
IPv4 Dest. IP isn’t local
Src. check post
routing for ip IP is local
traffic control (ch7)
gateway
Routing by Zebra (ch4)
Book Roadmap A Packet’s Life in a Router
Chapter 1: Fundamentals 37
Performance Matters: From Input Port to Output Port within a Router
Laboratório de Teleprocessamento e Redes 38
Algoritmos (Exercício)
Escrever os algoritmos (alto nível)
Cliente/servidor TCP
Cliente/servidor UDP