1999-2007 Volnys Bernal 1 1999-2007 Volnys Bernal 2 Agenda Transmission Control Protocol Volnys Borges Bernal volnys@lsi.usp.br http://www.lsi.usp.br/~volnys Introdução Pacote Número de Seqüência Estados Utilitários 1999-2007 Volnys Bernal 3 1999-2007 Volnys Bernal 4 Introdução ao Introdução ao O que é o protocolo? = Transport Control Protocol Protocolo da camada de transporte Objetivo Protocolo da camada de transporte para permitir comunicação entre apliações Características Orientado a conexão: é necessário estabelecimento de conexão entre emissor e receptor antes de enviar um pacote Confiável: se um pacote não for entregue ele é retransmitido Entrega em ordem Controle de fluxo Porta Permite a um processo de aplicação se associar a uma porta Introdução ao Camada de Aplicação Camada de transporte Camada de redes Camada intra-rede DNS UDP ARP Fast RARP Aplicação Gigabit meio físico 1999-2007 Volnys Bernal 5 NFS NIS SMB HTTP FTP Telnet SMTP POP RPC NetBios ICMP IGMP PPP SL Frame Relay 1999-2007 Volnys Bernal 6 Introdução ao protocolo : Exemplo Browser WEB HTTP HTTP Processos 1054 80 UNIX Kernel UDP UDP ICMP IGMP ICMP IGMP ARP RARP ARP RARP Device Driver Placa de Rede Meio Físico 1
1999-2007 Volnys Bernal 7 1999-2007 Volnys Bernal 8 Cabeçalho Compr. (4 bits) Porta de origem Porta de destino Número de seqüência (32 bits) Número de acknowledgment (32 bits) Reservado (6 bits) U A PS R SY F R C H S N I G K T N Checksum do pacote Opções (opcional) (32 bits) Tamanho da janela Ponteiro de urgência Carga conteúdo 1999-2007 Volnys Bernal 9 1999-2007 Volnys Bernal 10 Porta na origem Valor de 1 a 65535 Porta no destino Valor de 1 a 65535 Número de seqüência Numero de seqüência do pacote sendo transmitido Número de acknowledgment Número de seqüência do último pacote recebido acrescido de 1 Comprimento do cabeçalho Comprimento do cabeçalho (em palavras de 32 bits) Flags: SYN (Synchronize) Pedido de sincronização de números de seqüência Utilizado no estabelecimento da conexão FIN (Finalize) Pedido de término de conexão ACK (Acknowledgment) confirmação de recebimento Flags (cont.) URG (Urgent) 1999-2007 Volnys Bernal 11 dados com urgência foram colodados no fluxo de dados localização: ponteiro de urgência + número de seqüência PSH (Push) receptor deve passar os dados recebidos para a aplicação o quanto antes Tamanho da janela Utilizado no controle de fluxo Checksum do pacote Ponteiro de urgência Opções (opcional) 1999-2007 Volnys Bernal 12 RST (Reset) pedido de reset da conexão enviado geralmente após o recebimento de um pacote que aparentemente não satisfaz o número de seqüênica esperado 2
1999-2007 Volnys Bernal 13 1999-2007 Volnys Bernal 14 Empacotamento do pacote em um pacote code Cabeçalho (8 bits) Conteúdo Número de Seqüência Cabeçalho code (8 bits) Dados 1999-2007 Volnys Bernal 15 1999-2007 Volnys Bernal 16 Número de Seqüência Objetivo do número de seqüência: Possibilitar o reconhecimento (ack) de segmentos recebidos Evitar o seqüestro de conexões Em uma conexão, cada entidade define um número inicial chamado número de seqüência, que é incrementado a cada segmento (pacote) trocado, de acordo com a quantidade de bytes transportado pelo segmento Existem dois números de seqüência em uma conexão: Um número de seqüência do servidor Um número de seqüência do cliente OBS: Segmento com flag SYN ou FIN consome 1 número de seqüência Segmento com flag ACK não consome número de seqüência Número de Seqüência Seq: 100 000 Seq: 100 000 Dado (50 bytes) Seq: 400 000 Seq: 100 050 ACK 100 050 Seq: 100 060 Seq: 100 050 ACK 100 060 1999-2007 Volnys Bernal 17 1999-2007 Volnys Bernal 18 Número de Seqüência Seq: 100 060 Seq: 100 060 Dado (20 bytes) Seq: 400 000 Seq: 100 080 Seq: 100 080 Seq: 100 090 Estados Seq: 100 060 Dado (20 bytes) Seq: 100 080 ACK 100 090 3
1999-2007 Volnys Bernal 19 1999-2007 Volnys Bernal 20 Estados Processo: open ativo Send:SYN Estados Processo: open passivo Recv: SYN Send:SYN,ACK Processo pede finalização processo: close Send:FIN Recv: SYN,ACK Parceiro pele Send:ACK finalização Send:ACK Processo pele finalização processo: close Send:FIN Parceiro pede finalização Send:ACK _1 _1 Send: FIN Send: FIN _2 Após ~2min Send: ACK Após ~2min _2 Send: ACK 1999-2007 Volnys Bernal 21 1999-2007 Volnys Bernal 22 Estados : 1999-2007 Volnys Bernal 23 1999-2007 Volnys Bernal 24 Seq.4300038, SYN 4
1999-2007 Volnys Bernal 25 1999-2007 Volnys Bernal 26 Seq.4300038, SYN Seq.5554442, SYN ACK 4300039 Seq: 5554442 Seq 4300038, SYN Seq 5554442, SYN ACK 4300039 Seq. 4300039 ACK 5554443 Seq: 5554442 1999-2007 Volnys Bernal 27 1999-2007 Volnys Bernal 28 Seq.4300038, SYN Estados : Seq.5554442, SYN ACK 4300039 Seq. 4300039 ACK 5554443 Tree Way Handshake!!! (Negociação em 3 passos) Seq: 5554442 1999-2007 Volnys Bernal 29 1999-2007 Volnys Bernal 30 rlogin rlogind Seq: 4300039 ACK 4300049 ACK 4300040 Dado (5 bytes) ACK 5554444 ACK 4300054 ACK 5554453 ACK 4300041 ACK 5554445 5
1999-2007 Volnys Bernal 31 1999-2007 Volnys Bernal 32 rlogin Delayed ACK ACK 4300040 rlogind Estados : ACK 5554444 ACK 4300041 1999-2007 Volnys Bernal 33 1999-2007 Volnys Bernal 34 1999-2007 Volnys Bernal 35 1999-2007 Volnys Bernal 36 2 Seq. 5554521, FIN 2 Seq. 5554521, FIN Seq. 4300900 ACK5554521 CLOSE 6
1999-2007 Volnys Bernal 37 1999-2007 Volnys Bernal 38 Utilitários 2 2 min., FIN Seq. 4300901 ACK5554521 CLOSE CLOSE 1999-2007 Volnys Bernal 39 1999-2007 Volnys Bernal 40 Utilitários netstat -a Permite verificar as conexões estabelecidas e as portas abertas aguardando conexões # netstat -a... Proto RecQ SendQ Local State,,, Remore Bibliografia deste módulo 1999-2007 Volnys Bernal 41 Bibliografia deste módulo Referência principal / Illustrated Volume 1: The Protocols. STEVENS, W. RICHARD. Addison-Wesley. 1994. Referênicas complementares Redes de Computadores: das LANs MANs e WANs às Redes ATM. SOARES, LUIZ F. G. Editora Campus. 1995 Computer Networks. TANENBAUM, ANDREW S. 3rd edition. Prentice Hall 1996. 7