SlideShare ist ein Scribd-Unternehmen logo
1 von 35
Downloaden Sie, um offline zu lesen
TCP: Visão Geral                                    RFCs: 793, 1122, 1323,
                                               2018, 2581
         •   ponto-a-ponto:                                •    dados full-duplex:
                – um transmissor, um receptor                    – transmissão bi-direcional na
         •   confiável, seqüêncial byte                            mesma conexão
             stream:                                             – MSS: maximum segment size
                – não há contornos de mensagens            •    orientado à conexão:
         •   pipelined: (transmissão de vários                   – handshaking (troca de
             pacotes em confirmação)                               mensagens de controle) inicia o
                                                                   estado do transmissor e do
              – Controle de congestão e de fluxo
                                                                   receptor antes da troca de dados
                 definem tamanho da janela
                                                           •    controle de fluxo:
         •   buffers de transmissão e de
             recepção                                            – transmissor não esgota a
                                                                   capacidade do receptor
              aplicação                   aplicação
              envia dados                 lê dados
socket                                                 socket
 port                                                   port
                 TCP                         TCP
             buffe de txr               buffer de rx
                            segment
Estrutura do Segmento TCP
                                          32 bits
URG: dados urgentes                                                  contagem por
       (pouco usado)       porta origem           porta destino
                                                                     bytes de dados
                                número de seqüência                  (não segmentos!)
  ACK: campo de ACK
             é válido        número de reconhecimento
                          tam. não
PSH: produz envio de     cabec.usado
                                     UA P R S F   janela de recep.
 dados (pouco usado)          checksum            dados urgentes     número de bytes
                                                                     receptor está
      RST, SYN, FIN:         Opções (tamanho variável)               pronto para
estabelec. de conexão                                                aceitar
        (comandos de
    criação e término)
                                    dados de aplicação
           Internet                 (tamanho variável)
          checksum
      (como no UDP)
Números de Seqüência e ACKs do TCP
Números de seqüência:
                                         Host A                    Host B
   – número do primeiro
      byte no segmentos de      Usuário    Seq=4
                                 digita          2 , AC
                                                        K=79,
      dados                        ‘C’                        data =
                                                                      ‘C’ host confirma
ACKs:                                                                       recepção de
                                                                            ‘C’, e ecoa o
   – número do próximo                                            ta = ‘
                                                                         C’  ’C’ de volta
                                                            3, da
      byte esperado do outro                           CK=4
                                                79, A
                                            Seq=
      lado
   – ACK cumulativo Q:       host confirma
        como o receptor trata         recepção      Seq=4
        segmentos foram de          do ‘C’ ecoado         3   , A CK
                                                                    = 80
        ordem
    – A especificação do
      TCP não define, fica a                                                         tempo
      critério do                                      cenário telnet simples
      implementador
TCP: transferência de dados confiável

evento: dados recebidos
                                   transmissor simplificado, assumindo
  da aplicação acima
                                   que não há controle de fluxo nem de
  cria, envia segmento
                                   congestionamento


            evento: temporização esgotada
 espera
   wait
   for        para segmento com seq = y
  por
  event
 evento         retransmite segmento




 evento: ACK recebido,
com número de ACK = y
processamento do ACK
TCP:           00 sendbase = initial_sequence number
                   01 nextseqnum = initial_sequence number
                   02
transferência      03 loop (forever) {
                   04   switch(event)
                   05   event: dados recebidos da aplicação acima
  confiável        06
                   07
                            cria segmento TCP com número de seqüência nextseqnum
                            inicia temporizador para segmento nextseqnum
                   08       passa segmento ao IP
                   09       nextseqnum = nextseqnum + length(data)
                   10    event: esgotamento de temp. para segmento com seq = y
                   11       retransmite segmento com seq = y
                   12       calcule nova temporização para o segmento y
Transmissor        13       reinicia temporizador para número de seqüência y
                   14    event: ACK recebido, com valor y no campo de ACK
TCP simplificado   15       if (y > sendbase) { /* ACK cumulativo de todos os dados até y */
                   16           cancela todas as temporizações para segmentos com seq < y
                   17            sendbase = y
                   18            }
                   19       else { /* um ACK duplicata para um segmento já reconhecido */
                   20            incrementa numero de duplicatas de ACKs recebidas para y
                   21            if (numero de duplicatas de ACKS recebidas para y == 3) {
                   22                /* TCP fast retransmit */
                   23               reenvia segmento com número de seqüência y
                   24               reinicia temporização para segmento y
                   25           }
                   26   } /* end of loop forever */
Geração de ACK [RFC 1122, RFC 2581]
Evento                            Ação do TCP Receptor
segmento chega em ordem,          ACK retardado. Espera até 500ms
não há lacunas,                   pelo próximo segmento. Se não chegar,
segmentos anteriores já aceitos   envia ACK

segmento chega em ordem,          imediatamente envia um ACK
não há lacunas,                   cumulativo
um ACK atrasado pendente

segmento chega fora de ordem      envia ACK duplicado, indicando número
número de seqüência chegou        de seqüência do próximo byte esperado
maior: gap detetado

chegada de segmento que           reconhece imediatamente se o segmento
parcial ou completamente          começa na borda inferior do gap
preenche o gap
TCP: cenários de retransmissão
                  Host A               Host B                            Host A                Host B

                     Seq=9                                                 Seq=9
                          2     , 8 byt                                         2   , 8 byt
                                       es da                                               es da
                                               ta                         Seq=                       ta




                                                          Seq=92 temp.
                                                                              1
   temporização




                                                                                  00, 2
                                                                                       0 byt
                                                                                               es da
                                                                                                       ta




                                                     Seq=100 temp.
                                         100
                                    A CK=
                                                                                            00
                                                                                         =1     0
                           X                                                           CK CK=12
                       loss
                                                                                      A A

                    Seq=9                                                  Seq=9
                         2                                                      2   , 8 byt
                               , 8 byt                                                     es da
                                      es da                                                        ta
                                              ta

                                                                                                     0
                                                                                              =1 2
                                 100                                                    A   CK
                           A C K=


tempo                                               tempo temporização prematura,
                   cenário com perda
                        do ACK                                             ACKs cumulativos
TCP: Controle de Fluxo

         controle de fluxo                         receptor: explicitamente
         transmissor não deve                         informa o transmissor da
         esgotar os buffers de                        área livre no buffer
           receção enviando                           (dinamicamente mudando)
          dados rápido demais                          – campo RcvWindow
                                                          no segmento TCP
RcvBuffer = tamanho do Buffer de recepção do TCP   transmissor: mantém a
RcvWindow = total de espaço livre no buffer            quantidade de dados
                                                       transmitidos mas não
                                                       reconhecidos menor que o
                                                       último RcvWindow
                                                       recebido



       armazenamento de recepção
TCP Round Trip Time e Temporização
Q: como escolher o valor        Q: Como estimar o RTT?
  da temporização do            • SampleRTT: tempo medido da
  TCP?                            transmissão de um segmento até a
                                  respectiva confirmação
•   maior que o RTT
                                    – ignora retransmissões e segmentos
     – nota: RTT varia
                                      reconhecidos de forma cumulativa
•   muito curto: temporização
                                • SampleRTT varia de forma rápida, é
    prematura
                                  desejável um amortecedor para a
     – retransmissões             estimativa do RTT
        desnecessárias
                                    – usar várias medidas recentes, não
•   muito longo: a reação à           apenas o último SampleRTT
    perda de segmento fica            obtido
    lenta
TCP Round Trip Time e Temporização

EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT
     •   Média móvel com peso exponential
     •   influencia de uma dada amostra decresce de forma exponencial
     •   valor típico de x: 0.1

Definindo a temporização
• EstimtedRTT mais “margem de segurança”
• grandes variações no EstimatedRTT -> maior margem de
  segurança


    Temporização = EstimatedRTT + 4*Desvios
    Desvios = (1-x)*Desvio +
                 x*|SampleRTT-EstimatedRTT|
TCP Estabelecimento de Conexão

 TCP transmissor estabelece conexão   Three way handshake:
   com o receptor antes de trocar
                                      Passo 1: sistema final cliente envia
   segmentos de dados
                                         TCP SYN ao servidor
• initializar variáveis:
                                          – especifica número de seqüência
     – números de seqüência                 inicial
     – buffers, controle de fluxo
       (ex. RcvWindow)                Passo 2: sistema final servidor que
                                         recebe o SYN, responde com
•   cliente: iniciador da conexão
                                         segmento SYNACK
    Socket clientSocket = new
     Socket("hostname","port              – reconhece o SYN recebido
    number");                             – aloca buffers
•   servidor: chamado pelo cliente        – especifica o número de
    Socket connectionSocket =               seqüência inicial do servidor
     welcomeSocket.accept();          Passo 3: o sistema final cliente
                                         reconhece o SYNACK
TCP Término de Conexão

                                                     cliente          servidor

Fechando uma conexão:               close
                                                                FIN

cliente fecha o socket:
    clientSocket.close();
                                                               AC K
                                                                                 close
Passo 1: o cliente envia o                                     FIN
   segmento TCP FIN ao servidor




                                      espera temp.
                                                               A CK
Passo 2: servidor recebe FIN,
   responde com ACK. Fecha a
   conexão, envia FIN.
                                  closed
TCP Término de Conexão

                                                      cliente          servidor

Passo 3: cliente recebe FIN,        closing
                                                                 FIN
   responde com ACK.
    – Entra “espera temporizada”
                                                                AC K
      - vai responder com ACK a                                                   closing
      FINs recebidos                                            FIN

Passo 4: servidor, recebe ACK.


                                       espera temp.
   Conexão fechada.                                             A CK

                                                                                  closed


                                   closed
TCP Controle de Conexão



                         Estados do Servidor


Estados do Cliente
Princípios de Controle de Congestionamento

Congestionamento:
• informalmente: “muitas fontes enviando dados acima da
  capacidade da rede tratá-los”
• diferente de controle de fluxo!
• sintomas:
   – perda de pacotes (saturação de buffer nos roteadores)
   – atrasos grandes (filas nos buffers dos roteadores)
• um dos 10 problemas mais importantes na Internet!
Causas/custos do congestionamento: cenário 1

•   dois transmissores, dois
    receptores
•   um roteador, buffers
    infinitos
•   não há retransmissão




                                     •   grandes atrasos
                                         quando
                                         congestionado
                                     •   máxima vazão
                                         obtenível
Causas/custos do congestionamento: cenário 2

• um roteador, buffers finitos
• transmissor reenvia pacotes perdidos
Causas/custos do congestionamento: cenário 2
•     sempre vale :   λ     =   λout(tráfego bom)
•
                          in
      “perfeita” retransmissão somente quando há perdas:   λ > λout
                                                             in
•     retransmissão de pacotes atrasados (não perdidos) torna λ maior (que o caso
      perfeito ) para o mesmo λ
                                                                in
                                 out




    “custos” do congestionamento:
    • mais trabalho (retransmissões) para um dado “tráfego bom”
    • retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote
Causas/custos do congestionamento: cenário 3
•   quatro transmissores            Q: o que acontece quando λ
                                                               in
•   caminhos com múltiplos saltos      e λ aumentam ?
•   temporizações/retransmissões          in
Causas/custos do congestionamento: cenário 3




Outro “custo” do congestionamento:
• quando pacote é descartado, qualquer capacidade de transmissão que
  tenha sido anteriormente usada para aquele pacote é desperdiçada!
Abordagens do problema de controle de
              congestionamento
Existem duas abordagens gerais para o problema
  de controle de congestionamento:
  Controle de congestionamento        Controle de congestionamento
     fim-a-fim:                         assistido pela rede:
  • não usa realimentação explícita   • roteadores enviam informações
    da rede                             para os sistemas finais
  • congestionamento é inferido a        – bit único indicando o
    partir das perdas e dos atrasos          congestionamento (SNA,
    observados nos sistemas finais           DECbit, TCP/IP ECN,
  • abordagem usada pelo TCP                 ATM)
                                         – taxa explícita do
                                             transmissor poderia ser
                                             enviada
Estudo de caso: controle de
    congestionamento do serviço ATM ABR

ABR: available bit rate:                células RM (resource management) :
•    “serviço elástico”                 •   enviadas pelo transmissor, entremeadas
•    se o caminho do transmissor está       com as células de dados
     pouco usado:                       •   bits nas células RM são usados pelos
      – transmissor pode usar a             comutadores (“assistida pela rede”)
          banda disponível                    – NI bit: não aumentar a taxa
•    se o caminho do transmissor está            (congestionamento leve)
     congestionado:                           – CI bit: indicação de
      – transmissor é limitado a uma             congestionamento
          taxa mínima garantida         •   as células RM são devolvidos ao
                                            transmissor pelo receptor, com os bits
                                            de indicaçaõ intactos
Estudo de caso: controle de
    congestionamento do serviço ATM ABR




•   campo ER (explicit rate) de dois bytes nas células RM
     – comutador congestionado pode reduzir o valor de ER nas células
     – o transmissor envia dados de acordo com esta vazão mínima suportada no
       caminho
•   bit EFCI nas células de dados: marcado como 1 pelos comutadores
    congestionados
     – se a célula de dadosque precede a célula RM tem o bit EFCI com valor 1, o
       receptor marca o bit CI na célula RM devolvida
TCP: Controle Congestionamento
• controle fim-a-fim (não há assistência da rede)
• taxa de transmissão é limitada pelo tamanho da janela,
  Congwin, sobre os segmentos:




          Congwin

• w segmentos, cada um com MSS bytes enviados em um
  RTT:
                          w * MSS
               vazão =            Bytes/seg
                           RTT
TCP: Controle Congestionamento


• “teste” para reconhecer a        • duas “fases””
  taxa possível:                       – slow start
   – idealmente: transmitir tão        – congestion avoidance
     rápido quanto possível        •   variáveis importantes:
     (Congwin tão grande
                                       – Congwin
     quanto possível) sem perdas
   – aumentar Congwin até              – threshold: define o
     que ocorra perda                    limite entre a fase slow
     (congestionamento)                  start e a fase congestion
                                         avoidance
   – perda: diminuir Congwin,
     então ir testando
     (aumentando) outra vez
TCP Slowstart
                                           Host A        Host B
algoritmo Slowstart                                 one segm
                                                            ent




                                     RTT
initializar: Congwin = 1
para (cada segmento reconhecido                     two segm
                                                            en   ts
      Congwin++
até (evento perda OU
       CongWin > threshold)
                                                    four segm
                                                              ents




•   aumento exponencial (por RTT)
    no tamanho da janela (não tão
    lento!)                                                           tempo

•   evento de perda : temporização
    (Tahoe TCP) e/ou 3 ACKs
    duplicados (Reno TCP)
TCP: Congestion Avoidance
 Congestion avoidance
 /* acabou slowstart      */
 /* Congwin > threshold */
 Até (evento perda) {
   cada w segmentos reconhecidos:
     Congwin++
   }
 threshold = Congwin/2
 Congwin = 1
 realiza slowstart

                             1



1: TCP Reno pula a fase slowstart (recuperaçaõ rápida)
após três ACKs duplicados
AIMD
                                    TCP Eqüidade
TCP congestion
  avoidance:                        Objetivo: se N sessões TCP devem
                                      passar pelo mesmo gargalo,
• AIMD: aumento                       cada uma deve obter 1/N da
  aditivo, redução                    capacidade do enlace
  multiplicativa
   – aumenta a janela de 1 a
     cada RTT                       conexão TCP 1
   – diminui a janela por um
     fator de 2 em caso de
     evento perda

                                                  roteador com
                               conexão TCP 2 gargalo de capacidade R
Porque o TCP é justo?

Duas sessões competindo pela banda:
•   O aumento aditivo fornece uma inclinação de 1, quando a vazão aumenta
•   redução multiplicativa diminui a vazão proporcionalmente

                    R                        divisão igual da banda
             Vazão da Conexão 1




                                                perda: reduz janela por um fato de 2
                                                 congestion avoidance: aumento aditivo
                                                   perda: reduz janela por um fator de 2
                                                    congestion avoidance: aumento aditivo




                                  Vazão da Conexão 2    R
TCP: modelagem da latência

Q: Quanto tempo demora para receber Notação, hipóteses:
   um objeto de um servidor Web após • Assuma um enlace entre o cliente e
   enviar um pedido?                   o servidor com taxa de dados R
•       estabelecimento de conexão TCP          •   Assuma: janela de
•       atraso de transferência de dados            congestionamento fixa, W
                                                    segmentos
                                                •   S: MSS (bits)
                                                •   O: tamanho do objeto (bits)
                                                •   não há retransmissões (sem perdas
                                                    e corrupção de dados)
    Dois casos a considerar:
    •    WS/R > RTT + S/R: ACK para o primeiro segmento retorna
         antes de se esgotar a janela de transmissão de dados
    •    WS/R < RTT + S/R: espera pelo depois de esgotar a janela de
         transmissão de dados
TCP: modelagem da latência
                                            K:= O/WS




Caso 1: latencia = 2RTT + O/R   Caso 2: latencia = 2RTT + O/R
                                 + (K-1)[S/R + RTT - WS/R]
TCP Modelagem de Latência: Slow Start
  •    Agora suponha que a janela cresce de acordo com os procedimentos da
       fase slow start.
  •    Vamos mostrar que a latência de um objeto de tamanho O é:
                          O     ⎡      S⎤              S
      Latency = 2 RTT +     + P ⎢ RTT + ⎥ − ( 2 P − 1)
                          R     ⎣      R⎦              R
       onde P é o número de vezes que o TCP fica bloqueado no servidor:

                  P = min{Q, K − 1}

- onde Q é o número de vezes que o servidor ficaria bloqueado se
  o objeto fosse de tamanho infinito.

- e K é o número de janelas que cobrem o objeto.
TCP Modelagem de Latência: Slow Start (cont.)
                        inicia

Exemplo:
                        conexão TCP


                          pede
O/S = 15 segmentos         objeto
                                                        primeira janela
                                                           = S/R

K = 4 janelas                       RTT
                                                       segunda janela
                                                          = 2S/R
Q=2
                                                       terceira janela
                                                          = 4S/R
P = min{K-1,Q} = 2

Servidor bloqueado P=2 times.
                                                       quarta janela
                                                          = 8S/R




                                                             transmissão
                          objeto                               completa
                         entregue
                                                 tempo no
                                     tempo no     servidor
                                       cliente
TCP Modelagem de Latência: Slow Start (cont.)
 S
   + RTT = tempo quando o servidor inicia o envio do segmento
 R
           até quando o servidor recebe reconhecimento

                                                    inicia
           S                                        conexão TCP
      −1
 2k          = tempo para enviar a k-ésima janela
           R                                         pede
                                                     objeto
                                                                            primeira janela
                       +                                                       = S/R
⎡S               S⎤   tempo de bloqueio após a
⎢R + RTT − 2 k −1 ⎥ =                                     RTT               segunda janela
⎣                R⎦   k-ésima janela                                           = 2S/R


                                                                           terceira janela
                                                                             = 4S/R

                     P
latencia= + 2 RTT + ∑ TempoBloqueio p
         O
                                                                            quarta janela
         R          p =1                                                      = 8S/R
                         P
            = + 2 RTT + ∑ [ + RTT − 2k −1 ]
             O               S             S
             R          k =1 R             R
                                                                            transmissão
                                                     objeto
             O                  S              S                              completa
            = + 2 RTT + P[ RTT + ] − (2 P − 1)      entregue
             R                  R              R          tempo no
                                                                      tempo no
                                                                       servidor
                                                            cliente
Capítulo 3: Resumo

• princípios por trás dos                 A seguir:
  serviços da camada de                   •   saímos da “borda” da rede
  transporte:                                 (camadas de aplicação e de
     – multiplexação/demultiplexação          transporte)
     – transferência de dados confiável   •   vamos para o “núcleo” da
                                              rede
     – controle de fluxo
     – controle de congestionamento
•   instantiação e implementação na
     – UDP
     – TCP

Weitere ähnliche Inhalte

Andere mochten auch (9)

Slides2
Slides2Slides2
Slides2
 
Protocolos ethernet
Protocolos ethernetProtocolos ethernet
Protocolos ethernet
 
transmissão
transmissãotransmissão
transmissão
 
Redes osi
Redes osiRedes osi
Redes osi
 
Atelier 3
Atelier 3Atelier 3
Atelier 3
 
Redes3
Redes3Redes3
Redes3
 
Redes2
Redes2Redes2
Redes2
 
Half duplex
Half duplexHalf duplex
Half duplex
 
Completas
CompletasCompletas
Completas
 

Ähnlich wie TCP: Visão Geral

Aula 8 camada de transporte ii
Aula 8   camada de transporte iiAula 8   camada de transporte ii
Aula 8 camada de transporte iiwab030
 
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Felipe Alex
 
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...Wellington Oliveira
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPMauro Tapajós
 
R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)Mariana Hiyori
 
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4Pedro Henrique
 
Camada de transporte capitulo 3
Camada de transporte   capitulo 3Camada de transporte   capitulo 3
Camada de transporte capitulo 3fernandao777
 
Redes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCRedes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCMauro Tapajós
 
Aula 10 camada de rede
Aula 10   camada de redeAula 10   camada de rede
Aula 10 camada de redewab030
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)Mariana Hiyori
 
ATM via rádio (apresentação da tese)
ATM via rádio (apresentação da tese)ATM via rádio (apresentação da tese)
ATM via rádio (apresentação da tese)Pedro Silva
 
802.11 performance issues
802.11 performance issues802.11 performance issues
802.11 performance issuesFábio Pisaruk
 

Ähnlich wie TCP: Visão Geral (20)

Aula 8 camada de transporte ii
Aula 8   camada de transporte iiAula 8   camada de transporte ii
Aula 8 camada de transporte ii
 
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
Análise de Desempenho de Algoritmos de Controle de Congestionamento TCP utili...
 
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
WANs e Roteadores Cap. 10 TCP/IP Intermediário - CCNA 3.1 Wellington Pinto de...
 
Redes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDPRedes de computadores II - 4.Camada de Transporte TCP e UDP
Redes de computadores II - 4.Camada de Transporte TCP e UDP
 
R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)R&c 02 14_2 - Protocolos (Parte 2)
R&c 02 14_2 - Protocolos (Parte 2)
 
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4
kkkkkkkkkkkkkkkkkkkkkkkkkWww.lsi.usp.br ~cranieri pcs2476p1c4
 
Camada de transporte capitulo 3
Camada de transporte   capitulo 3Camada de transporte   capitulo 3
Camada de transporte capitulo 3
 
Redes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLCRedes I - 3.Camada de Enlace de Dados LLC
Redes I - 3.Camada de Enlace de Dados LLC
 
R&C 0401 07 1
R&C 0401 07 1R&C 0401 07 1
R&C 0401 07 1
 
Camada de transporte parte3
Camada de transporte parte3Camada de transporte parte3
Camada de transporte parte3
 
Aula 10 camada de rede
Aula 10   camada de redeAula 10   camada de rede
Aula 10 camada de rede
 
Administração de Redes Linux - III
Administração de Redes Linux - IIIAdministração de Redes Linux - III
Administração de Redes Linux - III
 
R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)R&c 03 14_1 - Protocolos (Parte 1)
R&c 03 14_1 - Protocolos (Parte 1)
 
ATM via rádio (apresentação da tese)
ATM via rádio (apresentação da tese)ATM via rádio (apresentação da tese)
ATM via rádio (apresentação da tese)
 
802.11 performance issues
802.11 performance issues802.11 performance issues
802.11 performance issues
 
Camada de enlace parte1
Camada de enlace   parte1Camada de enlace   parte1
Camada de enlace parte1
 
Aulas de rede
Aulas de redeAulas de rede
Aulas de rede
 
Camada4
Camada4Camada4
Camada4
 
Camada4
Camada4Camada4
Camada4
 
Comunicação i2 c
Comunicação i2 cComunicação i2 c
Comunicação i2 c
 

Mehr von samuelthiago

Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_vsamuelthiago
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_ivsamuelthiago
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iiisamuelthiago
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_iisamuelthiago
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_isamuelthiago
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iisamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_javasamuelthiago
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_jsamuelthiago
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)samuelthiago
 

Mehr von samuelthiago (20)

Eclipse i (1)
Eclipse i (1)Eclipse i (1)
Eclipse i (1)
 
Html básico
Html básicoHtml básico
Html básico
 
Interface grafica em_java_parte_v
Interface grafica em_java_parte_vInterface grafica em_java_parte_v
Interface grafica em_java_parte_v
 
Interface grafica em_java_parte_iv
Interface grafica em_java_parte_ivInterface grafica em_java_parte_iv
Interface grafica em_java_parte_iv
 
Interface grafica em_java_parte_iii
Interface grafica em_java_parte_iiiInterface grafica em_java_parte_iii
Interface grafica em_java_parte_iii
 
Interface grafica em_java_parte_ii
Interface grafica em_java_parte_iiInterface grafica em_java_parte_ii
Interface grafica em_java_parte_ii
 
Interface grafica em_java_parte_i
Interface grafica em_java_parte_iInterface grafica em_java_parte_i
Interface grafica em_java_parte_i
 
Poo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_iiPoo interacao entre_objetos_blue_j_ii
Poo interacao entre_objetos_blue_j_ii
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
Projeto calculadora em_java
Projeto calculadora em_javaProjeto calculadora em_java
Projeto calculadora em_java
 
Introducao a poo_com_blue_j
Introducao a poo_com_blue_jIntroducao a poo_com_blue_j
Introducao a poo_com_blue_j
 
01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)01 02 introdução aos bancos de dados (slides)
01 02 introdução aos bancos de dados (slides)
 
Java 08
Java 08Java 08
Java 08
 
Java 07
Java 07Java 07
Java 07
 
Java 06
Java 06Java 06
Java 06
 
Java 05
Java 05Java 05
Java 05
 
Java 04
Java 04Java 04
Java 04
 
Java 03
Java 03Java 03
Java 03
 
Java 02
Java 02Java 02
Java 02
 
Java 01
Java 01Java 01
Java 01
 

TCP: Visão Geral

  • 1. TCP: Visão Geral RFCs: 793, 1122, 1323, 2018, 2581 • ponto-a-ponto: • dados full-duplex: – um transmissor, um receptor – transmissão bi-direcional na • confiável, seqüêncial byte mesma conexão stream: – MSS: maximum segment size – não há contornos de mensagens • orientado à conexão: • pipelined: (transmissão de vários – handshaking (troca de pacotes em confirmação) mensagens de controle) inicia o estado do transmissor e do – Controle de congestão e de fluxo receptor antes da troca de dados definem tamanho da janela • controle de fluxo: • buffers de transmissão e de recepção – transmissor não esgota a capacidade do receptor aplicação aplicação envia dados lê dados socket socket port port TCP TCP buffe de txr buffer de rx segment
  • 2. Estrutura do Segmento TCP 32 bits URG: dados urgentes contagem por (pouco usado) porta origem porta destino bytes de dados número de seqüência (não segmentos!) ACK: campo de ACK é válido número de reconhecimento tam. não PSH: produz envio de cabec.usado UA P R S F janela de recep. dados (pouco usado) checksum dados urgentes número de bytes receptor está RST, SYN, FIN: Opções (tamanho variável) pronto para estabelec. de conexão aceitar (comandos de criação e término) dados de aplicação Internet (tamanho variável) checksum (como no UDP)
  • 3. Números de Seqüência e ACKs do TCP Números de seqüência: Host A Host B – número do primeiro byte no segmentos de Usuário Seq=4 digita 2 , AC K=79, dados ‘C’ data = ‘C’ host confirma ACKs: recepção de ‘C’, e ecoa o – número do próximo ta = ‘ C’ ’C’ de volta 3, da byte esperado do outro CK=4 79, A Seq= lado – ACK cumulativo Q: host confirma como o receptor trata recepção Seq=4 segmentos foram de do ‘C’ ecoado 3 , A CK = 80 ordem – A especificação do TCP não define, fica a tempo critério do cenário telnet simples implementador
  • 4. TCP: transferência de dados confiável evento: dados recebidos transmissor simplificado, assumindo da aplicação acima que não há controle de fluxo nem de cria, envia segmento congestionamento evento: temporização esgotada espera wait for para segmento com seq = y por event evento retransmite segmento evento: ACK recebido, com número de ACK = y processamento do ACK
  • 5. TCP: 00 sendbase = initial_sequence number 01 nextseqnum = initial_sequence number 02 transferência 03 loop (forever) { 04 switch(event) 05 event: dados recebidos da aplicação acima confiável 06 07 cria segmento TCP com número de seqüência nextseqnum inicia temporizador para segmento nextseqnum 08 passa segmento ao IP 09 nextseqnum = nextseqnum + length(data) 10 event: esgotamento de temp. para segmento com seq = y 11 retransmite segmento com seq = y 12 calcule nova temporização para o segmento y Transmissor 13 reinicia temporizador para número de seqüência y 14 event: ACK recebido, com valor y no campo de ACK TCP simplificado 15 if (y > sendbase) { /* ACK cumulativo de todos os dados até y */ 16 cancela todas as temporizações para segmentos com seq < y 17 sendbase = y 18 } 19 else { /* um ACK duplicata para um segmento já reconhecido */ 20 incrementa numero de duplicatas de ACKs recebidas para y 21 if (numero de duplicatas de ACKS recebidas para y == 3) { 22 /* TCP fast retransmit */ 23 reenvia segmento com número de seqüência y 24 reinicia temporização para segmento y 25 } 26 } /* end of loop forever */
  • 6. Geração de ACK [RFC 1122, RFC 2581] Evento Ação do TCP Receptor segmento chega em ordem, ACK retardado. Espera até 500ms não há lacunas, pelo próximo segmento. Se não chegar, segmentos anteriores já aceitos envia ACK segmento chega em ordem, imediatamente envia um ACK não há lacunas, cumulativo um ACK atrasado pendente segmento chega fora de ordem envia ACK duplicado, indicando número número de seqüência chegou de seqüência do próximo byte esperado maior: gap detetado chegada de segmento que reconhece imediatamente se o segmento parcial ou completamente começa na borda inferior do gap preenche o gap
  • 7. TCP: cenários de retransmissão Host A Host B Host A Host B Seq=9 Seq=9 2 , 8 byt 2 , 8 byt es da es da ta Seq= ta Seq=92 temp. 1 temporização 00, 2 0 byt es da ta Seq=100 temp. 100 A CK= 00 =1 0 X CK CK=12 loss A A Seq=9 Seq=9 2 2 , 8 byt , 8 byt es da es da ta ta 0 =1 2 100 A CK A C K= tempo tempo temporização prematura, cenário com perda do ACK ACKs cumulativos
  • 8. TCP: Controle de Fluxo controle de fluxo receptor: explicitamente transmissor não deve informa o transmissor da esgotar os buffers de área livre no buffer receção enviando (dinamicamente mudando) dados rápido demais – campo RcvWindow no segmento TCP RcvBuffer = tamanho do Buffer de recepção do TCP transmissor: mantém a RcvWindow = total de espaço livre no buffer quantidade de dados transmitidos mas não reconhecidos menor que o último RcvWindow recebido armazenamento de recepção
  • 9. TCP Round Trip Time e Temporização Q: como escolher o valor Q: Como estimar o RTT? da temporização do • SampleRTT: tempo medido da TCP? transmissão de um segmento até a respectiva confirmação • maior que o RTT – ignora retransmissões e segmentos – nota: RTT varia reconhecidos de forma cumulativa • muito curto: temporização • SampleRTT varia de forma rápida, é prematura desejável um amortecedor para a – retransmissões estimativa do RTT desnecessárias – usar várias medidas recentes, não • muito longo: a reação à apenas o último SampleRTT perda de segmento fica obtido lenta
  • 10. TCP Round Trip Time e Temporização EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT • Média móvel com peso exponential • influencia de uma dada amostra decresce de forma exponencial • valor típico de x: 0.1 Definindo a temporização • EstimtedRTT mais “margem de segurança” • grandes variações no EstimatedRTT -> maior margem de segurança Temporização = EstimatedRTT + 4*Desvios Desvios = (1-x)*Desvio + x*|SampleRTT-EstimatedRTT|
  • 11. TCP Estabelecimento de Conexão TCP transmissor estabelece conexão Three way handshake: com o receptor antes de trocar Passo 1: sistema final cliente envia segmentos de dados TCP SYN ao servidor • initializar variáveis: – especifica número de seqüência – números de seqüência inicial – buffers, controle de fluxo (ex. RcvWindow) Passo 2: sistema final servidor que recebe o SYN, responde com • cliente: iniciador da conexão segmento SYNACK Socket clientSocket = new Socket("hostname","port – reconhece o SYN recebido number"); – aloca buffers • servidor: chamado pelo cliente – especifica o número de Socket connectionSocket = seqüência inicial do servidor welcomeSocket.accept(); Passo 3: o sistema final cliente reconhece o SYNACK
  • 12. TCP Término de Conexão cliente servidor Fechando uma conexão: close FIN cliente fecha o socket: clientSocket.close(); AC K close Passo 1: o cliente envia o FIN segmento TCP FIN ao servidor espera temp. A CK Passo 2: servidor recebe FIN, responde com ACK. Fecha a conexão, envia FIN. closed
  • 13. TCP Término de Conexão cliente servidor Passo 3: cliente recebe FIN, closing FIN responde com ACK. – Entra “espera temporizada” AC K - vai responder com ACK a closing FINs recebidos FIN Passo 4: servidor, recebe ACK. espera temp. Conexão fechada. A CK closed closed
  • 14. TCP Controle de Conexão Estados do Servidor Estados do Cliente
  • 15. Princípios de Controle de Congestionamento Congestionamento: • informalmente: “muitas fontes enviando dados acima da capacidade da rede tratá-los” • diferente de controle de fluxo! • sintomas: – perda de pacotes (saturação de buffer nos roteadores) – atrasos grandes (filas nos buffers dos roteadores) • um dos 10 problemas mais importantes na Internet!
  • 16. Causas/custos do congestionamento: cenário 1 • dois transmissores, dois receptores • um roteador, buffers infinitos • não há retransmissão • grandes atrasos quando congestionado • máxima vazão obtenível
  • 17. Causas/custos do congestionamento: cenário 2 • um roteador, buffers finitos • transmissor reenvia pacotes perdidos
  • 18. Causas/custos do congestionamento: cenário 2 • sempre vale : λ = λout(tráfego bom) • in “perfeita” retransmissão somente quando há perdas: λ > λout in • retransmissão de pacotes atrasados (não perdidos) torna λ maior (que o caso perfeito ) para o mesmo λ in out “custos” do congestionamento: • mais trabalho (retransmissões) para um dado “tráfego bom” • retransmissões desnecessárias: enlace transporta várias cópias do mesmo pacote
  • 19. Causas/custos do congestionamento: cenário 3 • quatro transmissores Q: o que acontece quando λ in • caminhos com múltiplos saltos e λ aumentam ? • temporizações/retransmissões in
  • 20. Causas/custos do congestionamento: cenário 3 Outro “custo” do congestionamento: • quando pacote é descartado, qualquer capacidade de transmissão que tenha sido anteriormente usada para aquele pacote é desperdiçada!
  • 21. Abordagens do problema de controle de congestionamento Existem duas abordagens gerais para o problema de controle de congestionamento: Controle de congestionamento Controle de congestionamento fim-a-fim: assistido pela rede: • não usa realimentação explícita • roteadores enviam informações da rede para os sistemas finais • congestionamento é inferido a – bit único indicando o partir das perdas e dos atrasos congestionamento (SNA, observados nos sistemas finais DECbit, TCP/IP ECN, • abordagem usada pelo TCP ATM) – taxa explícita do transmissor poderia ser enviada
  • 22. Estudo de caso: controle de congestionamento do serviço ATM ABR ABR: available bit rate: células RM (resource management) : • “serviço elástico” • enviadas pelo transmissor, entremeadas • se o caminho do transmissor está com as células de dados pouco usado: • bits nas células RM são usados pelos – transmissor pode usar a comutadores (“assistida pela rede”) banda disponível – NI bit: não aumentar a taxa • se o caminho do transmissor está (congestionamento leve) congestionado: – CI bit: indicação de – transmissor é limitado a uma congestionamento taxa mínima garantida • as células RM são devolvidos ao transmissor pelo receptor, com os bits de indicaçaõ intactos
  • 23. Estudo de caso: controle de congestionamento do serviço ATM ABR • campo ER (explicit rate) de dois bytes nas células RM – comutador congestionado pode reduzir o valor de ER nas células – o transmissor envia dados de acordo com esta vazão mínima suportada no caminho • bit EFCI nas células de dados: marcado como 1 pelos comutadores congestionados – se a célula de dadosque precede a célula RM tem o bit EFCI com valor 1, o receptor marca o bit CI na célula RM devolvida
  • 24. TCP: Controle Congestionamento • controle fim-a-fim (não há assistência da rede) • taxa de transmissão é limitada pelo tamanho da janela, Congwin, sobre os segmentos: Congwin • w segmentos, cada um com MSS bytes enviados em um RTT: w * MSS vazão = Bytes/seg RTT
  • 25. TCP: Controle Congestionamento • “teste” para reconhecer a • duas “fases”” taxa possível: – slow start – idealmente: transmitir tão – congestion avoidance rápido quanto possível • variáveis importantes: (Congwin tão grande – Congwin quanto possível) sem perdas – aumentar Congwin até – threshold: define o que ocorra perda limite entre a fase slow (congestionamento) start e a fase congestion avoidance – perda: diminuir Congwin, então ir testando (aumentando) outra vez
  • 26. TCP Slowstart Host A Host B algoritmo Slowstart one segm ent RTT initializar: Congwin = 1 para (cada segmento reconhecido two segm en ts Congwin++ até (evento perda OU CongWin > threshold) four segm ents • aumento exponencial (por RTT) no tamanho da janela (não tão lento!) tempo • evento de perda : temporização (Tahoe TCP) e/ou 3 ACKs duplicados (Reno TCP)
  • 27. TCP: Congestion Avoidance Congestion avoidance /* acabou slowstart */ /* Congwin > threshold */ Até (evento perda) { cada w segmentos reconhecidos: Congwin++ } threshold = Congwin/2 Congwin = 1 realiza slowstart 1 1: TCP Reno pula a fase slowstart (recuperaçaõ rápida) após três ACKs duplicados
  • 28. AIMD TCP Eqüidade TCP congestion avoidance: Objetivo: se N sessões TCP devem passar pelo mesmo gargalo, • AIMD: aumento cada uma deve obter 1/N da aditivo, redução capacidade do enlace multiplicativa – aumenta a janela de 1 a cada RTT conexão TCP 1 – diminui a janela por um fator de 2 em caso de evento perda roteador com conexão TCP 2 gargalo de capacidade R
  • 29. Porque o TCP é justo? Duas sessões competindo pela banda: • O aumento aditivo fornece uma inclinação de 1, quando a vazão aumenta • redução multiplicativa diminui a vazão proporcionalmente R divisão igual da banda Vazão da Conexão 1 perda: reduz janela por um fato de 2 congestion avoidance: aumento aditivo perda: reduz janela por um fator de 2 congestion avoidance: aumento aditivo Vazão da Conexão 2 R
  • 30. TCP: modelagem da latência Q: Quanto tempo demora para receber Notação, hipóteses: um objeto de um servidor Web após • Assuma um enlace entre o cliente e enviar um pedido? o servidor com taxa de dados R • estabelecimento de conexão TCP • Assuma: janela de • atraso de transferência de dados congestionamento fixa, W segmentos • S: MSS (bits) • O: tamanho do objeto (bits) • não há retransmissões (sem perdas e corrupção de dados) Dois casos a considerar: • WS/R > RTT + S/R: ACK para o primeiro segmento retorna antes de se esgotar a janela de transmissão de dados • WS/R < RTT + S/R: espera pelo depois de esgotar a janela de transmissão de dados
  • 31. TCP: modelagem da latência K:= O/WS Caso 1: latencia = 2RTT + O/R Caso 2: latencia = 2RTT + O/R + (K-1)[S/R + RTT - WS/R]
  • 32. TCP Modelagem de Latência: Slow Start • Agora suponha que a janela cresce de acordo com os procedimentos da fase slow start. • Vamos mostrar que a latência de um objeto de tamanho O é: O ⎡ S⎤ S Latency = 2 RTT + + P ⎢ RTT + ⎥ − ( 2 P − 1) R ⎣ R⎦ R onde P é o número de vezes que o TCP fica bloqueado no servidor: P = min{Q, K − 1} - onde Q é o número de vezes que o servidor ficaria bloqueado se o objeto fosse de tamanho infinito. - e K é o número de janelas que cobrem o objeto.
  • 33. TCP Modelagem de Latência: Slow Start (cont.) inicia Exemplo: conexão TCP pede O/S = 15 segmentos objeto primeira janela = S/R K = 4 janelas RTT segunda janela = 2S/R Q=2 terceira janela = 4S/R P = min{K-1,Q} = 2 Servidor bloqueado P=2 times. quarta janela = 8S/R transmissão objeto completa entregue tempo no tempo no servidor cliente
  • 34. TCP Modelagem de Latência: Slow Start (cont.) S + RTT = tempo quando o servidor inicia o envio do segmento R até quando o servidor recebe reconhecimento inicia S conexão TCP −1 2k = tempo para enviar a k-ésima janela R pede objeto primeira janela + = S/R ⎡S S⎤ tempo de bloqueio após a ⎢R + RTT − 2 k −1 ⎥ = RTT segunda janela ⎣ R⎦ k-ésima janela = 2S/R terceira janela = 4S/R P latencia= + 2 RTT + ∑ TempoBloqueio p O quarta janela R p =1 = 8S/R P = + 2 RTT + ∑ [ + RTT − 2k −1 ] O S S R k =1 R R transmissão objeto O S S completa = + 2 RTT + P[ RTT + ] − (2 P − 1) entregue R R R tempo no tempo no servidor cliente
  • 35. Capítulo 3: Resumo • princípios por trás dos A seguir: serviços da camada de • saímos da “borda” da rede transporte: (camadas de aplicação e de – multiplexação/demultiplexação transporte) – transferência de dados confiável • vamos para o “núcleo” da rede – controle de fluxo – controle de congestionamento • instantiação e implementação na – UDP – TCP