TCP Selective Acknowledgment

Windows Mobile SupportedWindows Embedded CE Supported

9/8/2008

Windows Embedded CE apresenta suporte para Confirmação Seletiva, ou SACK. SACK é importante para bom desempenho, especialmente para conexões usando grandes tamanhos janela TCP. Antes da SACK, um receptor pode apenas confirmação o número seqüência mais recente do contíguo dados que tinham recebidos, ou para a extremidade esquerda da janela de recepção. Com SACK habilitado, o receptor continua a usar o número ACK a confirmação da borda esquerda da janela de recepção, mas ele pode também confirmação outros blocos de dados recebidos individualmente. SACK usa opções cabeçalho TCP, como mostrado abaixo. Este texto foi obtido diretamente do 2018 RFC:

1. A opção Caminho-permitido

Este duas-opção byte pode ser enviada em um SYN por um TCP que foi estendido para receber (e provavelmente processo) a opção SACK depois que a conexão foi aberto. Ele não deve ser enviado em segmentos não-SYN.

       TCP SACK-Permitted opção:

       Tipo: 4

       +---------+---------+
       | Kind=4  | Length=2|
       +---------+---------+

2. Formato de opção Caminho

A opção SACK deve ser usado para transmitir estendido informações de confirmação do receptor para o remetente sobre um conexão TCP estabelecido.

       Opção SACK TCP:

       Tipo: 5

       Comprimento: Variável

                         +--------+--------+
                         | Kind=5 | Length |
       +--------+--------+--------+--------+
       |      Left Edge of 1st Block       |
       +--------+--------+--------+--------+
       |      Right Edge of 1st Block      |
       +--------+--------+--------+--------+
       |                                   |
       /            . . .                  /
       |                                   |
       +--------+--------+--------+--------+
       |      Left Edge of nth Block       |
       +--------+--------+--------+--------+
       |      Right Edge of nth Block      |
       +--------+--------+--------+--------+

Com SACK habilitado (o usar como padrão) um pacote ou uma série de pacotes pode ser descartada e o receptor é possível informar o remetente de exatamente quais dados foram recebidos e onde estão os buracos nos dados. O remetente seletivamente, em seguida, pode retransmitir os dados ausentes sem precisar retransmitir blocos de dados que já foram recebidos com êxito. SACK é controlada pelos SackOpts entrada Registro. O juntar rastrear abaixo ilustra um hospedar confirmando todos os dados up to número seqüência 54857341, além de dados de seqüência número 54858789 a 54861685.

+ FRAME: Base frame properties
+ ETHERNET: ETYPE = 0x0800 : Protocol = IP:  DOD Internet Protocol
+ IP: ID = 0x1A0D; Proto = TCP; Len: 64
  TCP: .A...., len:0, seq:925104-925104, ack:54857341, win:32722, src:1242  dst:139 
      TCP: Source Port = 0x04DA
      TCP: Destination Port = NETBIOS Session Service
      TCP: Sequence Number = 925104 (0xE1DB0)
      TCP: Acknowledgement Number = 54857341 (0x3450E7D)
      TCP: Data Offset = 44 (0x2C)
      TCP: Reserved = 0 (0x0000)
    + TCP: Flags = 0x10 : .A....
      TCP: Window = 32722 (0x7FD2)
      TCP: Checksum = 0x4A72
      TCP: Urgent Pointer = 0 (0x0)
      TCP: Options
          TCP: Option Nop = 1 (0x1)
          TCP: Option Nop = 1 (0x1)
        + TCP: Timestamps Option
          TCP: Option Nop = 1 (0x1)
          TCP: Option Nop = 1 (0x1)
          TCP: SACK Option
              TCP: Option Type = 0x05
              TCP: Option Length = 10 (0xA)
              TCP: Left Edge of Block  = 54858789 (0x3451425)
   TCP: Right Edge of Block = 54861685 (0x3451F75)

See Also

Concepts

Transmission Control Protocol (TCP)