Oleh Faisal Akib TCP memiliki beberapa aturan mengenai bagaimana komunikasi dilakukan. Aturan dan proses yang digunakan untuk menetapkan sebuah koneksi, transfer data, dan mengakhiri koneksi.
Penetapan koneksi
Suatu koneksi dapat ditetapkan antara dua mesin hanya jika koneksi antara kedua socket belum ada, kedua mesin sepakat untuk membuat koneksi, dan kedua mesin mempunyai sumber daya TCP yang sama dan cukup untuk melayani koneksi. Bila ada kondisi-kondisi ini yang ada, koneksi tidak bisa ditetapkan. Penerimaan terhadap koneksi dapat dilakukan oleh suatu aplikasi atau suatu rutin dari sistem administrator.
Ketika suatu koneksi telah ditetapkan, koneksi memberi beberapa properti yang berlaku hingga koneksi diakhiri. Biasanya, ini merupakan nilai presedens dan keamanan. Pengaturan ini harus disetujui oleh dua aplikasi yang sedang dalam proses pembentukan koneksi.
Dalam kebanyakan kasus, suatu koneksi diinginkan oleh dua aplikasi, sehingga keduanya akan mengeluarkan permintaan aktif maupun permintaan pasif open. Gambar di bawah ini menunjukkan sebuah diagram alir untuk membuka suatu TCP. Proses dimulai dengan mesin TCP ‘A’ yang menerima suatu permintaan untuk suatu koneksi dari ULP-nya, yang mana mengirimkan suatu primitif active open ke mesin ‘B’. Segmen yang dibangun memiliki flag SYN yang diset on (diset menjadi 1) dan memiliki sequence number. Pada gambar di bawah ini ditunjukkan dengan notasi ” SYN SEQ 50,” menunjukkan bahwa flag SYN ‘on’ dan sequence numbernya (Initial Send Sequence Number atau ISS) adalah 50.
GAMBAR: Pembangunan koneksi
GAMBAR: Pembangunan koneksi
Aplikasi pada mesin ‘B’ telah mengeluarkan instruksi passive open ke TCP-nya. Ketika segmen SYN SEQ 50 diterima, mesin TCP ‘B’ mengirimkan ACK kembali ke mesin ‘A’ dengan sequence numer 51. Mesin ‘B’ juga akan menetapkan nomor ISS-nya sendiri. Gambar di atas menunjukkan pesan ini sebagai “ACK 51; SYN 200”, yang menunjukkan bahwa pesan adalah suatu ACK dengan sequence number 51, yang memiliki flag SYN yang set (1), dan memiliki ISS 200.
Ketika mesin A menerima, ‘A’ mengirim kembali pesan ACK dengan sequence number diset menjadi 201 (ACK 201″ didalam gambar). Kemudian, Mesin A dan mesin B sekarang telah selesai menetapkan koneksi.
Transfer Data
Pemindahan informasi secara langsung, ditunjukkan di dalam gambar berikut. Untuk setiap blok data yang diterima oleh mesin TCP ‘A’ dari ULP, TCP membungkus dan mengirimkannya ke Mesin B dengan suatu peningkatan nomor urutan. Setelah Mesin B menerima pesan, ‘B’ menyampaikannya kepada ‘A’ dengan segmen ACK yang menambahkannya dengan nilai “1” (increment) pada nilai sequence number yang diterimanya dari ‘A’ (yang menunjukkan bahwa ‘B’ telah menerima paket dengan sequence number di atasnya). Gambar berikut menunjukkan transfer dua segmen informasi.
GAMBAR: Transfer Data
GAMBAR: Transfer Data
Layanan transportasi data TCP terdiri atas enam sub layanan:
* Full duplex : Mungkinkan dua end-connection untuk memancarkan informasi setiap saat, bahkan secara simultan.
* Timeliness : Penggunaan timer untuk memastikan bahwa data ditransmisikan dalam interval waktu yang tepat.
* Ordered : indikator untuk memastikan data yang dikirim dari satu aplikasi diterima dalam urutan yang sama dengan urutannya pada saat dikirim. Hal ini dilakukan karena ada kemungkinan data yang diterima mungkin tidak dalam keadaan terurut setelah melawati IP, sebab TCP harus merangkai kembali (reassemble) pesan di dalam urutan yang benar sebelum melewatkannya ke lapisan di atasnya.
* Labeled : Semua koneksi memiliki status persetujuan keamanan.
* Controlled Flow: TCP dapat mengatur aliran informasi dengan penggunaan buffer dan pembatasan window.
* Error correction : Checksum akan memastikan bahwa data bebas kesalahan.
Mengakhiri Koneksi (closing connection ).
Untuk menutup suatu koneksi, salah satu TCP menerima suatu pesan dari ULP dan akan mengeluarkan pesan FIN flag yang diset ‘on’. Ini ditunjukkan di dalam Gambar di bawah ini. Pada gambar ini, mesin TCP ‘A’ mengirimkan permintaan untuk menutup koneksi ke mesin ‘B’ dengan sequence number berikutnya. Mesin B kemudian mengirim kembali suatu ACK atas permintaan tersebut dengan sequence number berikutnya lagi. Dengan demikian, mesin B mengirimkan pesan “close” melalui ULP kepada aplikasi dan menunggu aplikasi untuk memberikan jawaban terhadap permintaan ini. Langkah ini sebenarnya tidak terlalu penting, karena TCP dapat menutup koneksi tanpa persetujuan aplikasi, tetapi sebuah sistem yang baik akan menginformasikan ke aplikasi atas terjadinya perubahan status.
GAMBAR: Penghentian Koneksi
GAMBAR: Penghentian Koneksi
Setelah persetujuan penutupan koneksi diterima dari aplikasi (atau setelah permintaan time-out), Mesin TCP ‘B’ akan mengirim suatu segmen kembali ke Mesin A dengan FIN flag yang set. Akhirnya, Mesin A mengetahui jika koneksi telah diakhiri, dan koneksipun diakhiri.
Mengakhiri suatu koneksi dapat terjadi ketika salah satu atau salah seorang dari mereka menutup socket. Ini bisa dilakukan tanpa pesan kepada mesin yang lain dan tanpa menganggap ada banyak pemindahan informasi yang masuk di antara keduanya. Terkecuali mendadak shutdowns disebabkan oleh kegagalan pemakaian atau kuasa outages, mengakhiri suatu koneksi dapat diaktipkan oleh seorang pemakai, suatu aplikasi, atau suatu system monitoring rutin yang menilai koneksi yang pantas mengakhiri. akhir Lain dari koneksi tidak boleh menyadari bahwa suatu mengakhiri koneksi secara kasar telah terjadi sampai usaha untuk mengirimkan suatu pesan dan pengatur waktu berakhir.
Untuk memonitoring semua koneksi, TCP menggunakan suatu tabel koneksi.. Masing-Masing koneksi mempunyai suatu entry tabel yang menunjukkan informasi tentang koneksi end-to-end. Layout dari tabel koneksi TCP ditunjukkan di dalam Gambar berikut.
GAMBAR: Tabel Koneksi TCP
GAMBAR: Tabel Koneksi TCP
Arti dari masing-masing kolom adalah sebagai berikut:
* State : Status dari koneksi (closed, closing, listening, waiting, dan seterusnya).
* Local address : IP address untuk koneksi. Ketika status sedang listening, local address ini diset menjadi 0.0.0.0.
* Local port : nomor port lokal.
* Remote address : IP address mesin remote.
* Port remote : Nomor port mesin remote.