Anda di halaman 1dari 41

KELOMPOK X:

1. MUHAMMAD RAZAQ ASHARI


2. VINA WIDYANI CAHYADIANTI

SMKN 8 Malang Page 1


KATA PENGANTAR

Modul UDP dan TCP ini dibuat untuk tugas WAN (Wide Area Network).
Modul ini telah mengalami berbagai proses editan dari situs-situs tertentu.
Sehingga isinya lebih lengkap dan banyak.
Modul ini membahas tentang TCP dan UDP beserta komponen-komponen
yang ada di dalamnya serta contoh-contohnya.
Kami berharap supaya modul ini bermanfaat bagi semua orang,

Malang, 1 Juni 2010

Penyusun

SMKN 8 Malang Page 2


TCP dan UDP

1. TCP(Transmission Control Protocol)

Transmission Control Protocol (TCP) adalah suatu protokol yang berada di


lapisan transpor (baik itu dalam tujuh lapis model referensi OSI atau model
DARPA) yang berorientasi sambungan (connection-oriented) dan dapat diandalkan
(reliable). TCP dispesifikasikan dalam RFC 793.

1.1 Karakteristik TCP

TCP memiliki karakteristik sebagai berikut:


1. Berorientasi sambungan (connection-oriented): Sebelum data dapat
ditransmisikan antara dua host, dua proses yang berjalan pada lapisan
aplikasi harus melakukan negosiasi untuk membuat sesi koneksi terlebih
dahulu. Koneksi TCP ditutup dengan menggunakan proses terminasi koneksi
TCP (TCP connection termination).
2. Full-duplex: Untuk setiap host TCP, koneksi yang terjadi antara dua host
terdiri atas dua buah jalur, yakni jalur keluar dan jalur masuk. Dengan
menggunakan teknologi lapisan yang lebih rendah yang mendukung full-
duplex, maka data pun dapat secara simultan diterima dan dikirim. Header
TCP berisi nomor urut (TCP sequence number) dari data yang
ditransmisikan dan sebuah acknowledgment dari data yang masuk.
3. Dapat diandalkan (reliable): Data yang dikirimkan ke sebuah koneksi TCP
akan diurutkan dengan sebuah nomor urut paket dan akan mengharapkan
paket positive acknowledgment dari penerima. Jika tidak ada paket
Acknowledgment dari penerima, maka segmen TCP (protocol data unit
dalam protokol TCP) akan ditransmisikan ulang. Pada pihak penerima,
segmen-segmen duplikat akan diabaikan dan segmen-segmen yang datang
tidak sesuai dengan urutannya akan diletakkan di belakang untuk
mengurutkan segmen-segmen TCP. Untuk menjamin integritas setiap
segmen TCP, TCP mengimplementasikan penghitungan TCP Checksum.
4. Byte stream: TCP melihat data yang dikirimkan dan diterima melalui dua
jalur masuk dan jalur keluar TCP sebagai sebuah byte stream yang
berdekatan (kontigu). Nomor urut TCP dan nomor acknowlegment dalam
setiap header TCP didefinisikan juga dalam bentuk byte. Meski demikian,
TCP tidak mengetahui batasan pesan-pesan di dalam byte stream TCP
tersebut. Untuk melakukannya, hal ini diserahkan kepada protokol lapisan

SMKN 8 Malang Page 3


aplikasi (dalam DARPA Reference Model), yang harus menerjemahkan byte
stream TCP ke dalam "bahasa" yang ia pahami.
5. Memiliki layanan flow control: Untuk mencegah data terlalu banyak
dikirimkan pada satu waktu, yang akhirnya membuat "macet" jaringan
internetwork IP, TCP mengimplementasikan layanan flow control yang
dimiliki oleh pihak pengirim yang secara terus menerus memantau dan
membatasi jumlah data yang dikirimkan pada satu waktu. Untuk mencegah
pihak penerima untuk memperoleh data yang tidak dapat disangganya
(buffer), TCP juga mengimplementasikan flow control dalam pihak
penerima, yang mengindikasikan jumlah buffer yang masih tersedia dalam
pihak penerima.
6. Melakukan segmentasi terhadap data yang datang dari lapisan aplikasi
(dalam DARPA Reference Model)
7. Mengirimkan paket secara "one-to-one": hal ini karena memang TCP harus
membuat sebuah sirkuit logis antara dua buah protokol lapisan aplikasi agar
saling dapat berkomunikasi. TCP tidak menyediakan layanan pengiriman
data secara one-to-many.

TCP umumnya digunakan ketika protokol lapisan aplikasi membutuhkan


layanan transfer data yang bersifat andal, yang layanan tersebut tidak dimiliki oleh
protokol lapisan aplikasi tersebut. Contoh dari protokol yang menggunakan TCP
adalah HTTP dan FTP.

1.2 Segmen TCP

Segmen-segmen TCP akan dikirimkan sebagai datagram-datagram IP


(datagram merupakan satuan protocol data unit pada lapisan internetwork). Sebuah
segmen TCP terdiri atas sebuah header dan segmen data (payload), yang
dienkapsulasi dengan menggunakan header IP dari protokol IP.

Sebuah segmen dapat berukuran hingga 65495 byte: 216-(ukuran header IP


terkecil (20 byte)+ukuran header TCP terkecil (20 byte)). Datagram IP tersebut
akan dienkapsulasi lagi dengan menggunakan header protokol network interface
(lapisan pertama dalam DARPA Reference Model) menjadi frame lapisan Network
Interface. Gambar berikut mengilustrasikan data yang dikirimkan ke sebuah host.

Di dalam header IP dari sebuah segmen TCP, field Source IP Address diatur
menjadi alamat unicast dari sebuah antarmuka host yang mengirimkan segmen
SMKN 8 Malang Page 4
TCP yang bersangkutan. Sementara itu, field Destination IP Address juga akan
diatur menjadi alamat unicast dari sebuah antarmuka host tertentu yang dituju. Hal
ini dikarenakan, protokol TCP hanya
Hea
der
TCP

Proses enkapsulasi data protokol TCP/IP: Data aplikasi + header TCP +


header IP + header network interface (Ethernet, Token Ring, dll) + trailer
network interface

Ukuran dari header TCP adalah bervariasi, yang terdiri atas beberapa field
yang ditunjukkan dalam gambar dan tabel berikut. Ukuran TCP header paling kecil
(ketika tidak ada tambahan opsi TCP) adalah 20 byte.

Nama Field Ukuran Keterangan


Source Port 2 byte Mengindikasikan sumber protokol lapisan aplikasi
(16 bit) yang mengirimkan segmen TCP yang bersangkutan.
Gabungan antara field Source IP Address dalam
header IP dan field Source Port dalam field header
TCP disebut juga sebagai socket sumber, yang berarti
sebuah alamat global dari mana segmen dikirimkan
Destination Port 2 byte Mengindikasikan tujuan protokol lapisan aplikasi
(16 bit) yang menerima segmen TCP yang bersangkutan.
SMKN 8 Malang Page 5
Gabungan antara field Destination IP Address dalam
header IP dan field Destination Port dalam field
header TCP disebut juga sebagai socket tujuan, yang
berarti sebuah alamat global ke mana segmen akan
dikirimkan.
Sequence 4 byte Mengindikasikan nomor urut dari oktet pertama dari
Number (32 bit) data di dalam sebuah segmen TCP yang hendak
dikirimkan. Field ini harus selalu diset, meskipun
tidak ada data (payload) dalam segmen.
Ketika memulai sebuah sesi koneksi TCP, segmen
dengan flag SYN (Synchronization) diset ke nilai 1,
field ini akan berisi nilai Initial Sequence Number
(ISN). Hal ini berarti, oktet pertama dalam aliran byte
(byte stream) dalam koneksi adalah ISN+1.
Acknowledgment 4 byte Mengindikasikan nomor urut dari oktet selanjutnya
Number (32 bit) dalam aliran byte yang diharapkan oleh untuk
diterima oleh pengirim dari si penerima pada
pengiriman selanjutnya. Acknowledgment number
sangat dipentingkan bagi segmen-segmen TCP
dengan flag ACK diset ke nilai 1.
Data Offset 4 bit Mengindikasikan di mana data dalam segmen TCP
dimulai. Field ini juga dapat berarti ukuran dari
header TCP. Seperti halnya field Header Length
dalam header IP, field ini merupakan angka dari word
32-bit dalam header TCP. Untuk sebuah segmen TCP
terkecil (di mana tidak ada opsi TCP tambahan), field
ini diatur ke nilai 0x5, yang berarti data dalam
segmen TCP dimulai dari oktet ke 20 dilihat dari
permulaan segmen TCP. Jika field Data Offset diset
ke nilai maksimumnya (24=16) yakni 15, header TCP
dengan ukuran terbesar dapat memiliki panjang
hingga 60 byte.
Reserved 6 bit Direservasikan untuk digunakan pada masa depan.
Pengirim segmen TCP akan mengeset bit-bit ini ke
dalam nilai 0.
Flags 6 bit Mengindikasikan flag-flag TCP yang memang ada
enam jumlahnya, yang terdiri atas: URG (Urgent),
ACK (Acknowledgment), PSH (Push), RST (Reset),
SYN (Synchronize), dan FIN (Finish).
Window 2 byte Mengindikasikan jumlah byte yang tersedia yang
SMKN 8 Malang Page 6
(16 bit) dimiliki oleh buffer host penerima segmen yang
bersangkutan. Buffer ini disebut sebagai Receive
Buffer, digunakan untuk menyimpan byte stream
yang datang. Dengan mengimbuhkan ukuran window
ke setiap segmen, penerima segmen TCP
memberitahukan kepada pengirim segmen berapa
banyak data yang dapat dikirimkan dan disangga
dengan sukses. Hal ini dilakukan agar si pengirim
segmen tidak mengirimkan data lebih banyak
dibandingkan ukuran Receive Buffer. Jika tidak ada
tempat lagi di dalam Receive buffer, nilai dari field
ini adalah 0. Dengan nilai 0, maka si pengirim tidak
akan dapat mengirimkan segmen lagi ke penerima
hingga nilai field ini berubah (bukan 0). Tujuan hal
ini adalah untuk mengatur lalu lintas data atau flow
control.
Checksum 2 byte Mampu melakukan pengecekan integritas segmen
(16 bit) TCP (header-nya dan payload-nya). Nilai field
Checksum akan diatur ke nilai 0 selama proses
kalkulasi checksum.
Urgent Pointer 2 byte Menandakan lokasi data yang dianggap "urgent"
(16 bit) dalam segmen.
Options 4 byte Berfungsi sebagai penampung beberapa opsi
(32 bit) tambahan TCP. Setiap opsi TCP akan memakan
ruangan 32 bit, sehingga ukuran header TCP dapat
diindikasikan dengan menggunakan field Data offset.

SMKN 8 Malang Page 7


1.3 Port TCP

Port TCP mampu mengindikasikan sebuah lokasi tertentu untuk


menyampaikan segmen-segmen TCP yang dikirimkan yang diidentifikasi dengan
TCP Port Number. Nomor-nomor di bawah angka 1024 merupakan port yang
umum digunakan dan ditetapkan oleh IANA (Internet Assigned Number
Authority). Tabel berikut ini menyebutkan beberapa port TCP yang telah umum
digunakan.

Nomor port TCP Keterangan


20 File Transfer Protocol/FTP (digunakan untuk saluran data).
21 File Transfer Protocol/FTP (digunakan untuk saluran
kontrol).
25 Simple Mail Transfer Protocol/SMTP yang digunakan untuk
mengirim e-mail
23 Telnet
80 Hypertext Transfer Protocol/HTTP yang digunakan untuk
World Wide Web.
110 Post Office Protocol 3/POP3 yang digunakan untuk
menerima e-mail.
139 NetBIOS over TCP session service.

Port TCP merupakan hal yang berbeda dibandingkan dengan port UDP,
meskipun mereka memiliki nomor port yang sama. Port TCP merepresentasikan
satu sisi dari sebuah koneksi TCP untuk protokol lapisan aplikasi, sementara port
UDP merepresentasikan sebuah antrean pesan UDP untuk protokol lapisan
aplikasi. Selain itu, protokol lapisan aplikasi yang menggunakan port TCP dan port
UDP dalam nomor yang sama juga tidak harus sama. Sebagai contoh protokol
Extended Filename Server (EFS) menggunakan port TCP dengan nomor 520, dan
protokol Routing Information Protocol (RIP) menggunakan port UDP juga dengan
nomor 520. Jelas, dua protokol tersebut sangatlah berbeda! Karenanya, untuk

SMKN 8 Malang Page 8


menyebutkan sebuah nomor port, sebutkan juga jenis port yang digunakannya,
karena hal tersebut mampu membingungkan (ambigu).

1.4 TCP Flag

Sebuah segmen TCP dapat memiliki flag (tanda-tanda) khusus yang


mengindikasikan segmen yang bersangkutan, seperti yang disebutkan dalam tabel
berikut:

Nama Keterangan
flag
URG Mengindikasikan bahwa beberapa bagian dari segmen TCP
mengandung data yang sangat penting, dan field Urgent Pointer
dalam header TCP harus digunakan untuk menentukan lokasi di mana
data penting tersebut berada dalam segmen.
ACK Mengindikasikan field Acknowledgment mengandung oktet
selanjutnya yang diharapkan dalam koneksi. Flag ini selalu diset,
kecuali pada segmen pertama pada pembuatan sesi koneksi TCP.
PSH Mengindikasikan bahwa isi dari TCP Receive buffer harus diserahkan
kepada protokol lapisan aplikasi. Data dalam receive buffer harus
berisi sebuah blok data yang berurutan (kontigu), dilihat dari ujung
paling kiri dari buffer. Dengan kata lain, sebuah segmen yang
memiliki flag PSH diset ke nilai 1, tidak bolah ada satu byte pun data
yang hilang dari aliran byte segmen tersebut; data tidak dapat
diberikan kepada protokol lapisan aplikasi hingga segmen yang
hilang tersebut datang. Normalnya, TCP Receive buffer akan
dikosongkan (dengan kata lain, isi dari buffer akan diteruskan kepada
protokol lapisan aplikasi) ketika buffer tersebut berisi data yang
kontigu atau ketika dalam "proses perawatan". Flag PSH ini dapat
mengubah hal seperti itu, dan membuat akan TCP segera
mengosongkan TCP Receive buffer. Flag PSH umumnya digunakan
dalam protokol lapisan aplikasi yang bersifat interaktif, seperti halnya
Telnet, karena setiap penekanan tombol dalam sesi terminal virtual
akan dikirimkan dengan sebuah flag PSH diset ke nilai 1. Contoh dari
penggunaan lainnya dari flag ini adalah pada segmen terakhir dari
berkas yang ditransfer dengan menggunakan protokol FTP. Segmen
SMKN 8 Malang Page 9
yang dikirimkan dengan flag PSH aktif tidak harus segera di-
acknowledge oleh penerima.

RST Mengindikasikan bahwa koneksi yang dibuat akan digagalkan. Untuk


sebuah koneksi TCP yang sedang berjalan (aktif), sebuah segmen
dengan flag RST diset ke nilai 1 akan dikirimkan sebagai respons
terhadap sebuah segmen TCP yang diterima yang ternyata segmen
tersebut bukan yang diminta, sehingga koneksi pun menjadi gagal.
Pengiriman segmen dengan flag RST diset ke nilai 1 untuk sebuah
koneksi aktif akan menutup koneksi secara paksa, sehingga data yang
disimpan dalam buffer akan dibuang (dihilangkan). Untuk sebuah
koneksi TCP yang sedang dibuat, segmen dengan flag RST aktif akan
dikirimkan sebagai respons terhadap request pembuatan koneksi
untuk mencegah percobaan pembuatan koneksi.
SYN Mengindikasikan bahwa segmen TCP yang bersangkutan
mengandung Initial Sequence Number (ISN). Selama proses
pembuatan sesi koneksi TCP, TCP akan mengirimkan sebuah segmen
dengan flag SYN diset ke nilai 1. Setiap host TCP lainnya akan
memberikan jawaban (acknowledgment) dari segmen dengan flag
SYN tersebut dengan menganggap bahwa segmen tersebut
merupakan sekumpulan byte dari data. Field Acknowledgment
Number dari sebuah segmen SYN diatur ke nilai ISN + 1.
FIN Menandakan bahwa pengirim segmen TCP telah selesai dalam
mengirimkan data dalam sebuah koneksi TCP. Ketika sebuah koneksi
TCP akhirnya dihentikan (akibat sudah tidak ada data yang
dikirimkan lagi), setiap host TCP akan mengirimkan sebuah segmen
TCP dengan flag FIN diset ke nilai 1. Sebuah host TCP tidak akan
mengirimkan segmen dengan flag FIN hingga semua data yang
dikirimkannya telah diterima dengan baik (menerima paket
acknowledgment) oleh penerima. Setiap host akan menganggap
sebuah segmen TCP dengan flag FIN sebagai sekumpulan byte dari
data. Ketika dua host TCP telah mengirimkan segmen TCP dengan
flag FIN dan menerima acknowledgment dari segmen tersebut, maka
koneksi TCP pun akan dihentikan.

1.5 TCP Three-way handshake

SMKN 8 Malang Page 10


Proses pembuatan koneksi (TCP Three way handshake)

Proses pembuatan koneksi TCP disebut juga dengan "Three-way


Handshake". Tujuan metode ini adalah agar dapat melakukan sinkronisasi terhadap
nomor urut dan nomor acknowledgement yang dikirimkan oleh kedua pihak dan
saling bertukar ukuran TCP Window. Prosesnya dapat digambarkan sebagai
berikut:

• Host pertama (yang ingin membuat koneksi) akan mengirimkan sebuah


segmen TCP dengan flag SYN diaktifkan kepada host kedua (yang hendak
diajak untuk berkomunikasi).
• Host kedua akan meresponsnya dengan mengirimkan segmen dengan
acknowledgment dan juga SYN kepada host pertama.
• Host pertama selanjutnya akan mulai saling bertukar data dengan host
kedua.
• TCP menggunakan proses jabat tangan yang sama untuk mengakhiri koneksi
yang dibuat. Hal ini menjamin dua host yang sedang terkoneksi tersebut
telah menyelesaikan proses transmisi data dan semua data yang
ditransmisikan telah diterima dengan baik. Itulah sebabnya, mengapa TCP
disebut dengan koneksi yang reliable.

SMKN 8 Malang Page 11


2. TCP LAYER

2.1 Transmission Control Protocol/Internet Protocol

TCP/IP (singkatan dari Transmission Control Protocol/Internet Protocol)


adalah standar komunikasi data yang digunakan oleh komunitas internet dalam
proses tukar-menukar data dari satu komputer ke komputer lain di dalam jaringan
Internet. Protokol ini tidaklah dapat berdiri sendiri, karena memang protokol ini
berupa kumpulan protokol (protocol suite). Protokol ini juga merupakan protokol
yang paling banyak digunakan saat ini. Data tersebut diimplementasikan dalam
bentuk perangkat lunak (software) di sistem operasi. Istilah yang diberikan kepada
perangkat lunak ini adalah TCP/IP stack

Protokol TCP/IP dikembangkan pada akhir dekade 1970-an hingga awal


1980-an sebagai sebuah protokol standar untuk menghubungkan komputer-
komputer dan jaringan untuk membentuk sebuah jaringan yang luas (WAN).
TCP/IP merupakan sebuah standar jaringan terbuka yang bersifat independen
terhadap mekanisme transport jaringan fisik yang digunakan, sehingga dapat
digunakan di mana saja. Protokol ini menggunakan skema pengalamatan yang
sederhana yang disebut sebagai alamat IP (IP Address) yang mengizinkan hingga
beberapa ratus juta komputer untuk dapat saling berhubungan satu sama lainnya di
Internet. Protokol ini juga bersifat routable yang berarti protokol ini cocok untuk
menghubungkan sistem-sistem berbeda (seperti Microsoft Windows dan keluarga
UNIX) untuk membentuk jaringan yang heterogen.

Protokol TCP/IP selalu berevolusi seiring dengan waktu, mengingat semakin


banyaknya kebutuhan terhadap jaringan komputer dan Internet. Pengembangan ini
dilakukan oleh beberapa badan, seperti halnya Internet Society (ISOC), Internet
Architecture Board (IAB), dan Internet Engineering Task Force (IETF). Macam-
macam protokol yang berjalan di atas TCP/IP, skema pengalamatan, dan konsep
TCP/IP didefinisikan dalam dokumen yang disebut sebagai Request for Comments
(RFC) yang dikeluarkan oleh IETF.

SMKN 8 Malang Page 12


2.2 ARSITEKTUR

Arsitektur TCP/IP tidaklah berbasis model referensi tujuh lapis OSI, tetapi
menggunakan model referensi DARPA. Seperti diperlihatkan dalam diagram,
TCP/IP merngimplemenasikan arsitektur berlapis yang terdiri atas empat lapis.
Empat lapis ini, dapat dipetakan (meski tidak secara langsung) terhadap model
referensi OSI. Empat lapis ini, kadang-kadang disebut sebagai DARPA Model,
Internet Model, atau DoD Model, mengingat TCP/IP merupakan protokol yang
awalnya dikembangkan dari proyek ARPANET yang dimulai oleh Departemen
Pertahanan Amerika Serikat.

Setiap lapisan yang dimiliki oleh kumpulan protokol (protocol suite) TCP/IP
diasosiasikan dengan protokolnya masing-masing. Protokol utama dalam protokol
TCP/IP adalah sebagai berikut:

1. Protokol lapisan aplikasi: bertanggung jawab untuk menyediakan akses


kepada aplikasi terhadap layanan jaringan TCP/IP. Protokol ini mencakup
protokol Dynamic Host Configuration Protocol (DHCP), Domain Name
System (DNS), Hypertext Transfer Protocol (HTTP), File Transfer Protocol
(FTP), Telnet, Simple Mail Transfer Protocol (SMTP), Simple Network
Management Protocol (SNMP), dan masih banyak protokol lainnya. Dalam
beberapa implementasi stack protokol, seperti halnya Microsoft TCP/IP,
protokol-protokol lapisan aplikasi berinteraksi dengan menggunakan
antarmuka Windows Sockets (Winsock) atau NetBIOS over TCP/IP
(NetBT).
2. Protokol lapisan antar-host: berguna untuk membuat komunikasi
menggunakan sesi koneksi yang bersifat connection-oriented atau broadcast
yang bersifat connectionless. Protokol dalam lapisan ini adalah Transmission
Control Protocol (TCP) dan User Datagram Protocol (UDP).
3. Protokol lapisan internetwork: bertanggung jawab untuk melakukan
pemetaan (routing) dan enkapsulasi paket-paket data jaringan menjadi
paket-paket IP. Protokol yang bekerja dalam lapisan ini adalah Internet
Protocol (IP), Address Resolution Protocol (ARP), Internet Control Message
Protocol (ICMP), dan Internet Group Management Protocol (IGMP).
4. Protokol lapisan antarmuka jaringan: bertanggung jawab untuk meletakkan
frame-frame jaringan di atas media jaringan yang digunakan. TCP/IP dapat
bekerja dengan banyak teknologi transport, mulai dari teknologi transport
dalam LAN (seperti halnya Ethernet dan Token Ring), MAN dan WAN
(seperti halnya dial-up modem yang berjalan di atas Public Switched

SMKN 8 Malang Page 13


Telephone Network (PSTN), Integrated Services Digital Network (ISDN),
serta Asynchronous Transfer Mode (ATM)).

2.3 KONSEP LAYERING TCP/IP

Sekumpulan protocol TCP/IP ini dimodelkan dengan empat layer TCP/IP,


sebagaimana terlihat pada gambar dibawah ini.

Application Layer
(SMTP, FTP, HTTP, dll)
Transport Layer
TCP/IP Stack
(TCP, UDP)
Internet Layer
(IP, ARP, ICMP)
Network Interface layer
(Ethernet, X25,SLIP,PPP)

Jaringan Fisik

TCP/IP terdiri atas empat lapis kumpulan protocol yang bertingkat. Keempat
lapis/layer tersebut adalah :

• Network Interface Layer


• Internet Layer
• Transport Layer
• Application Layer

SMKN 8 Malang Page 14


Dalam TCP/IP terjadi penyampaian data dari protocol yang berada di satu
layer ke protocol yang berada di layer yang lain. Setiap protocol memperlakukan
semua informasi yang diterimanya dari protocol lain sebagai data.

2.4 PENGALAMATAN

Protokol TCP/IP menggunakan dua buah skema pengalamatan yang dapat


digunakan untuk mengidentifikasikan sebuah komputer dalam sebuah jaringan atau
jaringan dalam sebuah internetwork, yakni sebagai berikut:

1. Pengalamatan IP: yang berupa alamat logis yang terdiri atas 32-bit (empat
oktet berukuran 8-bit) yang umumnya ditulis dalam format
www.xxx.yyy.zzz. Dengan menggunakan subnet mask yang diasosiasikan
dengannya, sebuah alamat IP pun dapat dibagi menjadi dua bagian, yakni
Network Identifier (NetID) yang dapat mengidentifikasikan jaringan lokal
dalam sebuah internetwork dan Host identifier (HostID) yang dapat
mengidentifikasikan host dalam jaringan tersebut. Sebagai contoh, alamat
205.116.008.044 dapat dibagi dengan menggunakan subnet mask
255.255.255.000 ke dalam Network ID 205.116.008.000 dan Host ID 44.
Alamat IP merupakan kewajiban yang harus ditetapkan untuk sebuah host,
yang dapat dilakukan secara manual (statis) atau menggunakan Dynamic
Host Configuration Protocol (DHCP) (dinamis).
2. Fully qualified domain name (FQDN): Alamat ini merupakan alamat yang
direpresentasikan dalam nama alfanumerik yang diekspresikan dalam bentuk
<nama_host>.<nama_domain>, di mana <nama_domain>
mengindentifikasikan jaringan di mana sebuah komputer berada, dan
<nama_host> mengidentifikasikan sebuah komputer dalam jaringan.
Pengalamatan FQDN digunakan oleh skema penamaan domain Domain
Name System (DNS). Sebagai contoh, alamat FQDN id.wikipedia.org
merepresentasikan sebuah host dengan nama "id" yang terdapat di dalam
domain jaringan "wikipedia.org". Nama domain wikipedia.org merupakan
second-level domain yang terdaftar di dalam top-level domain .org, yang
terdaftar dalam root DNS, yang memiliki nama "." (titik). Penggunaan
FQDN lebih bersahabat dan lebih mudah diingat ketimbang dengan
menggunakan alamat IP. Akan tetapi, dalam TCP/IP, agar komunikasi dapat
berjalan, FQDN harus diterjemahkan terlebih dahulu (proses penerjemahan
ini disebut sebagai resolusi nama) ke dalam alamat IP dengan menggunakan
server yang menjalankan DNS, yang disebut dengan Name Server atau
SMKN 8 Malang Page 15
dengan menggunakan berkas hosts (/etc/hosts atau
%systemroot%\system32\drivers\etc\hosts) yang disimpan di dalam mesin
yang bersangkutan.

2.5 KONSEP ENKAPSULASI DALAM TCP/IP

Jika suatu protocol menerima data dari protocol lain di layer atasnya, ia akan
menambahkan informasi tambahan miliknya ke data tersebut. Informasi ini
memiliki fungsi yang sesuai dengan fungsi protocol tersebut. Setelah itu, data ini
diteruskan lagi ke protocol pada layer dibawahnya.

Hal yang sebaliknya terjadi jika suatu protocol menerima data dari protocol
lain yang berada pada layer dibawahnya. Jika data ini dianggap valid, protocol
akan melepas informasi tambahan tersebut, yang berada pada layer di atasnya.

Lapisan/layer terbawah, yaitu Network Interface layer bertanggung jawab


mengirim dan menerima data ke dan dari media fisik. Media fisiknya dapat berupa
kabel, serta optik atau gelombang radio. Karena tugasnya ini, protocol pada layer
ini harus mampu menerjemahkan sinyal listrik menjadi data digital yang
dimengerti komputer, yang berasal dari peralatan lain yang sejenis.

Lapisan/layer protocol berikutnya ialah Internet Layer. Protocol yang berada


pada layer ini bertanggung jawab dalam proses pengiriman paket ke alamat yang
tepat. Pada layer ini terdapat tiga macam protocol, yaitu IP, ARP dan ICMP.

IP (Internet Protocol) berfungsi untuk menyampaikan paket data ke lamat


yang tepat. ARP (Address Resolution Protocol) ialah protocol digunakan untuk
menemukan alamat hardware dari host/komputer yang terletak pada network yang
sama. Sedangkan ICMP (Internet Control Message Protocol) ialah protocol yang
digunakan untuk mengirimkan pesan & melaporkan kegagalan pengiriman data.

Layer berikutnya yaitu Transport layer berisi protocol yang bertanggung


jawab untuk mengadakan komunikasi antara dua host/komputer. Kedua protocol
tersebut ialah TCP (Transmission Control Protocol) dan UDP (User Datagram
Protocol). Layer teratas, ialah Application Layer. Pada layer inilah terletak semua
aplikasi yang menggunakan protocol TCP/IP ini.

SMKN 8 Malang Page 16


2.6 LAYANAN

Berikut ini adalah layanan tradisional yang dapat berjalan di atas protokol TCP/IP:

1. Pengiriman berkas (file transfer). File Transfer Protocol (FTP)


memungkinkan pengguna komputer yang satu untuk dapat mengirim
ataupun menerima berkas ke sebuah host di dalam jaringan. Metode
otentikasi yang digunakannya adalah penggunaan nama pengguna (user
name) dan [[password]], meskipun banyak juga FTP yang dapat diakses
secara anonim (anonymous), alias tidak berpassword. (Keterangan lebih
lanjut mengenai FTP dapat dilihat pada RFC 959.)
2. Remote login. Network terminal Protocol (telnet) memungkinkan pengguna
komputer dapat melakukan log in ke dalam suatu komputer di dalam suatu
jaringan secara jarak jauh. Jadi hal ini berarti bahwa pengguna menggunakan
komputernya sebagai perpanjangan tangan dari komputer jaringan tersebut.
(Keterangan lebih lanjut mengenai Telnet dapat dilihat pada RFC 854 dan
RFC 855.)
3. Computer mail. Digunakan untuk menerapkan sistem surat elektronik.
(Keterangan lebih lanjut mengenai e-mail dapat dilihat pada RFC 821 RFC
822.)
4. Network File System (NFS). Pelayanan akses berkas-berkas yang dapat
diakses dari jarak jauh yang memungkinkan klien-klien untuk mengakses
berkas pada komputer jaringan, seolah-olah berkas tersebut disimpan secara
lokal. (Keterangan lebih lanjut mengenai NFS dapat dilihat RFC 1001 dan
RFC 1002.)
5. Remote execution. Memungkinkan pengguna komputer untuk menjalankan
suatu program tertentu di dalam komputer yang berbeda. Biasanya berguna
jika pengguna menggunakan komputer yang terbatas, sedangkan ia
memerlukan sumber yg banyak dalam suatu sistem komputer.
Ada beberapa jenis remote execution, ada yang berupa perintah-perintah
dasar saja, yaitu yang dapat dijalankan dalam system komputer yang sama
dan ada pula yg menggunakan sistem Remote Procedure Call (RPC), yang
memungkinkan program untuk memanggil subrutin yang akan dijalankan di
sistem komputer yg berbeda. (sebagai contoh dalam Berkeley UNIX ada
perintah rsh dan rexec.)
6. Name server yang berguna sebagai penyimpanan basis data nama host yang
digunakan pada Internet (Keterangan lebih lanjut dapat dilihat pada RFC
822 dan RFC 823 yang menjelaskan mengenai penggunaan protokol name
server yang bertujuan untuk menentukan nama host di Internet.)

SMKN 8 Malang Page 17


2.7 REQUEST FOR COMMENTS

RFC (Request For Comments) merupakan standar yang digunakan dalam


Internet, meskipun ada juga isinya yg merupakan bahan diskusi ataupun omong
kosong belaka. Diterbitkan oleh IAB yang merupakan komite independen yang
terdiri atas para peneliti dan profesional yang mengerti teknis, kondisi dan evolusi
Internet. Sebuah surat yg mengikuti nomor RFC menunjukan status RFC :

• S: Standard, standar resmi bagi internet


• DS: Draft standard, protokol tahap akhir sebelum disetujui sebagai standar
• PS: Proposed Standard, protokol pertimbangan untuk standar masa depan
• I: Informational, berisikan bahan-bahan diskusi yg sifatnya informasi
• E: Experimental, protokol dalam tahap percobaan tetapi bukan pada jalur
standar.
• H: Historic, protokol-protokol yg telah digantikan atau tidak lagi
dipertimbankan utk standarisasi.

SMKN 8 Malang Page 18


3. UDP (USER DATAGRAM PROTOKOL)

UDP, singkatan dari User Datagram Protocol, adalah salah satu protokol
lapisan transpor TCP/IP yang mendukung komunikasi yang tidak andal
(unreliable), tanpa koneksi (connectionless) antara host-host dalam jaringan yang
menggunakan TCP/IP. Protokol ini didefinisikan dalam RFC 768.

3.1 KARAKTERISTIK UDP

UDP memiliki karakteristik-karakteristik berikut:

1. Connectionless (tanpa koneksi): Pesan-pesan UDP akan dikirimkan tanpa


harus dilakukan proses negosiasi koneksi antara dua host yang hendak
berukar informasi.
2. Unreliable (tidak andal): Pesan-pesan UDP akan dikirimkan sebagai
datagram tanpa adanya nomor urut atau pesan acknowledgment. Protokol
lapisan aplikasi yang berjalan di atas UDP harus melakukan pemulihan
terhadap pesan-pesan yang hilang selama transmisi. Umumnya, protokol
lapisan aplikasi yang berjalan di atas UDP mengimplementasikan layanan
keandalan mereka masing-masing, atau mengirim pesan secara periodik atau
dengan menggunakan waktu yang telah didefinisikan.
3. UDP menyediakan mekanisme untuk mengirim pesan-pesan ke sebuah
protokol lapisan aplikasi atau proses tertentu di dalam sebuah host dalam
jaringan yang menggunakan TCP/IP. Header UDP berisi field Source
Process Identification dan Destination Process Identification.
4. UDP menyediakan penghitungan checksum berukuran 16-bit terhadap
keseluruhan pesan UDP.

UDP tidak menyediakan layanan-layanan antar-host berikut:

1. UDP tidak menyediakan mekanisme penyanggaan (buffering) dari data yang


masuk ataupun data yang keluar. Tugas buffering merupakan tugas yang
harus diimplementasikan oleh protokol lapisan aplikasi yang berjalan di atas
UDP.
2. UDP tidak menyediakan mekanisme segmentasi data yang besar ke dalam
segmen-segmen data, seperti yang terjadi dalam protokol TCP. Karena
itulah, protokol lapisan aplikasi yang berjalan di atas UDP harus
mengirimkan data yang berukuran kecil (tidak lebih besar dari nilai
SMKN 8 Malang Page 19
Maximum Transfer Unit/MTU) yang dimiliki oleh sebuah antarmuka di
mana data tersebut dikirim. Karena, jika ukuran paket data yang dikirim
lebih besar dibandingkan nilai MTU, paket data yang dikirimkan bisa saja
terpecah menjadi beberapa fragmen yang akhirnya tidak jadi terkirim dengan
benar.
3. UDP tidak menyediakan mekanisme flow-control, seperti yang dimiliki oleh
TCP.

3.2 Macam – macam aplikasi yang menggunakan UDP :

1. Trivial File Transfer Protocol (TFTP) 69


2. Domain Name System (DNS) 53
3. Remote Procedure Call (RPC)
4. Simple Network Management Protocol (SNMP) 161, 162
5. Lightweight Directory Access Protocol (LDAP)
6. SunRPC port 111.

3.3 FUNGSI UDP

1. Protokol yang “ringan” (lightweight): Untuk menghemat sumber daya


memori dan prosesor, beberapa protokol lapisan aplikasi membutuhkan
penggunaan protokol yang ringan yang dapat melakukan fungsi-fungsi
spesifik dengan saling bertukar pesan. Contoh dari protokol yang ringan
adalah fungsi query nama dalam protokol lapisan aplikasi Domain Name
System.
2. Protokol lapisan aplikasi yang mengimplementasikan layanan keandalan:
Jika protokol lapisan aplikasi menyediakan layanan transfer data yang andal,
maka kebutuhan terhadap keandalan yang ditawarkan oleh TCP pun menjadi
tidak ada. Contoh dari protokol seperti ini adalah Trivial File Transfer
Protocol (TFTP) dan Network File System (NFS)
3. Protokol yang tidak membutuhkan keandalan. Contoh protokol ini adalah
protokol Routing Information Protocol (RIP).
4. Transmisi broadcast: Karena UDP merupakan protokol yang tidak perlu
membuat koneksi terlebih dahulu dengan sebuah host tertentu, maka
transmisi broadcast pun dimungkinkan. Sebuah protokol lapisan aplikasi
dapat mengirimkan paket data ke beberapa tujuan dengan menggunakan
alamat multicast atau broadcast. Hal ini kontras dengan protokol TCP yang

SMKN 8 Malang Page 20


hanya dapat mengirimkan transmisi one-to-one. Contoh: query nama dalam
protokol NetBIOS Name Service.

3.4 PENGGUNAAN UDP

UDP sering digunakan dalam beberapa tugas berikut:

1. Protokol yang "ringan" (lightweight): Untuk menghemat sumber daya


memori dan prosesor, beberapa protokol lapisan aplikasi membutuhkan
penggunaan protokol yang ringan yang dapat melakukan fungsi-fungsi
spesifik dengan saling bertukar pesan. Contoh dari protokol yang ringan
adalah fungsi query nama dalam protokol lapisan aplikasi Domain Name
System.
2. Protokol lapisan aplikasi yang mengimplementasikan layanan keandalan:
Jika protokol lapisan aplikasi menyediakan layanan transfer data yang andal,
maka kebutuhan terhadap keandalan yang ditawarkan oleh TCP pun menjadi
tidak ada. Contoh dari protokol seperti ini adalah Trivial File Transfer
Protocol (TFTP) dan Network File System (NFS)
3. Protokol yang tidak membutuhkan keandalan. Contoh protokol ini adalah
protokol Routing Information Protocol (RIP).
4. Transmisi broadcast: Karena UDP merupakan protokol yang tidak perlu
membuat koneksi terlebih dahulu dengan sebuah host tertentu, maka
transmisi broadcast pun dimungkinkan. Sebuah protokol lapisan aplikasi
dapat mengirimkan paket data ke beberapa tujuan dengan menggunakan
alamat multicast atau broadcast. Hal ini kontras dengan protokol TCP yang
hanya dapat mengirimkan transmisi one-to-one. Contoh: query nama dalam
protokol NetBIOS Name Service.

SMKN 8 Malang Page 21


Ilustrasi Mengenai pesan-pesan UDP

3.5 PESAN – PESAN UDP

UDP, berbeda dengan TCP yang memiliki satuan paket data yang disebut
dengan segmen, melakukan pengepakan terhadap data ke dalam pesan-pesan UDP
(UDP Messages). Sebuah pesan UDP berisi header UDP dan akan dikirimkan ke
protokol lapisan selanjutnya (lapisan internetwork) setelah mengepaknya menjadi
datagram IP. Enkapsulasi terhadap pesan-pesan UDP oleh protokol IP dilakukan
dengan menambahkan header IP dengan protokol IP nomor 17 (0x11). Pesan UDP
dapat memiliki besar maksimum 65507 byte: 65535 (216)-20 (ukuran terkecil dari
header IP)-8 (ukuran dari header UDP) byte. Datagram IP yang dihasilkan dari
proses enkapsulasi tersebut, akan dienkapsulasi kembali dengan menggunakan
header dan trailer protokol lapisan Network Interface yang digunakan oleh host
tersebut.

Dalam header IP dari sebuah pesan UDP, field Source IP Address akan diset
ke antarmuka host yang mengirimkan pesan UDP yang bersangkutan; sementara

SMKN 8 Malang Page 22


field Destination IP Address akan diset ke alamat IP unicast dari sebuah host
tertentu, alamat IP broadcast, atau alamat IP multicast.

Ilustrasi Mengenai Header UDP

3.6 HEADER UDP

Header UDP diwujudkan sebagai sebuah header dengan 4 buah field


memiliki ukuran yang tetap, seperti tersebutkan dalam tabel berikut.

SMKN 8 Malang Page 23


Field Panjang Keterangan
Source 16 bit Digunakan untuk mengidentifikasikan sumber protokol
Port (2 byte) lapisan aplikasi yang mengirimkan pesan UDP yang
bersangkutan. Penggunaan field ini adalah opsional, dan jika
tidak digunakan, akan diset ke angka 0. Beberapa protokol
lapisan aplikasi dapat menggunakan nilai field ini dari pesan
UDP yang masuk sebagai nilai field port tujuan (Destination
Port, lihat baris selanjutnya) sebagai balasan untuk pesan
tersebut.
Destination 16 bit Digunakan untuk mengidentifikasikan tujuan protokol
Port (2 byte) lapisan aplikasi yang menjadi tujuan pesan UDP yang
bersangkutan. Dengan menggunakan kombinasi antara
alamat IP dengan nilai dari field ini untuk membuat sebuah
alamat yang signifikan untuk mengidentifikasikan proses
yang berjalan dalam sebuah host tertentu yang dituju oleh
pesan UDP yang bersangkutan.
Length 16 bit Digunakan untuk mengindikasikan panjang pesan UDP
(2 byte) (pesan UDP ditambah dengan header UDP) dalam satuan
byte. Ukuran paling kecil adalah 8 byte (ukuran header UDP,
ketika tidak ada isi pesan UDP), dan ukuran paling besar
adalah 65515 bytes (65535 [216] -20 [ukuran header protokol
IP]). Panjang maksimum aktual dari pesan UDP akan
disesuaikan dengan menggunakan nilai Maximum
Transmission Unit (MTU) dari saluran di mana pesan UDP
dikirimkan. Field ini bersifat redundan (terulang-ulang).
Panjang pesan UDP dapat dihitung dari field Length dalam
header UDP dan field IP Header Length dalam header IP.
Checksum 16 bit Berisi informasi pengecekan integritas dari pesan UDP yang
(2 byte) dikirimkan (header UDP dan pesan UDP). Penggunaan field
ini adalah opsional. Jika tidak digunakan, field ini akan
bernilai 0.

SMKN 8 Malang Page 24


3.7 PORT UDP

Seperti halnya TCP, UDP juga memiliki saluran untuk mengirimkan


informasi antar host, yang disebut dengan UDP Port. Untuk menggunakan protokol
UDP, sebuah aplikasi harus menyediakan alamat IP dan nomor UDP Port dari host
yang dituju. Sebuah UDP port berfungsi sebagai sebuah multiplexed message
queue, yang berarti bahwa UDP port tersebut dapat menerima beberapa pesan
secara sekaligus. Setiap port diidentifikasi dengan nomor yang unik, seperti halnya
TCP, tetapi meskipun begitu, UDP Port berbeda dengan TCP Port meskipun
memiliki nomor port yang sama. Tabel di bawah ini mendaftarkan beberapa UDP
port yang telah dikenal secara luas.

Nomor Port UDP Digunakan oleh


53 Domain Name System (DNS) Name Query adalah sebuah
sistem yang menyimpan informasi tentang nama host maupun
nama domain dalam bentuk basis data tersebar (distributed
database) di dalam jaringan komputer, misalkan: Internet.
DNS menyediakan alamat IP untuk setiap nama host dan
mendata setiap server transmisi surat (mail exchange server)
yang menerima surat elektronik (email) untuk setiap domain.
67 BOOTP client (Dynamic Host Configuration Protocol
[DHCP]) adalah protokol yang berbasis arsitektur client yang
dipakai untuk memudahkan pengalokasian alamat IP dalam
satu jaringan. Sebuah jaringan lokal yang tidak menggunakan
DHCP harus memberikan alamat IP kepada semua komputer
secara manual. Jika DHCP dipasang di jaringan lokal, maka
semua komputer yang tersambung di jaringan akan
mendapatkan alamat IP secara otomatis dari server DHCP.
Selain alamat IP, banyak parameter jaringan yang dapat
diberikan oleh DHCP, seperti default gateway dan DNS
server.
68 BOOTP server (DHCP)adalah protokol yang berbasis
arsitektur server yang dipakai untuk memudahkan
pengalokasian alamat IP dalam satu jaringan. Sebuah jaringan
lokal yang tidak menggunakan DHCP harus memberikan
alamat IP kepada semua komputer secara manual. Jika DHCP
dipasang di jaringan lokal, maka semua komputer yang
tersambung di jaringan akan mendapatkan alamat IP secara
SMKN 8 Malang Page 25
otomatis dari server DHCP. Selain alamat IP, banyak
parameter jaringan yang dapat diberikan oleh DHCP, seperti
default gateway dan DNS server.
69 Trivial File Transfer Protocol (TFTP) adalah sebuah protokol
perpindahan berkas yang sangat sederhana yang didefinisikan
pada tahun 1980. TFTP memiliki fungsionalitas dasar dari
protokol File Transfer Protocol (FTP).
137 NetBIOS Name Service adalah sebuah aplikasi harus
melakukan registrasi nama NetBIOS miliknya dengan
menggunakan layanan NetBIOS Name Service. Panjang
sebuah nama NetBIOS hanyalah 16 byte. Umumnya, byte ke-
16 digunakan untuk mendeskripsikan "jenis", dengan teknik
yang serupa dengan nomor port dalam TCP/IP. Dalam
NetBIOS over TCP/IP, layanan NetBIOS Name Service
beroperasi dalam port UDP 137. Port TCP 137 juga dapat
digunakan, tapi jarang.
138 NetBIOS Datagram Service adalah sebuah mekanisme
penyampaian data secara connectionless. Mengingat setiap
pesan akan dikirimkan secara independen, maka pesan-pesan
tersebut haruslah berukuran lebih kecil. Layanan ini juga tidak
menawarkan layanan pendeteksian kesalahan dan
pemulihannya, sehingga merupakan tanggung jawab aplikasi
untuk melakukannya. Dalam NetBIOS over TCP/IP, layanan
ini berjalan di atas port UDP 138.
161 Simple Network Management Protocol (SNMP) merupakan
protokol standard industri yang digunakan untuk memonitor
dan mengelola berbagai perangkat di jaringan Internet
meliputi hub, router, switch, workstation dan sistem
manajemen jaringan secara jarak jauh (remote).
445 Server Message Block (SMB) adalah Protokol yang dipakai
untuk membaca, menulis dan mengalihkan file dari server ke
client pada suatu sistem jaringan. Protokol ini dapat
beroperasi di atas TCP/IP, IPX, NetBEUI, ,Windows NT,
Windows 9X, dan lain-lain.
520 Routing Information Protocol (RIP) adalah sebuah protokol
routing dinamis yang digunakan dalam jaringan berbasis lokal
dan luas. Karena itu protokol ini diklasifikasikan sebagai
Interior Gateway Protocol (IGP).
1812/1813 Remote Authentication Dial-In User Service (RADIUS)

SMKN 8 Malang Page 26


adalah sebuah protokol keamanan komputer yang digunakan
untuk melakukan autentikasi, otorisasi, dan pendaftaran akun
pengguna secara terpusat untuk mengakses jaringan. RADIUS
didefinisikan di dalam RFC 2865 dan RFC 2866, yang pada
awalnya digunakan untuk melakukan autentikasi terhadap
akses jaringan secara jarak jauh dengan menggunakan koneksi
dial-up.

UDP dapat dikatakan sebagai protokol yang tidak terikat aturan. Pada saat
menggunakan UDP kita dapat membuat paket yang kita kirimkan memiliki
checksum atau tidak, mengirimkan paket ke satu atau banyak penerima, hingga
memilih port komunikasi yang digunakan secara bebas. UDP tidak menjaga sesi
koneksi dan paket yang dikirimkan bersifat independen dari satu paket ke paket
yang lain sehingga urutan paket yang datang bukanlah sebuah jaminan dari
protokol ini. Hal yang menarik lagi dari dukungan sekuritas, UDP tidak
menawarkan mekanisme sekuritas secara built-in.

Hal lain yang mungkin menjadi pertimbangan pemilihan antara UDP


dan TCP adalah kecepatan. Pada TCP dibutuhkan sekurang kurangnya tiga
pertukaran paket. Sebagai contoh komunikasi antara Yogyakarta dan Jakarta
membutuhkan tiga paket dan masing-masing adalah 200ms maka dibutuhkan
waktu 600ms. Pada UDP hanya terjadi sebuah pertukaran paket seperti pada
gambar berikut.

SMKN 8 Malang Page 27


Hal ini tentunya menunjukkan bahwa pada suatu waktu (terutama bila paket TCP
yang dikirimkan kecil) timbul overhead yang tidak perlu. Hal ini dapat dihindarkan
dengan menggunakan UDP. Hal lain tentang perbedaan TCP dan UDP adalah
urutan paket. Pada aplikasi tertentu urutan paket menjadi penting sebagai contoh
aplikasi transfer berkas tetapi pada kasus tertentu paket yang hilang atau tidak urut
tidak terlalu berpengaruh pada aplikasi video streaming yang mendukung frame
skipping.

Sebuah kesimpulan pada sisi ini adalah TCP memberikan fitur yang lebih
dari sisi keamanan, fleksibilitas, dan juga kualitas. Programmer akan mudah
melakukan pemrograman TCP terlebih lagi hal-hal detil tentang keamanan telah
dicakup juga pada TCP. Sementara pada UDP, hal tersebut tidak ditemukan, UGP
unggul dalam suatu keadaan jaringan yang membutuhkan performa tetapi dengan
ketahanan yang tidak terlalu tinggi.

SMKN 8 Malang Page 28


3.8 Solusi UDP pada Pemrograman

Berikut adalah contoh aplikasi client/server dengan menggunakan protokol


UDP :

UDPClient.java

import java.net.*;

import java.io.*;

import java.util.*;

public class UDPClient {

public static void main (String args[ ]) {

try{

// buat socket UDP untuk port 2000

DatagramSocket socket = new DatagramSocket(2000);

// buat paket UDP yang berisi buffer 256 byte

DatagramPacket packet =

new DatagramPacket( new byte[256], 256 );

// terima paket – ini adalah operasi terblok

socket.receive(packet);

// tampilkan informasi paket

InetAddress remote_addr = packet.getAddress();

System.out.println ("Pengirim : " +

remote_addr.getHostAddress( ) );

System.out.println ("dari Port: " + packet.getPort());

SMKN 8 Malang Page 29


// tampilkan isi paket

ByteArrayInputStream bin =

new ByteArrayInputStream(packet.getData());

for (int i=0; i < packet.getLength(); i++) {

int data = bin.read();

if (data == -1)

break;

else

System.out.print ( (char) data) ;

socket.close( );

catch (IOException e) {

System.out.println ("Error - " + e);

} //akhir dari main()

} //akhir dari class

UDPServer.java

import java.net.*;

import java.io.*;

import java.util.*;

public class UDPServer {

SMKN 8 Malang Page 30


public static void main (String args[ ]) {

String hostname="localhost";

String message = "Hallo UDP!";

try {

// buat socket UDP, dan cari port yang tersedia

DatagramSocket socket = new DatagramSocket();

System.out.println ("Local port: " +

socket.getLocalPort());

ByteArrayOutputStream bOut = new


ByteArrayOutputStream();

//konversi printstream ke array byte

byte [ ] bArray = bOut.toByteArray();

// buat paket datagram dengan ukuran buffer 256 byte

DatagramPacket packet =

new DatagramPacket( bArray, bArray.length );

//buat objek dari class InetAddress

InetAddress remote_addr =
InetAddress.getByName(hostname);

//cek alamat IP dari hostname

System.out.println("Hostname has IP address = " +

remote_addr.getHostAddress());

//konfigurasi DataGramPacket

packet.setAddress(remote_addr);

packet.setPort(2000);
SMKN 8 Malang Page 31
//kirim paket UDP

socket.send(packet);

// tampilkan informasi paket

System.out.println ("Dikirim oleh : " +

remote_addr.getHostAddress() );

System.out.println ("Dikirim dari : " +


packet.getPort());

catch (UnknownHostException ue){

System.out.println("Unknown host "+hostname);

catch (IOException e) {

System.out.println ("Error - " + e);

}//akhir dari main

}//akhir dari class

Pada bagian ini kita akan membuat contoh sederhana yang mendayagunakan
UDP. Bayangkan anda programmer game yang melakukan pemrograman game,
anda harus mengirimkan status lokasi tiap-tiap pemain. Lokasi pemain dengan ID
tertentu dan berada dalam koordinat x,y

public class PlayerInfo


{
public byte playerID, locationX, locationY;
}

SMKN 8 Malang Page 32


Informasi yang ada tentunya harus dikirimkan dengan format tertentu.
Pembentukan format ini disusun dengan bantuan method berikut.

public int ToBuffer(byte[] buffer, int pos)


{
int newPos = pos;
buffer[newPos++] = playerID;
buffer[newPos++] = locationX;
buffer[newPos++] = locationY;
return newPos - pos;
}

public void FromBuffer(byte[] buffer, int pos)


{
playerID = buffer[pos++];
locationX = buffer[pos++];
locationY = buffer[pos++];
}

Data yang telah diubah formatnya kemudian dikirimkan. Hal yang patut diingat
dalam melakukan transmisi paket adalah serialize dan deserialize. Kode berikut
melakukan inisialisasi socket, melakukan serialize pesan yang dikirimkan, serta
mengirimkan hasil serialize ke alamat server yang dituju (pada kesempatan ini
server yang dituju beralamat 127.0.0.1 yang tak lain adalah komputer lokal).

const int ProtocolPort = 3001;


Socket sendSocket = new
Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
IPAddress sendTo = IPAddress.Parse("127.0.0.1");
EndPoint sendEndPoint = new IPEndPoint(sendTo,
ProtocolPort);
byte[] buffer = new byte[PlayerInfo.MaxWireSize];
int bufferUsed = player.ToBuffer(buffer, 0);
sendSocket.SendTo(buffer, bufferUsed, SocketFlags.None,
sendEndPoint);

SMKN 8 Malang Page 33


Method sendTo melakukan pengiriman data dengan menggunakan socket berjenis
UDP seperti yang dilakukan pada instance object sendSocket. Pengiriman protokol
UDP dilakukan tanpa blocking dengan kata lain protokol UDP tidak memiliki flow
control dan kewajiban respons setiap paket yang dikirimkan.

Pada sisi server dilakukan penulisan kode sebagai berikut.

Socket receiveSocket = new


Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
EndPoint bindEndPoint = new IPEndPoint(IPAddress.Any,
ProtocolPort);
byte[] recBuffer = new byte[PlayerInfo.MaxWireSize];
receiveSocket.Bind(bindEndPoint);
receiveSocket.BeginReceiveFrom(recBuffer, 0,
recBuffer.Length,
SocketFlags.None, ref bindEndPoint,
new AsyncCallback(MessageReceivedCallback),
(object)this);

void MessageReceivedCallback(IAsyncResult result)


{
EndPoint remoteEndPoint = new IPEndPoint(0, 0);
try
{
int bytesRead =
receiveSocket.EndReceiveFrom(result,
ref remoteEndPoint);
player.FromBuffer(recBuffer, 0,
Math.Min(recBuffer.Length,
bytesRead));
Console.WriteLine("ID:{0} X:{1} Y:{2}",
player.playerID,
player.locationX, player.locationY);
}
catch (SocketException e)
{

SMKN 8 Malang Page 34


Console.WriteLine("Error: {0} {1}",
e.ErrorCode, e.Message);
}

receiveSocket.BeginReceiveFrom(recBuffer, 0,
recBuffer.Length,
SocketFlags.None, ref bindEndPoint,
new AsyncCallback(MessageReceivedCallback),
(object)this);
}

Inti dari kode tersebut adalah method BeginRecieveFrom yang mendengar pesan
masuk secara asinkron dari klien. Penerimaan paket di sisi server amat bergantung
pada aplikasi yang mendengarkan. Apabila aplikasi server tidak mendengarkan
pada port yang digunakan klien ataupun yang sebaliknya maka pesan diyakini
tidak akan sampai ke tujuan. Sampai tidaknya pesan UDP dapat dilakukan dengan
melakukan pengecekan pada sisi klien tepatnya dengan menangkap eksepsi klien.
Pada sisi klien apabila pesan yang dikirimkan tidak sampai pada tujuan maka akan
dikembalikan eksepsi dengan kode status 10054 (Connection Reset By Peer).
Untuk menangkap kode status berikut dilakukan penambahan kode berikut.

EndPoint bindEndPoint = new IPEndPoint(IPAddress.Any,


0);
sendSocket.Bind(bindEndPoint);
byte[] recBuffer = new byte[PlayerInfo.MaxWireSize];
sendSocket.BeginReceiveFrom(recBuffer, 0,
recBuffer.Length,
SocketFlags.None, ref reponseEndPoint,
new AsyncCallback(CheckForFailuresCallback),
(object)this);

Method CheckForFailuresCallback akan menangkap kesalahan kode status 10054


sebagai berikut.

void CheckForFailuresCallback(IAsyncResult result)


{
EndPoint remoteEndPoint = new IPEndPoint(0, 0);

SMKN 8 Malang Page 35


try
{
int bytesRead =
sendSocket.EndReceiveFrom(result,
ref remoteEndPoint);
}
catch (SocketException e)
{
if (e.ErrorCode == 10054) serviceMissing =
true;
}
}

Bila anda perhatikan kode-kode yang telah dibuat tampak jelas bahwa kode
dikirimkan dan diterima dengan port UDP yang tidak kita ketahui. Berdasar pada
aplikasi pemantauan paket jaringan (netmon.exe) ditemukan bahwa paket dikirim
ke sebuah port dengan nomor 54. Hal ini tentulah tidak fleksibel mengingat
kebijakan keamanan di setiap jaringan berbeda beda. Pendekatan yang dapat
dilakukan untuk melakukan semacam persetujuan port dan alamat IP yang
digunakan adalah dengan mengesetnya di dalam kode atau mengesetnya pada saat
runtime. Kode berikut berusaha membaca alamat port dan IP berdasar pada
endPoint remote.

bytesRead = socket.EndReceiveFrom(result, ref


remoteEndPoint);
EndPoint endPointDestination =
new
IPEndPoint(((IPEndPoint)remoteEndPoint).Address,
((IPEndPoint)remoteEndPoint).Port);
socket2.SendTo(buffer, length, SocketFlags.None,
endPointDestination);

Untuk menemukan port yang tidak dipakai kode ini akan cukup bermanfaat

socket = new Socket(AddressFamily.InterNetwork,


SocketType.Dgram,
ProtocolType.Udp);

SMKN 8 Malang Page 36


EndPoint endPoint = new IPEndPoint(IPAddress.Any, 0);
socket.Bind(endPoint);
listeningPort =
((IPEndPoint)(socket.LocalEndPoint)).Port;

3.9 Broadcast dan Multicast

Salah satu fitur utama dari UDP dibanding TCP adalah kemampuan untuk
mengirim sebuah pesan ke banyak penerima. Pengiriman pesan dapat berupa
broadcast yaitu pengiriman pesan kesemua host dalam sebuah subnet. Multicasting
merupakan pengiriman berkas ke beberapa host yang melakukan registrasi diri ke
suatu alamat multicast group.

Pada pemrograman konsepnya tentu serupa, klien meregistrasikan diri


sebelum mendengar paket-paket yang dikirimkan.

IPAddress multicastGroup =
IPAddress.Parse("239.255.255.19");
socket.Bind(...);
socket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership,
new MulticastOption(multicastGroup));
socket.BeginReceiveFrom(...);

Apabila kita tidak mengetahui alamat dan port server (seperti halnya bila kita
bermain game online) maka kebanyakan server melakukan pendekatan dengan
mendengarkan komunikasi paket pada alamat yang umum digunakan pada
multicast (224.0.0.0 hingga 239.255.255.255). Server akan mendengar request
paket, bila ditemukan request maka server akan melakukan respons mengenai
akses yang dilakukan klien. Class berikut mengungkapkan suatu template request
dan respons.

class FindRequest {
public int serviceID;
public int responsePort;
public int SerializeToPacket(byte[] packet) {...}
public FindRequest(byte[] packet) {...}
}

SMKN 8 Malang Page 37


class FindResult {
public int serviceID;
public int SerializeToPacket(byte[] packet) {...}
public FindResult(byte[] packet) {...}
}
Server mengawali kegiatannya dengan membuka komunikasi socket dan
mendengar berbagai request yang masuk

public AsyncCallback onReceiveRequest =


new AsyncCallback(OnReceiveRequest);
IPAddress multicastGroup =
IPAddress.Parse("239.255.255.19");

public void FindMe(int blockFor, int serviceID)


{
responseSocket = new
Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
EndPoint responseEndPoint = new
IPEndPoint(IPAddress.Any,
multicastPort);
responseSocket.Bind(responseEndPoint);

responseSocket.SetSocketOption(SocketOptionLevel.IP,
SocketOptionName.AddMembership,
new MulticastOption(multicastGroup));
ListenForRequests();
}

public void ListenForRequests()


{
EndPoint endPoint = new IPEndPoint(0, 0);
responseSocket.BeginReceiveFrom(findRequestBuffer,
0, 12,
SocketFlags.None, ref endPoint,
onReceiveRequest, (object)this);
}

SMKN 8 Malang Page 38


Pada saat server menerima request maka server akan memberikan respons terhadap
paket data yang dikirimkan oleh klien. Pada keadaan ini server mengungkapkan
bahwa komunikasi yang dibutuhkan akan terbentuk dan siap beroperasi.

static void OnReceiveRequest(IAsyncResult result)


{
UDP_finder uf = (UDP_finder)result.AsyncState;
EndPoint remoteEndPoint = new IPEndPoint(0, 0);
int bytesRead =
uf.responseSocket.EndReceiveFrom(result,
ref remoteEndPoint);
FindRequest request = new
FindRequest(uf.findRequestBuffer);

// prepare result
FindResult fr = new FindResult();
fr.serviceID = uf.currentServiceID;
int requestLength =
fr.SerializeToPacket(uf.findResultBuffer);

//send result
Socket requestSocket = new
Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
EndPoint requestEndPointDestination =
new
IPEndPoint(((IPEndPoint)remoteEndPoint).Address,
request.responsePort);
requestSocket.SendTo(uf.findResultBuffer,
requestLength,
SocketFlags.None, requestEndPointDestination);

requestSocket.Close();
uf.ListenForRequests();
}

Pada sisi klien dilakukan tiga hal utama yakni mencari server, mengirim request,
dan menunggu respons seperti pada kode berikut.

SMKN 8 Malang Page 39


public void Finder(int waitFor, int serviceID)
{
// start listening for responses before sending the
request
responseSocket = new
Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
EndPoint responseEndPoint = new
IPEndPoint(IPAddress.Any, 0);
responseSocket.Bind(responseEndPoint);
responsePort =
((IPEndPoint)(responseSocket.LocalEndPoint)).Port;

ListenForResponses();

// prepare request
FindRequest fr = new FindRequest();
fr.serviceID = serviceID; fr.responsePort =
responsePort;
int requestLength =
fr.SerializeToPacket(findRequestBuffer);

//send request
Socket requestSocket = new
Socket(AddressFamily.InterNetwork,
SocketType.Dgram, ProtocolType.Udp);
EndPoint requestEndPointDestination =
new IPEndPoint(multicastGroup, multicastPort);
requestSocket.SendTo(findRequestBuffer,
requestLength,
SocketFlags.None, requestEndPointDestination);

requestSocket.Close();

//wait for responses


Thread.Sleep(waitFor);
}

SMKN 8 Malang Page 40


public void ListenForResponses()
{
EndPoint endPoint = new IPEndPoint(0, 0);
responseSocket.BeginReceiveFrom(findResultBuffer,
0, 8,
SocketFlags.None, ref endPoint,
onReceiveResponse, (object)this);
}

static void OnReceiveResponse(IAsyncResult result)


{
UDP_finder uf = (UDP_finder)result.AsyncState;
EndPoint remoteEndPoint = new IPEndPoint(0, 0);
int bytesRead =
uf.responseSocket.EndReceiveFrom(result,
ref remoteEndPoint);
FindResult response = new
FindResult(uf.findResultBuffer);

uf.ListenForResponses();

Console.WriteLine("Found service {0}",


response.serviceID);
}

SMKN 8 Malang Page 41