Você está na página 1de 17

Aula 11 - Redes

Camada de transporte 1/5

Camada de transporte - Aula 1/5

Camada dentro do universo do sistema operacional, todos esses serviços são

implementados a nivel de sistema operacional e essa camada é responsável por

oferecer uma comunicação lógica.

O que seria essa comunicação lógica no contexto da camada de transporte?

Depende, depende da aplicação, tudo que se passa para a aplicação como se os

hospedeiros estivessem conectados, quando falamos sobre prover uma comunicação

lógica na camada de transporte significa que quando um processo do hospedeiro 1

ta falando com o processo do hospedeiro 2, socket, na visão do hospedeiro é como

se estivessem "coladinhos", não levamos em conta todo caminho de um processo de um

hospedeiro até o outro.

A camada de transporte fornece uma comunicação lógica, e não física, entre processos

de aplicações;

Explicação da figura: (comunicação fim a fim no meio de transporte)

uma aplicação conversa com outra aplicação que está em lugar diferente (o de
cima está em uma rede domestica e se conecta a uma rede corporativa)

para que uma aplicação que está utilizando uma camada de transporte utilize
esse serviço de comunicação em baixo, ele precisa que um serviço do outro lado esteja
disponível, escutando.

precisa ter funções equivalentes, mesmo que sejam inversas porque faz o
trabalho de desencapsular.

Nesse modelo de comunicação fim a fim, que é a visão que a camada de transporte
tem, todas as funcionalidades são implementadas nos sitemas finais (sistema operacional)

Uma aplicação conversa com outra aplicação em diferentes redes, para que

uma aplicação que esteja utilizando a camada de transporte, precisa estar


do outro lado escutando, uma função equivalente, comunicação fim a fim.

Todas essas funcionaliddades são implementadas no sistema operacional.

Protocolos da camada de transporte são implementados em sistemas finais e não em

roteadores.

# Passo a passo da funcionalidade da camada de transporte

Lado Remetente:

• Camada de transporte converte as mensagens que recebe de um processo de

aplicação em segmentos; (recebe via socket a mensagem/string, aí constroi o

primeiro nivel de abstração, ou seja, o segmento, chega a primeira instancia do

SO e coloca significado, em termos de rede pra essa mensagem: Coloca o cabeçalho

do transporte. [Transport/M]

• Fragmenta-se as mensagens da aplicação em “pedaços” menores (pq elas

podem ser muito grandes) e adiciona-se um cabeçalho de camada de

transporte em cada pedaço. Mas independente se vai ser fragmentada ou

não, na camada de transporte ela recebe esses cabeçalhos. Esses cabeçalhos

são a implementação do modelo de transporte, como essa mensagem na hora

que chegar no outro hospedeiro vai ser interpretada, como ela vai ser

entregue para a outra aplicação.

• Camada de transporte passa o segmento para a camada de rede no sistema

final; (Isso ainda dentro do contexto do SO que está encapsulando essa mensagem,

ou seja além do cabeçalho de transporte, uma nova string é construída

para o cabeçalho de rede [Rede[transporte/M], e então isso é enviado para

o destinatário.

• Segmento é encapsulado em um pacote de camada de rede (datagrama);

• Datagrama é enviado ao destinatário.

Como o lado destinatário lê essa mensagem??

Lado Destinatário:
• Camada de rede extrai do datagrama o segmento de camada de transporte, isso pq

ele ta vendo só a camada de rede, então extrai dessa camada a parte do

transporte e a mensagem.

• Camada de transporte processa o segmento, disponibilizando os dados

para a aplicação destinatária.

PASSO A PASSO DE COMO FUNCIONA A CAMADA DE TRANSPORTE DO LADO


REMETENTE:

a camada de transporte converte as mensagem que recebe de um processo de


aplicação em segmentos

recebe a string da aplicação via socket e converte

constroi o primeiro nível de abstração, os segmentos

as mensagens sao fragmentadas em pedaços

a mensagem recebe na camada de transporte um cabeçalho para


informar como ela deve ser interpretada quando chegar no hospedeiro

camada de transporte passa o segmento para a camada de rede no


sistema final (sistema Operacional)

o segmento é encapslado em um pacote de camada de rede


(datagrama)

datagrama é enviado ao destinatario

PASSO A PASSO DE COMO FUNCIONA A CAMADA DE TRANSPORTE DO LADO


DESTINATÁRIO

camada de rede extrai do datagrama o segmento (que é o transporte + a


mensagem) de camada de transporte

camada de transporte processa o segmento, disponibilizando os dados para a


aplicação destinatária

------------------------------------------------------------------------------------------------------------------------------
-----------------------------

RELAÇÃO ENTRE AS CAMADAS DE TRANSPORTE E DE REDE


diferença sutil, mas muito importante

um protocolo (TCP e UDP) de camada de transporte fornece


comunicação logica entre processos que rodam em hospedeiros diferentes

comunica logicamente processos, programas, conecta threads

um protocolo (TCP e UDP) de camada de rede fornece comunicação


logica entre hospedeiros

já o de redes não liga processos, mas sim, entidades, hosts

ANALOGIA

Considere duas casas – uma em São Paulo e outra em Minas Gerais, cada qual
com uma dúzia de crianças;

As crianças de SP são primas das crianças de MG e elas adoram escrever umas


para as outras;

Cada criança escreve a cada primo uma vez por semana e cada carta é
entregue pelos correios dentro de um envelope separado;

Em cada casa há uma criança responsável pela coleta e distribuição das cartas
– Mariana em SP e o Pedro em MG

QUEM OFERECE A COMUNICAÇÃO LOGICA ENTRE AS DUAS CASAS?

os correios (representa a camada de rede)

QUEM OFERECE A COMUNICAÇÃO LOGICA ENTRE OS PRIMOS?

Mariana e Pedro (uma criança de cada casa) (Representam a camada de


transporte)

O QUE ISSO TEM A VER COM A RELAÇÃO ENTRE AS CAMADAS DE TRANSPORTE E


REDE?

as duas crianças, uma de cada casa que distribui as cartas, sao camada de
transporte

e correios a camada de rede, pois liga as duas casas (hospedeiros).

1. Mensagens de aplicação = cartas em envelopes

2. Processos = primos

3. Hospedeiros (sistemas finais) = casas

4. Protocolo de camada de transporte = Mariana e Pedro, uma criança de cada


casa

5. Protocolo da camada de rede = correios, pois enterga entre hospedeiros


Os protocolos da camada de transporte residem nos sistemas finais (sistema
operacional),

onde movimentam mensagens de processos de aplicação para a borda da rede


(camada de rede).

Como o sistema operacional sabe direcionar os pacotes corretamente para a


aplicação?

isso é responsabilidade da camada de transporte (mariana e pedro)

Os serviços que Mariana e Pedro podem fornecer são claramente limitados

pelos serviços desempenhados pelos correios, assim como os protocolos

da camada de transporte!

Os serviços que um protocolo de transporte pode oferecer são muitas vezes

limitados pelo modelo de serviço da camada de rede – se os protocolos da

camada de rede não garantirem atraso ou largura de banda, então o

transporte também não poderá garantir isso.

RESUMINDO

Um protocolo de camada de transporte fornece comunicação lógica entre

processos que rodam em hospedeiros diferentes.

Um protocolo de camada de rede fornece comunicação lógica entre


hospedeiros.

Uma rede de computadores pode disponibilizar vários protocolos de


transporte.

Os serviços que um protocolo de transporte pode fornecer são muitas vezes

limitados pelo modelo de serviço do protocolo subjacente da camada de rede.


VISAO GERAL DA CAMADA DE TRANSPORTE

A Internet disponibiliza dois protocolos de transporte distintos para a camada


de aplicação:

(dois mecanismos, duas rotinas, dois programas implementados e


compilados)

UDP (User Datagram Protocol)

Oferece um serviço não confiável, não orientado para conexão;


(Mariana e Pedro não se preocupam em entregar as cartas)

TCP (Transmission Control Protocol)

Oferece um serviço confiável e orientado para conexão. (Mariana e


Pedro entregar as cartas de forma rapida e confiavel)

O desenvolvedor da aplicação escolhe entre o UDP e o TCP ao criar sockets

CAMADA DE REDE

o protocolo da camada de rede é o IP (Internet Protocol);

oferece comunicação lógica entre ospedeiros

modelo de serviço do IP é um serviço de entrega de melhor esforço - serviço


não confiável

cada sistema final possui um endereço IP

OBJETIVO DOS PROTOCOLOS DA CAMADA DE TRANSPORTE

TCP e UDP (trabalham dentro das casas para entregar aos processos) - ampliar
o serviço de entrega de IP (carteiro que entrega a carta até a casa) entre dois sistemas finais
para um serviço de entrega entre dois processos que rodam nos sistemas finais

A essa aplicação damos o nome de multiplexação/demultiplexação da camada


de transporte

UDP - entrega de dados processo a processo e verificação de erros

TCP - entrega de dados processo a processo, transferência confiável de


congestionamento

MUX - muitas entradas e uma saídas

DEMUX - uma entrada e multiplas saídas


(Para quem recebe) A rede entrega o pacote para a camada de transporte e aí
ela precisa fazer o demux

(Para quem manda) A camada de transporte faz a multiplexação para enviar


somente um pacote para a rede

QUEM FAZ MUX E DEMUX É A CAMADA DE TRANSPORTE EM ESPECIAL OS


PROTOCOLOS TCP E UDP

NO DESTINO A CAMADA DE TRANSPORTE:

recebe segmentos da camada de rede

precisa entregar os dados desses segmentos ao processo de aplicação


apropriado que está rodando no hospedeiro

EXEMPLO

Considere o caso em que um sistema final de destino esteja rodando quatro


aplicações de rede distintas.

Quando a camada de transporte em seu computador receber dados da


camada de rede, precisará direcionar os dados para cada um desses processos...

Isso é feito com o auxílio de sockets (interfaces de software que


auxiliam a passagem de dados entre a camada de rede para o processo e processo para a
camada de rede)

COMO UM SISTEMA FINAL DIRECIONA O SEGMENTO DE CAMADA DE


TRANSPORTE AO SOCKET APROPRIADO?

(Lembre-se que cada processo possui ao menos um socket associado a


ele...)

Resposta: cada segmento tem um conjunto de campos para identificar


o socket!

COMO OS SOCKETS SÃO IDENTIFICADOS MESMO?

Resposta: Com o auxílio de identificadores chamados de portas. Além


do endereço IP e do protocolo de transporte (TCP e UDP).

Demultiplexação
Processo de entregar os dados contidos em um segmento ao socket
correto.

Ocorre no momento que os dados chegam a um cliente.

Multiplexação

Reunião de partes de dados provenientes de diferentes sockets,


encapsulamento de tais dados com informações de cabeçalhos, criação do segmento e envio
do segmento para a camada de rede.

Ocorre no momento em que os dados são enviados para o servidor

Uma vez entregue para a aplicação, ela que lute.

EXPLICAÇÃO FIGURA MUX E DEMUX (Slide 29)

O processo P3 vai mandar para outro host que roda como P1

A transporte é responsável por entregar no P1 correto

Multiplexação exige que se utilize:

Portas (usadas para identificar os processos) tenham identificadores exclusivos

Cada segmento tenha campos que indiquem a porta para a qual o segmento
deve ser entregue

Tais campos são a porta de origem e a porta de destino. Variam de 0 a 65535.


Números entre 0 e 1023 são reservados (IETF)

Tem que usar portas altas para as aplicações

CABEÇALHO

campos de número de porta de origem e destino em um segmento de camada


de transporte.

Figura slide 31 (32 bits)

Outro campo de cabeçalho que depende se será TCP ou UDP

Mensagem

TIPOS DE MUX E DEMUX

UDP (não orientadas para conexão)

Suponha que um processo no hospedeiro A, cujo número de porta UDP


é
19157, queira enviar dados a um processo cujo número de porta UDP é

46428 no hospedeiro B.

Pergunta: Os números de porta em um processo cliente são


sempre prédefinidos ou a camada de transporte pode designar um número aleatório?

Resposta: Quando você cria o socket você tem que definir a


porta, então é pré-definido, mas, caso o número não esteja definido, a própria camada de
transporte

designa um número na faixa de 1024 e 65535. ( O sistema


operacional tem um if, se o campo foi passado em branco ele irá criar um numero)

PASSO A PASSO UDP

1. Um socket UDP é criado com um número de porta específico ou pela


própria camada de transporte;

2. A camada de transporte no host A cria um segmento de camada de


transporte que inclui os dados da aplicação, o número da porta de origem, o número da porta
de destino e outros dois valores;

3. A camada de transporte passa o segmento resultante para a camada


de rede;

4. A camada de rede encapsula o segmento em um datagrama IP e faz


uma tentativa de melhor esforço para entregar o segmento ao hospedeiro destinatário;

5. Se o segmento chegar à máquina B, a camada de transporte


examinará o número de porta de destino (46428) e o entregará a seu socket identificado com
tal número (46428).

Um socket UDP é totalmente identificado por:

1. Endereço IP de destino;

2. Número de porta de destino.

Se p2 quiser comunicar com p1 (de volta) ele tem que criar um socket
na porta que o p1 está ouvindo

TCP (orientadas para conexão) (se o servidor ta ouvindo em TCP o cliente


também tem que criar uma conexão TCP)

PASSO A PASSO TCP

Considere uma aplicação servidor TCP que espera requisições


de estabelecimento de conexões vindas de clientes TCP na porta número 12000.
1. O cliente cria um socket TCP em uma porta
estabelecida pela camada de transporte e envia um segmento de requisição de
estabelecimento de conexão (o exercício 3 ilustra esse processo);

Antes do TCP mandar as informações ele segue


o three way handshake (tem o cliente e o servidor, tem que ter uma conexão pre estabelecida,
o cliente nesse protocolo three way handshake, vai mandar uma mensagem "syn" e o servidor
responde com "synack" e aí o cliente responde com "ack" confirmando que recebeu a resposta
de que o servidor aceita se conectar com ele)

Quando ele faz esse three way handshake ele


está apto a passar para o passo 2 o SO que provem esse contato pévio quando ele recebe a
requisição de conexão

2. Quando o SO do servidor recebe o segmento de


requisição de conexão, ele localiza o processo que está a espera para aceitar uma conexão na
porta 12000 e cria um novo socket;

3. O socket recém criado no servidor é identificado por


quatro valores: número da porta de origem, endereço IP de origem, número da porta de
destino e endereço IP de destino;

4. Todos os segmentos subsequentes que chegarem


com esses mesmos quatro valores, serão demultiplexados para esse socket;

5. Com a conexão TCP agora ativa, o cliente e o


servidor podem enviar dados um para o outro.

O que acontece quando dois clientes usam o mesmo número de porta


de destino para se comunicar com a mesma aplicação do servidor Web?

Espera-se que a aplicação esteja ouvindo na porta 80, quando


os clientes mandam para a porta 80, nada muda, ele irá responder.

O que acontece quando dois clientes usam o mesmo número de porta


de destino e o mesmo número de portas de origem para se comunicar com a mesma aplicação
do servidor Web?

Quando dois cliente usam o mesmo numero de porta de


destino e origem para se comunicar, aí sim tem problema

Um socket TCP é totalmente identificado por:

1. Endereço IP de destino;

2. Número de porta de destino;

3. Endereço IP de origem;

4. Número de porta de origem.

CONCLUSÃO
Posicionada entre a camada de aplicação e de rede a camada de
transporte é uma peça central na arquitetura de rede em camadas;

Fornece comunicação lógica entre processos de aplicação que rodam


em hospedeiros diferentes;

Camada de rede fornece comunicação lógica entre sistemas finais;

Protocolos da camada de transporte são implementados em sistemas


finais – TCP e UDP.

Demultiplexação (destino) – entrega dos dados contidos em um


segmento para o socket correspondente;

Multiplexação (origem) – reunião de dados de diferentes sockets,


encapsulamento dos dados e marcação dos cabeçalhos, criação do segmento e envio para a
camada de transporte;

Socket UDP – porta de destino, IP de destino;

Socket TCP – porta de origem, IP de origem, porta de destino, IP de


destino.

Ler as seções 3.1 e 3.2 da 6ª Edição Kurose

AULA 12

_________________________

| |

Aplicação

|_______________________|

SOCKET empurra os dados de diferentes sockets para a camada de transporte


(Multplexação)

________________________________________________________________Espaço do
Usuário

_________________________

| |

Transporte

|_______________________|

Rede passa os dados em um unico pacote para a camada de transporte (Demux)


_________________________

| |

Rede

|_______________________|

_________________________

| |

Enlace

|_______________________|

_______________________________________________________________ Espaço do Kernel

_________________________

| |

Física

|_______________________|

_______________________________________________________________ Física

• Um protocolo de camada de transporte fornece comunicação lógica entre

processos que rodam em hospedeiros diferentes.

• Um protocolo de camada de rede fornece comunicação lógica entre

hospedeiros.

A responsabilidade fundamental do UDP e do TCP é ampliar o serviço de

entrega IP entre dois sistemas finais para um serviço de entrega entre dois

processos que rodam nos sistemas finais.

• A ampliação da entrega hospedeiro a hospedeiro para entrega processo a

processo é denominada multiplexação/demultiplexação de camada de

transporte.

• A tarefa de entregar os dados contidos em um segmento da camada de

transporte ao socket correto é denominada demultiplexação.

• O trabalho de reunir, no hospedeiro de origem, partes de dados


provenientes de diferentes sockets, encapsular cada parte de dados com

informações de cabeçalho para criar segmentos, e passar esses segmentos

para a camada de rede é denominada multiplexação.

Transporte não orientado para conexão: UDP

• O UDP, definido no [RFC 768], faz apenas quase tão pouco quanto um

protocolo de transporte pode fazer.

• À parte sua função de multiplexação/demultiplexação e de alguma

verificação de erros simples, ele nada adiciona ao IP.

• Se o desenvolvedor de aplicação escolher o UDP, em vez do TCP, a

aplicação estará “falando” quase diretamente com o IP.

• O UDP é não orientado para conexão.

Transporte não orientado para conexão: UDP - Passos

1. UDP recebe as mensagens do processo da aplicação;

2. UDP anexa os campos de número de porta de origem e de destino para

multiplexação e demultiplexação;

3. UDP anexa dois outros campos (comprimento e soma de verificação);

4. UDP envia o segmento resultante para a camada de rede;

Transporte não orientado para conexão: UDP - Passos

5. Camada de rede encapsula o segmento dentro de um datagrama IP

(novos campos são adicionados);

6. Camada de rede faz a melhor tentativa para entregar o segmento ao

hospedeiro de destino;

7. Se o segmento chegar ao destino, o UDP usará o número de porta de

destino para entregar os dados do segmento ao processo de aplicação

correto.

UDP - Exemplos
• DNS é um exemplo de protocolo da camada de aplicação usa o UDP;

• Porque um desenvolvedor de aplicações escolheria construir uma aplicação

sobre UDP ao invés de TCP?

PQ o DNS usa o udp (foi cosntruido sobre o udp)?, primeira razão: imagina só um servidor dns
estabelecer

conexão tcp, permanente, persistente, com toda a requisição, não da pra imaginar um servidor
com tamanha capacidade, posi n é escalavel.

Com o tcp seria mt mais lento.

Outras razões:

UDP x TCP:

• Melhor controle no nível da aplicação sobre quais dados são enviados e

quando (pq é mais enxuto)

• Tão logo um processo de aplicação passe dados ao UDP, o protocolo

encapsulará dentro de um segmento e passará imediatamente a camada de

rede – TCP não!

• TCP reenviará um segmento até que o destino reconheça a recepção desse

segmento, não importando o tempo que a entrega confiável irá levar –

aplicações em tempo real podem ter problemas com isso.

• Não há estabelecimento de conexão

• TCP usa uma apresentação de três vias;

• UDP simplesmente envia mensagens e não introduz atraso algum para

estabelecer uma conexão;

• DNS seria bem mais lento se rodasse sob o TCP

• Não há estabelecimento de conexão

• TCP mantém o estado de conexão nos sistemas finais – buffers de envio e

recebimento, parâmetros de controle de congestionamento e parâmetros

de sequencia e reconhecimento;

• UDP não mantém o estado e não monitora nenhum desses parâmetros;

• Um servidor dedicado a uma aplicação específica pode suportar um

número muito maior de clientes ativos UDP do que TCP.

• Pequeno excesso de cabeçalho de pacote


• Segmento TCP tem 20 bytes de overhead (cabeçalho);

• Segmento UDP tem 8 bytes de overhead (cabeçalho).

Transporte não orientado para conexão: UDP

• Aplicações populares da Internet e seus protocolos de transporte

subjacentes:

[SLIDE 16-8 TABELA AULA 2] PRA RESOLVER A BRIGA ENTRE UDP E TCP KKK

UDP confiável? NÃO É CONFIÁVEL, PQ NÃO TEM A PREOCUPAÇÃO DE O RECEPTOR RECEBER O


PACOTE

• É possível uma aplicação ter transferência confiável de dados usando UDP;

• A confiabilidade deve ser embutida na própria aplicação (mecanismos de

reconhecimento e de retransmissão);

• Não é uma tarefa trivial.

Estrutura do segmento UDP

• Cabeçalho UDP possui quatro campos, cada um consistindo de 2 bytes:

[SLIDE 18-9 TABELA AULA 2]

Estrutura do segmento UDP – Exemplo Prático

[SLIDE 19-10 AULA 2]

Estrutura do segmento UDP

• Número de porta de origem e porta de destino servem para que mesmo?

• Comprimento – número de bytes no segmento UDP (cabeçalho + dados).

Importante pois o tamanho do campo de dados pode ser diferente de um

segmento UDP para o outro.

• Soma de verificação – usada pelo destino para verificar se foram

introduzidos erros no segmento ao longo do trajeto.


Soma de verificação UDP

• A soma de verificação (checksum) UDP serve para detectar erros;

• Os blocos de 16 bits do segmento UDP devem ser todos somados (soma

binária ou decimal);

• Campos que devem ser somados: porta origem, porta de destino,

comprimento e dados da aplicação;

• O campo “Soma de verificação” será preenchido com o valor do

complemento de 1 (inversão dos bits de um número) da soma dos blocos;

• No destinatário, todos os blocos são novamente somados e esse resultado

será somado com o valor presente em “Soma de verificação” – caso essa

soma resulte em 1, nenhum erro foi introduzido no segmento.

• A soma de verificação UDP serve para detectar erros.

• Suponha que tenhamos as seguintes três palavras de 16 bits

[SLIDE 25 PARA IMAGENS - AULA 2]

Soma de verificação UDP

• UDP fornece soma de verificação (checksum) mesmo com os protocolos de

camada de enlace oferecendo também...

• Não há garantia de que todos os enlaces entre a origem e o destino

forneçam tal verificação;

• Mesmo que os segmentos sejam corretamente transmitidos por um enlace,

pode haver introdução de erros de bits quando um segmento é armazenado

na memória de um roteador.

• O UDP fornece verificação de erros;

• O que ele faz para se recuperar de um erro?

• Nada!

• Em alguns casos o UDP apenas descarta o segmento danificado ou passam

o segmento errado à aplicação acompanhado de um aviso.

LEITURA PRA ESSA PARTE


• Leitura da Seção 3.3 (6ª Edição do Kurose)

• Considere um segmento UDP formado por um número de porta de origem

1234, porta de destino 10520 e dados “ABCD”. Encontre o valor (em bits) do

campo soma de verificação.

• Obs 1 – primeiro é preciso encontrar o comprimento do segmento;

• Obs 2 – os dados da aplicação devem estar organizados de 16 em 16 bits.