Protocolos IP, TCP E UDP

Protocolo IP

O protocolo IP define mecanismos de expedição de pacotes sem conexão.

IP define três pontos importantes:

A unidade básica de dados a ser transferida na Internet.

O software de IP executa a função de roteamento, escolhendo um caminho sobre o qual os dados serão enviados.

Incluir um conjunto de regras que envolvem a idéia da expedição de pacotes não confiáveis. Estas regras indicam como os hosts ou gateways poderiam processar os pacotes; como e quando as mensagens de erros poderiam ser geradas; e as condições em que os pacotes podem ser descartados.

Dentro do protocolo IP veremos os seguintes tópicos:

Endereço

Endereços Internet

Se diz que um sistema provê um serviço de comunicação universal se ele permite a qualquer host se comunicar com qualquer outro. Para que um sistema preste serviços de comunicação universalmente é necessário estabelecer um método de identificar os computadores que seja aceito globalmente. Na Internet se escolhe identificar os computadores através de endereços binários.

Na Internet a cada computador é associado um endereço inteiro de 32 bits, chamado endereço IP. O importante no esquema de endereços internet é que os inteiros são cuidadosamente escolhidos para fazer o roteamento eficiente. Especificamente um endereço IP define o identificador da rede ao qual o host está conectado e também a identificação de um único computador nessa rede.

Conceitualmente cada endereço é um par (netid, hostid), onde netid identifica a rede, e hostid identifica um computador nessa rede. Na prática cada endereço IP deve ter um Formato específico. No gráfico abaixo é apresentado o formato dos endereços IP.



FORMATO DO DATAGRAMA IP

O datagrama IP é a unidade básica de dados no nível IP. Um datagrama está dividido em duas áreas, uma área de cabeçalho e outra de dados.

O cabeçalho contém toda a informação necessária que identificam o conteúdo do datagrama.

Na área de dados está encapsulado o pacote do nível superior, ou seja um pacote TCP ou UDP.

O formato do datagrama IP é o seguinte:

CAMPOS IP

VERS: versão do protocolo IP que foi usada para criar o datagrama (4bits)

HLEN: comprimento do cabeçalho, medido em palavras de 32 bits (4 bits)

TOTAL-LENGTH: este campo proporciona o comprimento do datagrama medido em bytes, incluindo cabeçalho e dados.

SERVICE-TYPE: este campo especifica como o datagrama poderia ser manejado e dividido em cinco subcomandos

IDENTIFICATION, FLAGS e FRAGMENTS: estes três campos controlam a fragmentação e a união dos datagramas. O campo de identificação contém um único inteiro que identifica o datagrama, é um campo muito importante porque quando um gateway fragmenta um datagrama, ele copia a maioria dos campos do cabeçalho do datagrama em cada fragmento, então a identificação também deve ser copiada, com o propósito de que o destino saiba quais fragmentos pertencem a quais datagramas. Cada fragmento tem o mesmo formato que um datagrama completo.

FRAGMENT OFFSET: especifica o início do datagrama original dos dados que estão sendo transportados no fragmento. É medido em unidades de 8 bytes.

FLAG: controla a fragmentação.

TTL(Time To Live): especifica o tempo em segundos que o datagrama está permitido a permanecer no sistema Internet. Gateways e hosts que processam o datagrama devem decrementar o campo TTL cada vez que um datagrama passa por eles e devem removê-lo quando seu tempo expirar.

PROTOCOL: especifica qual protocolo de alto nível foi usado para criar a mensagem que está sendo transportada na área de dados do datagrama.

HEADER-CHECKSUM: assegura integridade dos valores do cabeçalho.

SOURCE AND DESTINATION IP ADDRESS: especifica o endereço IP de 32 bits do remetente e receptor.

OPTIONS: é um campo opcional. Este campo varia em comprimento dependendo de quais opções estão sendo usadas. Algumas opções são de um byte, e neste caso este campo é chamado de Option Code , e está dividido em três campos.

ROTEAMENTO IP

O roteamento IP consiste em decidir para onde enviar um datagrama baseando-se no endereço IP destino contido no datagrama.

Para entender o roteamento IP deve-se lembrar que a Internet é composta de múltiplas redes físicas interconetadas por computadores chamados Gateways.

Cada gateway tem conexão direta para duas ou mais redes. A diferença entre um gateway e um host é que este último liga-se diretamente a uma rede física.

No roteamento IP participam hosts e gateway.

O roteamento pode-se dividir em dois:

ROTEAMENTO DIRETO

Neste tipo de roteamento a transmissão do datagrama é diretamente de uma máquina à outra. Duas máquinas podem trabalhar em roteamento direto somente se ambas estão na mesma rede (por exemplo um mesmo barramento ethernet).

A transmissão de um datagrama IP entre duas máquinas numa mesma rede física não involve gateways. O transmissor (remetente) encapsula o datagrama num quadro físico (frame: nível de enlace), liga o endereço IP destino ao endereço físico (de hardware) correspondente, e envia o quadro resultante diretamente ao destino.

Para saber se a máquina destino está na mesma rede se faz uma comparação entre os endereços IP fonte e destino, especificamente entre os campos que identificam a rede. Se ambos campos são iguais significa que o datagrama pode ser enviado diretamente sem ter que passar por um gateway.

ROTEAMENTO INDIRETO

Este tipo de roteamento é mais difícil que o roteamento direto, já que o remetente deve identificar um gateway ao qual o datagrama pode ser enviado, depois o gateway deve enviar o datagrama a rede destino.

Vamos supor que tenham muitas redes interconetadas por gateways, mas só tenham dois hosts em cada extremo da interconexão das redes, quando um host quer enviar ao outro, ele encapsula o datagrama e o envia ao gateway mais próximo. Uma vez que o quadro chega ao gateway, o software de IP extrae o datagrama encapsulado, e as rotina de roteamento IP selecionam o próximo gateway que formará parte do caminho que levarrá o datagrama ao host destino.

Para um gateway saber onde enviar um datagrama, e para um host saber qual gateway usar para um destino determinado, precisa-se de um algoritmo de roteamento que maneje as Tabelas de Roteamento .

TABELAS DE ROTEAMENTO

Um algoritmo de roteamento IP usa uma tabela de roteamento IP em cada máquina que armazena informações acerca de possíveis destinos e a maneiras de chegar a eles.

Tanto os hosts como gateways têm tabelas de roteamento. Quando o software de roteamento IP num host ou gateway necessita transmitir um datagrama, ele consulta a tabela de roteamento para decidir onde enviar o datagrama.

Tipicamente a informação que se armazena nas tabelas de rotas é o par (N,G), onde N é o endreço IP da rede destino e G é o endereço IP do próximo gateway no caminho a rede N. De modo que uma tabela de roteamento num gateway G somente especifica um passo do caminho de G a uma rede destino, o gateway não sabe o caminho completo ao destino.

É importante entender que a tabela de roteamento sempre aponta aos gateways que podem ser alcançados através da rede a qual esse gateway está conetado. Isso significa que todos os gateways listados na tabela de roteamento de uma máquina M devem conetar-se as redes às quais M está conetada diretamente. Quando um datagrama está pronto para sair de M, o software IP localiza o endereço IP destino e extrae a porção da rede. Logo M usa a identificação da rede para fazer uma decisão de roteamento, selecionando um gateway que possa ser alcançado diretamente.

Nas tabelas de roteamento não é possível armazenar as informações de cada máquina destino, seria impossível manter as tabelas atualizadas, além de que as máquinas teriam problemas com armazenamento para toda a informação.

ICMP: Internet Control Message Protocol

Como IP provê um serviço de expedição de datagramas sem conexão e não confiável, e além disso um datagrama viaja de um gateway a outro até alcançar um gateway que possa expedí-lo diretamente ao host destino; é necessário um mecanismo que emita informações de controle e de erros quando acontecerem problemas na rede. Alguns dos problemas típicos que podem acontecer são:

Um gateway não pode expedir ou rotear um datagrama

Um gateway detecta uma condição não usual tal como congestionamento.

O mecanismo de controle que emite mensagens quando acontece algum erro é a função principal do protocolo ICMP.

O ICMP permite aos gateways enviar mensagens de erros ou de controle a outros gateways ou hosts. ICMP provê comunicação entre os software de IP numa máquina e o software de IP numa outra máquina.

ICMP somente reporta condições de erros à fonte original. A fonte deve relatar os erros aos programas de aplicação individuais e tomar ação para corrigir o problema. Uma das mensagens que o ICMP pode enviar é: Destination Unreachable, o qual, por sua vez pode ser dos seguintes tipos:

- Network Unreachable (rede não alcançável)

- Host Unreachable (host não alcançável)

- Port Unreachable (port não alcançável)

- Destination Host Unknown (Host destino desconhecido)

- Destination Network Unknown (rede destino desconhecida)

TCP: TRANSPORT CONTROL PROTOCOL.

TCP é um protocolo da camada de transporte. Este é um protocolo orientado a conexão, o que indica que neste nível vão ser solucionados todos os problemas de erros que não forem solucionados no nível IP, dado que este último é um protocolo sem conexão. Alguns dos problemas com os que TCP deve tratar são:

pacotes perdidos ou destruídos por erros de transmissão .

expedição de pacotes fora de ordem ou duplicados.

O TCP especifica o formato dos pacotes de dados e de reconhecimentos que dois computadores trocam para realizar uma transferência confiável, assim como os procedimentos que os computadores usam para assegurar que os dados cheguem corretamente. Entre estes procedimentos estão:

Distinguir entre múltiplos destinos numa máquina determinada.

Fazer recuperação de erros, tais como pacotes perdidos ou duplicados.

Para entender melhor o protocolo TCP a seguir veremos alguns conceitos, para depois passarmos ao formato TCP

Portas, Conexões e Endpoints

Baseando-se no modelo de referência OSI, o protocolo TCP é um protocolo que reside na camada de transporte como mostra a figura


TCP permite que múltiplos programas de aplicação numa determinada máquina se comuniquem concorrentemente . TCP se encarrega de demultiplexar o tráfego TCP entrante entre os programas de aplicação.

TCP usa número de portas para identificar o último destino numa máquina. A cada porta é associado um número inteiro pequeno para identificá-lo.

TCP foi construído sobre a abstração de CONEXÃO, na qual os objetos a serem identificados são conexões de circuitos virtuais e não portas individuais. As conexões são identificadas por um par de "endpoints". Uma conexão consiste de um circuito virtual entre dois programas de aplicações, então pode-se assumir um programa de aplicação como a conexão entre os endpoints, mas isto não é certo, TCP define um endpoint como um par de inteiros (host,port), onde host é o endereço IP para um computador e Port é uma porta TCP nesse computador.

Exemplo: 128.10.2.3.25 especifica a porta TCP número 25 na máquina como o endereço IP 128.10.2.3.

Uma conexão está definida por dois endpoints, assim que se há uma conexão entre as máquinas 192.107.104.12 (na Universidade Nacional de Ingenieria, Nicaragua) e 143.54.2.99 (na Universidade Federal do Rio Grande do Sul, Brasil), a conexão deve ser definida pelos endpoints seguintes:

(192.107.104.12,1069) e (143.54.2.99,25).

Já que TCP identifica uma conexão por um par de endpoints, um número de porta pode ser compartilhado por múltiplas conexões na mesma máquina.

SEGMENTOS, FLUXOS E NÚMEROS DE SEQUÊNCIAS

O TCP vê o fluxo de dados como uma sequência de bytes, que ele divide em segmentos para a transmissão. Usualmente cada segmento viaja através da Internet com um único datagrama IP.

TCP usa um mecanismo de "sliding window" para resolver dois problemas importantes:

Transmissão eficiente

Controle de fluxo.

Formato do segmento TCP

A unidade de transferência entre o software TCP de duas máquinas é chamado um Segmento. Os segmentos são trocados para estabelecer conexões, transferir dados, enviar reconhecimentos e fechar conexões. Dado que TCP usa a técnica de Piggybacking, um reconhecimento viajando de uma máquina A a B pode ir no mesmo segmento de dados que estão sendo enviados de A a B, embora o reconhecimento refere-se a dados enviados da máquina B a A.

O formato do segmento TCP é o seguinte:


Definições dos Campos do Segmento TCP

-Porta Fonte e Destino: estes campos no cabeçalho TCP contêm os números de portas TCP que identificam os programas de aplicação dos extremos de uma conexão.

- Número de sequência (32 bits): identifica a posição no fluxo de bytes do segmento enviado pelo transmissor. O número de sequência refere-se ao fluxo de dados que vai na mesma direção do segmento.

- Número de Reconhecimento(32 bits): este campo identifica a posição do byte mais alto (ou último byte) que o fonte recebeu. O número de reconhecimento refere-se ao fluxo de dados na direção contrária ao segmento. Os reconhecimentos sempre especificam o número do próximo byte que o receptor espera receber.

- Offset: contém um inteiro que especifica o início da porção de dados do segmento. Este campo é necessário já que o campo Options varia em comprimento dependendo de quais opções tenham sido incluídas. De modo que o tamanho do cabeçalho TCP varia dependendo das opções selecionadas.

- RES: reservado para uso futuro.

- CODE(6 bits): determina o propósito e conteúdo do segmento, codificado assim:

Bits de esquerda a Direita Significado

URG - Campo de ponteiro Urgente é

válido

ACK - Campo de Reconhecimento é

válido

PSH - Este segmento solicita um PUSH

RST - Reset da conexão

SYN - Sincroniza numeros de sequências

FIN - O transmissor chega ao fim do fluxo

de bytes.

WINDOW: através deste campo o software TCP indica quantos dados ele tem capacidade de receber em seu buffer.

URGENT POINTER: TCP através deste campo permite que o transmissor especifique que alguns dados são urgentes, isto significa que os dados serão expedidos tão rápido quanto seja possível.

OPTIONS: o software TCP usa este campo para se comunicar com o software do outro extremo da conexão.

CHECKSUM: é usado para verificar a integridade tanto do cabeçalho como dos dados do segmento TCP.

Alguns Números de Portas TCP bem Conhecidas

Decimal Descrição

7 - Echo

11 - Users (Usuários Activos)

20 - FTP-DATA

21 - FTP (controle)

23 - TELNET

25 - SMTP

42 - NameServer

79 - FINGER

103 - X400(Serviço de Mail X.400)

PROTOCOLO UDP (USER DATAGRAM PROTOCOL)

UDP provê um serviço sem conexão não confiável, usando IP para transportar mensagens entre duas máquinas.

Este protocolo, igualmente o TCP, provê um mecanismo que o transmissor usa para distinguir entre múltiplos receptores numa mesma máquina

FORMATO DO DATAGRAMA UDP

Cada datagrama UDP é formado por um cabeçalho UDP e uma área de dados.

O formato do cabeçalho UDP está dividido em quatro campos de 16 bits.

Definições dos campos:

Source and Destination Ports: estes campos contêm os números de portas fonte e destino do protocolo UDP. A porta fonte é opcional, quando é usada ela especifica a porta a qual uma resposta poderia ser enviada, se não é usada contém zeros.

Length: contém um contador de bytes no datagrama UDP. O valor mínimo é oito, sendo este só o comprimento do cabeçalho.

Checksum: Este campo é opcional. Um valor de zero indica que o checksum não é computado.

Alguns Números de Portos UDP bem Conhecidos

Decimal---------------------------Descrição

7---------------------!!Echo

11---------------------Users (Usuários Activos)

37---------------------Time

53---------------------Domain Name Server

69---------------------TFTP (Trivial File Transfer Protocol)

161---------------------SNMP net monitor

163---------------------SNMP traps

Postagens mais visitadas deste blog

Boa Sorte!

Sobre o Google - O que ele diz sobre "inrul, intitle, allintilte, allinurl" e o que outros dizem...