PROTOCOLOS DE COMUNICAÇÃO 3º ANO / 2º SEMESTRE 2014 INFORMÁTICA avumo@up.ac.mz Ambrósio Patricio Vumo Computer Networks & Distribution System Group
Serviços de Transporte na Internet Arquitectura TCP/IP implementa dois protocolos de transporte com caracteristicas distintas: TCP e UDP. TCP - Transmission Controll Protocol: O TCP é um protocolo de transporte que executa importantes funções para garantir que os dados sejam entregues de forma confiável, ou seja, sem que os dados sejam corrompidos ou alterados UDP - User Datagram Protocol: O UDP é um protocolo não orientado a conexão e portanto é mais rápido que o TCP. Entretanto não garante a entrega dos dados.
Protocolos da camada de Transporte A camada de transporte no modelo TCP/IP realiza a transferencia de dados entre os extremos da comunicação. No lado do emissor, os dados recebidos da camada de applicação são divididos em segmentos. No lado do receptor, os segmentos são reagrupados e entregues à camada de aplicação.
Protocolos da camada de Transporte
O protocolo TCP é conhecido como sendo fiável porque garante que os dados são todos entregues na ordem correcta. Antes de iniciar a transferencia de dados, o TCP começa estabelecer uma sessão, com um protocolo de negociação de tres vias, que é terminada no final da transferencia. Especificação original: RFC 793, outros RFC s 1122, 1323, 2018 e 2581 É um protocolo orientado à ligação. Adicionalmente, o protocolo realiza o controlo de fluxo com janela, a partilha de ligações e a recuperação de erros.
Caracteristicas gerais: Uso o conceito de sockets para caracterizar uma conexão Socket = endereço IP + Porta Permite estabelecer uma conexão entre um par de Sockets de acordo com parâmetros de qualidade de serviço e segurança previamente especificados. Uma conexão é definida univocamente por um par de sockets. Provê comunicação do tipo full-duplex entre os dois Sockets da conexão. Esta comunicação é sempre unicast e ponto-a-ponto
Caracteristicas gerais: Controlo de fluxo baseado no uso de janelas deslizantes Controlo de erros através do uso de numeros de sequencia e do calculo do checksum para todo seguimento Recuperação de erros para dados perdidos e duplicados Demultiplicação entre múltiplas aplicações em um dado host destino Segmentação de dados para aumentar a eficiência de transmissão
O Conceito de porta: Por cada nivel de arquitectura existe um campo no protocolo da camada que indica para quem os dados encapsulados devem ser entregues. No vivel de enlance, o campo Type indica qual é o protocolo que está encapsulado no frame Ethernet (Por exemplo: um valor igual a 0x0800 indica que os dados devem ser passado para o IP) No nivel de rede, o campo protocol no cabeçalho do IP identifica o
O Conceito de porta: No nivel de rede, o campo protocol no cabeçalho do IP identifica o protocolo para qual o datagrama deve ser repassado (por exemplo: 17 para o UDP e 6 para o TCP) De maneira similar, para distiguir dentre as várias aplicações, o nivel de transporte associa um identificador a cada processo de aplicação. Esse identificador é chamado de Porta (Port Number)
O Conceito de porta: Uma porta é um objecto abstrato, codificado por um número inteiro de 16 bits, usado para identificar processo de aplicação Para uma aplicação poder falar com uma outra numa máquina remota, é preciso conhecer não apenas o endereço IP da maquina destino mas tambem a porta associada à aplicação parceira O UDP e O TCP fornecem um conjunto de portas que permite a multiplos processos dentro de uma única máquina usarem os serviços de comunicação providos pelo UDP e TCP simultaneamente.
Números de portas origem e destino sao incluidos no cabeçalho do TCP e do UDP
Número das portas Origem e Destino Identificam a aplicação transmissora e receptora, cada uma delas associada a um ponto da conexão Esses dois valores, juntamente com os endereços IP de origem e destino, identificam univocamnete a conexão Conexão = par de sockets
Número de sequência: Identifica o número do primeiro byte dentro do stream de bytes que está sendo transmitido naquele seguimento Assume valores entre 0 e 2 32-1
Número do Acknowledgement: Como cada byte é numerado, esse campo identifica o proximo número de sequência (próximo byte) que se espera receber do host remoto Esse valor é igual ao número do último byte recebido + 1 O campo é válido somente se o flag de ACK estiver ligado
Tamanho do Cabeçalho: Informa o tamanho do cabeçalho do segmento, mediso em palavras de 32 bits A informação de tamanho é necessária porque o campo de Options do TCP possui tamanho variável Com 4 bits, o tamanho do cabeçalho é limitado a 60 bytes. Sem opções, o tamanho default é de 20 bytes
Campo de flags : Os flags identificam o propósito e o conteúdo de cada segmento Existem seis flags: URG, ACK, PSH, RST, SYN e FIN Um ou mais podem estar ligados num certo momento
Tamanho da Janela: Para implementação do seu mecanismo de controlo de fluxo ( sliding window ), o TCP requer que cada um dos lados anuncie o tamanho da sua janela de recepção O tamanho da janela determina o número de bytes que se está disposto a aceitar, iniciando-se com o valor definido no campo ack number É limitado ao valor 65.535 (0 a 2 16-1)
Checksum e Urgent Pointer : O campo de checksum cobre todo o seguimento TCP (cabeçalho + dados) Emprega um esquema de cálculo semelhante ao do UDP, que inclui um pseudo-header extraido do cabeçalho do IP Urgent pointer é um offset positivo que deve ser adicionado ao campo de número de sequência, para indicar a posição do último byte dos dados urgentes
TCP Options e a Opção MSS: A especificação original do TCP (RFC 793) define cinco opções. As RFCs mais novas (por exemplo, a RFC 1323) definem opções adicionais A opção mais comum é o MSS ( Maximum Segment Size ) O valor do MSS especifica o maior tamanho de segmento que o nó está disposto a receber Normalmente, cada lado da conexão especifica o valor do MSS no estabelecimento da conexão (na troca de segmentos SYN)
Three-way Handshake O TCP utiliza mecanismo de Three-way Handshake para estabelecer uma conexão Essa mecanismo garante a correcta sincronização entre utilizadores da conexão de transporte O three-way handshake envolve a troca de três seguimentos ou mensagens (o mecanismo possui três passos)
Three-way Handshake O Cliente envia uma requisição SYN contendo o número da porta que pretende utilizar e um número de sequência inicial O Servidor responde com um ACK com o número sequencial enviado + 1 e um pacote SYN com um outro número de sequencia O Cliente responde com um ACK com o número recebido do SYN+1
Enviando dados com TCP divide o fluxo de dados em segmentos O rementente manda dados em sequimentos com um número sequencial O destinatário acusa o recebimento de cada segmento O remetente manda os dados seguintes se não recebe a confrmação do recebimento, manda novamente No caso da conexão ser abortada uma fleg RST é mandada ao remetente
Encerrando uma conexão TC O Cliente manda um pedido de FIN O Servidor responde acusando o recebimento com ACK O Servidor manda seu pedido de FIN O Cliente envia um ACK
Lista de portas de protocolos http://pt.wikipedia.org/wiki/anexo:lista_de_portas_de_protocolos
UDP - Protocolo sem Controlo da Transmissão O protocolo UDP, tal como o TCP, disponibiliza serviços de transferencia de dados e de partilha de ligação por várias applicações. No entanto, não é um protocolo fiavel, uma vez que não garante a entrega de todos os segmentos, nem a ordem por que são entregues. Além disso, não tem qualquer mecanismo de controlo de fluxo e não tem qualquer processo de inicialização e terminação de ligação, dai a designação de protocolo sem ligação. A redução de numero de serviços do protocolo UDP reduz consideravelmente o tamanho do seu cabeçalho, quando comparado com o do TCP.
UDP - Protocolo sem Controlo da Transmissão O Protocolo UDP [RFC 768] Ao contrario do TCP, o UDP provê um serviço de transação simples, com um minimo de overhead Oferece um serviço de entrega best-effort: Segmentos de dados podem ser perdidos Segmentos de dados podem ser entregues for a de ordem É um protocolo não orientado a conexão (connectionless): Não existe nenhum handshaking entre origem e destino Cada segmento UDP é completamente independente dos outros Nao existe o envio ou recebimento acknowledgments, mecanismo usado quando se deseja garantir a confiabilidade do serviço
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão
UDP - Protocolo sem Controlo da Transmissão TCP Serviço orientado por conexão Garante a entrega através do uso de confirmação e entrega sequenciada dos dados. Programas que usam TCP têm garantia de transporte confiável de dados. Mais lento, usa mais recursos e somente dá suporte a ponto a ponto. UDP Serviço sem conexão. Não é estabelecida conexão entre os hosts. Não garante ou não confirma entrega dos dados. Programas que usam UDP são responsáveis pela confiabilidade dos dados. Rápido, exige poucos recursos e oferece comunicação ponto a ponto e multiponto.