2011-10-12 19 views
9

Perché un pacchetto RST TCP non richiede un riconoscimento? È perché il mittente di RST continuerà a inviare RST ogni volta che riceve un altro pacchetto dall'altro lato?Dettagli pacchetto RST TCP

Su una nota correlata, come può il numero di riconoscimento in un pacchetto RST valido essere 0?

risposta

4

Su una nota correlata, come può il numero di riconoscimento in un pacchetto RST essere 0?

Poiché il segmento con il bit RST impostato deve terminare la connessione, niente di più. Il numero di riconoscimento ha senso solo quando la connessione è stabilita e il bit ACK è impostato nel segmento. Il ricevitore di un segmento RST dovrebbe anche considerare la possibilità che il client del protocollo applicativo all'altra estremità sia stato interrotto bruscamente e che non abbia avuto la possibilità di elaborare i dati non riconosciuti che gli sono stati inviati.

Vedere RFC 793, pagina 15:

Acknowledgment Number: 32 bits 

    If the ACK control bit is set this field contains the value of the 
    next sequence number the sender of the segment is expecting to 
    receive. Once a connection is established this is always sent. 
2

RST TCP indica che la connessione non è valida. Cioè non esiste una sessione associata sul lato remoto. Questo pacchetto viene solitamente inviato quando la porta che stai cercando di raggiungere è chiusa, come so.

TCP FIN - è ciò che viene inviato quando la connessione sta per chiudere e lì è necessario un riconoscimento.

4

TCP RST pacchetto viene lato remoto che indica che la connessione su cui è inviato il precedente pacchetto TCP non viene riconosciuto, forse la connessione è chiusa, forse il porto non è aperto e qualcosa del genere.

Ecco la mia opinione, poiché la connessione non è più valida, non è necessario rispondere a un ACK. E dal momento che il peer remoto non sa la connessione, ha senso che l'ACK in un pacchetto RST è 0.

Dai un'occhiata a questo: http://en.wikipedia.org/wiki/TCP_reset_attack

Problemi correlati