38
1 MC833A Programação de Redes de Computadores Professor Nelson Fonseca http://www.lrc.ic.unicamp.br/mc833/

MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Embed Size (px)

Citation preview

Page 1: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

1

MC833A – Programação de Redes de Computadores

Professor Nelson Fonseca

http://www.lrc.ic.unicamp.br/mc833/

Page 2: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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?

Page 3: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Arquitetura Internet (1)

Page 4: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Arquitetura Internet (2)

“TCP/IP”

Funções bem definidas

Encapsulamento

Abstração

Facilidade na implementação

Obs.: Foco em cliente-servidor

Page 5: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Cliente-Servidor

Page 6: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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)

Page 7: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 8: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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)

Page 9: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Em resumo (1 cliente e 1 servidor)

Page 10: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Arquitetura Internet (visão geral) “TCP/IP”

Page 11: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 12: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 13: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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?

Page 14: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

14

TCP: Seq e ACK A B

envia ‘C’

tempo cenário simples de telnet

Page 15: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 16: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 17: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

17

TCP: fechamento da conexão

cliente servidor

fechar

fechar

fechada

Tem

po

de e

spera

Para que o tempo de espera?

Page 18: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

18

TCP: gerência da conexão

Page 19: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

19

TCP: transição de estados

Page 20: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

20

TCP diagrama de estados

Page 21: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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?

Page 22: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 23: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

23

Números de portas

Como implementar a associação de portas temporárias?

Quais os cuidados que devem ser tomados?

Page 24: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

24

Aplicações e protocolos

Page 25: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 26: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 27: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 28: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 29: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 30: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals 30

Software Architecture in Linux Systems: Host

Page 31: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 32: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals 32

Clients and Daemon Servers Socket APIs: TCP, UDP, raw, link, routing

Page 33: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals 33

Interface Drivers: In and Out

Page 34: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals 34

Book Roadmap Packets’ Life in a Web Server

Page 35: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals

Performance Matters: From Socket to Driver within a Server

35 35

Page 36: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

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

Page 37: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Chapter 1: Fundamentals 37

Performance Matters: From Input Port to Output Port within a Router

Page 38: MC833A Programação de Redes de Computadores · Camada de rede verifica endereço IP e repassa para ... (DNS reverso, respostas, confirmação da conexão, ... DHCP SNMPP PPP. 12

Laboratório de Teleprocessamento e Redes 38

Algoritmos (Exercício)

Escrever os algoritmos (alto nível)

Cliente/servidor TCP

Cliente/servidor UDP