Kategori
Cisco CyberOps Networking

The Transport Layer [2/2]

Transport Layer Session Establishment

TCP Server Processes

Anda sudah mengetahui dasar-dasar TCP. Memahami peran nomor port akan membantu Anda memahami detail proses komunikasi TCP. Dalam topik ini, Anda juga akan mempelajari tentang proses jabat tangan tiga arah TCP dan penghentian sesi.

Setiap proses aplikasi yang berjalan di server dikonfigurasi untuk menggunakan nomor port. Nomor port ditetapkan secara otomatis atau dikonfigurasi secara manual oleh administrator sistem.

Server individu tidak dapat memiliki dua layanan yang ditetapkan ke nomor port yang sama dalam layanan lapisan transport yang sama. Misalnya, host yang menjalankan aplikasi server web dan aplikasi transfer file tidak dapat memiliki keduanya dikonfigurasi untuk menggunakan port yang sama, seperti port TCP 80.

Aplikasi server aktif yang ditetapkan ke port tertentu dianggap terbuka, yang berarti bahwa lapisan transport menerima, dan memproses segmen yang dialamatkan ke port tersebut. Setiap permintaan klien masuk yang ditujukan ke soket yang benar diterima, dan data diteruskan ke aplikasi server. Ada banyak port yang terbuka secara bersamaan di server, satu untuk setiap aplikasi server yang aktif.

Clients Sending TCP Requests

Klien 1 meminta layanan web dan Klien 2 meminta layanan email dari server yang sama.

Request Destination Ports

Klien 1 meminta layanan web menggunakan port tujuan terkenal 80 (HTTP) dan Klien 2 meminta layanan email menggunakan port terkenal 25 (SMTP).

Request Source Ports

Permintaan klien secara dinamis menghasilkan nomor port sumber. Dalam hal ini, Klien 1 menggunakan port sumber 49152 dan Klien 2 menggunakan port sumber 51152.

Response Destination Ports

Ketika server merespon permintaan klien, itu membalikkan port tujuan dan sumber dari permintaan awal. Perhatikan bahwa respons Server terhadap permintaan web sekarang memiliki port tujuan 49152 dan respons email sekarang memiliki port tujuan 51152.

Response Source Ports

Port sumber dalam respons server adalah port tujuan asli dalam permintaan awal.

TCP Connection Establishment

Dalam beberapa budaya, ketika dua orang bertemu, mereka sering saling menyapa dengan berjabat tangan. Kedua belah pihak memahami tindakan berjabat tangan sebagai sinyal untuk salam ramah. Koneksi pada jaringan serupa. Dalam koneksi TCP, klien host membuat koneksi dengan server menggunakan proses jabat tangan tiga arah.

Step 1. SYN

Klien yang memulai meminta sesi komunikasi klien-ke-server dengan server.

Step 2. ACK and SYN

Server mengakui sesi komunikasi klien-ke-server dan meminta sesi komunikasi server-ke-klien.

Step 3. ACK

Klien yang memulai mengakui sesi komunikasi server-ke-klien.

Jabat tangan tiga arah memvalidasi bahwa host tujuan tersedia untuk berkomunikasi. Dalam contoh ini, host A telah memvalidasi bahwa host B tersedia.

Session Termination

Untuk menutup koneksi, flag kontrol Finish (FIN) harus diatur di header segmen. Untuk mengakhiri setiap sesi TCP satu arah, jabat tangan dua arah, yang terdiri dari segmen FIN dan segmen Pengakuan (ACK), digunakan. Oleh karena itu, untuk mengakhiri satu percakapan yang didukung oleh TCP, diperlukan empat pertukaran untuk mengakhiri kedua sesi. Baik klien atau server dapat memulai penghentian.

Dalam contoh, istilah klien dan server digunakan sebagai referensi untuk kesederhanaan, tetapi dua host mana pun yang memiliki sesi terbuka dapat memulai proses penghentian.

Step 1. FIN

Ketika klien tidak memiliki data lagi untuk dikirim dalam aliran, ia mengirim segmen dengan set flag FIN.

Step 2. ACK

Server mengirimkan ACK untuk mengakui penerimaan FIN untuk mengakhiri sesi dari klien ke server.

Step 3. FIN

Server mengirimkan FIN ke klien untuk mengakhiri sesi server-ke-klien.

Step 4. ACK

Klien merespons dengan ACK untuk mengakui FIN dari server.

Ketika semua segmen telah diakui, sesi ditutup.

TCP Three-way Handshake Analysis

Host mempertahankan status, melacak setiap segmen data dalam satu sesi, dan bertukar informasi tentang data apa yang diterima menggunakan informasi di header TCP. TCP adalah protokol full-duplex, di mana setiap koneksi mewakili dua sesi komunikasi satu arah. Untuk membuat koneksi, host melakukan jabat tangan tiga arah. Seperti yang ditunjukkan pada gambar, bit kontrol di header TCP menunjukkan kemajuan dan status koneksi.

Berikut adalah fungsi dari jabat tangan tiga arah:

  • Ini menetapkan bahwa perangkat tujuan hadir di jaringan.
  • Ini memverifikasi bahwa perangkat tujuan memiliki layanan aktif dan menerima permintaan pada nomor port tujuan yang ingin digunakan oleh klien yang memulai.
  • Ini menginformasikan perangkat tujuan bahwa klien sumber bermaksud untuk membuat sesi komunikasi pada nomor port tersebut.

Setelah komunikasi selesai, sesi ditutup, dan koneksi diakhiri. Mekanisme koneksi dan sesi memungkinkan fungsi keandalan TCP.

Control Bits Field

Enam bit di bidang Control Bits dari header segmen TCP juga dikenal sebagai flag. Bendera adalah bit yang diatur ke aktif atau nonaktif.

Keenam flag bit kontrol adalah sebagai berikut:

  • URG – Bidang penunjuk yang mendesak signifikan
  • ACK – Bendera pengakuan yang digunakan dalam pembentukan koneksi dan penghentian sesi
  • PSH – Fungsi push
  • RST – Setel ulang koneksi saat terjadi kesalahan atau batas waktu
  • SYN – Menyinkronkan nomor urut yang digunakan dalam pembuatan koneksi
  • FIN – Tidak ada lagi data dari pengirim dan digunakan dalam penghentian sesi

Cari di internet untuk mempelajari lebih lanjut tentang flag PSH dan URG.

Transport Layer Reliability

TCP Reliability – Guaranteed and Ordered Delivery

Alasan TCP adalah protokol yang lebih baik untuk beberapa aplikasi karena, tidak seperti UDP, TCP mengirim ulang paket yang dijatuhkan dan paket nomor untuk menunjukkan urutan yang benar sebelum pengiriman. TCP juga dapat membantu menjaga aliran paket sehingga perangkat tidak menjadi kelebihan beban. Topik ini mencakup fitur-fitur TCP ini secara rinci.

Mungkin ada saat-saat ketika segmen TCP tidak tiba di tujuannya. Di lain waktu, segmen TCP mungkin tiba dalam keadaan rusak. Agar pesan asli dapat dipahami oleh penerima, semua data harus diterima dan data dalam segmen-segmen ini harus disusun kembali ke dalam urutan aslinya. Nomor urut ditetapkan di header setiap paket untuk mencapai tujuan ini. Nomor urut mewakili byte data pertama dari segmen TCP.

Selama pengaturan sesi, nomor urut awal (ISN) diatur. ISN ini mewakili nilai awal byte yang dikirimkan ke aplikasi penerima. Saat data ditransmisikan selama sesi, nomor urut bertambah dengan jumlah byte yang telah ditransmisikan. Pelacakan byte data ini memungkinkan setiap segmen diidentifikasi dan diakui secara unik. Segmen yang hilang kemudian dapat diidentifikasi.

ISN tidak dimulai dari satu tetapi secara efektif merupakan nomor acak. Ini untuk mencegah jenis serangan berbahaya tertentu. Untuk mempermudah, kita akan menggunakan ISN 1 untuk contoh dalam bab ini.

Nomor urut segmen menunjukkan cara merakit kembali dan menyusun ulang segmen yang diterima, seperti yang ditunjukkan pada gambar.

TCP Segments Are Reordered at the Destination

Proses TCP penerima menempatkan data dari segmen ke dalam buffer penerima. Segmen kemudian ditempatkan dalam urutan urutan yang tepat dan diteruskan ke lapisan aplikasi saat dipasang kembali. Setiap segmen yang datang dengan nomor urut yang rusak ditahan untuk diproses nanti. Kemudian, ketika segmen dengan byte yang hilang tiba, segmen ini diproses secara berurutan.

TCP Reliability – Data Loss and Retransmission

Tidak peduli seberapa baik jaringan dirancang, kehilangan data terkadang terjadi. TCP menyediakan metode untuk mengelola kerugian segmen ini. Di antaranya adalah mekanisme untuk mengirim ulang segmen untuk data yang tidak diakui.

Nomor urut (SEQ) dan nomor pengakuan (ACK) digunakan bersama untuk mengkonfirmasi penerimaan byte data yang terkandung dalam segmen yang ditransmisikan. Nomor SEQ mengidentifikasi byte pertama data dalam segmen yang sedang ditransmisikan. TCP menggunakan nomor ACK yang dikirim kembali ke sumber untuk menunjukkan byte berikutnya yang diharapkan diterima oleh penerima. Ini disebut pengakuan harapan.

Sebelum peningkatan selanjutnya, TCP hanya bisa mengakui byte berikutnya yang diharapkan. Misalnya, pada gambar, menggunakan nomor segmen untuk kesederhanaan, host A mengirimkan segmen 1 sampai 10 ke host B. Jika semua segmen tiba kecuali segmen 3 dan 4, host B akan membalas dengan pengakuan yang menetapkan bahwa segmen berikutnya diharapkan adalah segmen 3. Host A tidak tahu apakah ada segmen lain yang datang atau tidak. Oleh karena itu, Host A akan mengirim ulang segmen 3 hingga 10. Jika semua segmen yang dikirim ulang berhasil tiba, segmen 5 hingga 10 akan menjadi duplikat. Hal ini dapat menyebabkan keterlambatan, kemacetan, dan inefisiensi.

Sistem operasi host saat ini biasanya menggunakan fitur TCP opsional yang disebut selective acknowledgment (SACK), yang dinegosiasikan selama jabat tangan tiga arah. Jika kedua host mendukung SACK, penerima dapat secara eksplisit mengetahui segmen (byte) mana yang diterima termasuk segmen terputus. Oleh karena itu, host pengirim hanya perlu mengirim ulang data yang hilang. Misalnya, pada gambar berikutnya, sekali lagi menggunakan nomor segmen untuk kesederhanaan, host A mengirimkan segmen 1 sampai 10 ke host B. Jika semua segmen tiba kecuali untuk segmen 3 dan 4, host B dapat mengakui bahwa ia telah menerima segmen 1 dan 2 (ACK 3), dan secara selektif mengakui segmen 5 sampai 10 (SACK 5-10). Host A hanya perlu mengirim ulang segmen 3 dan 4.

Catatan: TCP biasanya mengirimkan ACK untuk setiap paket lainnya, tetapi faktor lain di luar cakupan topik ini dapat mengubah perilaku ini.

TCP menggunakan timer untuk mengetahui berapa lama menunggu sebelum mengirim ulang segmen. Pada gambar, putar video dan klik tautan untuk mengunduh file PDF. File video dan PDF memeriksa kehilangan dan transmisi data TCP.

TCP Flow Control – Window Size and Acknowledgments

TCP juga menyediakan mekanisme untuk kontrol aliran. Kontrol aliran adalah jumlah data yang dapat diterima dan diproses oleh tujuan dengan andal. Kontrol aliran membantu menjaga keandalan transmisi TCP dengan menyesuaikan laju aliran data antara sumber dan tujuan untuk sesi tertentu. Untuk mencapai ini, header TCP menyertakan bidang 16-bit yang disebut ukuran jendela.

Gambar menunjukkan contoh ukuran jendela dan ucapan terima kasih.

TCP Window Size Example

Ukuran jendela menentukan jumlah byte yang dapat dikirim sebelum mengharapkan pengakuan. Nomor pengakuan adalah jumlah byte yang diharapkan berikutnya.

Ukuran jendela adalah jumlah byte yang dapat diterima dan diproses oleh perangkat tujuan sesi TCP pada satu waktu. Dalam contoh ini, ukuran jendela awal PC B untuk sesi TCP adalah 10.000 byte. Dimulai dengan byte pertama, byte nomor 1, byte terakhir yang dapat dikirim PC A tanpa menerima pengakuan adalah byte 10.000. Ini dikenal sebagai jendela kirim PC A. Ukuran jendela disertakan dalam setiap segmen TCP sehingga tujuan dapat mengubah ukuran jendela kapan saja tergantung pada ketersediaan buffer.

Ukuran jendela awal disepakati ketika sesi TCP dibuat selama jabat tangan tiga arah. Perangkat sumber harus membatasi jumlah byte yang dikirim ke perangkat tujuan berdasarkan ukuran jendela tujuan. Hanya setelah perangkat sumber menerima pengakuan bahwa byte telah diterima, perangkat dapat terus mengirim lebih banyak data untuk sesi tersebut. Biasanya, tujuan tidak akan menunggu semua byte untuk ukuran jendela yang akan diterima sebelum membalas dengan pengakuan. Saat byte diterima dan diproses, tujuan akan mengirimkan acknowledgment untuk menginformasikan sumber bahwa ia dapat terus mengirim byte tambahan.

Sebagai contoh, biasanya PC B tidak akan menunggu sampai 10.000 byte telah diterima sebelum mengirim pengakuan. Ini berarti PC A dapat menyesuaikan jendela kirimnya saat menerima pengakuan dari PC B. Seperti yang ditunjukkan pada gambar, ketika PC A menerima pengakuan dengan nomor pengakuan 2.921, yang merupakan byte yang diharapkan berikutnya. Jendela pengiriman PC A akan bertambah 2.920 byte. Ini mengubah jendela kirim dari 10.000 byte menjadi 12.920. PC A sekarang dapat terus mengirim hingga 10.000 byte lainnya ke PC B selama tidak mengirim lebih dari jendela pengiriman baru di 12.920.

Sebuah tujuan mengirim pengakuan saat memproses byte yang diterima, dan penyesuaian terus-menerus dari jendela pengiriman sumber, dikenal sebagai jendela geser. Pada contoh sebelumnya, jendela pengiriman PC A bertambah atau bergeser lebih dari 2.921 byte dari 10.000 menjadi 12.920.

Jika ketersediaan ruang buffer tujuan berkurang, itu dapat mengurangi ukuran jendelanya untuk memberi tahu sumber untuk mengurangi jumlah byte yang harus dikirim tanpa menerima pengakuan.

Catatan: Perangkat saat ini menggunakan protokol jendela geser. Penerima biasanya mengirimkan pengakuan setelah setiap dua segmen yang diterimanya. Jumlah segmen yang diterima sebelum diakui dapat bervariasi. Keuntungan dari jendela geser adalah memungkinkan pengirim untuk terus mengirimkan segmen, selama penerima mengakui segmen sebelumnya. Detail jendela geser berada di luar cakupan kursus ini.

TCP Flow Control – Maximum Segment Size (MSS)

Pada gambar, sumber mentransmisikan 1.460 byte data dalam setiap segmen TCP. Ini biasanya Ukuran Segmen Maksimum (MSS) yang dapat diterima perangkat tujuan. MSS adalah bagian dari bidang opsi di header TCP yang menentukan jumlah data terbesar, dalam byte, yang dapat diterima perangkat dalam satu segmen TCP. Ukuran MSS tidak termasuk header TCP. MSS biasanya disertakan selama jabat tangan tiga arah.

MSS yang umum adalah 1.460 byte saat menggunakan IPv4. Sebuah host menentukan nilai bidang MSS-nya dengan mengurangi header IP dan TCP dari unit transmisi maksimum Ethernet (MTU). Pada antarmuka Ethernet, MTU default adalah 1500 byte. Mengurangi header IPv4 20 byte dan header TCP 20 byte, ukuran MSS default adalah 1460 byte, seperti yang ditunjukkan pada gambar.

TCP Flow Control – Congestion Avoidance

Ketika kemacetan terjadi di jaringan, itu menghasilkan paket yang dibuang oleh router yang kelebihan beban. Ketika paket yang berisi segmen TCP tidak mencapai tujuannya, paket tersebut dibiarkan tidak diketahui. Dengan menentukan tingkat di mana segmen TCP dikirim tetapi tidak diakui, sumber dapat mengasumsikan tingkat kemacetan jaringan tertentu.

Setiap kali ada kemacetan, transmisi ulang segmen TCP yang hilang dari sumber akan terjadi. Jika transmisi ulang tidak dikontrol dengan benar, transmisi ulang tambahan dari segmen TCP dapat membuat kemacetan menjadi lebih buruk. Tidak hanya paket baru dengan segmen TCP yang dimasukkan ke dalam jaringan, tetapi efek umpan balik dari segmen TCP yang ditransmisikan ulang yang hilang juga akan menambah kemacetan. Untuk menghindari dan mengontrol kemacetan, TCP menggunakan beberapa mekanisme penanganan kemacetan, timer, dan algoritma.

Jika sumber menentukan bahwa segmen TCP tidak diakui atau tidak diakui pada waktu yang tepat, maka ia dapat mengurangi jumlah byte yang dikirim sebelum menerima pengakuan. Seperti yang diilustrasikan pada gambar, PC A merasakan ada kemacetan dan oleh karena itu, mengurangi jumlah byte yang dikirimnya sebelum menerima pengakuan dari PC B.

TCP Congestion Control

Nomor pengakuan adalah untuk byte yang diharapkan berikutnya dan bukan untuk segmen. Nomor segmen yang digunakan disederhanakan untuk tujuan ilustrasi.

Perhatikan bahwa sumberlah yang mengurangi jumlah byte yang tidak diketahui yang dikirimnya dan bukan ukuran jendela yang ditentukan oleh tujuan.

Catatan: Penjelasan mekanisme penanganan kemacetan yang sebenarnya, pengatur waktu, dan algoritme berada di luar cakupan kursus ini.

Ref : [1][2][3]