Você está na página 1de 8

SIN352 - Aula 13 - Camada de Transporte 3/5

#SIN352 #RedesDeComputadores #AulaSincrona #CamadaDeTransporte

Transporte orientado para conexão: TCP - características

ORIGEM: O protocolo TCP, definido nos [RFC 793, 1122, 1323, 2018 e 2581], é
orientado para conexão;

O que quer dizer isso?

Conexão FULL-DUPLEX, acontece do lado de quem envia e pode acontecer


também do lado de quem recebe,

ou seja, quem recebe pode usar o mesmo canal para enviar. Ela está orientada
para conexão porque quando esse canal é

estabelecido são alocados recursos computacionais para essa conexão

Antes que um processo de aplicação possa começar a enviar dados a


outro, os dois processos precisam primeiro se apresentar;

(O processo de estabelecer, de ser orientado a conexão ele se


baseia no principio de apresentação

- quem fala e quem escuta no ambito das redes precisam se


apresentar e para essas entidades se apresentarem é preciso um protocolo,

um padrão e só depois de estabelecido essa conexão é que


pode acontecer essa transferencia confiavel)

Apresentação consiste no envio de segmentos


preliminares um ao outro para estabelecer os parâmetros da transferência de dados.

A conexão TCP não é um circuito fim a fim ou um circuito virtual;

quem está mandando o pacote e quem está recebendo, no nível da aplicação


não existe nada subjacente,

nada de baixo disso, tem-se a impressão de utilizar aqueles telefones com fil
que as crianças fazem com lata,

na visão da aplicação eles estão conectados direto, eles não enxergam a


possibilidade de ter roteadores ou computadores de baixo)

O protocolo TCP roda apenas nos sistemas finais e não nos elementos
intermediários da rede (roteadores e comutadores);

os elementos intermediários da rede são alheios às conexões TCP –


eles enxergam datagramas e não conexões.

Uma conexão TCP fornece um serviço full-duplex:


Esse serviço full-duplex que o tcp tem é uma das caracteristicas que fazem o
tcp ser confíavel

Se houver uma conexão TCP entre o processo A e B, os dados da


camada de aplicação poderão fluir de A para B ao mesmo tempo que os dados fluem de B para
A;

(via de mao dupla)

A conexão TCP é sempre ponto a ponto – entre um único remetente e


um único destinatário.

Estabelecimento de uma conexão TCP

Suponha que um processo que roda em um host queira iniciar a conexão com
outro processo em outro host:

1. Processo de aplicação cliente informa à camada de transporte no


cliente que ele quer estabelecer uma conexão com um processo no servidor

“Socket clientSocket = new Socket("localhost", 6789);”

2. O cliente primeiro envia um segmento TCP especial;

3. O servidor responde com um segundo segmento TCP especial;

4. Cliente responde novamente com um terceiro segmento especial;

Os dois primeiros segmentos não possuem carga útil; o terceiro pode carregar
uma carga útil – 3-way handshake.

3-way handshake é quando duas máquinas estabelecem entre sí um


acordo protocolado pelo tcp de que eles vão se comunicar

normalmente o ultimo pacote do 3-way handshake é que tem


carga util

Envio de dados usando o TCP

Uma vez estabelecida a conexão TCP, os dois processos de aplicação podem


enviar dados um para o outro:

1. Processo cliente passa uma cadeia de dados pelo socket;

2. Dados chegam ao TCP que encaminha ao buffer de envio da


conexão;

buffer nesse contexto é um endereço de memória, um


determinado espaço de memoria, onde a aplciação vai colocando,

o sistema operacional vai quebrando a mensagem se ela for


grande e vai organizando dentro desse espaço de memória
e uma outra aplicação vai lendo esse buffer e vai mandando

O sistema operacional, uma parte está quebrando a


mensagem que se quer mandar e colocando dentro desse espaço de memória, a outra parte
do TCP pega esses dados do buffer

e empurra pra baixo, para outros módulos do sistema


operacional empurrar isso camada de rede a fora

uma vez colocado esse buffer ele envia... aí de tempos


em tempos... passo 3

3. De tempos em tempos, o TCP remove “pedaços” de dados no buffer


(quebra os dados) de envio e passa os dados à camada de rede

– é definido um tamanho máximo de segmento - MSS (quantidade


máxima de dados que pode ser removida do buffer);

4. TCP encapsula cada porção de dados com um cabeçalho TCP,


formando os segmentos;

(pega os pedacinhos quebrados, forma o segmento e envia


para a camada de baixo no formato datagrama)

5. Segmentos são passados para a camada de rede onde são


encapsulados dentro de datagramas IP;

6. Datagramas IP são enviados para a rede

Slide 11 - 12 minutos

Em resumo, tem-se os processos, as aplciações, que estabelecem um socket


coloca as mensagens dentro do socket e depois isso é empurrado passando pela camada

Em resumo, o TCP é um conjunto de recursos, um protocolo que exige que o


sistema operacional ofereça alguns recursos para ele:

buffers (que são espaços de memoria)

variáveis e um socket de conexão de um processo em um hospedeiro e


outro conjunto de buffers,

variáveis e um socket de conexão de um processo em outro


hospedeiro

Estrutura do segmento

Campo de cabeçalho e campo de dados;

em uma carta o cabeçalho é o remetente de um lado e o destinatario


do outro, os dados é a mensagem que está no envelope.
O cabeçalho UDP é mais enchuto tem porta de origem, porta de
destino e o checksan

Na estrutura do TCP temos uma estrutura padronizada, todas as


aplicações que quiserem ingressar na internet para se comunicar precisa implementar o TCP
como ele foi definido na RFC, se não, nao tem comunicação

O MSS limita o tamanho máximo do campo de dados de um segmento;

Quando o TCP envia um arquivo grande ele costuma fragmentar o


segmento em pedaços de tamanho MSS;

slide 15 - 32 bits 15 minutos campos que não tinham no UDP, como numero de
sequencia

Número de sequência (SEQ number) e número de reconhecimento (ACK


number) – números de 32 bits utilizados pelo remetente e destinatário na execução de um
serviço confiável de transferência de dados;

responsáveis por implementar a transferência confiável de dados

Janela de recepção – 16 bits e usado para controle de fluxo. É usado para


indicar o número de bytes que um destinatário está disposto a aceitar;

para controlar o fluxo

Comprimento de cabeçalho – 4 bits, especifica o comprimento do cabeçalho


TCP em palavras (strings) de 32 bits. O cabeçalho TCP pode ter comprimento variável (opções),
daí a importância desse campo. O tamanho típico de um cabeçalho TCP é 20 bytes.

também para controle

Opções – opcional e de comprimento variável, foi projetado como uma forma


de oferecer recursos extras, fora do previsto no cabeçalho comum. Uma aplicação comum é
permitir a cada host estipular o máximo de carga útil do TCP que está disposto a receber
(negociação do MSS);

Flags – contém 6 bits.

• ACK é usado para indicar se o valor carregado no campo de


reconhecimento é válido, ou seja, se o segmento possui um reconhecimento para um
segmento que foi recebido com sucesso;

• SYN usado para estabelecer conexões – solicitação de conexão e


aceite de conexão;

• FIN usado para encerrar uma conexão – transmissor não tem mais
dados a enviar;
• RST é utilizado para reinicializar uma conexão devido a falha no host
ou por qualquer outra razão. Um segmento com o bit RST ativado significa problema;

• PSH indica que o destinatário deve passar os dados para a camada


superior imediatamente, em vez de armazená-lo no buffer TCP;

• URG usado para mostrar que há dados nesse segmento que a


entidade da camada superior do lado remetente marcou como “urgentes” – na prática não é
utilizado.

Números de sequência

• Tais campos são parte fundamental do serviço de transferência


confiável de dados do TCP;

• TCP enxerga os dados como uma cadeia (string) de bytes não


estruturada, mas ordenada;

• Número de sequência reflete essa visão, pois esses números são


aplicados sobre a cadeia de bytes transmitidos, e não sobre a série de segmentos transmitidos.

• Número de sequência para um segmento é o número do primeiro


byte do segmento:

• Suponha que a cadeia de dados consista em um arquivo


composto de 500 mil bytes, que o MSS seja de 1000 bytes e que seja atribuído o número 0 ao
primeiro byte da cadeia de dados.

• O TCP, nesse caso, irá construir 500 segmentos a partir da


cadeia de dados. O primeiro recebe o número de sequência 0; o segundo 1000, o terceiro 2000
e assim por diante.

Números de reconhecimento

• Lembre-se de que o TCP é full-duplex;

• Lembre-se também que o TCP é sempre ponto a ponto;

• Cada segmento que chega do hospedeiro B tem um número de


sequência para os dados que estão fluindo de B para A;

• O número de reconhecimento que o hospedeiro A atribui a seu


segmento é o número de sequência do próximo byte que ele estiver aguardando de B.

Números de reconhecimento e sequência - Exemplo slide 22 - 26


minutos (esses tres passos são o 3 way handshake)

1. Estação A envia um SYN para a estação B com o número de


sequência e número de reconhecimento iguais a zero;
2. Estação B responde enviando a A um segmento com número
de sequência = 0 e número de reconhecimento = 1. O valor de 1 para o número de
reconhecimento é para indicar o reconhecimento do primeiro pacote enviado por A;

3. Estação A responde com um novo segmento, dessa vez com


o seu próprio número de sequência = 1 e número de reconhecimento =1, mostrando que ele
reconheceu o número de sequência enviado por B;

confirma com o tamanho do segmento mais 1

• Isso acontece em todos os estabelecimentos de conexão


TCP! A estação A envia um GET para a estação B. O segmento possui 100 bytes. Ambos,
número de sequência e número de reconhecimento são 1 (nenhum dado foi recebido de B
ainda);

• A estação B responde a solicitação de A. Como B ainda não


tinha enviado dados, seu número de sequência continua 1. Para acusar o recebimento dos 100
bytes enviado por A, a estação B envia um número de reconhecimento 101. O tamanho do
segmento foi de 200 bytes.

• A estação A envia um novo pedido em um segmento de 50


bytes. O número de sequência agora é 101 e o número de reconhecimento é 201.

• A estação B responde com um pedido em um segmento de


1000 bytes. O número de sequência agora é 201 e para reconhecer que recebeu com sucesso
os 50 bytes da estação A o número de reconhecimento é 151.

• E assim por diante..

Ou seja, o numero de sequencia que A tem é de A,


porque é o arquivo que A está mandando, então esse numero de sequencia diz respeito as
peças do quebra cabeça de A,

e o que B está mandando, seja a resposta http, é os


numeros de sequencia de B porque é o arquivo que está em B, então ele organiza e quebra o
que está em B, da maneira que ele quiser

então quando um recebe um arquivo ele responde


com o tamanho que ele recebeu e da um ack mais 1 para confirmar que ele recebeu

Gerenciamento da conexão TCP

• Estudo do estabelecimento e encerramento de uma conexão TCP;

• Estabelecimento de conexão TCP tem um peso significativo nos


atrasos percebidos;

• Diversos ataques a redes exploram vulnerabilidades no


gerenciamento da conexão TCP.

Detalhes do estabelecimento de uma conexão TCP Slide 28 - 35 minutos


3 way handshake:

• Na etapa 2, assim que o segmento SYN é lido pelo servidor, ele aloca
buffers e variáveis TCP à conexão;

• Na etapa 3, assim que o cliente recebe o i, o cliente também reserva


buffers e variáveis para a conexão;

• 3 pacotes são necessários para estabelecer uma conexão entre 2


hospedeiros.

Detalhes do encerramento de uma conexão TCP Slide 30 - 38 minutos

1. Na primeira etapa o cliente envia um pacote TCP sem dados com o


bit FIN ligado e um ACK para o último dado recebido (número de reconhecimento);

2. O servidor envia um ACK com o número de reconhecimento igual ao


número de sequência do pacote recebido +1;

3. O servidor aguarda processo da aplicação encerrar e envia um


pacote sem dados com o bit FIN ligado e sem ACK;

4. O cliente envia um ACK com o número de reconhecimento igual ao


número de sequência do pacote recebido +1;

• Nesse ponto, todos os recursos dos dois hospedeiros estão


liberados.

Sequencia típica de estados - Cliente slide 32 - 42 minutos

Sequencia típica de estados - Servidor Slide 33 - 43 minutos

O que fazer da vida?

• Ler seções 3.5.1, 3.5.2 e 3.5.6;

• Estudar as sequências típicas de estados (início/encerramento de conexão) do TCP do ponto


de vista do cliente e servidor;

Você também pode gostar