Konsep Dasar TCP
TCP ( Transmission Control Protocol ) merupakan protocol transport
yang andal ( reliable ), hal ini dikarenakan protokol TCP mempunyai
mekanisme yang memastikan packet dapat diterima oleh client. Pada saat
TCP mengirimkan data ke penerima, TCP akan memberikan state
acknowledgement. Apabila state acknowledgement tidak diterima, maka TCP
akan secara otomatis mengirim ulang data dan menunggu dengan selang
waktu tertentu namun apabila dalam selang waktu tertentu TCP gagal
mengirimkan data, maka koneksi akan dihentikan.
TCP client dapat membangun koneksi yang disediakan oleh server,
saling menukar data melalui koneksi yang dibangun dan kemudian
menghentikan koneksi. Sebagai protokol jaringan yang andal, protokol ini
bekerja berkelanjutan untuk menjamin pengiriman semua data, dan sesuai
dengan urutan pengirimannya. Sehingga kita tahu bahwa client menerima
tepat seperti yang kita kirim. Karena inilah aplikasi yang perlu
mempertukarkan data dalam volume besar biasanya menggunakan TCP.
Sebagai catatan, TCP tidak menjamin data akan diterima oleh si
penerima apabila koneksi tidak dimungkinkan terbangun ( misal: server
sedang down, salah konfigurasi IP, kabel tidak dibuat dengan baik, salah
melakukan netmasking dll ), sebaliknya TCP dapat menjamin pengiriman
data ke si penerima apabila koneksi memang memungkinkan terbangun dan
memberikan pesan kesalahan ( koneksi terputus atau tidak menerima
acknowledgement ) kepada user apabila koneksi tidak memungkinkan
dibangun.
TCP memiliki algoritma yang digunakan untuk memperkirakan round-trip
time ( RTT ) yaitu waktu yang dibutuhkan pada saat pengiriman data
antara client dan server. RTT yang dihasilkan bersifat dinamis, sehingga
TCP dapat memperkirakan berapa lama harus menunggu acknowledgement pada
koneksi yang dibangun. Sebagai contohnya, RTT yang didapat dari LAN
biasanya hanya dalam besaran milisecond sementara untuk WAN, RTT bisa
dalam besaran second. TCP selalu menghitung RTT dari koneksi yang
dibangun secara terus – menerus, hal ini dikarenakan RTT banyak
dipengaruhi oleh keadaan traffic jaringan yang selalu berubah – ubah
setiap waktu.
TCP dapat mengurutkan setiap byte data yang dikirim. Sebagai
contohnya, asumsikan suatu aplikasi mengirimkan 2048 bytes data ke TCP
socket, yang menyebabkan TCP akan mengirim sebanyak 2 segment. Segment
yang pertama mengirimkan data dengan urutan 1 – 1024 dan segment yang
kedua akan mengirimkan data dengan urutan 1025 – 2048. Apabila segment
yang diterima tidak sesuai dengan segment yang dikirim, maka TCP si
penerima akan meminta pengiriman ulang 2 segment tersebut berdasarkan
urutan yang benar sebelum dikirim ke level aplikasi si penerima. Apabila
TCP menerima duplikasi data dari pengirim ( misal network memperkirakan
ada segment data yang hilang, sehingga meminta pengiriman ulang,
padahal segment data tersebut tidak benar – benar hilang dikarenakan
network overload), maka TCP dapat mendeteksi duplikasi data tersebut dan
membuang data yang tidak digunakan.
>> State – state TCP pada saat terjadi koneksi
Port in TCP
Aplikasi client menggunakan nomor port untuk memberitahu mesin tujuan
dan service TCP mana yang diinginkannya. Server untuk aplikasi tertentu
menggunakan well-known port untuk mengetahui koneksi dari client yang
meminta servicenya.
Port – port yang digunakan dalam transport layer menggunakan 16-bit
integer (0 – 65535), dengan satu sama lain harus berbeda (unique).
Pada saat client ingin membangun koneksi dengan Server, client harus
mengetahui port dari server yang dituju dan protokol apa yang digunakan
(UDP or TCP or SCTP).
Client di sisi sebaliknya, umumnya menggunakan ephemeral port atau
biasa disebut short-lived ports. Nomor pada port ephemeral yang
digunakan oleh client diberikan oleh Transport Protocol. Client tidak
perlu tahu nomor port ephemeral yang digunakan, yang jelas semua port
ephemeral yang digunakan pasti bersifat unique.
The Internet Assigned Numbers Authority (IANA) telah mengelompokkan nomor – nomor port yang dibagi menjadi tiga bagian :
1. well-known ports: 0 – 1023. Pada range ini merupakan nomor –
nomor port yang
telah digunakan oleh IANA. Contoh nya adalah Web server
yang menggunakan
port 80, FTP menggunakan 21 dll.
2. Registered ports: 1024 – 49252. Nomor – nomor port pada range
ini tidak digunakan
oleh IANA, IANA mengelompokkan port – port ini untuk
dapat digunakan sebagai
server untuk TCP atau UDP. Contohnya antara
port 6000 sampai 6063 digunakan
untuk X Windows server. Aplikasi yang
kita gunakan juga bisa menggunakan port ini.
3. Private ports: 49152 – 65535. Nomor – nomor port pada range
ini adalah ephemeral port. Namun tentu saja tidak menutup kemungkinan
nilai ephemeral port mempunya nilai diluar range ini, hal tersebut
bergantung juga dari Sistem Operasi yang digunakan.
Jadi dapat disimpulkan bahwa koneksi TCP memiliki 1 buah local ip
address, local port number, foreign ip address dan foreign port number.
Contoh aplikasi – aplikasi yang menggunakan well-known port dan TCP
sebagai transport layernya adalah : SMTP, POP, e-mail IMAP, HTTP, telnet
dll.
TCP States
Pada saat suatu aplikasi socket melakukan koneksi, kita dapat melihat
state – state yang dialami oleh aplikasi socket tersebut. State – state
yang dilakukan oleh TCP pada saat melakukan koneksi yaitu :
1. LISTEN
2. SYN-SENT
3. SYN-RECEIVED
4. ESTABLISHED
5. FIN-WAIT-1
6. FIN-WAIT-2
7. CLOSE-WAIT
8. CLOSING
9. LAST-ACK
10. TIME-WAIT
11. CLOSED
LISTEN
menunggu connection request dari client. ( di set oleh TCP Server )
SYN-SENT
client telah mengirim paket SYN dan ACK ke TCP Server , kemudian client menunggu
paket SYN dan ACK balasan dari Server.
SYN-RECEIVED
menunggu dari TCP Client untuk mengembalikan state acknowledgment setelah
mengirim state acknowledgment ke TCP Client.
ESTABLISHED
Koneksi telah dibangun, client server siap untuk mengirim dan menerima data.
TIME-WAIT
Merupakan waktu yang dibutuhkan untuk memastikan TCP menerima state
acknowledgment pada saat menghentikan koneksi.
State – state diatas dapat dilihat dengan menggunakan perintah netstat pada command line.
Konsep UDP
UDP ( User Datagram Protocol ) adalah transport layer yang tidak
andal ( unreliable ), connectionless dan merupakan kebalikan dari
transport layer TCP. Dengan menggunakan UDP, setiap aplikasi socket
dapat mengirimkan paket – paket yang berupa datagram. Istilah datagram
diperuntukkan terhadap paket dengan koneksi yang tidak andal (
unreliable service ). Koneksi yang andal selalu memberikan keterangan
apabila pengiriman data gagal, sedangkan koneksi yang tidak andal tidak
akan mengirimkan keterangan meski pengiriman data gagal.
UDP tidak menjamin kevalidan data saat data sampai ke si penerima.
Datagram yang sampai mempunyai kemungkinan tidak sampai, rusak,
duplikasi atau hilang tanpa diketahui penyebabnya. Penggunaan UDP lebih
tepat diperuntukkan untuk data – data kecil dengan jumlah banyak. Dengan
perilaku UDP yang tidak berusaha untuk mengecek apakah data yang
dikirim telah sampai atau tidak membuat UDP lebih cepat dan lebih
efisien. Aplikasi – aplikasi yang bersifat real time seringkali
menggunakan UDP sebagai protokolnya, hal tersebut dikarenakan paket yang
hilang lebih bisa ditolerir daripada paket yang datang terlambat (
contoh aplikasi realtime: Video Streaming ). Tidak seperti TCP, UDP juga
menyediakan jenis paket broadcast (mengirim paket ke local network) dan
multicast (mengirim paket ke semua subscriber).
Dalam UDP, client tidak membangun koneksi dengan server, melainkan
client hanya mengirim paket data ke server tanpa mengecek apakah server
tersebut telah siap atau tidak. Sama halnya dengan server tidak menerima
koneksi dengan fungsi accept, namun server hanya menjalankan perintah
untuk menerima data, server akan terus menunggu sampai data diterima.
Port in UDP
Tidak ada perbedaan fungsi yang signifikan antara port di UDP dan
TCP. Seperti halnya TCP, port dalam UDP menggunakan 16-bit integer, port
– port yang bisa digunakan adalah antara 1 sampai 65535. Port – port
yang digunakan dibagi menjadi 3 bagian yaitu well-known port ( antara 1 –
1023), registered port ( 1024 – 49151 ) dan ephemeral port ( 49152 –
65535 ).
Sumber : http://yayastekaje.blogspot.com/2012/05/konsep-dasar-dan-perbedaan-antara.html
http://deddihp.wordpress.com/category/my-works/