Aula 07 01 Camada Rede Transporte

  • Upload
    shima

  • View
    218

  • Download
    0

Embed Size (px)

Citation preview

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    1/50

    Redes de Dados e

    Comunicação

    Aula 07 - 01

    ‒ Camadas de Rede e de Transporte‒ Introdução, Protocolos UDP e TCP

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    2/50

    Introdução: Camadas de Rede e de Transporte, Conexão.• É por meio da camada de rede que os computadores identificam

    qual caminho será utilizado para transmissão de dados entre aorigem e o destino de uma comunicação.

    • Além disso, é a partir da camada de transporte que se definem osserviços que serão utilizados entre a origem e o destino.

    • Para existir uma conexão entre uma aplicação cliente e umaaplicação servidora, é necessário encaminhar as informações dacamada de aplicação para a camada de transporte, queposteriormente encaminhará para a camada de rede.

    • Na camada de transporte são oferecidos dois tipos de serviços:

    ⁻ Serviço orientado à conexão⁻ Serviço não orientado à conexão

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    3/50

    Introdução: Serviço não orientado a conexão.• No serviço não orientado à conexão, os dados apenas são enviados

    do cliente para o servidor, sem o estabelecimento prévio deconexão.

    • O protocolo que realiza este trabalho é o UDP (User DatagramProtocol).

    • O TCP realiza o trabalho de enviar dados do cliente para o servidor,mas orientado à conexão.

    • Cada um deles serve melhor a determinados tipos de aplicações.Por exemplo:

    ⁻ Garantia de download de um arquivo de forma correta: o TCPutiliza mensagens de confirmação de entrega, o que acabagerando tráfego na rede apenas para controle.

    ⁻ Em uma videoconferência, não é necessária a retransmissãooferecida pelo protocolo TCP, portanto usa-se o UDP pois não hámensagens de controle, sobrando mais banda para o tráfego dedados.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    4/50

    Introdução: Serviço orientado a conexão.• No serviço orientado à conexão, utilizando o protocolo TCP

    (Transmission Control Protocol, existe uma troca inicial de pacotesentre cliente e servidor para o estabelecimento de uma conexão.

    • Essa troca é chamada de “ handshaking ”.• Esse tipo de serviço também é conhecido como um serviço de

    entrega garantida, pois, após o envio de informações entre aspartes, é necessária uma confirmação do receptor. Ocorrendo algumproblema, os dados são reenviados.

    • O serviço orientado à conexão da camada de transporte é utilizadoem todos os serviços da camada de aplicação que necessitam deconfiabilidade como, por exemplo, na hora de realizar o download

    de um arquivo.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    5/50

    Introdução: A camada de Transporte• Na camada de transporte, são utilizadas portas para identificar os

    processos que estão se comunicando entre diferentescomputadores.

    • Na camada de rede, são utilizados os endereços IP (InternetProtocol) para identificar os computadores que fazem parte de umaconexão.

    • Os segmentos de dados encaminhados pela camada de transportepara a camada de rede são encapsulados em datagramas IP que,por meio de algum protocolo de roteamento, serão encaminhadosdo computador de origem para o computador de destino, utilizandoum endereço IP.

    • Existem duas versões do protocolo IP.• A versão 4, ou IPv4, que possibilita a utilização de apenas 4 bilhões

    de endereços e não pode mais ser expandida.• A versão 6, ou IPv6, que introduziu novas funcionalidades e

    aumentou a capacidade de endereçamento milhares de vezes maiorque o IPv4.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    6/50

    Introdução: Os protocolos da Camada de Rede• Na camada de transporte temos os protocolos UDP e TCP.• Na camada de rede, além do protocolo IP, temos os protocolos que

    auxiliam na descoberta de computadores vizinhos da mesma redelocal e protocolos de roteamento para a descoberta decomputadores em outras redes.

    • Os principais protocolos de camada de rede utilizados em conjuntocom os protocolos IP (IPv4 e/ou IPv6) são:

    • ICMP/ICMPv6- Internet Control Message Protocol : protocolos quefornecem um relato do estado de alcançabilidade de umcomputador na rede.

    • ARP- Address Resolution Protocol: protocolo utilizado paraencontrar o endereço da camada de enlace (MAC) a partir de umendereço IPv4.

    • NDP- Neighbor Discovery Protocol: protocolo utilizado paradescobrir quem são os computadores vizinhos em uma rede local.Esse protocolo substitui o ARP em IPv6.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    7/50

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    8/50

    Protocolo UDP: Introdução.• O UDP (User Datagram Protocol) é um protocolo de nível de

    transporte (camada 4 do modelo OSI), e recebe os dados de umsoftware de aplicação remetente e entrega esses dados no softwarede aplicação destino, da maneira mais simples possível .

    • O protocolo UDP possui as seguintes funcionalidades:

    ⁻ Multiplexação do uso da rede entre processos de aplicação.

    ⁻ Melhor esforço na tentativa de entrega de dados entreaplicações.

    ⁻ Verificação de integridade dos dados no recebimento de umpacote.

    • Formato do Cabeçalho UDP1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8 1 2 3 4 5 6 7 8

    Source Port Destinition PortUDP Length UDP Checksum

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    9/50

    Protocolo UDP: Cabeçalho UDP.• O nível de transporte é responsável pela multiplexação entre

    processos de aplicação.•

    Isso é realizado por meio da atribuição de uma porta única paracada requisição de uso da rede realizada pelo processo de aplicaçãoao sistema operacional. Existem 65.535 portas UDP (16 bits) .

    • Campo Source Port (porta de origem): define a porta vinculada aoprocesso de aplicação remetente dos dados. Essa porta é utilizadacomo um endereço de transporte para esse processo. O UDP devecolocar, neste campo a porta com a qual esse processo estávinculado. Respostas serão direcionadas para esta porta.

    • Campo Destination Port (porta de destino): define a porta vinculadaao processo de aplicação destino dos dados. Ao receber um pacotevindo da rede, o protocolo UDP deve entregar os dados de aplicaçãoao processo que está utilizando essa porta.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    10/50

    Principais Portas UDP.

    53 Consultas de nomes DNS (Domain Name System, sistema de nomes de domínios)

    69 Trivial File Transfer Protocol (TFTP)

    137 Serviço de nomes de NetBIOS

    138 Serviço de datagrama de NetBIOS

    161 Simple Network Management Protocol (SNMP)

    520 Routing Information Protocol (RIP, protocolo de informações de roteamento)

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    11/50

    Protocolo UDP: Cabeçalho UDP.• Campo UDP length (tamanho): possui o tamanho total do pacote

    em octetos (8 bits), incluindo cabeçalho e dados da aplicação. Ocampo length (16 bits), define que o tamanho máximo de umsegmento UDP é de 216 = 65.536 octetos.

    • Campo UDP Checksum : cálculo de verificação de integridade. Oremetente da mensagem realiza um cálculo com os bits dosegmento e coloca o resultado no próprio segmento a ser

    transmitido. Ao receber esse segmento, o destinatário realiza omesmo cálculo, comparando o resultado obtido com o resultadorecebido. Caso algum bit tenha sofrido uma alteração no trânsitoentre remetente/destinatário, os resultados serão diferentes e osegmento será descartado pelo UDP.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    12/50

    Protocolo UDP: Usos.• Diversas aplicações utilizam como meio de transporte o protocolo

    UDP, tais como:•

    DNS (Domain Name System) para a resolução de nomes;• DHCP (Dynamic Host Configuration Protocol) para a configuração

    dinâmica de estações;• SNMP (Simple Network Management Protocol) para a gerência de

    redes.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    13/50

    Protocolo TCP: Introdução.• O TCP (Transmission Control Protocol),também é um protocolo de

    nível de transporte (camada 4 do modelo OSI); recebe os dados deum software de aplicação remetente e entrega esses dados nosoftware de aplicação destino de forma confiável .

    • A grande diferença entre o UDP e o TCP é que o TCP é um protocolode transporte que garante que os dados serão entreguescorretamente no destino.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    14/50

    Protocolo TCP: Introdução.• O TCP possui asseguintes funcionalidades:

    ⁻ Multiplexação do uso da rede entre processos de aplicação.

    ⁻ Estabelecimento e controle de conexão entre cliente e servidor.

    ⁻ Possibilidade de múltiplos clientes conectados em uma mesmaporta de servidor.

    ⁻ Verificação de integridade dos dados no recebimento de umpacote.

    ⁻ Em caso de erros, identificação pela origem e retransmissão dopacote.

    ⁻ Garantia de ordem de chegada de um conjunto de pacotes.⁻ Controle de fluxo de dados.

    ⁻ Controle de situações de congestionamento da rede.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    15/50

    Protocolo TCP: Cabeçalho.• Para realizar suas funções, o TCP possui um cabeçalho, que está

    definido na figura abaixo.

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

    Source Port Destinition PortSequence Number

    Acknowledgement NumberTCP Heade

    LengthC

    W

    R

    E

    C

    N

    U

    R

    G

    A

    C

    K

    P

    H

    S

    R

    S

    T

    S

    Y

    N

    F

    I

    N

    Window Size

    Checksum Urgent PointerOptions

    Data

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    16/50

    Protocolo TCP: Cabeçalho.• Os campos Source Port e Destination Port possuem a mesma

    funcionalidade no TCP e no UDP: realizar a multiplexação deprocessos por meio de portas. Existem 65 .535 portas UDP e 65.535portas TCP.

    • Principais portas TCP

    20 Servidor FTP (File Transfer Protocol, protocolo de transferência de arquivo)(dados)21 Servidor FTP (controle)

    23 Servidor Telnet

    53 Transferências de zona DNS (Domain Name System, sistema de nomes de domínios)

    80 Servidor da Web (HTTP, Hypertext Transfer Protocol)

    139 Serviço de sessão de NetBIOS

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    17/50

    Protocolo TCP: Cabeçalho.• Campo Sequence Number (número de sequência): possui o número

    de sequência de um pacote TCP dentro de uma conexão. É por meiodesse campo que o destinatário consegue, por exemplo, identificarse um determinado pacote de uma conexão está fora de ordem.

    • O campo Acknowledgement Number (número de reconhecimento):é utilizado como mecanismo de controle de erros. A partir dessecampo o destinatário de um pacote "reconhece" o recebimento de

    um ou mais pacotes por meio de seu número de sequência.• O campo TCP Header Length (tamanho do cabeçalho TCP) possui o

    número de bytes do cabeçalho dividido por múltiplos de 32 bits (4bytes). Assim, no cabeçalho padrão, sem campo opcional, temos 20bytes e, nesse caso, o campo possuirá o valor decimal 5.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    18/50

    Protocolo TCP: Cabeçalho.• Flags: são bits utilizados para o controle do fluxo de pacotes entre

    origem e destino. Das 12 previstas apenas 8 são utilizadasatualmente. São elas:

    • CWR (Congestion Window Reduced) e ECN (Explicit CongestionNotification): utilizada por roteadores para indicar possíveissituações de congestionamento. O uso das duas em conjunto fazcom que sejam diminuídos os buffers de modo a diminuir o tráfego

    na rede.• URG (Urgent) - indica que um determinado conjunto de bytes do

    pacote é "urgente''. (Não é utilizada por aplicações modernas).• ACK(Acknowledgement) - indica que o campo acknowledgement

    number contém o número de sequência aguardado, e que todos ospacotes anteriores a esse número de sequência foram recebidoscom sucesso. É utilizado também no processo de estabelecimento efinalização das conexões.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    19/50

    Protocolo TCP: Cabeçalho.• PSH (Push) - assim que o pacote TCP atingir sua capacidade máxima

    de dados (o número máximo de bytes que pode transmitir em umpacote único), enviará o pacote. Quando a aplicação deseja enviarum pacote sem esperar que este limite seja atingido, ela indica issopor meio de um comando de envio. Por exemplo: uma aplicação demensagem instantânea (skype, google talk, etc.).

    • RST (Reset): ao receber um pacote com RST = 1, o TCP deverá

    finalizar a conexão imediatamente. Utilizada quando ocorre algumproblema na comunicação ou quando ocorre uma filtragem comação de "rejeição" por um serviço de filtragem de pacotes (firewall).

    • SYN (Synchronize) – Utilizada sempre que deseja um cliente desejainiciar uma conexão com um servidor. Essa flag indica o desejo desincronização do número de sequência dos pacotes TCP.

    • FIN (Finished): utilizado quando um dos processos (cliente ouservidor) deseja encerrar uma conexão.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    20/50

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    21/50

    Protocolo TCP: Cabeçalho.• Campo Checksum: tem a mesma função 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 serão descritos dentro de cada utilização

    estudada.• O protocolo TCP é bem mais complexo que o UDP, tendo em vista a

    quantidade de controles necessários para garantir a confiabilidadeda comunicação.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    22/50

    Protocolo TCP: Controle de conexão TCP – Iniciando uma conexão• Uma conexão TCP é inicializada pelo cliente, o qual requisita ao

    servidor a criação dessa conexão.•

    O servidor pode, ou não, aceitar a conexão e iniciar a troca demensagens.• Nenhum pacote contendo dados da aplicação é trocado entre

    cliente e servidor antes do estabelecimento da conexão.• O estabelecimento de uma conexão garante que o servidor está

    ativo e apto a atender o cliente.• O estabelecimento de uma conexão é realizado por um

    procedimento chamado: three-way handshake.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    23/50

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    24/50

    Protocolo TCP: Controle de conexão TCP – Finalizando uma conexão.• Para finalizar uma conexão, uma das pontas deve indicar que não

    possui mais dados a transmitir. Essa notificação pode ser feita emum pacote específico sem dados ou no último pacote contendo osdados finais da aplicação. De qualquer maneira, este pacote possui aflag FIN = 1. Ao receber um pacote com esta notificação (FIN = 1), aestação deve reconhecer seu recebimento com um pacotecontendo: ACK = 1.

    Tendo em vista que uma conexão TCP é bidirecional, não basta queapenas uma das pontas finalize a conexão. A estação que recebeu anotificação de finalização deve também enviar um pacote contendoFIN = 1, e a estação que receber esse pacote deve reconhecer seurecebimento com outro pacote de ACK = 1.

    • Considere que a finalização de uma conexão é formada por doisprocedimentos de two-way handshake do tipo FIN e ACK.

    l l d

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    25/50

    Protocolo TCP: Controle de conexão TCP.• Funcionamento do fim de uma conexão TCP.

    l C C l d úl i l Cli

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    26/50

    Protocolo TCP: Controlando Múltiplos Clientes.• O protocolo UDP não possui uma conexão entre cliente e servidor.

    Cada pacote é enviado de forma independente e tratado de maneiraidêntica. Se dois ou mais clientes enviarem pacotes UDP ao servidor,ele deverá tratar os pacotes de forma idêntica.

    • O TCP é orientado à conexão, portanto necessita de um maiorcontrole sobre os pacotes que recebe.

    • Cada pacote faz parte de um contexto (“aplicação”) inserido dentroda conexão e deve ser tratado de acordo com esse contexto.

    • O TCP deve então tratar o recebimento de pacotes e a entregadesses pacotes ao processo de aplicação de forma especial.

    Para poder atender mais de um cliente simultaneamente, umservidor TCP deve ser capaz de tratar cada conexão de maneiraindependente (isso é feito através da criação de um processo filhopara cada cliente). O protocolo TCP consegue diferenciar entre asdiversas conexões e entregar os pacotes para o processo filho

    correto.

    P l TCP C l d Múl i l Cli

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    27/50

    Protocolo TCP: Controlando Múltiplos Clientes.• O TCP diferencia uma conexão de outra por meio de um

    identificador único de conexão denominado socket pair.•

    O socket pair é formado por quatro valores da conexão: o endereçoIP de origem do pacote, a porta de origem do pacote, o endereço IPde destino do pacote e a porta de destino do pacote.

    • Essas quatro informações são únicas para cada conexão TCP.• A diferenciação é feita da seguinte maneira:⁻ se dois clientes em estações diferentes conectarem-se no mesmo

    servidor, terão endereços IP diferentes.

    ⁻ Se uma estação possui dois clientes (duas janelas em umnavegador, por exemplo), enviará pacotes com portas de origemdiferentes para cada conexão.

    P l TCP C l d Múl i l Cli

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    28/50

    Protocolo TCP: Controlando Múltiplos Clientes.• Funcionamento de um servidor TCP atendendo vários clientes si-

    multaneamente.

    P t l TCP C t l d Múlti l Cli t

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    29/50

    Protocolo TCP: Controlando Múltiplos Clientes.• Em um momento inicial qualquer, o servidor deve estar em modo

    LISTEN, ou seja, aguardando requisições de conexão.•

    Assim que o primeiro cliente envia um pacote SYN, esse processoservidor realizará uma chamada ao sistema operacional para quecrie um processo filho a fim de atender esta chamada (processosfilhos são processos idênticos ao processo pai que os criou por meiode uma chamada de sistema) .É o processo filho criado que aceitará

    a conexão enviando o pacote SYN/ACK. A criação do processo filho éde responsabilidade do programa de aplicação. Se o programadornão realizar esse procedimento, o servidor poderá atender apenasum cliente por vez.

    • Este primeiro processo filho é responsável pela conexão entre amáquina 200.1.1.1 na porta 1500 e a máquina 200.2.2.2 na porta80.

    • Um segundo processo filho cria a conexão entre a máquina200.3.3.3 na porta 1500 e a máquina 200.2.2.2 na porta 80.

    P t l TCP C t l d Múlti l Cli t

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    30/50

    Protocolo TCP: Controlando Múltiplos Clientes.• Caso uma mesma estação abra uma nova conexão, um novo

    processo filho é criado.•

    O terceiro processo filho é responsável pela conexão entre amáquina 200.1.1.1 na porta 1501 e a máquina 200.2.2.2 na porta80.

    • O TCP é responsável por receber os pacotes da rede e entregar essespacotes ao processo filho correto. Isso permite que um servidoratenda mais de um cliente simultaneamente utilizando uma únicaporta TCP local.

    • O processo pai permanece sempre no estado de LISTEN, ou seja,sempre aguardando novas conexões de clientes.

    P t l TCP RTT R d T i Ti

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    31/50

    Protocolo TCP: RTT - Round Trip Time.• Uma das definições básicas e essenciais para todo o processo de

    controle de erros do TCP é a do tempo necessário para que umpacote chegue ao destino. Essa informação serve como base, porexemplo, para a definição de quanto tempo uma estação deveaguardar pela confirmação da chegada de um pacote.

    • O RTT (Round Trip Time ou "tempo médio de viagem") é o temponecessário para enviar uma mensagem entre as estações. A medidado RTT é feita pela primeira vez durante o estabelecimento daconexão (SYN, SYN/ACK, ACK) e é atualizada durante toda a duraçãoda conexão, tendo em vista que as condições da rede variam nesteperíodo.

    • Ao enviar um pacote SYN = 1, o cliente dispara um relógio

    temporizador até o recebimento do pacote SYN/ACK. O tempo gastopara 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 umtemporizador até a chegada do ACK final do estabelecimento daconexão.

    Protocolo TCP: RTT Ro nd Trip Time

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    32/50

    Protocolo TCP: RTT - Round Trip Time.• A figura abaixo representa a obtenção do tempo de RTT durante o

    estabelecimento de uma conexão.

    O RTT é utilizado como base de tempo para a identificação da perdade pacotes em trânsito no controle de erros.

    2xRTT 2xRTT

    Cliente Servidor

    SYN

    SYN/ACK

    ACK

    Protocolo TCP: Controle de Fluxo

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    33/50

    Protocolo TCP: Controle de Fluxo.• Para que se tire o máximo proveito das conexões, vários pacotes TCP

    são enviados em conjunto, mesmo que a confirmação do primeiropacote não tenha chegado.

    • Como existe o recebimento de vários pacotes via rede, a utilizaçãode buffers é necessária devido ao tempo gasto para oprocessamento de cada pacote por parte do TCP.

    • Enquanto um pacote é processado, os pacotes que estão chegandosão armazenados nos buffers de memória.

    • Se não houvesse o controle de fluxo, ao esgotar os buffers, ospacotes que chegassem seriam descartados.

    Após o estabelecimento da conexão, o TCP deve iniciar o controledos buffers para o envio e o recebimento de pacotes .• O tamanho do buffer de recepção é informado no estabelecimento

    da conexão no campo window size.

    Protocolo TCP: Controle de Fluxo

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    34/50

    Protocolo TCP: Controle de Fluxo.• O TCP utiliza um algoritmo para controle de fluxo denominado

    janela deslizante (sliding window). O buffer de transmissão organizaos pacotes a serem transmitidos, em quatro grupos:

    1. Pacotes que já foram transmitidos e já foram reconhecidos comacknowledgement number.

    2. Pacotes que já foram transmitidos e que ainda não foramreconhecidos (aguardando acknowledgement number).

    3. Pacotes que não foram transmitidos, porém podem sertransmitidos por possuírem espaço no buffer da estaçãodestino.

    4. Pacotes que não foram transmitidos e que não podem sertransmitidos por falta de espaço no buffer do destino.

    Protocolo TCP: Window Scale

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    35/50

    Protocolo TCP: Window Scale.• O cabeçalho TCP prevê a divulgação do tamanho do buffer de

    recepção entre as estações.•

    O campo Window Size (WS) serve para que a cada pacote enviado,uma estação informe para a outra qual é o espaço disponível parareceber dados.

    • O valor máximo do campo WS é de 64 KB.

    • Pode ser considerado baixo para algumas aplicações .• Para permitir o aumento do campo WS em algumas situações, criou-

    se 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

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    36/50

    Protocolo TCP: Window Scale.• 32767D = 111111111111111 B.• Se o campo Window Scale possuir o valor de escala 5, devemos

    deslocar o número no Window Size 5 vezes para a esquerda parasabermos o tamanho do buffer desejado.• 1 bit = 2 x o valor do window size.

    ⁻ 1111111111111110 B = 65534D = 64Kb

    • 2 bits = 4 x o valor do window size.⁻ 11111111111111100 B = 131.068D = 128Kb

    • 3 bits = 8 x o valor do window size.⁻ 111111111111111000 B = 262.136D = 256Kb

    • 4 bits = 16 x o valor do window size.⁻ 1111111111111110000 B = 524.272D = 512Kb

    • 5 bits = 32 x o valor do window size.

    ⁻ 11111111111111100000 B = 1.048.544D = 1Mb

    Protocolo TCP: Window Scale

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    37/50

    Protocolo TCP: Window Scale.• O campo Window scale é definido no máximo por 14 deslocamentos

    que, somando com os 16 bits do Window Size, possibilita um totalde 30 bits.

    • Com os 30 bits, temos um novo descritor de tamanho de buffer de30 bits e com isso podemos definir buffers de até 1.073.725.440bytes em decimal o que equivale a aproximadamente 1 GB.

    • O campo Window Scale só é transmitido em conjunto com a flagSYN (durante o estabelecimento da conexão nos pacotes SYN docliente e SYN/ACK do servidor).

    • A escala só será considerada se as duas estações enviarem o campoopcional Window Scale durante o processo de conexão.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    38/50

    Protocolo TCP: Controle de Erros

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    39/50

    Protocolo TCP: Controle de Erros.• Quando um TIME-OUT ocorre, o TCP escolhe entre duas políticas:

    1. Retransmissão apenas dos pacotes que estouraram o temporizador.

    Esta política tem como objetivo contornar erros em um ou poucospacotes.

    2. Retransmissão de todos os pacotes a partir do pacote com erro.Tem por objetivo contornar situações em que ocorreram problemasem vários pacotes.

    • Nenhuma das duas políticas pode ser considerada ideal e, conformea implementação do TCP, pode-se optar por uma, por outra, ou poruma seleção automática entre elas.

    Protocolo TCP: Controle de Erros

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    40/50

    Protocolo TCP: Controle de Erros.• A política de retransmissão apenas na ocorrência de TIME-OUTé

    adequada quando o número de pacotes perdidos é pequeno.⁻ Caso o número de pacotes seja grande, têm-se que aguardar o

    TIME-OUT de cada um deles, perdendo tempo entre um TIME-OUT e outro.

    • A política de retransmissão de todos os pacotes é mais adequadaquando têm-se um conjunto de pacotes perdidos. Não há a

    necessidade de aguardar o TIME-OUT pois todos serãoretransmitidos.⁻ Quando se perde apenas um ou poucos pacotes, temos a

    ocorrência de retransmissões desnecessárias.•

    O ideal seria que o receptor pudesse especificar um intervalo dereconhecimento em vez do último byte recebido.• Pensando nisso, criou-se um campo opcional chamado SACK

    (Selective Acknowledgements ).

    Protocolo TCP: SACK – Selective Acknowledgements

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    41/50

    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 apossibilidade de as es tações negociarem a utilização do camposelective acknowledgements ou SACK.

    • O uso do SACK tem como objetivo permitir o reconhecimento deblocos não contíguos de bytes de forma individual.

    • O SACK é um campo opcional que contém uma lista de intervalos denúmeros de sequência que foram recebidos corretamente, porémnão foram reconhecidos por serem não contíguos (pela falta dorecebimento correto de um pacote anterior) .

    Protocolo TCP: MSS – Maximum Segment Size

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    42/50

    Protocolo TCP: MSS Maximum Segment Size.• O objetivo das redes de computadores é compartilhar um enlace

    físico entre diversos equipamentos.•

    Para um melhor aproveitamento do enlace e justiça entre asestações, devemos dividir os dados a serem transmitidos emquadros de tamanhos mínimo e máximo predefinidos.

    • Esses tamanhos variam de acordo com a tecnologia de enlace.

    • As redes ethernet, por exemplo, possuem como definição umtamanho máximo de quadro de enlace de 1.530 octetos, sendo:⁻ 7 octetos de preâmbulo (sincronização entre placas de rede)⁻ 1 octeto de delimitação de quadro⁻ 4 octetos de verificação de erros (CRC-32)⁻ 18 octetos de cabeçalho ethernet

    Protocolo TCP: MSS – Maximum Segment Size.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    43/50

    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 dacriptografia utilizada).• Todas as camadas possuem a capacidade de fragmentação dos

    dados em pedaços menores.

    • Isso torna possível que os dados da aplicação sejam divididos pelonível de transporte, que os dados do nível de transporte sejamdivididos pelo nível de rede e, finalmente, que os dados do nível derede sejam divididos pelo nível de enlace.

    Isto promove: justiça entre as estações e melhor aproveitamento domeio de comunicação.

    Protocolo TCP: MSS – Maximum Segment Size.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    44/50

    Protocolo TCP: MSS Maximum Segment Size.• Existem senões à fragmentação: se um pacote do nível de

    transporte for dividido, o cabeçalho de transporte ficará em umfragmento e os dados ficarão em outro.

    • Um filtro de pacotes que necessita analisar a porta de origem edestino de um pacote terá que, obrigatoriamente, remontar essesfragmentos a fim de obter as informações necessárias para afiltragem.

    • O aumento da complexidade das funções da rede e a possibilidadede diferentes tipos de com prometimento da segurança nãocompensam uma fragmentação feita deste modo.

    • Por isso, o nível de rede possui, no seu cabeçalho (IP), um bit de

    controle denominado DF (don't fragment - não fragmente). Esse bité por padrão setado.• O ideal é que os dados da aplicação sejam fragmentados pelo nível

    de transporte e não necessitem mais fragmentação em momento

    algum durante a comunicação.

    Protocolo TCP: MSS – Maximum Segment Size.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    45/50

    Protocolo TCP: MSS Maximum Segment Size.• Por padrão, todas as tecnologias de enlace devem ser capazes de

    suportar um datagrama IP de 576 bytes de tamanho semfragmentação.

    • Se retirar-mos os cabeçalhos IP (20 bytes) e TCP (outros 20 bytes),temos que, se os dados de aplicação forem divididos em grupos de536 bytes, serão suportados pelas redes sem necessidade defragmentação.

    • O RFC 879 definiu que o TCP tem por padrão utilizar um MSS(Maximum Segment Size) de 536 bytes.

    • Na prática, o nível de transporte é o único nível que realiza afragmentação dos dados.

    CabeçalhoEnlace

    CabeçalhoRede

    CabeçalhoTransporte

    Cabeçalho + dadosAplicação

    EnlaceFCC

    MTU

    MSS

    Protocolo TCP: MSS – Maximum Segment Size.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    46/50

    otoco o C : SS a u Seg e t S e.• O MSS é o tamanho máximo em bytes dos dados de aplicação (ou

    seja, sem contar cabeçalhos de transporte, rede e enlace) .•

    O MSS de 536 bytes garante o transporte sem fragmentação, porémnão considera as questões de desempenho dos diferentes tipos deenlace.

    • O RFC 1122 define que o TCP deverá identificar qual é o MSS idealpara uma comunicação, considerando os enlaces existentes.

    • Para identificar o melhor MSS, o TCP possui um campo opcionaldenominado MSS.

    • Com o início de uma conexão com o pacote SYN, o cliente adiciona o

    campo MSS informando ao servidor que espera receber os pacotescom o MSS indicado nesse campo.• O MSS é calculado pelo TCP considerando o MTU do enlace local da

    estação.

    Protocolo TCP: MSS – Maximum Segment Size.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    47/50

    g• Da mesma forma, o servidor informa ao cliente o seu MSS na

    resposta SYN/ACK .•

    O RFC 1122 define que, se não for recebido um valor de MSS nocampo opcional do TCP, deve-se assumir o valor padrão de 536bytes.

    • Não é uma negociação em busca de um tamanho ideal único para ocliente e o servidor, mas da troca de dois MSS (um do cliente e outrodo servidor) que podem, ou não, ter o mesmo valor.

    • O campo MSS só existe nos pacotes SYN e SYN/ACK, e o MSS émantido durante toda a conexão.

    Protocolo TCP: Controle de Congestionamento

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    48/50

    g• A camada de transporte, por definição, deve estabelecer um

    protocolo de comunicação entre cliente e servidor, sem consideraraspectos das camadas inferiores, como a existência ou não de redes

    intermediárias, múltiplos enlaces, roteadores, etc.• Isso quer dizer que o TCP não deveria considerar a existência de

    congestionamento na rede.• Não deveria, mas, na prática, 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 situações de

    congestionamento com muitas conexões TCP.• Na prática, o TCP utiliza uma técnica de início de transmissão de

    pacotes que tem por objetivo identificar a situação da rede emrelação a sua carga (trafego, congestionamento).

    Protocolo TCP: Controle de Congestionamento – Slow Start

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    49/50

    g• O algoritmo de slow start define que o TCP deve enviar no máximo o

    valor de 1 x MSS como primeiro conjunto de pacotes. Isso significaque enviará um pacote de tamanho máximo (ou vários 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 não deve ser mais incrementado no

    momento em que se atinge o valor do window size da outra estação,respeitando o controle de fluxo.

    Protocolo TCP: Considerações Finais.

  • 8/18/2019 Aula 07 01 Camada Rede Transporte

    50/50

    ç• Podemos considerar que, quando utilizamos o TCP em uma

    aplicação, os dados chegarão corretos e em ordem.•

    Qualquer falha que impossibilite a comunicação poderá serdiagnosticada com a finalização abrupta da conexão.• O TCP está em constante melhoramento e novos algoritmos e

    implementações continuam surgindo.

    • Cabe ao profissional de redes de computadores acompanhar aevolução deste protocolo para que possa melhor utilizar ediagnosticar problemas na rede.