Vous êtes sur la page 1sur 50

Redes de Dados e

Comunicao
Aula 07 - 01

Camadas de Rede e de Transporte


Introduo, Protocolos UDP e TCP

Introduo: Camadas de Rede e de Transporte, Conexo.


por meio da camada de rede que os computadores identificam
qual caminho ser utilizado para transmisso de dados entre a
origem e o destino de uma comunicao.
Alm disso, a partir da camada de transporte que se definem os
servios que sero utilizados entre a origem e o destino.
Para existir uma conexo entre uma aplicao cliente e uma
aplicao servidora, necessrio encaminhar as informaes da
camada de aplicao para a camada de transporte, que
posteriormente encaminhar para a camada de rede.
Na camada de transporte so oferecidos dois tipos de servios:
Servio orientado conexo
Servio no orientado conexo

Introduo: Servio no orientado a conexo.


No servio no orientado conexo, os dados apenas so enviados
do cliente para o servidor, sem o estabelecimento prvio de
conexo.
O protocolo que realiza este trabalho o UDP (User Datagram
Protocol).
O TCP realiza o trabalho de enviar dados do cliente para o servidor,
mas orientado conexo.

Cada um deles serve melhor a determinados tipos de aplicaes.


Por exemplo:
Garantia de download de um arquivo de forma correta: o TCP
utiliza mensagens de confirmao de entrega, o que acaba
gerando trfego na rede apenas para controle.
Em uma videoconferncia, no necessria a retransmisso
oferecida pelo protocolo TCP, portanto usa-se o UDP pois no h
mensagens de controle, sobrando mais banda para o trfego de
dados.

Introduo: Servio orientado a conexo.


No servio orientado conexo, utilizando o protocolo TCP
(Transmission Control Protocol, existe uma troca inicial de pacotes
entre cliente e servidor para o estabelecimento de uma conexo.
Essa troca chamada de handshaking.
Esse tipo de servio tambm conhecido como um servio de
entrega garantida, pois, aps o envio de informaes entre as
partes, necessria uma confirmao do receptor. Ocorrendo algum
problema, os dados so reenviados.
O servio orientado conexo da camada de transporte utilizado
em todos os servios da camada de aplicao que necessitam de
confiabilidade como, por exemplo, na hora de realizar o download
de um arquivo.

Introduo: A camada de Transporte


Na camada de transporte, so utilizadas portas para identificar os
processos que esto se comunicando entre diferentes
computadores.
Na camada de rede, so utilizados os endereos IP (Internet
Protocol) para identificar os computadores que fazem parte de uma
conexo.
Os segmentos de dados encaminhados pela camada de transporte
para a camada de rede so encapsulados em datagramas IP que,
por meio de algum protocolo de roteamento, sero encaminhados
do computador de origem para o computador de destino, utilizando
um endereo IP.
Existem duas verses do protocolo IP.

A verso 4, ou IPv4, que possibilita a utilizao de apenas 4 bilhes


de endereos e no pode mais ser expandida.
A verso 6, ou IPv6, que introduziu novas funcionalidades e
aumentou a capacidade de endereamento milhares de vezes maior
que o IPv4.

Introduo: Os protocolos da Camada de Rede


Na camada de transporte temos os protocolos UDP e TCP.
Na camada de rede, alm do protocolo IP, temos os protocolos que
auxiliam na descoberta de computadores vizinhos da mesma rede
local e protocolos de roteamento para a descoberta de
computadores em outras redes.
Os principais protocolos de camada de rede utilizados em conjunto
com os protocolos IP (IPv4 e/ou IPv6) so:

ICMP/ICMPv6 - Internet Control Message Protocol : protocolos que


fornecem um relato do estado de alcanabilidade de um
computador na rede.
ARP - Address Resolution Protocol: protocolo utilizado para
encontrar o endereo da camada de enlace (MAC) a partir de um
endereo IPv4.
NDP - Neighbor Discovery Protocol: protocolo utilizado para
descobrir quem so os computadores vizinhos em uma rede local.
Esse protocolo substitui o ARP em IPv6.

Introduo: Os protocolos da Camada de Rede


IGMP - Internet Group Management Protocol: protocolo utilizado
por computadores e roteadores para o estabelecimento de grupos
multicast. Ao contrrio da conexo IP unicast, em que existe um
conexo ponto a ponto entre dois hosts, na conexo multicast existe
uma conexo de um-para-muitos.
IPSec - Internet Protocol Security: conjunto de protocolos utilizados
para proteger as conexes IP por meio de autenticao e
criptografia.

RIP, RIPng, OSPF e BGP: alguns protocolos de roteamento que


utilizam algoritmos distintos de encaminhamento de pacotes em
redes locais, metropolitanas ou at mesmo na Internet.
Essa lista pode sofrer alteraes de acordo com a evoluo das
redes de computadores.

Protocolo UDP: Introduo.


O UDP (User Datagram Protocol) um protocolo de nvel de
transporte (camada 4 do modelo OSI), e recebe os dados de um
software de aplicao remetente e entrega esses dados no software
de aplicao destino, da maneira mais simples possvel.
O protocolo UDP possui as seguintes funcionalidades:
Multiplexao do uso da rede entre processos de aplicao.
Melhor esforo na tentativa de entrega de dados entre
aplicaes.
Verificao de integridade dos dados no recebimento de um
pacote.

Formato do Cabealho UDP


1

Source Port

Destinition Port

UDP Length

UDP Checksum

Protocolo UDP: Cabealho UDP.


O nvel de transporte responsvel pela multiplexao entre
processos de aplicao.
Isso realizado por meio da atribuio de uma porta nica para
cada requisio de uso da rede realizada pelo processo de aplicao
ao sistema operacional. Existem 65.535 portas UDP (16 bits) .
Campo Source Port (porta de origem): define a porta vinculada ao
processo de aplicao remetente dos dados. Essa porta utilizada
como um endereo de transporte para esse processo. O UDP deve
colocar, neste campo a porta com a qual esse processo est
vinculado. Respostas sero direcionadas para esta porta.
Campo Destination Port (porta de destino): define a porta vinculada
ao processo de aplicao destino dos dados. Ao receber um pacote
vindo da rede, o protocolo UDP deve entregar os dados de aplicao
ao processo que est utilizando essa porta.

Principais Portas UDP.

53 Consultas de nomes DNS (Domain Name System, sistema de nomes de domnios)


69 Trivial File Transfer Protocol (TFTP)
137 Servio de nomes de NetBIOS

138 Servio de datagrama de NetBIOS


161 Simple Network Management Protocol (SNMP)
520 Routing Information Protocol (RIP, protocolo de informaes de roteamento)

Protocolo UDP: Cabealho UDP.


Campo UDP length (tamanho): possui o tamanho total do pacote
em octetos (8 bits), incluindo cabealho e dados da aplicao. O
campo length (16 bits), define que o tamanho mximo de um
segmento UDP de 216 = 65.536 octetos.
Campo UDP Checksum: clculo de verificao de integridade. O
remetente da mensagem realiza um clculo com os bits do
segmento e coloca o resultado no prprio segmento a ser
transmitido. Ao receber esse segmento, o destinatrio realiza o
mesmo clculo, comparando o resultado obtido com o resultado
recebido. Caso algum bit tenha sofrido uma alterao no trnsito
entre remetente/destinatrio, os resultados sero diferentes e o
segmento ser descartado pelo UDP.

Protocolo UDP: Usos.


Diversas aplicaes utilizam como meio de transporte o protocolo
UDP, tais como:
DNS (Domain Name System) para a resoluo de nomes;

DHCP (Dynamic Host Configuration Protocol) para a configurao


dinmica de estaes;
SNMP (Simple Network Management Protocol) para a gerncia de
redes.

Protocolo TCP: Introduo.


O TCP (Transmission Control Protocol), tambm um protocolo de
nvel de transporte (camada 4 do modelo OSI); recebe os dados de
um software de aplicao remetente e entrega esses dados no
software de aplicao destino de forma confivel.
A grande diferena entre o UDP e o TCP que o TCP um protocolo
de transporte que garante que os dados sero entregues
corretamente no destino.

Protocolo TCP: Introduo.


O TCP possui as seguintes funcionalidades:
Multiplexao do uso da rede entre processos de aplicao.
Estabelecimento e controle de conexo entre cliente e servidor.
Possibilidade de mltiplos clientes conectados em uma mesma
porta de servidor.
Verificao de integridade dos dados no recebimento de um
pacote.
Em caso de erros, identificao pela origem e retransmisso do
pacote.
Garantia de ordem de chegada de um conjunto de pacotes.
Controle de fluxo de dados.
Controle de situaes de congestionamento da rede.

Protocolo TCP: Cabealho.


Para realizar suas funes, o TCP possui um cabealho, que est
definido na figura abaixo.

1 2 3 4 5 6 7 8 1 2 3

6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

Source Port

Destinition Port
Sequence Number
Acknowledgement Number

TCP Heade
Length

C
W
R

E
C
N

U
R
G

A
C
K

P
H
S

R
S
T

S
Y
N

F
I
N

Checksum

Window Size
Urgent Pointer

Options
Data

Protocolo TCP: Cabealho.


Os campos Source Port e Destination Port possuem a mesma
funcionalidade no TCP e no UDP: realizar a multiplexao de
processos por meio de portas. Existem 65 .535 portas UDP e 65.535
portas TCP.
Principais portas TCP
20

Servidor FTP (File Transfer Protocol, protocolo de transferncia de arquivo)(dados)

21

Servidor FTP (controle)

23

Servidor Telnet

53

Transferncias de zona DNS (Domain Name System, sistema de nomes de domnios)

80

Servidor da Web (HTTP, Hypertext Transfer Protocol)

139 Servio de sesso de NetBIOS

Protocolo TCP: Cabealho.


Campo Sequence Number (nmero de sequncia): possui o nmero
de sequncia de um pacote TCP dentro de uma conexo. por meio
desse campo que o destinatrio consegue, por exemplo, identificar
se um determinado pacote de uma conexo est fora de ordem.
O campo Acknowledgement Number (nmero de reconhecimento):
utilizado como mecanismo de controle de erros. A partir desse
campo o destinatrio de um pacote "reconhece" o recebimento de
um ou mais pacotes por meio de seu nmero de sequncia.
O campo TCP Header Length (tamanho do cabealho TCP) possui o
nmero de bytes do cabealho dividido por mltiplos de 32 bits (4
bytes). Assim, no cabealho padro, sem campo opcional, temos 20
bytes e, nesse caso, o campo possuir o valor decimal 5.

Protocolo TCP: Cabealho.


Flags: so bits utilizados para o controle do fluxo de pacotes entre
origem e destino. Das 12 previstas apenas 8 so utilizadas
atualmente. So elas:

CWR (Congestion Window Reduced) e ECN (Explicit Congestion


Notification): utilizada por roteadores para indicar possveis
situaes de congestionamento. O uso das duas em conjunto faz
com que sejam diminudos os buffers de modo a diminuir o trfego
na rede.
URG (Urgent) - indica que um determinado conjunto de bytes do
pacote "urgente''. (No utilizada por aplicaes modernas).
ACK (Acknowledgement) - indica que o campo acknowledgement
number contm o nmero de sequncia aguardado, e que todos os
pacotes anteriores a esse nmero de sequncia foram recebidos
com sucesso. utilizado tambm no processo de estabelecimento e
finalizao das conexes.

Protocolo TCP: Cabealho.


PSH (Push) - assim que o pacote TCP atingir sua capacidade mxima
de dados (o nmero mximo de bytes que pode transmitir em um
pacote nico), enviar o pacote. Quando a aplicao deseja enviar
um pacote sem esperar que este limite seja atingido, ela indica isso
por meio de um comando de envio. Por exemplo: uma aplicao de
mensagem instantnea (skype, google talk, etc.).
RST (Reset): ao receber um pacote com RST = 1, o TCP dever
finalizar a conexo imediatamente. Utilizada quando ocorre algum
problema na comunicao ou quando ocorre uma filtragem com
ao de "rejeio" por um servio de filtragem de pacotes (firewall).
SYN (Synchronize) Utilizada sempre que deseja um cliente deseja
iniciar uma conexo com um servidor. Essa flag indica o desejo de
sincronizao do nmero de sequncia dos pacotes TCP.
FIN (Finished): utilizado quando um dos processos (cliente ou
servidor) deseja encerrar uma conexo.

Protocolo TCP: Cabealho.


Campo Window Size: indica a quantidade de bytes que o remetente
do pacote tem a capacidade de receber, ou seja, o tamanho de seu
buffer de memria. Esta informao utilizada para que uma
estao no envie uma quantidade de dados maior que a
capacidade de processamento da outra (acarretaria descarte de
pacotes).
O limite de um buffer de 65.535 bytes.
Esse limite pode ser considerado baixo para muitas aplicaes e, de
acordo com a latncia da rede, pode at com prometer o
desempenho da comunicao.
Em razo disso, criou-se um campo opcional no TCP denominado
Window Scaling.

Protocolo TCP: Cabealho.


Campo Checksum: tem a mesma funo que o campo checksum do
UDP: verificar a integridade dos bits recebidos.
Campo Urgent Pointer: utilizado em conjunto com a flag URG.

Os Campos Opcionais sero descritos dentro de cada utilizao


estudada.
O protocolo TCP bem mais complexo que o UDP, tendo em vista a
quantidade de controles necessrios para garantir a confiabilidade
da comunicao.

Protocolo TCP: Controle de conexo TCP Iniciando uma conexo


Uma conexo TCP inicializada pelo cliente, o qual requisita ao
servidor a criao dessa conexo.
O servidor pode, ou no, aceitar a conexo e iniciar a troca de
mensagens.
Nenhum pacote contendo dados da aplicao trocado entre
cliente e servidor antes do estabelecimento da conexo.
O estabelecimento de uma conexo garante que o servidor est
ativo e apto a atender o cliente.
O estabelecimento de uma conexo realizado por um
procedimento chamado: three-way handshake.

Protocolo TCP: Controle de conexo TCP Iniciando uma conexo.


Funcionamento do incio de uma conexo TCP.

OBS: Um servidor pode se recusar a aceitar uma conexo por vrios motivos. Um
deles seria o fato de os servidores TCP possurem um limite de nmero de
clientes que podem atender simultaneamente. Ao atingir este limite, o servidor
no aceita mais conexes com clientes at que uma das conexes ativas seja
finalizada.

Protocolo TCP: Controle de conexo TCP Finalizando uma conexo.


Para finalizar uma conexo, uma das pontas deve indicar que no
possui mais dados a transmitir. Essa notificao pode ser feita em
um pacote especfico sem dados ou no ltimo pacote contendo os
dados finais da aplicao. De qualquer maneira, este pacote possui a
flag FIN = 1. Ao receber um pacote com esta notificao (FIN = 1), a
estao deve reconhecer seu recebimento com um pacote
contendo: ACK = 1.
Tendo em vista que uma conexo TCP bidirecional, no basta que
apenas uma das pontas finalize a conexo. A estao que recebeu a
notificao de finalizao deve tambm enviar um pacote contendo
FIN = 1, e a estao que receber esse pacote deve reconhecer seu
recebimento com outro pacote de ACK = 1.

Considere que a finalizao de uma conexo formada por dois


procedimentos de two-way handshake do tipo FIN e ACK.

Protocolo TCP: Controle de conexo TCP.


Funcionamento do fim de uma conexo TCP.

Protocolo TCP: Controlando Mltiplos Clientes.


O protocolo UDP no possui uma conexo entre cliente e servidor.
Cada pacote enviado de forma independente e tratado de maneira
idntica. Se dois ou mais clientes enviarem pacotes UDP ao servidor,
ele dever tratar os pacotes de forma idntica.
O TCP orientado conexo, portanto necessita de um maior
controle sobre os pacotes que recebe.
Cada pacote faz parte de um contexto (aplicao) inserido dentro
da conexo e deve ser tratado de acordo com esse contexto.
O TCP deve ento tratar o recebimento de pacotes e a entrega
desses pacotes ao processo de aplicao de forma especial.
Para poder atender mais de um cliente simultaneamente, um
servidor TCP deve ser capaz de tratar cada conexo de maneira
independente (isso feito atravs da criao de um processo filho
para cada cliente). O protocolo TCP consegue diferenciar entre as
diversas conexes e entregar os pacotes para o processo filho
correto.

Protocolo TCP: Controlando Mltiplos Clientes.


O TCP diferencia uma conexo de outra por meio de um
identificador nico de conexo denominado socket pair.
O socket pair formado por quatro valores da conexo: o endereo
IP de origem do pacote, a porta de origem do pacote, o endereo IP
de destino do pacote e a porta de destino do pacote.
Essas quatro informaes so nicas para cada conexo TCP.
A diferenciao feita da seguinte maneira:
se dois clientes em estaes diferentes conectarem-se no mesmo
servidor, tero endereos IP diferentes.
Se uma estao possui dois clientes (duas janelas em um
navegador, por exemplo), enviar pacotes com portas de origem
diferentes para cada conexo.

Protocolo TCP: Controlando Mltiplos Clientes.


Funcionamento de um servidor TCP atendendo vrios clientes simultaneamente.

Protocolo TCP: Controlando Mltiplos Clientes.


Em um momento inicial qualquer, o servidor deve estar em modo
LISTEN, ou seja, aguardando requisies de conexo.
Assim que o primeiro cliente envia um pacote SYN, esse processo
servidor realizar uma chamada ao sistema operacional para que
crie um processo filho a fim de atender esta chamada (processos
filhos so processos idnticos ao processo pai que os criou por meio
de uma chamada de sistema) . o processo filho criado que aceitar
a conexo enviando o pacote SYN/ACK. A criao do processo filho
de responsabilidade do programa de aplicao. Se o programador
no realizar esse procedimento, o servidor poder atender apenas
um cliente por vez.
Este primeiro processo filho responsvel pela conexo entre a
mquina 200.1.1.1 na porta 1500 e a mquina 200.2.2.2 na porta
80.
Um segundo processo filho cria a conexo entre a mquina
200.3.3.3 na porta 1500 e a mquina 200.2.2.2 na porta 80.

Protocolo TCP: Controlando Mltiplos Clientes.


Caso uma mesma estao abra uma nova conexo, um novo
processo filho criado.
O terceiro processo filho responsvel pela conexo entre a
mquina 200.1.1.1 na porta 1501 e a mquina 200.2.2.2 na porta
80.
O TCP responsvel por receber os pacotes da rede e entregar esses
pacotes ao processo filho correto. Isso permite que um servidor
atenda mais de um cliente simultaneamente utilizando uma nica
porta TCP local.
O processo pai permanece sempre no estado de LISTEN, ou seja,
sempre aguardando novas conexes de clientes.

Protocolo TCP: RTT - Round Trip Time.


Uma das definies bsicas e essenciais para todo o processo de
controle de erros do TCP a do tempo necessrio para que um
pacote chegue ao destino. Essa informao serve como base, por
exemplo, para a definio de quanto tempo uma estao deve
aguardar pela confirmao da chegada de um pacote.
O RTT (Round Trip Time ou "tempo mdio de viagem") o tempo
necessrio para enviar uma mensagem entre as estaes. A medida
do RTT feita pela primeira vez durante o estabelecimento da
conexo (SYN, SYN/ACK, ACK) e atualizada durante toda a durao
da conexo, tendo em vista que as condies da rede variam neste
perodo.
Ao enviar um pacote SYN = 1, o cliente dispara um relgio
temporizador at o recebimento do pacote SYN/ACK. O tempo gasto
para o envio do SYN e o recebimento da resposta igual a RTT x 2
(ida e volta).
Da mesma maneira, ao enviar o SYN/ACK, o servidor dispara um
temporizador at a chegada do ACK final do estabelecimento da
conexo.

Protocolo TCP: RTT - Round Trip Time.


A figura abaixo representa a obteno do tempo de RTT durante o
estabelecimento de uma conexo.
SYN
2xRTT

SYN/ACK

2xRTT
ACK

Cliente

Servidor

O RTT utilizado como base de tempo para a identificao da perda


de pacotes em trnsito no controle de erros.

Protocolo TCP: Controle de Fluxo.


Para que se tire o mximo proveito das conexes, vrios pacotes TCP
so enviados em conjunto, mesmo que a confirmao do primeiro
pacote no tenha chegado.

Como existe o recebimento de vrios pacotes via rede, a utilizao


de buffers necessria devido ao tempo gasto para o
processamento de cada pacote por parte do TCP.
Enquanto um pacote processado, os pacotes que esto chegando
so armazenados nos buffers de memria.
Se no houvesse o controle de fluxo, ao esgotar os buffers, os
pacotes que chegassem seriam descartados.
Aps o estabelecimento da conexo, o TCP deve iniciar o controle
dos buffers para o envio e o recebimento de pacotes .
O tamanho do buffer de recepo informado no estabelecimento
da conexo no campo window size.

Protocolo TCP: Controle de Fluxo.


O TCP utiliza um algoritmo para controle de fluxo denominado
janela deslizante (sliding window). O buffer de transmisso organiza
os pacotes a serem transmitidos, em quatro grupos:

1. Pacotes que j foram transmitidos e j foram reconhecidos com


acknowledgement number.
2. Pacotes que j foram transmitidos e que ainda no foram
reconhecidos (aguardando acknowledgement number).

3. Pacotes que no foram transmitidos, porm podem ser


transmitidos por possurem espao no buffer da estao
destino.
4. Pacotes que no foram transmitidos e que no podem ser
transmitidos por falta de espao no buffer do destino.

Protocolo TCP: Window Scale.


O cabealho TCP prev a divulgao do tamanho do buffer de
recepo entre as estaes.
O campo Window Size (WS) serve para que a cada pacote enviado,
uma estao informe para a outra qual o espao disponvel para
receber dados.
O valor mximo do campo WS de 64 KB.
Pode ser considerado baixo para algumas aplicaes .
Para permitir o aumento do campo WS em algumas situaes, criouse o campo opcional denominado Window Scale.
Esse campo indica um ndice de escala a fim de adequar o Window
Size para at 30 bits.
Exemplo: Se o Window Size for de 32767 bytes, podemos obter:

Protocolo TCP: Window Scale.


32767D = 111111111111111B.
Se o campo Window Scale possuir o valor de escala 5, devemos
deslocar o nmero no Window Size 5 vezes para a esquerda para
sabermos o tamanho do buffer desejado.
1 bit = 2 x o valor do window size.
1111111111111110B = 65534D = 64Kb

2 bits = 4 x o valor do window size.


11111111111111100B = 131.068D = 128Kb

3 bits = 8 x o valor do window size.


111111111111111000B = 262.136D = 256Kb

4 bits = 16 x o valor do window size.


1111111111111110000B = 524.272D = 512Kb

5 bits = 32 x o valor do window size.


11111111111111100000B = 1.048.544D = 1Mb

Protocolo TCP: Window Scale.


O campo Window scale definido no mximo por 14 deslocamentos
que, somando com os 16 bits do Window Size, possibilita um total
de 30 bits.

Com os 30 bits, temos um novo descritor de tamanho de buffer de


30 bits e com isso podemos definir buffers de at 1.073.725.440
bytes em decimal o que equivale a aproximadamente 1 GB.
O campo Window Scale s transmitido em conjunto com a flag
SYN (durante o estabelecimento da conexo nos pacotes SYN do
cliente e SYN/ACK do servidor).
A escala s ser considerada se as duas estaes enviarem o campo
opcional Window Scale durante o processo de conexo.

Protocolo TCP: Controle de Erros.


A base para o controle de erros de transmisso do TCP o
reconhecimento (acknowledgement) que o destinatrio deve enviar
para os pacotes de dados que chegou, aps constatar que o mesmo
est ntegro.
Ao enviar um pacote, a estao inicia um temporizador e armazena
uma cpia dos dados para possvel retransmisso. Caso no receba
o reconhecimento no tempo limite (TIME-OUT), a estao
retransmitir o pacote, iniciando novamente o contador de tempo.
Todo o processo de retransmisso realizado pelo remetente,
baseando-se no TIME-OUT da transmisso do pacote.

Protocolo TCP: Controle de Erros.


Quando um TIME-OUT ocorre, o TCP escolhe entre duas polticas:
1. Retransmisso apenas dos pacotes que estouraram o temporizador.
Esta poltica tem como objetivo contornar erros em um ou poucos
pacotes.
2. Retransmisso de todos os pacotes a partir do pacote com erro.
Tem por objetivo contornar situaes em que ocorreram problemas
em vrios pacotes.

Nenhuma das duas polticas pode ser considerada ideal e, conforme


a implementao do TCP, pode-se optar por uma, por outra, ou por
uma seleo automtica entre elas.

Protocolo TCP: Controle de Erros.


A poltica de retransmisso apenas na ocorrncia de TIME-OUT
adequada quando o nmero de pacotes perdidos pequeno.
Caso o nmero de pacotes seja grande, tm-se que aguardar o
TIME-OUT de cada um deles, perdendo tempo entre um TIMEOUT e outro.
A poltica de retransmisso de todos os pacotes mais adequada
quando tm-se um conjunto de pacotes perdidos. No h a
necessidade de aguardar o TIME-OUT pois todos sero
retransmitidos.
Quando se perde apenas um ou poucos pacotes, temos a
ocorrncia de retransmisses desnecessrias.
O ideal seria que o receptor pudesse especificar um intervalo de
reconhecimento em vez do ltimo byte recebido.
Pensando nisso, criou-se um campo opcional chamado SACK
(Selective Acknowledgements ).

Protocolo TCP: SACK Selective Acknowledgements.


A base da confiabilidade do TCP est no reconhecimento dos bytes
enviados por meio do campo acknowledgement number.
Para melhorar o mecanismo de reconhecimento, existe a
possibilidade de as es taes negociarem a utilizao do campo
selective acknowledgements ou SACK.
O uso do SACK tem como objetivo permitir o reconhecimento de
blocos no contguos de bytes de forma individual.

O SACK um campo opcional que contm uma lista de intervalos de


nmeros de sequncia que foram recebidos corretamente, porm
no foram reconhecidos por serem no contguos (pela falta do
recebimento correto de um pacote anterior) .

Protocolo TCP: MSS Maximum Segment Size.


O objetivo das redes de computadores compartilhar um enlace
fsico entre diversos equipamentos.
Para um melhor aproveitamento do enlace e justia entre as
estaes, devemos dividir os dados a serem transmitidos em
quadros de tamanhos mnimo e mximo predefinidos.
Esses tamanhos variam de acordo com a tecnologia de enlace.
As redes ethernet, por exemplo, possuem como definio um
tamanho mximo de quadro de enlace de 1.530 octetos, sendo:
7 octetos de prembulo (sincronizao entre placas de rede)
1 octeto de delimitao de quadro

4 octetos de verificao de erros (CRC-32)


18 octetos de cabealho ethernet

Protocolo TCP: MSS Maximum Segment Size.


Um quadro ethernet possui 1500 bytes de payload (parte de dados)
para transportar, denominado MTU (Maximum Transmission Unit).
Em uma rede sem fios o MTU de 2300 bytes (dependendo da
criptografia utilizada).
Todas as camadas possuem a capacidade de fragmentao dos
dados em pedaos menores.
Isso torna possvel que os dados da aplicao sejam divididos pelo
nvel de transporte, que os dados do nvel de transporte sejam
divididos pelo nvel de rede e, finalmente, que os dados do nvel de
rede sejam divididos pelo nvel de enlace.
Isto promove: justia entre as estaes e melhor aproveitamento do
meio de comunicao.

Protocolo TCP: MSS Maximum Segment Size.


Existem senes fragmentao: se um pacote do nvel de
transporte for dividido, o cabealho de transporte ficar em um
fragmento e os dados ficaro em outro.

Um filtro de pacotes que necessita analisar a porta de origem e


destino de um pacote ter que, obrigatoriamente, remontar esses
fragmentos a fim de obter as informaes necessrias para a
filtragem.
O aumento da complexidade das funes da rede e a possibilidade
de diferentes tipos de com prometimento da segurana no
compensam uma fragmentao feita deste modo.
Por isso, o nvel de rede possui, no seu cabealho (IP), um bit de
controle denominado DF (don't fragment - no fragmente). Esse bit
por padro setado.
O ideal que os dados da aplicao sejam fragmentados pelo nvel
de transporte e no necessitem mais fragmentao em momento
algum durante a comunicao.

Protocolo TCP: MSS Maximum Segment Size.


Por padro, todas as tecnologias de enlace devem ser capazes de
suportar um datagrama IP de 576 bytes de tamanho sem
fragmentao.

Se retirar-mos os cabealhos IP (20 bytes) e TCP (outros 20 bytes),


temos que, se os dados de aplicao forem divididos em grupos de
536 bytes, sero suportados pelas redes sem necessidade de
fragmentao.
O RFC 879 definiu que o TCP tem por padro utilizar um MSS
(Maximum Segment Size) de 536 bytes.
Na prtica, o nvel de transporte o nico nvel que realiza a
fragmentao dos dados.
Cabealho
Enlace

Cabealho
Rede

Cabealho
Transporte

Cabealho + dados
Aplicao
MSS
MTU

Enlace
FCC

Protocolo TCP: MSS Maximum Segment Size.


O MSS o tamanho mximo em bytes dos dados de aplicao (ou
seja, sem contar cabealhos de transporte, rede e enlace) .
O MSS de 536 bytes garante o transporte sem fragmentao, porm
no considera as questes de desempenho dos diferentes tipos de
enlace.
O RFC 1122 define que o TCP dever identificar qual o MSS ideal
para uma comunicao, considerando os enlaces existentes.

Para identificar o melhor MSS, o TCP possui um campo opcional


denominado MSS.
Com o incio de uma conexo com o pacote SYN, o cliente adiciona o
campo MSS informando ao servidor que espera receber os pacotes
com o MSS indicado nesse campo.
O MSS calculado pelo TCP considerando o MTU do enlace local da
estao.

Protocolo TCP: MSS Maximum Segment Size.


Da mesma forma, o servidor informa ao cliente o seu MSS na
resposta SYN/ACK .
O RFC 1122 define que, se no for recebido um valor de MSS no
campo opcional do TCP, deve-se assumir o valor padro de 536
bytes.
No uma negociao em busca de um tamanho ideal nico para o
cliente e o servidor, mas da troca de dois MSS (um do cliente e outro
do servidor) que podem, ou no, ter o mesmo valor.
O campo MSS s existe nos pacotes SYN e SYN/ACK, e o MSS
mantido durante toda a conexo.

Protocolo TCP: Controle de Congestionamento


A camada de transporte, por definio, deve estabelecer um
protocolo de comunicao entre cliente e servidor, sem considerar
aspectos das camadas inferiores, como a existncia ou no de redes
intermedirias, mltiplos enlaces, roteadores, etc.
Isso quer dizer que o TCP no deveria considerar a existncia de
congestionamento na rede.
No deveria, mas, na prtica, considera.

O TCP envia os dados de acordo com um controle de fluxo que s


considera o tamanho da janela da outra ponta.
Isto desconsidera o que ocorre na rede em situaes de
congestionamento com muitas conexes TCP.
Na prtica, o TCP utiliza uma tcnica de incio de transmisso de
pacotes que tem por objetivo identificar a situao da rede em
relao a sua carga (trafego, congestionamento).

Protocolo TCP: Controle de Congestionamento Slow Start


O algoritmo de slow start define que o TCP deve enviar no mximo o
valor de 1 x MSS como primeiro conjunto de pacotes. Isso significa
que enviar um pacote de tamanho mximo (ou vrios at chegar ao
limite do valor do MSS) e aguardar pelo reconhecimento.
O limite de bytes que podem ser enviados no algoritmo de slow
start denominado congestion window.
Caso haja o reconhecimento, o TCP poder enviar agora 2 x MSS.

Caso haja o reconhecimento, poder enviar 3 x MSS, e assim por


diante.
Ou seja, se tudo estiver transcorrendo bem, sem perda de pacotes,
o congestion window poder aumentar de tamanho.
O valor do congestion window no deve ser mais incrementado no
momento em que se atinge o valor do window size da outra estao,
respeitando o controle de fluxo.

Protocolo TCP: Consideraes Finais.


Podemos considerar que, quando utilizamos o TCP em uma
aplicao, os dados chegaro corretos e em ordem.
Qualquer falha que impossibilite a comunicao poder ser
diagnosticada com a finalizao abrupta da conexo.
O TCP est em constante melhoramento e novos algoritmos e
implementaes continuam surgindo.
Cabe ao profissional de redes de computadores acompanhar a
evoluo deste protocolo para que possa melhor utilizar e
diagnosticar problemas na rede.

Vous aimerez peut-être aussi