Saturday, April 20, 2013

TCP? Haruskah saya peduli?


Bagi yang sudah lama berkecimpung dalam dunia IT tentu tidak asing lagi dengan istilah TCP (Transmision Control Protocol). Bahkan secara tidak sadar, kita selalu berurusan dengan TCP setiap harinya. Ketika Anda browse blog saya ini, Anda menggunakan protokol HTTP yang merupakan application protocol di atas transport protokol TCP ini. Saya tidak akan membahas panjang lebar TCP ini, kelebihan dan kekurangannya apa dibanding saudaranya UDP (jika Anda tertarik mendalami, saya sarankan Anda membaca referensi ini: http://ulam2.cs.luc.edu/ebook/chap06.html).

Nah, Integrasi di dunia juga berhubungan erat sama TCP. Faktanya, hampir semua protokol penting integrasi antar aplikasi di IT pada umumnya dibuat di atas TCP, seperti HTTP, FTP, SSH, dan lain-lain. Salah satu ciri khas dari TCP ini adalah connection-oriented, artinya ketika dua aplikasi (client dan server) akan berkomunikasi, maka harus dilakukan connection establishment terlebih dahulu, yang biasanya dilakukan di port-port tertentu. HTTP misalnya, umumnya dilakukan pada port 80, dan integrasi client dengan MySQL server biasanya dilakukan di port 3306.

Pengetahuan dasar mengenai TCP state perlu dipelajari, terutama bagi yang sering berurusan dengan integrasi. Cukup sering saya menemui technical issue terkait integrasi, masing-masing pihak saling menyalahkan. Menurut client, response dari server lambat sehingga mengakibatkan timeout, sedangkan menurut server, request dari client tidak pernah sampai. Apalagi koneksi antara client dan server kadang juga melewati beberapa firewall, sehingga menambah node potensial yang bermasalah. Salah satu cara ampuh yang objektif untuk mengetahui akar permasalahan adalah dengan melakukan TCP Dump dan melakukan analisa lebih jauh. Supaya lebih akurat, TCP Dump mesti dilakukan di setiap titik yang terlibat, misalnya: client, server, load balancer dan firewall. Pengetahuan tentang TCP state akan sangat membantu dalam melakukan analisa.
Memang melakukan analisa mendalam mengenai hasil TCP Dump merupakan domain teman-teman yang lebih capable dalam Networking, tetapi tidak ada salahnya kita juga mengetahui pengetahuan dasarnya, seperti TCP State. Salah satu diagram TCP State terkait pembuatan sampai dengan penutupan koneksi adalah sebagai berikut: