Meminta penerima mengirim kembali ack adalah cara terbaik, meskipun "terasa canggung". Ingatlah bahwa IP mungkin memecah data Anda menjadi beberapa paket dan menyusunnya kembali, dan ini dapat dilakukan beberapa kali selama transmisi jika berbagai router di jalan memiliki MTU yang berbeda, sehingga konsep "paket" dan TCP Anda mungkin tidak setuju.
Jauh lebih baik mengirim "paket" Anda, apakah itu string, objek berseri, atau data biner, dan minta penerima melakukan pemeriksaan apa pun yang diperlukan untuk membuatnya ada di sana, lalu kirim kembali pemberitahuan.
Pengiriman TCP memang tahu kapan data diakui oleh pihak lain, tetapi satu-satunya alasan mengapa hal ini dilakukan adalah agar ia tahu kapan data dapat dibuang (karena orang lain sekarang bertanggung jawab untuk mengirimkannya ke aplikasi di pihak lain. ).
Biasanya tidak memberikan informasi ini ke aplikasi pengirim, karena (terlepas dari tampilannya) sebenarnya tidak berarti banyak ke aplikasi pengiriman. Pengakuan tidak berarti bahwa aplikasi penerima telah mendapatkan data dan melakukan sesuatu yang masuk akal dengannya - semua itu berarti TCP pengirim tidak perlu lagi mengkhawatirkannya. Data mungkin masih transit - dalam server proxy perantara, misalnya, atau dalam tumpukan TCP penerima.
"Data berhasil diterima" benar-benar merupakan konsep tingkat aplikasi - artinya bervariasi tergantung pada aplikasi (misalnya, untuk banyak aplikasi, hanya masuk akal untuk mempertimbangkan data "diterima" setelah disinkronkan ke disk pada penerima samping). Artinya, Anda harus mengimplementasikannya sendiri, karena sebagai pengembang aplikasi, Anda benar-benar satu-satunya yang tahu cara melakukannya dengan bijaksana untuk aplikasi Anda.