WiFiEsp.h Server e Client - Distinguere richieste da risposte

Temo che l'esempio del professore non combaci fino in fondo... provo ad analizzarlo, così mi capisco anch'io.

Arduino deve periodicamente inviare dei report al server. La risposta del server è ok, ricevuto.
(Il professore spiega, lo studente risponde sì, ho capito)

Da server poi devo in ogni momento poterlo chiamare per fare una domanda o dare un comando.
(lo studente comanda, il professore obbedisce (siamo proprio come nel mondo reale)) + risponde con un ok, eseguito.

Vista da fuori la sequenza è
--> messaggio A (report)
<-- messaggio B (ok)
--> messaggio C (report)
<-- messaggio D (ok)
<-- messaggio E (istruzione)
--> messaggio F (ok)
Il problema è che il sistema non ha memoria, riguarda la sequenza, questa volta senza spiegazione:
--> messaggio A
<-- messaggio B
--> messaggio C
<-- messaggio D
<-- messaggio E
--> messaggio F
Quando arrivano il messaggio D o E so solo che ho un messaggio in entrata.
Per capire se è un report o un ok oppure un'istruzione o un ok (e ho evitato casi come A,C,D,B... la latenza è subdola) o li ricevo per intero e li analizzo (dispendioso e come già detto la logica è diversa) o riesco a capire l'id di partenza che B, D e F si portano dietro (e so che in teoria è fattibile perché "sotto" lo usa).