Mari kita bahas tiap field satu per satu.
1) Source Port (16 bits): berisi nomor port pengirim.
2) Destination Port (16 bits): berisi nomor port penerima.
3) Sequence number (32 bits): menunjukkan berapa banyak data yang dikirim selama sesi TCP. Ketika Anda membuat koneksi TCP baru (3-way handshake) maka Sequence number awal adalah nilai 32 bit yang random (acak). Penerima akan menggunakan Sequence Number ini dan mengirimkan Acknowledgement. Aplikasi untuk analisis protokol/data seperti Wireshark, sering menggunakan Relative Sequence Number nomor urut relatif) 0 untuk semua segment pertama, karena lebih mudah dibaca daripada beberapa angka random (acak) yang besar (biasanya ribuan).
4) Acknowledgement number (32 bits): digunakan oleh penerima untuk meminta segment TCP berikutnya. Nilai ini akan menjadi Sequence number dari lawan yang bertambah 1.
5) DO (4 bits): juga dikenal sebagai panjang header. Ini menunjukkan panjang TCP header, sehingga kita tahu di mana data (payload) dimulai.
6) RSV (3 bits): field yang di-reserved. Saat ini tidak digunakan dan selalu bernilai 0.
7) Flag (9 bits): disebut juga Control bits. Kita menggunakannya untuk membuat koneksi, mengirim data dan mengakhiri koneksi.
- URG: urgent pointer. Ketika bit URG di-set, artinya segment data ini harus diperlakukan sebagai prioritas dibandingkan data lainnya.
- ACK: digunakan untuk acknowledgment.
- PSH: sebagai fungsi push. Ini memberi tahu aplikasi bahwa data harus segera ditransmisikan.
- RST: untuk me-reset koneksi, ketika Anda menerima ini, maka Anda harus segera mengakhiri koneksi. Ini hanya digunakan ketika ada unrecoverable error (error yang tidak dapat dipulihkan) dan ini bukan cara normal untuk mengakhiri koneksi TCP.
- SYN: digunakan untuk memulai 3-way handshake dan juga digunakan untuk mengatur Sequence number awal.
- FIN: bit akhir ini digunakan untuk mengakhiri koneksi TCP. TCP bersifat full duplex sehingga kedua belah pihak harus menggunakan bit FIN untuk mengakhiri koneksi. Ini adalah metode normal untuk mengakhiri koneksi.
9) Checksum (16 bits): digunakan sebagai checksum untuk memeriksa apakah header TCP yang diterima itu OK atau tidak.
10) Urgent Pointer (16 bits): digunakan ketika bit URG telah di-set, Urgent pointer digunakan untuk menunjukkan di mana data yang urgent berakhir.
12) Options: field ini bersifat opsional dan panjangnya antara 0 s.d. 320 bits.
Untuk melihat field-field ini pada sebuah TCP segment, kita bisa menggunakan wireshark. Berikut adalah contoh segment-segment TCP yang digunakan dalam 3-way handshake.
TCP SYN dari Client ke Server:
TCP SYN-ACK dari Server ke Client:
TCP ACK dari Client ke Server:
Di atas Anda dapat melihat Source & Destination port. Sequence number bernilai 0 tetapi wireshark memberitahu kita bahwa ini adalah Relative Sequence number (segment pertama diberi nilai 0 oleh Wireshark). Pada kenyataannya, Sequence number bernilai sangat besar pada segment TCP di atas. Anda juga dapat melihat bit SYN/ACK telah di-set pada field flag, Window size, Checksum dan Urgent pointer.
TCP adalah protokol yang cukup kompleks, tetapi semoga tulisan ini membantu memahami seperti apa tampilan header TCP dan fungsi masing-masing field.
Jika Anda memiliki pertanyaan, jangan ragu untuk meninggalkan komentar di bawah ya :)
Semoga bermanfaat dan tetap semangat di tengah pandemi ini :)
~AHa
assalamulaikum pak guru
ReplyDeleteterimakasih ilmu nya
semoga jadi amal jariyah