Por que o número de Sequence em um pacote ACK é incrementado?

1

Eu queria saber se existe algum motivo específico para incrementar o número de seqüência ACK em vez de confirmar o número de seqüência recebido. Por que o RFC projetou dessa maneira?

Actual:
[SYN] SEQ=100
[SYN, ACK] Seq=300 Ack=101
[ACK] Seq=101 Ack=301

Why not:
[SYN] Seq=100
[SYN/ACK] Seq=300 Ack=100
[ACK] Seq=101 Ack=300

Naturalmente, faria sentido reconhecer o número de sequência que você acabou de receber, em vez do número de sequência que você recebeu + 1?

    
por L.S. 27.03.2018 / 11:13

1 resposta

0

No TCP, o protocolo acompanha o que foi enviado usando um número de sequência. Efetivamente, é um contador de tudo que foi enviado + 1.

Mais detalhes no link

ACK é incrementado em 1 porque o pacote está carregando um SYN, não está vazio. Os SYNs contribuem para incrementar o SEG.LEN, conforme explicado na rfc:

SEG.LEN = the number of octets occupied by the data in the segment (counting SYN and FIN)

Se o pacote estivesse vazio e sem SYN / FIN, o contador não teria sido incrementado.

Isso também é contemplado no rfc onde ele afirma que o próximo número de seqüência a ser enviado deve ser maior ou igual ao indicado no ACK:

A new acknowledgment (called an "acceptable ack"), is one for which the inequality below holds:

SND.UNA < SEG.ACK =< SND.NXT

onde SND.UNA é o número de sequência não reconhecido mais antigo e SND.NXT é o próximo número de sequência a ser enviado.

Ao incrementar o seq. número o pacote é basicamente pedindo a outra parte "Espero que você me envie o primeiro byte de dados agora"

    
por 27.03.2018 / 13:47