Come rilevare interruzioni di rete

2

Voglio scrivere una sorta di "funzione diagnostica" che è in grado di rilevare quando una rete basata su TCP / IP viene interrotta.

Vorrei collegare due endpoint e rilevare quando una connessione stabilita tra loro due viene rilasciata. La connessione di rete può essere cablata o wireless. Il controllo dovrebbe essere indipendente dal sistema operativo o dalla funzione del driver di rete: non voglio leggere i "contatori dei pacchetti" o simili perché penso che questo non funzionerà. La diagnosi dovrebbe durare ore o persino giorni, quindi quando la connessione si interrompe dovrei essere in grado di rilevarlo, aumentare il numero e ristabilire la connessione per ulteriori misurazioni.

La mia prima idea era di usare Netty o Mina, ma ho fallito perché ristabilivano le connessioni in silenzio (che normalmente è una buona cosa) Ho bisogno di un puntatore nella giusta direzione.

    
posta Marged 03.04.2016 - 21:48
fonte

1 risposta

2

Ci sono due metodi che mi vengono in mente:

  1. Avere un sistema ping altro. Se il pacchetto ICMP non riesce a raggiungere l'altro sistema, c'è qualche interruzione tra di loro.

  2. Configura una semplice funzione ACK utilizzando TCP o UDP . Questo è più appropriato del ping se è necessario comunicare i metadati. Come funziona è simile al ping, un sistema invia una richiesta a un altro sistema che restituisce una risposta. Se nessuna risposta ritorna in un determinato periodo di tempo, l'altro sistema non è raggiungibile. TCP ha la sua funzione ACK incorporata ed è più tollerante ai guasti, mentre UDP eliminerà i pacchetti. Quale si utilizza dipende da quanto tollerante si desidera essere di intoppi di rete minori rispetto a "qualcuno scollegato il cavo di rete."

risposta data 03.04.2016 - 22:34
fonte

Leggi altre domande sui tag