Você está na página 1de 34

 A camada de transporte é responsável pela comunicação entre processos

finais de uma mensagem inteira.


 Processo é um programa aplicativo em execução em um host

 A camada de transporte garante a integridade e a ordem de entrega dos


pacotes de uma mensagem inteira, controlando erros na transmissão, bem
como o fluxo de dados.
 A camada de rede olha os pacotes de maneira individual

 Na camada de transporte, geralmente uma mensagem é dividida em


segmentos de dados
 Um protocolo de camada de transporte pode ser dividido em duas
categorias principais: sem conexão (connectionless) ou orientado a
conexão (connection-oriented)
 Trata cada segmento como um pacote independente e o entrega à camada de
transporte na máquina destinatária.
 EX: UDP
 Um protocolo de camada de transporte orientada a conexão estabelece uma
conexão virtual com a camada de transporte da máquina destinatária antes de
iniciar a transferência dos pacotes de dados. Após todos os dados terem sido
transferidos, a conexão é encerrada.
 EX: TCP, DCTP
 A camada de transporte pode ser responsável pelo controle de fluxo e de erros.
Entretanto, o controle de fluxo e de erros nessa camada é realizado fim a fim (end-
to-end) e não apenas no enlace físico (link)
 UDP, não implementa mecanismos para controle de erros e de fluxo
 TCP e SCTP, usam janelas deslizantes para implementar controle de fluxo e
sistemas de confirmação de pacotes para o controle de erros.
 A camada de enlace é responsável pela transmissão de frames entre dois nós
adjacentes conectados por um enlace físico (link). Essa comunicação é
denominada comunicação nó a nó (node-to-node).
 A camada de rede é responsável pelo roteamento de datagramas entre dois hosts.
Isso é denominado comunicação host-to-host (host-to-host)
 A camada de transporte é responsável pela comunicação entre processos
 Um processo no host local, denominado cliente, solicita serviços a outro processo,
normalmente localizado no host remoto, denominado servidor.
 Para a comunicação entre processos, devemos definir o seguinte:
 1. Host local
 2. Processo local
 3. Host remoto
 4. Processo remoto
 Na camada de enlace de dados, utilizamos o endereço MAC.
 Na camada de rede, utilizamos o endereço IP.
 Na camada de transporte, utilizamos o endereço de camada de transporte,
denominado número de porta, para escolher um entre os vários processo
 O número da porta de destino é necessário para entrega; o número da porta de
origem é necessário para resposta
 No modelo Internet, os números de porta são inteiros de 16 bits entre 0 e 65.535
 Um programa cliente define para si mesmo um número de porta, escolhido de
forma aleatória pelo software da camada de transporte, em execução no host
cliente. Este é denominado número de porta efêmero.
 O processo no servidor usa números de porta conhecidos (well-known port
numbers).
 Existem algumas exceções a essa regra; por exemplo, existem algumas aplicações
cliente que podem utilizar números de porta conhecidos. Entretanto, todo processo
cliente conhece o número de porta do processo servidor correspondente.
A IANA (Internet Assigned Number Authority) dividiu o número das portas em três
faixas: conhecidos, registrados e dinâmicos
Portas conhecidas. As portas na faixa de 0 a 1023 são atribuídas e controladas pela
IANA. Estas são as portas conhecidas (well-known port numbers).
Portas registradas. As portas na faixa de 1024 a 49151 não são atribuídas ou
controladas pela IANA. Elas podem ser registradas na IANA para impedir
duplicação.
Portas dinâmicas. As portas na faixa de 49152 a 65535 não são controladas nem
registradas. Elas podem ser usadas por qualquer processo. Estas são denominadas
portas efêmeras.
 A combinação entre um endereço IP e um número de porta é conhecida como
endereço socket
 O endereço socket no cliente define o processo cliente de forma exclusiva, da
mesma forma que o endereço socket no servidor estabelece o processo servidor
de modo exclusivo.
 O protocolo de camada de transporte precisa de um par de endereços socket: o
endereço socket no cliente e o endereço socket no servidor.
 Essas informações fazem parte do cabeçalho IP e do cabeçalho do protocolo de
camada de transporte. O cabeçalho IP contém os endereços IP; o cabeçalho UDP
ou TCP contém os números das portas
 Multiplexação
 No lado do emissor, podem existir vários processos que precisam transmitir pacotes.
Entretanto, há somente um protocolo de camada de transporte em execução em dado
instante. Trata-se de uma relação vários-para-um e que requer a multiplexação. O
protocolo de transporte aceita mensagens provenientes de diferentes processos,
diferenciados pelos números de porta a elas atribuídas. Após acrescentar o cabeçalho, a
camada de transporte passa o pacote para a camada de rede.
 Demultiplexação
 No lado do receptor, a relação é de um-para-vários e requer demultiplexação. A camada
de transporte recebe os datagramas da camada de rede. Após a verificação de erros e a
eliminação do cabeçalho, a camada de transporte entrega cada mensagem para o
processo usuário apropriado baseado no número da porta.
 Em um serviço de transporte sem conexão (connectionless), os pacotes são
transmitidos de uma parte a outra sem a necessidade do estabelecimento ou da
liberação de circuitos virtuais.
 Os pacotes não são numerados; durante sua transmissão, eles podem ser
corrompidos ou perdidos ou, então, podem até chegar fora de ordem.
 Também não existe confirmação do recebimento dos pacotes.
 O UDP implementa serviços de transporte sem conexão.
 Em um serviço orientado a conexão (connection-oriented), estabelece-se,
primeiro, uma conexão entre a origem e o destino dos dados. Logo após, os dados
podem ser transferidos. No final, a conexão é encerrada.
 O TCP e o SCTP são protocolos orientados a conexão.
 Se o programa na camada de aplicação requerer confiabilidade, necessitamos
utilizar um protocolo de camada de transporte confiável que implemente
mecanismos de controle de fluxo, controle de erros e ordenação de pacotes.
 Isso implica em um serviço mais lento e mais complexo.
 O TCP e o SCTP são orientados a conexão (connection-oriented) e confiáveis.
 O controle de fluxo e de erros no TCP é implementado por um protocolo de janela
deslizante
 Se a camada de enlace é confiável e implementa controle de fluxo e de erros, por
que precisamos disso também na camada de transporte?
 A confiabilidade na camada de enlace é implementada entre dois nós adjacentes. Na
maioria dos casos, precisamos da confiabilidade fim a fim (end-to-end). Como a camada
de rede na Internet não é confiável (modalidade best effort), necessitamos implementar
confiabilidade na camada de transporte.
 O programa na camada de aplicação pode não requerer confiabilidade no
transporte de dados, ou por implementar mecanismos próprios de controle de
fluxo, controle de erros e ordenação de pacotes, ou por requerer serviços mais
rápidos, ou pela natureza do serviço não exigir controle de fluxo e de erros
(aplicações em tempo real). Para esses casos, podemos usar um protocolo não
confiável.
 O UDP é um protocolo sem conexão (connectionless) e não confiável
 O UDP (User Datagram Protocol) é um protocolo de transporte sem conexão
(connectionless) e não-confiável.

 Não adiciona nenhum controle adicional aos serviços de entrega do IP, exceto pelo
fato de implementar a comunicação entre processos, em vez da comunicação entre
hosts
 Os pacotes UDP, denominados datagramas de usuário, possuem um cabeçalho de
tamanho fixo, de 8 bytes
 Porta de origem. Esse campo especifica o número da porta usada pelo processo
em execução no host de origem. Ele tem 16 bits de comprimento, significando que
o número da porta pode variar de 0 a 65535.
 Se o host de origem for um cliente (um cliente enviando uma solicitação), o
número da porta, na maioria dos casos, é um número de porta efêmero solicitado
pelo processo cliente e escolhido randomicamente pelo software UDP em
execução no host de origem.
 Se o host de origem for um servidor (um servidor enviando uma resposta), o
número da porta, na maioria dos casos, é um número de porta conhecido.
 Porta de destino. Esse campo especifica o número da porta usado pelo processo
em execução no host de destino. Ele também tem 16 bits de comprimento.
 Se o host de destino for um servidor (um cliente transmitindo uma solicitação), o
número da porta, na maioria dos casos, é um número de porta conhecido.
 Se o host de destino for um cliente (um servidor transmitindo sua resposta), o
número da porta, na maioria das vezes, é um número de porta efêmero. Nesse caso,
o servidor copia o número de porta efêmero que recebeu no pacote de solicitação.
 Comprimento. Esse campo de 16 bits define o comprimento total de um
datagrama UDP, compreendendo cabeçalho mais dados. Os 16 bits podem definir
um comprimento total entre 0 a 65.535 bytes. Entretanto, o comprimento total deve
ser menor, pois um datagrama UDP deve ser repassado em um datagrama IP de
comprimento total igual a 65.535 bytes.
 O campo de comprimento em um datagrama UDP, na verdade, é desnecessário.
Um datagrama UDP deve ser encapsulado em um datagrama IP. Existe um campo
no datagrama IP que estabelece o comprimento total do pacote. Há outro campo
no datagrama IP para definir o comprimento do cabeçalho. Portanto, se
subtrairmos o valor do segundo campo do primeiro, podemos calcular o
comprimento do datagrama UDP, encapsulado em um datagrama IP.
comprimento de um datagrama UDP =
comprimento total IP – comprimento do cabeçalho IP

Entretanto, os projetistas do protocolo UDP acharam que seria mais eficiente que o UDP no
destino calculasse o comprimento dos dados a partir das informações fornecidas no datagrama
UDP, em vez de solicitar ao driver IP para fornecer tais informações. Devemos relembrar que,
quando o driver IP entrega um datagrama UDP à camada UDP, ele já eliminou o cabeçalho IP.
 Checksum. Esse campo de 16 bits é usado para detectar erros na transmissão de
datagrama UDP (cabeçalho mais dados).
 O cálculo do checksum e sua inclusão em um datagrama UDP são opcionais. Se o
checksum não for calculado, esse campo será preenchido com bits 1s. Note que o
checksum calculado jamais pode conter todos os bits iguais a 1
 O checksum inclui três seções: um pseudocabeçalho, o cabeçalho UDP e os dados
provenientes da camada de aplicação.
 O pseudocabeçalho faz parte do cabeçalho de um pacote IP, no qual um
datagrama UDP será encapsulado, com alguns campos preenchidos com 0s
 Se no cálculo do checksum não for incluído o pseudocabeçalho, pode ser que um
datagrama de usuário recebido seja considerado livre de erros. Entretanto, caso o
cabeçalho IP esteja corrompido, o datagrama poderia ser indevidamente entregue
a um host incorreto.
 O campo de protocolo é acrescentado para garantir que o pacote pertença ao UDP,
e não a outros protocolos da camada de transporte
 O valor do campo de protocolo para o UDP é 17
 O UDP implementa serviços de transporte sem conexão. Isso significa que cada
datagrama de usuário enviado pelo UDP é um datagrama independente.
 Não existe nenhuma relação entre os diferentes datagramas de usuário, mesmo se eles
forem provenientes de um mesmo processo de origem e tiverem o mesmo programa
de destino.
 Os datagramas de usuário não são numerados.
 Não existem mecanismos para estabelecer e/ou terminar uma conexão virtual, ao
contrário do que acontece com o TCP.
 Cada datagrama de usuário pode trafegar por um caminho diferente.
 Como não existe uma conexão virtual, um processo de aplicação não pode entregar um
fluxo de dados contínuo para o UDP e esperar que o UDP os transmita em diferentes
datagramas de usuário correlacionados. Em vez disso, cada solicitação deve ser
suficientemente pequena para caber em um único datagrama de usuário. Apenas
processos que transmitem mensagens curtas devem usar o UDP.
 O UDP é não confiável.
 Não implementa controle de fluxo e, portanto, nenhum mecanismo de janelamento.
 O receptor pode ser inundado com um número excessivo de mensagens que
chegam a ele.
 O UDP não implementa mecanismos de controle de erros, exceto o checksum. Isso
significa que o emissor não sabe se uma mensagem foi perdida ou duplicada.
 Quando o receptor detecta um erro por meio do checksum, o datagrama de
usuário é descartado de maneira imperceptível.
 A ausência de controle de fluxo e de controle de erros significa que um processo
de aplicação usando UDP deve implementar esses mecanismos.
 Para transmitir uma mensagem de um processo a outro, o protocolo UDP encapsula
e desencapsula mensagens em um datagrama IP.
 No UDP, portas são associadas à filas.
 É como as portas são implementadas
 O UDP é adequado para um processo que requeira comunicação solicitação-
resposta simples com pouca preocupação com controle de erros e de fluxo.
Normalmente, ele não é usado para um processo como o FTP que precisa
transmitir um volume muito grande de dados
 O UDP é adequado para um processo que implemente mecanismos internos de
controle de fluxo e de erros. Por exemplo, o processo TFTP (Trivial File Transfer
Protocol) implementa mecanismos internos de controle de fluxo e de erros. Ele
pode usar o UDP de maneira fácil.
 O UDP é um protocolo de transporte indicado para multicast.
 O UDP é muito utilizado no gerenciamento de redes, protocolo SNMP
 O UDP é usado em alguns protocolos de roteamento para atualização de rotas
como o RIP (Routing Information Protocol)

Você também pode gostar