*********************************** ********** RED - Matéria ********** *********************************** Data : 23/02/2005 a 12/07/2006 Versão : 04/07/2007 Professor: Benício Autor : Leandro Salvador ( leandrosalvador.com.br ) * Bibliografia - Redes de Computadores - A. S. Tanenbaum - 4ª Edição - Client/Server Programming with Java and Corba - Robert Orlati & Dan Harley - 1998 * Conceito de Protocolos (02/02/2005) - camadas da arquitetura Internet - Aplicação <-- Mensagens --> Aplicação - Transporte <-- Segmentos --> Transporte - Rede (Netware) <-- Pacotes --> Rede (Netware) - Enlace (Link) <-- Frames --> Enlace (Link) - Física (Hardware) <-- Bits --> Física (Hardware) - observação - segmentos --> são estruturas de pacotes - frames --> são conjuntos de bits - interfaces --> são os níveis entre cada camada (superior/inferior) - descrição das camadas - rede / transporte --> confundem-se, pois as interfaces não estão bem definidas - enlace --> drivers - física --> camada do equipamento * Protocolos - são regras de comunicação - cada camada tem um protocolo - exemplo - Transporte --> TCP (Transport Control Protocol) - Rede --> IP (Internet Protocol) - Enlace --> PPP (Point-to-Point Protocol) * Internet - é uma rede para conexão de redes locais - seqüência - Computadores --> LAN (Local Area Network) --> Roteador --> WAN (Wide Area Network) * Rede - Meio Físico (16/02/2005) - seqüência - Host --> Linha de Acesso --> Roteador --> Linha Backbone <-- Roteador <-- Linha de Acesso <-- Host * Linha - conjunto de equipamentos de comunicação de dados - características - capacidade - medida em bits/segundo (bps) - disponibilidade - tarifação * Sistema TDM - Síncrono - seqüência - Host --> M --> Linha de Acesso --> M --> MUX TDM --> Tronco TDM --> MUX TDM --> ... --> Central <-- M <-- M <-- H - MUX --> Multiplexador TDM (Time-Division) - capacidade --> até 100 Mbps - disponibilidade --> linha dedicada - tarifação --> tarifa fixa * Sistema ATM - Assíncrono - Host --> M --> Linha de Acesso --> M --> ATM --> Meio de Transmissão <-- ATM <-- M <-- H - ATM --> comunicação de células - capacidade --> 10 Mbps - disponibilidade --> sob demanda - tarifação --> por uso - serviços ATM - linha dedicada síncrona - linha dedicada assíncrona - linha comutada (fazendo conexão) - características - os dados dos usuários são agrupados em células de 48 bits - o sistema ATM realiza uma conexão lógica no sistema entre os dois hosts - as células são transmitidas na conexão lógica * Dimensionamento de Linhas - problemas - topologia da rede - dimensionamento de linha - topologia - distribuição dos roteadores e das linhas - estrela - rede - regra de conectividade - conectividade mínima = 2 - cada roteador deve possuir pelo menos dois caminhos para conectar-se a qualquer outro roteador - diagrama (A)---(B) \ / (C) / \ (D)---(E) * Modelo para Dimensionamento das Linhas - problema - atribuir as capacidades das linhas na rede - diagrama --- t1 -. .-- u --> \ / --- t2 -->(roteador) / \ --- t3 -´ `- tn --- - ti (lâmbda) - intensidade de tráfego incidente no roteador através da linha i - medido em pacotes por segundo (pps) - u (mí) - intensidade de tráfego de saída em uma das linhas qualquer - medido em pacotes por segundo (pps) - esse modelo é de pior caso - supõe que em uma situação de pior caso todo tráfego incidente no roteador deve sair por uma única linha - o dimensionamento é feito para essa linha e a capacidade calculada é atribuída para todas as linhas da rede - por isso, o roteador escolhido deve ser o de maior tráfego na rede - o modelo usa teoria de filas MM1 -- t --> ||||||| -- u --> pacotes - intensidade de tráfego incidente (t) t = t1 + t2 + t3 + ... + tn - intensidade de tráfego p = t / u - para o sistema ser estável: p < 1 - probabilidade da fila ficar vazia t0 = 1 - p - probabilidade da fila ficar com n pacotes tn = (1 - p) * (p ^ n) - n = 0, 1, ... - número esperado de pacotes na fila N = p / (1 - p) - tempo médio que um pacote fica na fila T = p / ( u * (1 - p)) - fórmula de Little N = tT - OBS - t --> lâmbda - u --> mí - p --> rô - T --> T maiúsculo - N --> N maiúsculo - exemplo -- 1 --> (¯¯¯) t1 = 1 pps -- 2 --> ( ) t = t1 + t2 + ... + t100 -- 3 --> ( ) t = 100 pps --...--> ( ) --100--> (___) impor: p = 0.5 p = t / u u = t / p = 100 / 0.5 = 200 pps l: tamanho médio dos pacotes em bits - capacidade da linha em bps C = l * u - supor: l = 1000 bits C = 1000 * 200 = 200 Kbps C = 256 Kbps T = p / (u * (1 - p)) = 0.5 / (200 * 0.5) = 0.5 / 100 = 0,0005 = 5 ms - se p = 0.9 - então T = 80 ms * Projeto de Rede - conectividade mínima = 2 - linhas dedicadas - comprimento máximo dos datagramas = 1500 bits - linhas - tempo de transmissão na maior rota * Intensidade de Tráfego (t - lâmbda) (23/02/2005) - diagrama --->( )---> t u - t = intensidade de tráfego incidente - soma o tráfego que chega pela linha incidente e o tráfego gerado no roteador (pacotes por segundo) - aplicação - hipótese --> tráfego de centro para centro é em média 10 pps - número de centros = 12 - t = 12 * 10 = 120 pps - desempenho --> p < 1 - p = t / u - p = 0.6 - u = t / p = 120 / 0.6 = 200 pps - comprimento dos datagramas - l = 1500 (dado no projeto de rede, acima) - capacidade da linha em bps - C = l * u = 200 * 1500 = 300000 bps = 300 Kbps - atraso da rota mais longa - rota contada pelo número de roteadores - super rota com 6 roteadores - atraso = tempo na fila dos roteadores + tempo de transmissão - atraso em um roteador (tempo na fila) - T = y / (u * (1 - y)) = 0.6 / (200 * (1 - 0.6)) = 0.6 / (200 * 0.4) = 0.0075 = 7.5 ms - tempo de transmissão em uma linha - Ttr = l / C = 1500 / 300 = 5 ms - atraso total = 6 * (T + Ttr) = 6 * (7.5 + 5) = 6 * 12.5 = 73 ms * Camada de Enlace - a camada de enlace contém o software que realiza a conexão ponto a ponto ("peer-to-peer") entre dois elementos da rede - camada de enlace na Internet - diagrama rede local --> gateway --> backbone --> gateway --> rede regional --> backbone --> rede regional - conexões ponto-a-ponto - roteador - roteador do backbone - protocolo --> PPP (Point to Point Protocol - Protocolo Ponto a Ponto) - gateway - roteador do backbone - protocolo --> PPP - host - host (não vizinhos) - protocolo --> PPPoE (PPP over Ethernet) - protocolo PPP - unidade de informação - frame HDLC - formato bytes 1 1 1 1 ou 2 <=1500 ... 2 ou 4 1 ____________________________________________________________________ | Flag | Address | Control | Protocol | Info | Padding | CRC | Flag | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - bit stuffing - o transmissor acrescenta um bit 0 após 5 bits 1 consecutivos - o receptor extrai esse bit extra e o joga fora * Protocolo PPP (Point-to-Point Protocol) (02/03/2005) - campo protocolo - especifica o tipo de protocolo encapsulado pelo frame - exemplos - protocolo = LCP / NCP / IP - campo info - contém a informação que deve ser interpretada conforme o tipo de protocolo - campo padding - preenchimento - completa o campo info caso o frame deva ter um comprimento mínimo - campo CRC - contém um código de verificação (checksum) * Protocolo LCP (Link Control Protocol) - objetivo - estabelecer, manter e encerrar uma conexão lógica (enlace) entre dois pontos - figura | ... | | ... | SW | enlace |----- conexão lógica -----| enlace | SW HW | física |---------- linha ---------| física | HW * Conexão Lógica PPP - diagrama de estados LCP opções acordadas PAP [ Estabelecendo o Enlace ]------------------>[ Autenticação ] ^ / | conexão | / | física | / | autenticação ok estabelecida | / | | / | | / v NCP [ Conexão Física Inexistente ] falha / [ Configuração do Nível de Rede ] ^ ,--------------´ | | / | desconexão | / | configuração NCP física | / | | v v [ Terminando a Conexão ]<------------------[ Comunicação em Andamento ] fim - aplicação - conexão de um host à Internet via modem V90 (16 Kbps) - diagrama |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| Host <-> M <-> Rede Telefônica Pública <-> M <-> Concentrador de Acesso <-> Gateway <-> Backbone Internet | | |_____________Provedor de Acesso_____________| * Tipos de Frames de Protocolo LCP - aplicação - conexão de roteadores no backbone -----( R1 )------ PPP -----( R2 )----- | | `. `PPP. ,PPP´ \ `---( R3 )---´ \ - tabela ----------------------------------------------------- Nome | Direção | Descrição ----------------------------------------------------- confiance-request | I --> R | lista valores de opções configure-ack | I <-- R | todas opções aceitas terminate-request | I --> R | pedido de desconexão terminate-ack | I <-- R | aceita desconexão echo-request | I --> R | repetir echo-reply | I <-- R | repetição ----------------------------------------------------- - I = Iniciador - R = Respondedor - cenário (estabelecendo enlace) [ I ] [ R ] |----- configure-request ---->| |<---- configure-ack -----| |----- frame-IP ---->| |<---- frame-IP -----| | ... | |----- terminate-request ---->| |<---- terminate-ack -----| - cenário (religação do roteador R1 [ R1 ] [ R2 ] [ R3 ] |----- configure-request ---->| | |----- configure-request ---->|-----------------------------| |<---- configure-ack -----| | |<---- configure-ack -----|-----------------------------| |------------------. | `---- frame-IP ----. | `-------------------| * Camada de Rede (09/03/2005) - protocolo IP (Internet Protocol) - pacote IP _______________ - | Header | Data | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - Data --> comprimento máximo = MRU - comutação de pacotes - a rede transporta pacotes individuais - cada pacote é roteado de maneira independente - pode existir alguma relação entre dois pacotes distintos caso haja fragmentação de pacote - não existe controle de erros em nível do protocolo de rede - quando um frame PPP que transporta um pacote for transmitido com erros, o receptor simplesmente o descarta - não existe repetição de frame nesse caso - o protocolo IP não é confiável - formato do header |---------------------------- 32 bits ----------------------------| 4 bits 4 bits 1 byte 2 bytes .-----------------------------------------------------------------. | Versão | I H L | Tipo de Serviço | Comprimento Total | |-----------------------------------------------------------------| | Identificação | DIM FF | Offset do Fragmento | |-----------------------------------------------------------------| | Tempo de Vida | Protocolo | Checksum do Header | |-----------------------------------------------------------------| | Endereço do Remetente (IP) | |-----------------------------------------------------------------| | Endereço do Destinatário (IP) | |-----------------------------------------------------------------| | Opções (múltiplos de 32 bits) | '-----------------------------------------------------------------' - Offset do Fragmento --> 13 bits - comprimento do pacote --> até 64 KBytes - tipo de serviço --> dados, vídeo, áudio, ... - IHL --> comprimento do header em palavras de 32 bits - versão --> IPv4, IPv6 - fragmentos-identificação --> ID do fragmento - DF --> Don't Fragment - 0 = pode fragmentar - 1 = não pode fragmentar - MF --> More Fragment - 0 = não possui mais fragmentos - 1 = possui mais fragmentos - offset do fragmento - fragmentação - dividir um pacote em certo número de pacotes menores (menor campo de dados) - diagrama Pacote 0 _________________________________________________ | ID = 00, DF = 0, MF = 0, Offset = 0 | ... | ... | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯|¯¯ 0 | 512 | 1023 | | Pacote 1 | | ________________________________________v__ | | ID = xx, DF = 0, MF = 0, Offset = 0 | ... | | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ / ,---´ Pacote 2 | ________________________________________v__ | ID = xx, DF = 0, MF = 0, Offset = 0 | ... | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - checksum do header - campo de verificação do cabeçalho - se houver erro no cabeçalho o pacote é descartado - protocolo - tipo de protocolo de transporte carregado no pacote (tipo de campo de dados) - exemplo - TCP --> Transmission Control Protocol - UDP --> User Datagram Protocol - tempo de vida - quando o pacote é montado no host de origem, esse campo tem valor 255 - cada hop que recebe esse pacote decremente esse campo - se em um hop esse campo ficar com valor zero ao ser decrementado, então o pacote é descartado - OBS: hop --> apelido de roteador * Endereçamento - Protocolo IP (16/03/2005) - endereço IP - tabela ---------------------------------------------------------------- | Classe | Rede | Host | Range | ---------------------------------------------------------------- | A | 0 | 7 bits | 24 bits | 1.0.0.0 a 127.255.255.255 | | B | 10 | 14 bits | 16 bits | 128.0.0.0 a 191.255.255.255 | | C | 110 | 21 bits | 8 bits | 192.0.0.0 a 223.255.255.255 | | D | 1110 | multicast | | | | E | 11110 | uso futuro | | | ---------------------------------------------------------------- - exemplo 200.198.64.85 ___________________________________ |110:01000| | | | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |--HOST-| - 200 (base 10) = 11001000 (base 2) = C8 (base 16) - como o 1º 0 (zero) é o 3º dígito em binário, conclui-se que trata-se de um IP classe C - exemplo 143.107.164.1 ___________________________________ |10:001111| | | | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |------ HOST ----| - 143 (base 10) = 10001111 (base 2) = 8F (base 16) - como o 1º 0 (zero) é o 2º dígito em binário, conclui-se que trata-se de um IP classe B - exercício (PEGAR COM O MARCELO DEPOIS!!!) - exemplo 200.198.64 - sub-rede = 8 bits - host = 32 bits - net mask = 111 00000 = E0 * Descoberta do IP - protocolos - ARP - Address Resolution Protocol - transportado por frame ethernet - destinado a um servidor ARP que tem uma tabela do tipo MAC x IP - fornece o endereço IP, dado um endereço MAC - TCP / IP - protocolo de transporte na rede local - frame ethernet 7 2 4 __________________________________________________________________________________ | Preâmbulo | SOF | MAC Destino | MAC Origem | Comprimento | Header | Pacote | CRC | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - RARP - Reverse Address Resolution Protocol - fornece o endereço MAC, dado um endereço IP - DHCP - Dynamic Host Configuration Protocol - o sistema deve configurar esse software em um servidor DHCP - faz a resolução de endereços na rede local - é possível ainda obter endereços IP dinâmicos na Internet * Frame MAC - Internet (LAN 802) (23/03/2005) - Rede (IP) --> LLC \ - Enlace (PPP) --> MAC (CSMA/CD) > 802 - Física --> Física / - representação gráfica 7 1 6 6 2 1 1 1 2 __________________________________________________________________________________________________________ | Preâmbulo | SOF | MAC Destino | MAC Origem | Comprimento | DSAP | SSAP | UI | Protocolo | Dados... | FCS | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - SOF --> Start of Time - DSAH --> Destination Service Access Point - SSAP --> Source Service Access Point - UI --> Unnumbered Info - FCS --> Frame Check Sequence (CRC-32) - representação gráfica ( SAPs ) | -------,------------------,------------------,-------'---- ______|_____ ______|_____ ______|_____ | _ | | _ | | _ | | |_| | | |_| | | |_| | | SAPs _ | | SAPs _ | ... | SAPs _ | | |_| | | |_| | | |_| | |____________| |____________| |____________| MAC1 MAC2 MACn * Bridges (Pontes) - bridge é uma função utilizada para interligar duas redes locais - 802-1 - F - G <-- - H - Q - X - bridge para redes locais MACB1 MACB2 ---,-----,-----,------< Bridge >------,-----,-----,--- _|_ _|_ _|_ _|_ _|_ _|_ |___| |___| |___| |___| |___| |___| MAC11 MAC12 MAC1n MAC21 MAC22 MAC2n - bridge para redes remotas (802-1G) <--- Frames MAC ---> <--- PPP ---> <--- Frames MAC ---> ---,-----,-----,------< Bridge >---|- - - - - - -|---< Bridge >------,-----,-----,--- _|_ _|_ _|_ Linha de _|_ _|_ _|_ |___| |___| |___| Comunicação |___| |___| |___| MAC11 MAC12 MAC1n MAC21 MAC22 MAC2n * Alocação de Endereços IP na Rede Local - os endereços IP podem ser estáticos ou dinâmicos - DHCP Server (endereços IP dinâmicos) - instalado em um dos hosts - tem por função atribuir endereços IP para os hosts e gerenciar uma tabela - faixas de endereços estáticos locais não válidos na Internet - 10.0.0.0 a 10.255.255.255 - 172.16.0.0 a 172.31.255.255 - 192.168.0.0 a 192.168.255.255 * Interligação da Rede Local à Rede Internet (Protocolos PPP e PPPoE via ADSL) - diagrama ,-- / Provedor ,--> CA = Concentrador de Acesso V90 / V90 / [Host]---[M]---...---[Rede Telefônica]---|---[M]---(CA)---,-----,-----,----- \ | _|_ _|_ _|_ ,- {Internet}--- \ | |___| |___| (___)´ \ | S1 Sn Roteador `- | |¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯| | | Rede Pública |---------' | _ | ADSL | -|D| | (Bridge)---[M]---|---|S| |---(Roteador)---{Backbone Internet}--- | | -|L|---[ATM] | ---,--------,--'--- | -|A| | | | | -|M| | [H1] ... [Hn] | ¯ | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ * PPPoE (PPP over Ethernet) - diagrama |--- Frame PPP ---| [ H | [Frame MAC] ] (Bridge)---...---[Linha ADSL]---...---(Bridge) | | ---,-------,--'--- ---'--,-------,--- | | | | [H] ... [ ] [S] ... [ ] Usuário Provedor - frame MAC ____________________________________ | Header | Protocolo PPPoE | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |--- Campo de Informação ---| - header _____________________________________________ | Endereço Destino | Endereço Remetente | ... | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - CAI --> endereço MAC do concentrador de acesso no provedor - Hc --> endereço MAC do host na rede do usuário - campo de informação _______________________________________________________ | Ver | Type | Code | Session-ID | Length | Payload | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ |--- Dados ---| - diagrama de seqüência [Host Usuário] [CA 1] [CA 2] | | | enviar (2K) |----- PADI (* , Hc) ------------->|------->| |<---- PADO (Hc , CA1) --------------| | |<---- PADO (Hc , CA2) --------------|--------| |----- PADR (CA2, Hc) --------------|------->| |<---- PADS (Hc , CA2, Session-ID) --|--------| | ... | | | Sessão PPP | | | ... | | - finalidade da sessão PPP - configuração da conexão - autenticação - obter um IP na Internet * NAT (Network Address Translation) - diagrama 201.0.71.183 (Net Box)---...---[Linha]--- | ---,-------,---'---,--- | | | [H] [ ] ... [ ] 10.0.0.1 * Pacotes IP - ilustração gráfica |---------- IP Header ----------|----------- TCP Header -----------| ______________________________________________________________________________ | | IP Destino | IP Remetente | | Porta Destino | Porta Origem | Dados TCP | ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ ______________________________________________________ H --> | | x.x.x.x | 10.0.0.1 | | 80 | 80 | Dados TCP |---. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | ______________________________________________________ | | | x.x.x.x | 201.0.71.183 | | 80 | it | Dados TCP |<--' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯|¯¯¯¯¯¯¯¯¯¯¯¯¯ | Tabela | ------------------------- | | IP Local | Porta Origem |<-------------' |-------------------------| | 10.0.0.1 | 80 | ------------------------- ______________________________________________________ I --> | | 201.0.71.183 | x.x.x.x | | it | 80 | Dados TCP |---. ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ | ______________________________________________________ | | | 10.0.0.1 | x.x.x.x | | 80 | 80 | Dados TCP |<--' ¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯ - H --> Host - I --> Internet * Protocolos de Transporte (30/03/2005) * Protocolo TCP (06/04/2005) - convenções de conexão/desconexão - SYN --> segmento contendo os bits SYN = 1, ACK = 0 - RST --> segmento contendo os bits RST = 1, demais = 0 - FIN --> segmento contendo os bits FIN = 1, demais = 0 - SYN-ACK --> segmento contendo os bits SYN = 1, ACK = 0 - ACK --> segmento contendo os bits SYN = 0, ACK = 1 - diagrama (conexão/desconexão) - cliente conectar/[SYN] (Cliente)----->(Desconectado)--------------->(Aguardando Conexão) ^ ^ | | | `------------------´ | | | [RST] | | timeout | | | | [SYN-ACK]/[ACK] | `------------------´ | | fechar | | v (Temporizar) (Conectado) ^ | | | [FIN]/[ACK] | | fechar/[FIN] | | | v (Finalização 2)<---------------(Finalização 1) [ACK] - servidor escute (Cliente)----->(Desconectado)------------------>(Escutando) ^ | | | | | [ACK] | | [SYN]/[SYN-ACK] | | | | | v (Finalizando 2) (Conectando) ^ | | | fecha/[ACK] | | [ACK] | | | v (Finalizando 1)<-----------------(Conectado) [FIN]/[ACK] * Fase de Transporte de Dados - bits de controle - URG - indica que o campo "pointer urgente" aponta um índice no stream que deve ser processado urgentemente - PSH - "push", desempilhar, ou seja, liberar os buffers de recepção imediatamente - stream - corrente de dados sendo transmitidos de um ponto a outro - gráfico dados a transmitir buffer de recepção [ | | | | | | | | ] -----> [Transmissor/TX] -----> [Receptor/TX] -----> [#| | | | | | | | ] | SEQ# stream ACKSEQ# segmento <-----´ - SEQ# - indica o índice do byte onde se inicia o próximo segmento a ser transmitido - ACKSEQ# - indica o índice de dados onde se indica o próximo segmento a ser recebido * Campos Relacionados com a Transmissão de Dados - SEQ# - 32 bits - número de seqüência - ACK# - 32 bits - número de reconhecimento - WIN - tamanho da janela - controle de protocolo do tipo "slide down" (janela de correr) - indica o tamanho do buffer de recepção disponível atualmente - o tamanho do campo de dados do segmento é extraído a partir do tamanho do pacote que transporta o segmento - MTU - "Maximum Transfer Unit" - maior comprimento do campo de dados no pacote - na Internet é de 1500 bytes - exemplo [2K|3K|2K] --> dados a transmitir ,--> [2K|2K] [Remetente] [Destinatário] [Buffer] | | [ | ] enviar (2K) |----- SEQ# = 0 , 2K dados ---->| [AA| ] |<---- ACK# = 2K , WIN = 2K -----| | | enviar (3K) |----- SEQ# = 2K , 2K dados ---->| [BB|AA] |<---- ACK# = 4K , WIN = 0 -----| | | ,-> esvaziar 2K |<---- ACK# = 4K , WIN = 2K -----| [BB| ] |----- SEQ# = 4K , 1K dados ---->| [BB|B ] |<---- ACK# = 5K , WIN = 1K -----| | | enviar (2K) |----- SEQ# = 5K , 1K dados ---->| [CB|BB] |<---- ACK# = 6K , WIN = 0 -----| | | ,-> esvaziar 2K |<---- ACK# = 6K , WIN = 2K -----| [CB| ] |----- SEQ# = 6K , 1K dados ---->| [CC|B ] |<---- ACK# = 7K , WIN = 1K -----| * Temporização do Transmissor - o transmissor manda um segmento e liga um temporizador - caso o transmissor receba um ACK# que indique que o receptor recebeu o segmento, o temporizador é desligado - se ocorrer "time-out" do temporizador antes do recebimento do ACK#, o segmento é retransmitido ----------//----------