Dari materi sebelumnya, kita sudah mengetahui bahwa ada 2 jenis networking model, yaitu
TCP/IP dan OSI. Di bab kali ini kita akan membahas tentang TCP/IP, sejarahnya, hingga proses
enkapsulasinya.
Kita bisa menganggap bahwa networking model itu adalah sekumpulan dokumen. Masing-
masing dokumen ini berisi syarat-syarat yang agar suatu jaringan dapat berfungsi dan juga
aturan-aturan logis (protocol).
Analoginya, ketika ingin membuat sebuah bangunan, tentunya kita butuh yang namanya
blueprint, bagaimana pondasinya, desain internal, desain external, tata letak ruangan, hingga
alur-alur kelistrikan, gas, pembuangan asap, dan lain sebagainya.
Dengan adanya blueprint tersebut, semua pihak yang mengerjakan bangunan tersebut akan bisa
bekerja dengan baik, dari tukang listrik, tukang cat, interior desainer, dan seterusnya sudah
mengikuti acuan yang sama.
Jadi, protocol merupakan cara agar setiap perangkat yang berbeda-beda bisa saling
berkomunikasi dengan efektif baik secara perangkat lunak maupun perangkat keras.
Sekedar mengingatkan, ini adalah Bab 2 dari materi networking model. Jika kamu belum paham
mengenai networking model secara keseluruhan, saya sarankan untuk memahami bab
sebelumnya terlebih dahulu.
Dulu, belum ada networking model, termasuk TCP/IP. Setiap vendor membuat standar
proprietary mereka sendiri, misalnya IBM dengan networking modelnya yang dikenal
dengan Systems Network Architecture (SNA) di tahun 1974.
Begitu juga vendor yang lain. Bisa dikatakan, mereka saling bersaing menciptakan networking
model terbaik agar yang lain menggunakannya.
Tentu ini keadaan yang buruk. Sehingga International Organization for Standardization (ISO)
mengambil peran untuk mengatasi hal ini, dengan membuat standar yang kita kenal dengan OSI.
Disamping itu, ada juga organisasi lain yang mengembangkan standar dengan tujuan yang sama
dan dengan arsitektur yang mirip-mirip, yaitu Department of Defense (DoD). Model ini kita
kenal dengan TCP/IP atau kadang disebut dengan Dod Model.
TCP/IP Sebagai Networking Model Saat Ini
Saat ini, dunia jaringan komputer sudah mengacu ke standar yang sama, yakni TCP/IP.
Yup, bukan OSI.
Kenapa?
Penjelasannya ada di materi berikutnya tentang OSI Model.
Sejarah antara TCP/IP dan OSI sebenarnya sangat panjang. Saya juga sedang mempelajarinya
dan masih bingung, misalnya dengan pertanyaan “yang mana pertama kali ada, TCP/IP atau
OSI?”
Sehingga perbandingan TCP/IP dan OSI secara mendalam tidak kita bahas saat ini, tapi berikut
ini bisa kamu jadikan referensi:
Saya sudah menjelaskan manfaat networking model secara umum di materi sebelumnya. Kali ini
kita akan fokus ke TCP/IP.
Karena networking model yang digunakan sekarang adalah TCP/IP, maka produk-produk
internet sekarang sudah mengadopsi TCP/IP.
Contohnya, jika saat ini kamu membeli sebuah flash drive, maka flash drive tersebut sudah
menerapkan TCP/IP. Ini artinya kamu bisa mengunakannya di laptop, komputer, di semua
perangkat yang berbeda.
… atau misalnya. Saat kita ingin membangun sebuah infrastruktur yang baru.
Sebelum ada TCP/IP, kita harus membeli perangkat yang satu merk, dari router, switch, firewall,
server, semuanya.
Karena vendor saat ini bisa saja unggul di perangkat router, namun tidak begitu dengan firewall.
Misalnya kita ingin menggunakan router dan switch cisco, namun lebih memilih menggunakan
Palo Alto firewall.
Tidak masalah. Kita bisa mengimplementasikan routing protocol, link aggregation, dll tanpa ada
kendala kompatibilitas. Karena semuanya sudah menggunakan TCP/IP.
Bagi beberapa orang, termasuk saya, mengetahui TCP/IP adalah standar networking model yang
dipilih adalah hal yang menarik.
Faktanya, OSI yang sekarang cenderung lebih familiar untuk sebagian dari kita, sebenarnya
tidak pernah menjadi standar networking model. Aneh ya?
OSI bersifat lebih formal, lambat pengembangannya, karena dilakukan oleh orang-orang
tertentu saja.
TCP/IP dikembangkan oleh voluntir-voluntir seluruh dunia, tentu keadaannya berbalik
dibanding OSI
Sebelum TCP/IP benar-benar dipakai, setiap vendor masih ada yang menggunakan protocol
proprietary mereka sendiri, dan kala itu TCP/IP masih sebatas menjadi ‘gateway’nya saja.
Mulai era 1990 hingga sekarang, setiap perangkat sekarang sudah menerapkan TCP/IP. Sekali
lagi, bukan OSI. (Lihat gambar 1 diatas).
RFC atau Request for Comment adalah sebuah dokumen resmi yang digunakan Internet
Engineering Task Force (IETF), isinya merupakan draft, tinjauan, yang nantinya akan di review
oleh pihak-pihak yang berkepentingan.
Usulan-usulan di RFC inilah nantinya yang akan menjadi standar internet, contohnya Internet
Protocol di definisikan dalam RFC791 dan OSPF di definisikan di RFC 1247.
RFC bersifat numbered. Isi dokumennya sangat detil tentang sebuah protokol, bagaimana cara
kerjanya, prosedur penggunaan, konsepnya, dan seterusnya.
Tidak hanya tinjauan formal, bahkan RFC bisa saja berisi humor karena setiap orang bisa saja
mengajukan apapun ke RFC, kamu juga bisa melakukannya melalui RFC Editor.
Ini juga salah satu faktor yang menjadikan TCP/IP lebih berkembang dibanding OSI.
TCP/IP Layer
Seperti penjelasan saya diatas, begitu banyak protokol yang didefinisikan di RFC, kamu bisa
membukanya di laman https://www.ietf.org/rfc.html.
Tapi tidak semua protocol didefinisikan di RFC. Hal ini tidak berlaku untuk protocol yang sudah
exist deluan.
Ethernet LAN sudah didefinisikan oleh IEEE (Institute of Electrical and Electronic Engineers
(IEEE), maka TCP/IP tidak lagi mendefinisikannya di RFC, melainkan merujuknya ke IEEE.
Tapi..
Tetap saja kan, banyak, kompleks.
Ini beberapa contoh protocol yang mainstream: HTTP, TCP, UDP, OSPF, EIGRP, BGP, OSPF,
IPv4, RIP, dan masih banyak lagi.
Ini berarti, bukan cara yang baik untuk memahami TCP/IP dimulai dengan protocolnya.
Tapi untuk saat ini, anggap saja kita mengacu TCP/IP layer original dengan 4 layer.
Dengan adanya lapisan TCP/IP ini, protocol yang banyak tadi akan dikategorikan berdasarkan
fungsinya.
Ada yang di layer 1, layer 2, layer 3, dan layer 4. Sehingga kita lebih mudah memahaminya.
Mungkin kamu sudah bisa menebak, kita akan menggunakan sampel umum: “Ketika seseorang
membuka browser, dan mengakses suatu halaman web”.
Yup, ini studi kasusnya.
Oh ya, sebelum kita mulai. Jangan salah paham mengenai TCP, IP, dan TCP/IP.
TCP, dan IP, adalah 2 protocol yang berbeda yang akan saya jelaskan dibawah. Sedangkan
TCP/IP adalah sebuah networking model. Karena berisi banyak protocol maka disebut juga
protocol suite.
… atau application protocol HTTP adalah web browser, yang paling kita kenal saat ini.
Meskipun faktanya browser tidak hanya bisa dilakukan dengan aplikasi seperti itu, bisa juga
dengan terminal misalnya di linux.
Nah tugas application layer disini adalah untuk mendefinisikan bagaimana sebuah browser bisa
mengambil konten dari sebuah web server hingga akhirnya tampil di web browser.
Bayangkan seseorang membuka web browser dan mengakses suatu web. Proses sederhananya
kira-kira akan seperti ini.
Misalnya saat kamu membuka situs ini, kamu akan mendapatkan laman dari https://ngonfig.net
yang merupakan homepagenya.
Mengenai https atau Hypertext Transfer Protocol Secure merupakan versi secure dari HTTP,
karena menggunakan SSL atau Secure Socket Layer. Kadang disebut juga sebagai SHTTP atau
S-HTTP.
Tujuannya agar komunikasi terjadi dengan aman karena data yang terkirim akan terenkripsi. Ini
penting terutama pada situs-situs jual beli dimana pengguna menginputkan data confidential
seperti credit card.
Mekanisme HTTP
Diatas itu contoh yang paling sederhana atau kita sebut basic logic proses HTTP. Secara teknis
tidak seperti itu.
Di pertengahan 1990, Barner Lee menciptakan HTTP, web browser dan web server. HTTP disini
memberikan kemampuan ke web browser untuk meminta isi konten dari web server.
Begitu juga dengan web server, dengan HTTP dia bisa memberikan isi konten yang diminta oleh
client.
Protocol menggunakan header untuk menyimpan informasi. Dari mekanisme HTTP diatas kita
bisa melihat 3 proses yang terjadi saat client merequest laman web dari server.
Jika kita melihat proses dari application layer, maka sekilas prosesnya selesai dan sederhana.
Padahal ada sekian proses lagi yang terjadi, yaitu di layer-layer bawahnya.
Ada banyak protocol yang berada di tranport layer, tapi yang paling kita kenal secara umum
yaitu TCP (Transmission Control Protocol) dan UDP (User Datagram Protocol).
Kembali ke proses HTTP diatas, kita mengakses situs web tentunya menginginkan data yang
reliable.
Faktanya, pengiriman data dari satu komputer ke komputer lain itu prosesnya cukup kompleks,
dan banyak prosedurnya. Ada beberapa faktor yang menyebabkan data gagal terkirim.
Bayangkan saat ini kamu membaca situs ini dengan jaringan yang sering terganggu, sehingga
menyebabkan ada paragraf yang hilang, ada judul yang hanya setengah, atau huruf kata-kata
yang hilang ditengah paragraf.
Buruk kan?
Sampai disini kita setuju bahwa komunikasi HTTP diatas berjalan dengan menggunakan TCP.
Artinya HTTP membutuhkan jaminan agar data-data bisa dikirim secara sempurna.
Ketika data ada yang gagal terkirim, si penerima harus sadar bahwa hal itu terjadi, dan meminta
pengiriman ulang.
Caranya seperti ini: TCP memecah data-data tersebut (segment) lalu mengirimkannya
berdasarkan Sequence number (SEQ).
TCP juga memiliki banyak fungsi, tapi fokus kita hanya pada satu fungsi utama yang paling
dikenal, yaitu TCP Error Recovery.
Sebelum kita lanjut, sebenarnya ada hal lain yang terjadi sebelum sampai pada proses ini. Yaitu
pembentukan koneksi.
Jangan berfikir bahwa ketika kamu menginputkan alamat situs ini dibrowser, laptop yang kamu
gunakan akan langsung menerima konten situs ini. Tidak.
Saat client menginputkan alamat url di web browser, maka client melakukan request ke server
untuk membentuk koneksi, disebut establishing connection. Inilah kenapa komunikasi TCP
disebut connection oriented.
Pembentukan koneksi ini akan membentuk sebuah virtual link. Jalur virtual yang digunakan
untuk pengiriman segment.
Dengan kata lain, pengirim dan penerima melakukan persetujuan dulu untuk melakukan
transmisi. Setelah keduanya setuju, maka dilakukan pembentukan koneksi, dilanjutkan dengan
pengiriman data.
Dalam proses pengiriman data inilah dibutuhkan TCP Error Recovery yang sudah saya jelaskan
diatas.
Jadi alurnya: Pembentukan Koneksi –> Pengiriman Data (dengan error recovery).
Tidak selalu. Karena tidak semua komunikasi membutuhkan pengiriman data yang reliable.
Contohnya: komunikasi suara.
“Saat kita menelfon, adalah hal biasa kalau suara kita tidak sampai ke lawan bicara karena
gangguan koneksi. Bayangkan jika beberapa detik kemudian, suara tersebut sampai ke lawan
bicara.”
Kita kembali ke studi kasus. Apa yang sebenarnya terjadi ketika client menginputkan alamat
URL di browser? Apakah langsung terjadi koneksi TCP, lalu pengiriman data HTTP?
Jawabannya, tidak.
URL yang diinput misalnya: https://ngonfig.net, ini adalah domain. Komputer tidak bisa
mengenali nama ini. Maka untuk mengenalinya dibutuhkan DNS atau Domain Name System.
Domain Name System adalah sebuah protocol yang digunakan untuk menerjemahkan alamat
domain (contoh: ngonfig.net) menjadi alamat IP.
DNS server sudah memiliki sejumlah daftar domain-domain beserta alamat IP nya.
Jika suatu saat ada yang menanyakan, maka dia tinggal mengirimkan, dan tanpa ada proses untuk
memastikan pesan tersebut diterima oleh client. Juga tidak ada pembentukan koneksi sebelum
data tersebut dikirimkan.
Sampai disini saya harap kamu sudah memahami perbedaan antara TCP dengan UDP.
Nah, setelah alamat IP nya diketahui oleh client, maka client melakukan request koneksi ke IP
tersebut.
Jadi pada proses-proses yang telah saya jelaskan diatas, komunikasinya tidak lagi diarahkan ke
alamat domain, melainkan alamat IP.
Rangkuman alurnya: Input URL –> Menanyakan alamat IP dari sebuah domain –> Melakukan
request koneksi ke IP yang sudah didapat –> Melakukan pengiriman data.
Alamat IP ini yang akan kita bahas pada network layer dibawah.
Note: VoIP tidak sepenuhnya UDP, tapi juga menggunakan RTP untuk sequencing. DNS juga
membutuhkan TCP apabila besar data melebihi tampungan UDP.
More: When DNS uses TCP instead UDP.
Sekarang kita bahas layer 3, atau sering disebut dengan Network Layer.
Di layer network atau internet layer juga terdapat banyak protocol. Tapi, satu-satunya, yang
paling dikenal dan digunakan saat ini, yakni: IP atau Internet Protocol.
Disini saya tidak akan menjabarkan jenis-jenis IP address, kelasnya, apa itu network, dan apa itu
host.
Bayangkan saat ini kamu ingin mengirimkan surat ke 2 tujuan yang berbeda, lokal dan
internasional, yaitu Jakarta dan Singapore.
… yang perlu kamu lakukan hanyalah menulis alamat tujuan dari surat tersebut dan
meletakkannya di kotak pos atau bisa langsung mengantarkannya ke kantor pos.
Kita tidak perlu memikirkan dan tidak perlu mengatur bagaimana dan jalur mana yang harus
ditempuh oleh pengantar surat agar sampai tujuan.
Betul bukan?
Kita ketahui, kantor pos memiliki banyak cabang di setiap kota dan setiap daerah-daerah yang
sering terjadi pengiriman.
Seperti gambar, ternyata jalur yang ditempuh oleh kedua surat itu berbeda.
Karena, yang pertama: surat yang tadi dikirimkan akan dibedakan alamat tujuannya.
Lalu dipisahkan berdasarkan kantor yang terdekat, disana juga dilakukan pemisahan berdasarkan
tujuan pengiriman masing-masing. Ada yang harus dikirim terlebih dahulu ke kantor daerah, ada
yang langsung dikirim ke alamat tujuan.
Ingat saya katakan terhadap dua surat tersebut, ada yang dikirimkan ke kantor terlebih dahulu,
ada yang langsung dikirim ke tujuan?
Ini karena di kantor pos sudah ada daftar alamat-alamat dan rute nya. Maka tak mungkin surat
tersebut sampai jika kita tidak menyertakan alamatnya.
Network address: misalnya, daerah Jakarta. Ini bisa dianggap seperti kode pos.
Host address: ternyata ada Jakarta Barat, Jakarta Timur, dan seterusnya. Ini bisa dianggap
seperti alamat detil pengiriman, contohnya nomor rumah.
Packet Dikirim Berdasarkan Alamat IP
Setelah memahami analoginya, kita lanjut ke studi kasus. Kali ini saya membedakan DNS server
dengan HTTP server.
Ingat baik-baik analoginya tadi, Internet Protocol mendefinisikan dua hal di IP Address.
Perhatikan gambar diatas:
1. Setiap IP yang dimiliki oleh host harus unik, 2.2.2.2, 3.3.3.3, dan 1.1.1.1
2. Selain itu, IP address ini juga harus bisa dikelompokkan, contohnya 2.0.0.0, 3.0.0.0, dan
1.0.0.0
Nah router disitulah yang menentukan arah-arah tersebut. Ini ibaratkan kantor pos tadi. Kalau
networknya berbeda, packet akan diteruskan ke router sebelahnya yang terhubung ke alamat
tersebut.
Saat proses komunikasi HTTP, tentulah disini pesan yang dikirim sudah memiliki header. Nah di
header ini terdapat informasi alamat IP, yaitu IP sumber dan IP tujuan.
ambar diatas kita sebut sebagai ip routing (routing), agar jaringan memiliki daftar rute untuk
mencapai wilayah tertentu. Disini kita bahas dasarnya saja.
1. Client akan membandingkan terlebih dahulu, apakah 3.3.3.3 satu wilayah dengannya atau
tidak. Dalam kasus ini, tidak. Sehingga dia mengirimkannya ke R1.
2. Peran R1 disinilah kita sebut sebagai gateway. R1 mengetahui kalau 3.3.3.3 adalah
wilayah yang terhubung dengan R2, maka packet diteruskan ke R2.
3. Sampai R2, packet pun dikirimkan langsung ke 3.3.3.3 (server).
Intinya, yang dilihat pertama kali adalah wilayahnya (network addressnya), kemudian alamat
spesifiknya (host address).
Dari application layer (HTTP), lalu ke transport layer. Saat di transport layer kita kenal dengan
host-to-host layer dengan jargonnya “Just give me your data stream, with any instructions, and
I’ll begin the process of getting your information ready to send.”
Lalu di header TCP atau UDP tersebut terdapat source IP dan destination IP yang digunakan di
layer network atau internet layer.
… belum selesai.
Karena setiap perangkat terhubung dengan media bukan? Baik wireless maupun wired.
Kini giliran Link Layer (Data Link dan Physical) untuk melakukan tugasnya.
Di TCP/IP original, data link dan physical masih digabung, berarti protocol dan hardware
keduanya ada disini. Sedangkan di TCP/IP updated sudah dibedakan.
Sederhananya, link itu istilah yang digunakan untuk menyebutkan jalur antar node yang saling
terhubung. Data yang dikirim adalah nilai bits, pada physical, dan frame pada data link.
Maka IP packet yang dibentuk di layer network tadi akan dibungkus lagi seperti ini:
1. Client mengenkapsulasi IP packet dan berada diantara Ethernet header dan Ethernet
trailer, ini akan menciptakan Ethernet frame.
2. Ethernet frame ini ditransmisikan menggunakan sinyal bit melalui media penghubung.
3. R1 menerima sinyal bits tersebut dan mengartikannya menjadi ethernet frame.
4. Setelah ethernet frame terbentuk, maka ethernet header dan ethernet trailer tadi dibuang,
menyisakan IP packet.
Selesai..
Mengenai jenis enkapsulasi ini akan kita banyak dibahas jika sudah sampai ke materi WAN,
seperti HDLC, Frame-Relay, atau PPP.
Nah untuk mencari tau IP address dari suatu perangkat, digunakan protocol ARP (Address
Resolution Protocol).
[Kita bahas di lain kesempatan]
Pahami dulu tentang broadcast domain, dan collision domain, serta bagaimana switch memecah
collision domain.
Diatas saya sudah menjelaskan bagaimana HTTP, TCP – UDP, IP, dan Ethernet melakukan
tugasnya. Setiap layer ini akan menambahkan headernya (di data-link, ada trailer) dari data yang
diterima dari layer yang diatasnya.
Server mengenkapsulasi isi konten di dalam HTTP header. Kemudian TCP layer
mengenkapsulasi HTTP header tadi kedalam TCP header. Lalu IP mengenkapsulasi TCP header
kedalam IP header.
… dan akhirnya di Ethernet link layer, dienkapsulasi IP packet kedalam header dan trailer. Ini
kita sebut frame.
Tahap 1:
Membentuk dan mengenkapsulasi application data dengan header layer application yang
dibutuhkan. Misalnya pesan 200 (OK) di HTTP yang dibalas oleh HTTP header, dan diikuti oleh
sebagian konten web.
Tahap 2:
Mengenkapsulasi data dari application layer ke header transport layer. Disini menggunakan TCP
untuk HTTP atau UDP untuk DNS.
Tahap 3:
Data dari transport layer dienkapsulasi kedalam IP header.
Tahap 4:
IP Header kemudian dienkapsulasi dengan membungkusnya dengan ethernet header dan ethernet
trailer.
Tahap 5:
Mengirim sinyal bit, yang nantinya akan diterjemahkan oleh perangkat penerima, dan
menghasilkan ethernet frame kembali, dan deenkapsulasi pun dilakukan.
Selamat Mempelajarinya