A differenza di alcuni protocolli precedenti che utilizzavano numeri di sequenza di pacchetti, le connessioni TCP utilizzano numeri di sequenza di byte. Ogni pacchetto dice in sostanza "Ho ricevuto il flusso di dati da te fino a ma non includendo il byte A, sarei interessato a vedere fino a W byte oltre a questo. Qui ci sono N byte da me che iniziano con il numero di sequenza T". I numeri di sequenza di byte sono 32 bit e sono inizializzati su un valore arbitrario quando viene aperta una connessione e si spostano da 0xFFFFFFFF a 0; quando si confrontano i numeri di sequenza, si dovrebbe generalmente sottrarre usando valori non firmati, e poi guardare il risultato come un valore senza segno.
In genere, un'implementazione tiene traccia del numero di sequenza del prossimo byte che si aspetta, il numero di sequenza più alto per il quale ha ricevuto un riconoscimento, il numero di sequenza dell'ultimo byte trasmesso, quanto tempo deve attendere per un riconoscimento prima di ritrasmettere, e per quanto tempo dovrebbe attendere altri dati prima di riconoscere ciò che ha.
Ogni volta che i dati hanno dati da inviare a cui l'altra unità sarebbe interessata, dovrebbero inviarlo e impostare il timer per aspettarsi una conferma se non è già in esecuzione. Ogni volta che riceve un riconoscimento per alcuni ma non tutti i dati che ha inviato, dovrebbe resettare quel timer. Ogni volta che il timer scade senza aver ricevuto un riconoscimento per tutti i dati, l'unità deve caricare il suo numero di sequenza "ultimo byte trasmesso" con il numero di sequenza più alto per il quale ha ricevuto un riconoscimento.
Se i dati arrivano con i pacchetti in arrivo, l'unità dovrebbe impostare un timer per confermarli. Alla scadenza del timer, l'unità deve inviare un pacchetto anche se non ha alcun proprio proprio da inviare. Se l'unità invia un pacchetto per qualsiasi altro motivo, può confermare tutti i dati ricevuti fino a quel momento e quindi annullare il timer di riconoscimento.
Si noti che è possibile riconoscere il valore di molti pacchetti di dati da un singolo riconoscimento di reso; è anche possibile che i dati inviati come pacchetti multipli possano essere ritrasmessi come un pacchetto più grande. Le unità dovrebbero aspettarsi di ricevere un pacchetto contenente una combinazione di vecchi e nuovi dati; dovrebbero semplicemente elaborare i nuovi dati e ignorare il vecchio. Si noti che le unità dovrebbero riconoscere i dati che ricevono indipendentemente dal fatto che siano o meno "nuovi"; il riconoscimento dovrebbe indicare il numero di sequenza del prossimo byte atteso, indipendentemente da quali dati erano nel pacchetto riconosciuto.
TCP è per molti aspetti un protocollo abbastanza semplice, sebbene le più recenti implementazioni includano un sacco di rughe "opzionali". In generale, dispositivi come i microcontrollori embedded possono ottenere con l'implementazione di un piccolo sottoinsieme delle funzionalità che è probabile che includano i PC completi.