Você está na página 1de 35

Protocolos Transporte

TCP/ IP

Docente: Patrícia Gonçalves

2008/2009
Introdução TCP/IP

 O conjunto de protocolos TCP/IP (Transmission


Control Protocol/Internet Protocol ) são o pilar das
comunicações na Internet.
 Este conjunto de protocolos foi desenvolvido de forma
a permitir a partilha de recursos entre os diversos
constituintes de uma rede.
 O TCP/IP é um protocolo estruturado por camadas,
estando a camada TCP ( Transmission Control
Protocol ) acima da camada IP ( Internet Protocol ).

2
Introdução TCP/IP

 A camada TCP gere o envio das mensagens ou


ficheiros, necessitando por vezes de dividi-los em
vários pacotes de tamanho apropriado, no receptor, a
aplicação que implementa a camada TCP será a
responsável pela sua reconstrução.
 A camada IP tem a responsabilidade de fazer chegar
o pacote ao endereço IP de destino, o pacote é-lhe
entregue pela camada TCP juntamente com o
endereço do computador a que se destina.
 Durante a viagem o pacote passará eventualmente
por vários sistemas, onde eventualmente será
verificado o endereço do destinatário de forma a
encaminhar para o melhor trajecto possível.

3
Introdução TCP/IP

 O TCP/IP usa o modelo cliente/servidor, onde uma


aplicação cliente pede um serviço a uma aplicação
servidor (a aplicação cliente normalmente encontra-se
num computador distinto da aplicação servidor).
 A comunicação TCP/IP é ponto-a-ponto, o que
significa que quando o cliente e servidor estão em
computadores distintos as mensagens envolverão
apenas esses dois computadores.

4
Estrutura do TCP/IP

 O conjunto de protocolos TCP/IP fornece vários


serviços, desde aplicações de baixo nível como o
protocolo IP, até aplicações de alto nível como o TCP
e UDP.

5
Estrutura do TCP/IP

 A camada mais elevada é a camada onde se


encontram as aplicações de rede e que corresponde a
aplicações que utilizam o acesso à rede.
 Nesta camada encontram-se outros protocolos de
nível superior ao TCP/IP e que pertencem à camada
aplicação, estes destinam-se à execução de tarefas
especificas como a transferência de ficheiros entre
computadores, envio de e-mail, ou até abrir uma
sessão de trabalho num computador remoto.

6
Estrutura do TCP/IP
 Os protocolos da camada aplicações de rede implementam pelo
menos os seguintes serviços do TCP/IP (existem mais):
 FTP ( File Transfer Protocol ): Este serviço/protocolo permite
transferir ficheiros entre dois computadores diferentes em
qualquer dos sentidos. Usualmente e por medida de segurança,
é pedido um username e uma password.
 Telnet: Este serviço/protocolo permite a um utilizador abrir uma
sessão de trabalho numa máquina remota. Ao utilizarmos este
serviço é pedido um username e uma password como no serviço
anterior.
 Mail: Este serviço permite o envio de mensagens a outros
utilizadores dispersos pela rede. Normalmente a gestão do mail é
feita um servidor próprio, tornando-se neste caso a aplicação de
mail do computador onde se encontra o utilizador um mero
interface entre o computador e o servidor de mail.
7
Estrutura do TCP/IP

 Os serviços descritos devem estar presentes em


qualquer implementação dos protocolos TCP/IP, uma
vez que possuem um papel muito primordial nas
redes baseadas nos protocolos TCP/IP.
 Hoje em dia nas redes modernas existem diversos
computadores dedicados a serviços específicos, já
não é utilizado aquele modelo onde cada computador
tinha que implementar todos os serviços.
 Existem outros serviços para além dos listados, estes
foram apenas descritos por serem dos mais
importantes e conhecidos existindo no entanto outros
mais específicos a determinadas aplicações.

8
Arquitectura Protocolar TCP/IP
 Arquitectura dominante
 Os protocolos da família TCP/IP foram especificados e
implementados antes da maior parte dos protocolos baseados no
modelo OSI
 WWW usa TCP/IP
 Filosofia TCP/IP
 As funções de comunicação são estruturadas em módulos
 Entidades comunicam com entidades homólogas (peer)
noutros sistemas
 Num sistema uma entidade
– Usa serviços de outras entidades
– Fornece serviços a outras entidades
– Serviços podem ser fornecidos a camadas não adjacentes (ao
contrário do modelo OSI)

9
Pilha Protocolar TCP/IP
Aplicação – serviços de utilizador
– Comunicação entre processos ou aplicações
– Modelo cliente-servidor
– HTTP, FTP, telnet
Transporte (TCP/UDP)
– Transmissão de mensagens extremo a extremo
– Independente do serviço de sub(redes) físicas
– Pode incluir transferência fiável (TCP)
Internet (IP)
– Encaminhamento através de múltiplas (sub)redes
interligadas (internetworking)
– Implementado em computadores (hosts) e nós
intermédios (routers)
Acesso a uma rede (subrede)
– Acesso a uma (sub)rede e comunicação entre
estações (hosts / routers) ligadas à mesma (sub)rede
física
Físico
– Características eléctricas e mecânicas do acesso à
(sub)rede (níveis de sinal, débitos de transmissão,
conectores, etc.)

10
Algumas Características do TCP/IP
 O IP (Internet Protocol) é
implementado em todos os
computadores e routers
 Cada computador tem um
endereço IP único em cada
subrede a que pertence
 Cada processo num
computador tem um endereço
único (porta)

11
IP – Internet Protocol

 RFC 791
 Entidade da pilha TCP/IP
 Protocolo de interligação de redes mais usado
 IP especificado em duas partes
 Serviços oferecidos aos níveis superiores
 Protocolo e formato do datagrama

12
Protocolo IP
» Version – versão do protocolo (v4)
» IHL – comprimento do cabeçalho
(em palavras de 32 bits); 20..60
octetos
» Type of Service – tipo de serviço a
fornecer pela rede
» Total Length – comprimento total
do datagrama (máx. 65535 octetos)
» Identification – identificador
comum a todos os fragmentos de um » Protocol – protocolo da camada de
datagrama transporte
» DF – Don’t Fragment encapsulado (exemplo: TCP, UDP)
» MF – More Fragments » Source Address – endereço do emissor
» Fragment Offset » Destination address – endereço do
» Time To Live (TTL) – limita a vida destinatário
de um pacote; decrementado de cada » Options – 1 octeto identifica a opção; 1
vez que passa por um router; quando octeto
atinge o valor 0 o pacote é eliminado contém o comprimento (opcional); exemplo:
Record Route
13
Protocolos TCP/IP

14
TCP – Transmission Control Protocol
 RFC 793
 Características
 assegura o fluxo de octetos extremo a
 extremo, fiável, sobre um suporte não
fiável
 protocolo orientado às ligações
 ligações full-duplex
 confirma os dados
 recupera de perdas e erros
(retransmissões)
 entrega ordenada dos dados
 controlo de fluxo e de
congestionamento
 Estabelecimento de ligação
 3 way handshake
 modelo cliente-servidor
15
Cabeçalho do pacote TCP

16
Cabeçalho do pacote TCP
 Portos origem e destino: identificam múltiplos canais
virtuais dentro da mesma ligação entre 2 máquinas.
 Porto destino é normalmente usado para identificar a aplicação
servidor destino que irá receber a ligação.
 Cada ligação é determinada pelos pares (host, porto)
das 2 máquinas.
 Só pode existir uma única ligação entre quaisquer 2
portos;
 Mas podem existir múltiplas ligações a partir de um
único porto origem para vários destinos.
 Número de sequência: especifica a ordem do primeiro
byte no pacote, de modo a garantir a ordenação dos
dados.

17
Cabeçalho do pacote TCP
 Acknowledgement Number: confirmação do último
byte recebido. Referido como “ack”. Este valor
especifica o último byte recebido correctamente na
ligação.
 Flags: sinalizam condições ou estados especiais.
 Exemplo:
 inicialização de comunicação através de um “three
way handshake”:
 SYN, SYN-ACK, ACK

 Checksum: usado para garantir a correcção dos


dados contidos no pacote TCP (inclui dados).

18
User Datagram Protocol
(UDP)
 Serviço não orientado à conexão para aplicações
 Não fiável
 Controlo de entrega e duplicação não garantido
 Baixo custo de comunicação
 Serviço básico comum a todos tipos de comunicações
 Utilização:
 Recolha ou disseminação de informação
 Modelo de comunicação pedido-resposta
 Aplicações com necessidade de tempo-real

19
Cabeçalho Pacote UDP

 Pacote UDP contêm apenas 4 campos:


 Portos origem e destino, para permitir a utilização de
múltiplas aplicações na mesma máquina. (2 bytes/porto)
 Comprimento do pacote UDP.
 Valor para verificação dos dados do pacote.

20
Camada Transporte no Mod. OSI

 Garante troca de dados correcta entre nodos


terminais.
 Oferece serviço de transporte orientado à conexão:
 Sem erros
 Em sequência (ordem)
 Sem perdas ou múltiplas cópias
 Pode oferecer parâmetros de qualidade de serviço
para camada de sessão:
 Taxas de erro configuráveis,
 Atraso máximo na transmissão

21
Protocolos de Transporte

 Camada de transporte oferece um serviço de


transferência de dados entre dois hosts terminais que
esconde os detalhes da rede ou redes subjacentes.
 Protocolos de transporte dividem-se em duas
categorias: orientados à conexão ou não.
 Protocolo orientado ao datagrama não oferece
garantias, funciona abordagem “best-effort” (exemplo:
UDP).
 Protocolo orientado à conexão oferece fiabilidade
mas é mais complexo (exemplo: TCP)

22
Protocolo de Transporte Orientado
à Conexão
 Estabelece um canal virtual ou lógico entre aplicações
nas 2 máquinas terminais.
 Responsável por estabelecer, manter e terminar a
conexão lógica.
 São mais complexos quando implementados sobre
protocolos de rede sem serviço fiável
 No protocolo IP os datagramas podem-se perder, duplicar ou
ser entregues por uma ordem diferente pela qual foram
enviados.

23
Propriedades de um Protocolo de
Transporte fiável
 Entrega ordenada de pacotes:
 Cada segmento de dados é numerado sequencialmente
 O TCP usa granularidade do byte, e usa a numeração do
primeiro byte como o número de sequência do pacote
 Retransmissão de pacotes:
 Pacote extraviou-se no percurso
 Implica capacidade do destinatário lidar com pacotes
duplicados
 Emissor não detecta a falha na entrega, por isso o
receptor deve sinalizar a recepção com sucesso ACK.
 Quando o emissor não recebe a confirmação da
recepção do pacote, o emissor reenvia novamente o
pacote.
24
Propriedades de um Protocolo de
Transporte fiável
 Definição de um período fixo de time-out (tempo de
espera até retransmitir):
 Não se adapta a mudanças de carga na rede que podem fazer
com que durante um curto espaço de tempo todos os pacotes
se atrasem a chegar ao destino;
 Quando é muito pequeno, pequenos atrasos na comunicação
causam re-envios desnecessários dos pacotes;
 Quando é muito grande, o canal demora bastante tempo a
recuperar da perda de um pacote;
 Idealmente este período deve ser um pouco maior do que o
“round-trip time”: o tempo médio que demora ao envio e
recepção de mensagens entre duas máquinas.

25
Aplicação do TCP/IP (mail)
 Como já foi referido o TCP/IP é um conjunto de
protocolos organizados por camadas, o que pode ser
evidenciado através da análise de uma aplicação
típica.
 Neste caso analisaremos o serviço de mail, para o qual
existe um protocolo que define o conjunto de
comandos e a estrutura das mensagens a enviar.
 O protocolo de mail foi especificado de forma a utilizar
as facilidades do TCP ( Transport Control Protocol ) e
do IP ( Internet Protocol ), o protocolo de mail parte do
princípio que existe um meio fiável de comunicação
entre o emissor e receptor.

26
Aplicação do TCP/IP (mail)
 O serviço de mail pertence à camada de aplicações de
rede, esta camada utiliza o serviço fornecido pela
camada TCP/UDP.
 A camada TCP/UDP utiliza os serviços da camada IP,
que por sua vez utiliza os serviços de uma camada
inferior neste caso a Ethernet.
 Normalmente as aplicações TCP/IP utilizam 4
camadas.

27
Aplicação do TCP/IP (mail)
 O TCP/IP assume um modelo onde considera a
existência de várias redes independentes ligadas entre
si por gateways, e onde o utilizador pode aceder a
qualquer outro recurso em qualquer das redes.
 Os datagramas passarão por várias redes antes de
atingirem o seu destino final pelo que terá de existir
uma forma de orientar os datagramas.
 Esta forma de orientação deverá ser invisível ao
utilizador que só precisa de conhecer o nome (ou
endereço IP) do computador a que quer aceder.

28
Aplicação do TCP/IP (mail)
 O conjunto de protocolos TCP/IP é baseado no
conceito sem ligação (connectionless), o que significa
que a a informação é transferida como uma sequência
de datagramas independentes.
 Um datagrama é o equivalente a um telegrama no
serviço postal corrente uma vez que possui um
remetente, um destinatário e uma mensagem.
 Cada datagrama é enviado individualmente através da
rede, por ligações previamente definidas.

29
Aplicação do TCP/IP (mail)
 Dependendo do tamanho da mensagem esta poderá
ter que ser dividida por vários datagramas, pelo que os
vários datagramas serão tratados pela rede como não
tendo nenhuma relação entre eles.
 Para se transferir pela rede um ficheiro de 15000
octetos haveria o problema de algumas redes que
estão entre o emissor e o receptor não suportarem
datagramas de 15000 octetos.
 Neste caso o TCP divide o ficheiro em vários
datagramas com 30-500 octetos cada um, que serão
enviados para a rede.

30
Aplicação do TCP/IP (mail)
 A camada TCP do receptor terá a responsabilidade de
reagrupar os datagramas por forma a reconstituir o
ficheiro inicial de 15000 octetos.
 Enquanto os datagramas estão em trânsito entre os
dois pontos a rede não tem qualquer indicação da
ligação que existe entre esses pontos, sendo possível
ao datagrama 100 chegar antes do 99.
 Por vezes ocorrem erros na rede que provocam a
perda de datagramas, neste caso existe um
mecanismo de protecção que pede o reenvio do
datagrama.

31
Aplicação do TCP/IP (mail)
 Os termos datagrama e pacotes são muitas vezes
confundidos.
 Datagrama é o termo que se deve utilizar quando se
descreve o TCP/IP, é também a unidade de dados com
que os protocolos trabalham.
 Pacote é um termo aplicado a algo que é físico, um
pacote aparece na Ethernet ou num fio.
 Na maior parte dos casos um pacote contém apenas
um datagrama, sendo a diferença nula.

32
Aplicação do TCP (mail)
 De seguida é exemplificado o que acontece a um
ficheiro que vai ser enviado pela rede:
1. Inicialmente temos um ficheiro que queremos enviar para outro computador,
ele é composto por n conjuntos de octetos P1, P2, P3, ..., Pn.

Cada conjunto de octetos P será constituido da seguinte forma, onde O1, O2, ...,
Oj são octetos,

Se tivermos um ficheiro com 15000 octetos e supondo que cada datagrama TCP
pode levar 500 octetos de dados, então teríamos um ficheiro composto por 30
conjuntos de 500 octetos. Ou seja, o valor para n seria de 30 (n/j=15000/500=30) e
o j seria 500.

33
Aplicação do TCP (mail)
2. O que o TCP faz é dividir o ficheiro inicial em partes fáceis de gerir (TCP tem de
determinar qual o tamanho máximo do datagrama que a rede suporta), a seguir o
TCP parte o ficheiro em partes cujo tamanho é suportado pela ligação.

3. De seguida o TCP acrescenta um cabeçalho a cada um dos conjuntos obtidos no


ponto anterior. O cabeçalho TCP é aqui designado por CP.

O cabeçalho TCP contém cerca de 20 octetos, dos quais se destacam o porto de


origem e destino do datagrama, e o número de ordem. Os portos são utilizados para
gerir as ligações, por exemplo se tivermos 3 utilizadores a transferir ficheiros de um
computador central para 3 computadores dispersos pela rede, a aplicação de TCP
alocava por exemplo os portos 999, 1000, 1001 como os portos de origem do
datagrama. O TCP terá de saber o porto de destino do lado dos utilizadores e coloca-
o no cabeçalho.

34
Aplicação do TCP (mail)
Todos os datagramas têm um numero de sequência para garantir a sua
correcta ordenação no destino, permitindo assim descobrir se há algum
datagrama em falta. O TCP numera os octetos e não os datagramas, assim
se existirem 500 octetos de dados em cada datagrama ao primeiro datagrama
é posto o numero 0 no respectivo campo, enquanto ao segundo é atribuido o
numero 500, terceiro 1000, etc.

Existe um outro campo no cabeçalho que é o checksum, e é calculado


adicionando todos os octetos do datagrama. No destino o TCP calcula de novo
o checksum, se o valor calculado diferir do valor enviado no cabeçalho então
algo de errado aconteceu na transmissão e o datagrama é deitado fora.

35