Pelajari bagaimana Bob Kahn membantu membentuk TCP/IP, mengapa jaringan paket yang andal penting, dan bagaimana desainnya masih mendukung aplikasi, API, dan layanan cloud.

Kebanyakan aplikasi terasa “instan”: Anda ketuk tombol, feed diperbarui, pembayaran selesai, video mulai. Apa yang tidak Anda lihat adalah pekerjaan di bawahnya untuk memindahkan potongan-potongan kecil data lewat Wi‑Fi, jaringan seluler, router rumah, dan pusat data—sering melintasi beberapa negara—tanpa Anda harus memikirkan bagian-bagian berantakan di antaranya.
Ketidakterlihatan itu adalah janji yang diberikan TCP/IP. Ini bukan produk tunggal atau fitur cloud. Ini adalah seperangkat aturan bersama yang memungkinkan perangkat dan server saling berbicara dengan cara yang biasanya terasa mulus dan dapat diandalkan, bahkan ketika jaringan bising, macet, atau sebagian gagal.
Bob Kahn adalah salah satu tokoh kunci yang membuat itu mungkin. Bersama kolaborator seperti Vint Cerf, Kahn membantu membentuk ide inti yang menjadi TCP/IP: “bahasa” umum untuk jaringan dan metode untuk mengirim data dengan cara yang bisa dipercaya aplikasi. Tanpa hype—pekerjaan ini penting karena mengubah koneksi yang tidak andal menjadi sesuatu yang bisa dibangun secara andal oleh perangkat lunak.
Alih-alih mengirim satu pesan utuh sebagai aliran kontinu, pengalihan paket memecahnya menjadi potongan kecil yang disebut paket. Setiap paket bisa mengambil jalur sendiri ke tujuan, seperti amplop terpisah yang lewat kantor pos berbeda.
Kita akan mengurai bagaimana TCP menciptakan rasa keandalan, mengapa IP sengaja tidak menjanjikan kesempurnaan, dan bagaimana layering menjaga sistem tetap dapat dipahami. Di akhir, Anda akan bisa membayangkan apa yang terjadi saat sebuah aplikasi memanggil API—dan mengapa ide-ide puluhan tahun lalu ini masih menggerakkan layanan cloud modern.
Jaringan komputer awal tidak lahir sebagai “Internet.” Mereka dibangun untuk kelompok tertentu dengan tujuan tertentu: jaringan universitas di sini, jaringan militer di sana, jaringan laboratorium riset di tempat lain. Masing‑masing bisa bekerja baik secara internal, tetapi sering menggunakan perangkat keras, format pesan, dan aturan perjalanan data yang berbeda.
Itu menciptakan realitas yang mengecewakan: meski dua komputer sama‑sama “berjaringan,” mereka tetap mungkin tidak bisa saling bertukar informasi. Ini mirip memiliki banyak sistem rel kereta dengan lebar rel berbeda dan sinyal yang bermakna beda. Anda bisa memindahkan kereta di dalam satu sistem, tetapi menyeberang ke sistem lain berantakan, mahal, atau tidak mungkin.
Tantangan utama Bob Kahn bukan sekadar “menghubungkan komputer A ke komputer B.” Melainkan: bagaimana menghubungkan jaringan satu sama lain sehingga lalu lintas bisa melewati beberapa sistem independen seolah‑olah mereka satu sistem yang lebih besar?
Itulah makna “internetworking”—membangun cara agar data bisa melompat dari satu jaringan ke jaringan berikutnya, bahkan ketika jaringan‑jaringan itu dirancang berbeda dan dikelola oleh organisasi yang berbeda.
Agar internetworking bekerja pada skala besar, semua pihak membutuhkan sekumpulan aturan bersama—protokol—yang tidak bergantung pada desain internal satu jaringan pun. Aturan‑aturan itu juga harus mencerminkan batasan nyata:
TCP/IP menjadi jawaban praktis: sebuah “kesepakatan” bersama yang memungkinkan jaringan independen saling terhubung dan tetap memindahkan data cukup andal untuk aplikasi nyata.
Bob Kahn paling dikenal sebagai salah satu arsitek aturan lalu lintas Internet. Pada 1970‑an, saat bekerja dengan DARPA, ia membantu memindahkan jaringan dari eksperimen riset yang cerdas menjadi sesuatu yang bisa menghubungkan banyak jenis jaringan berbeda—tanpa memaksa semuanya memakai perangkat keras, kabel, atau desain internal yang sama.
ARPANET membuktikan komputer bisa saling berkomunikasi lewat link paket‑switched. Namun jaringan lain juga bermunculan—sistem berbasis radio, tautan satelit, dan jaringan eksperimen tambahan—masing‑masing dengan keanehan sendiri. Fokus Kahn adalah interoperabilitas: memungkinkan pesan melintasi beberapa jaringan seolah‑olah itu satu jaringan.
Alih‑alih membangun satu jaringan “sempurna,” ia mendorong pendekatan di mana:
Bekerja dengan Vint Cerf, Kahn merancang bersama apa yang menjadi TCP/IP. Hasil yang bertahan lama adalah pemisahan tanggung jawab yang bersih: IP menangani pengalamatan dan penerusan antar‑jaringan, sedangkan TCP menangani pengiriman andal untuk aplikasi yang membutuhkannya.
Jika Anda pernah memanggil API, memuat halaman web, atau mengirim log dari container ke layanan monitoring, Anda bergantung pada model internetworking yang diperjuangkan Kahn. Anda tidak perlu peduli apakah paket melintasi Wi‑Fi, fiber, LTE, atau backbone cloud. TCP/IP membuat semua itu terlihat seperti satu sistem kontinu—sehingga perangkat lunak bisa fokus pada fitur, bukan kabelnya.
Salah satu ide paling cerdas di balik TCP/IP adalah layering: daripada membangun satu sistem jaringan raksasa yang melakukan segalanya, Anda menumpuk bagian‑bagian kecil di mana setiap lapisan melakukan satu tugas dengan baik.
Ini penting karena jaringan tidak semuanya sama. Kabel, radio, router, dan penyedia yang berbeda tetap bisa saling beroperasi ketika mereka setuju pada beberapa tanggung jawab yang bersih.
Pikirkan IP (Internet Protocol) sebagai bagian yang menjawab: Ke mana data ini pergi, dan bagaimana kita memindahkannya lebih dekat ke sana?
IP menyediakan alamat (agar mesin bisa diidentifikasi) dan routing dasar (supaya paket bisa melompat dari jaringan ke jaringan). Penting: IP tidak berusaha menjadi sempurna. Ia fokus pada meneruskan paket satu langkah pada satu waktu, bahkan jika jalur berubah.
Lalu TCP (Transmission Control Protocol) duduk di atas IP dan menjawab: Bagaimana kita membuat ini terasa seperti koneksi yang dapat diandalkan?
TCP menangani pekerjaan “keandalan” yang biasanya diinginkan aplikasi: mengurutkan data dengan benar, mendeteksi bagian yang hilang, mencoba lagi bila perlu, dan mengatur laju pengiriman agar pengirim tidak membanjiri penerima atau jaringan.
Cara berguna untuk membayangkan pemisahan ini:
Anda tidak meminta alamat jalan untuk menjamin paket sampai; Anda membangun jaminan itu di atasnya.
Karena tanggung jawab dipisahkan, Anda bisa memperbaiki satu lapisan tanpa merancang ulang semuanya. Jaringan fisik baru bisa membawa IP, dan aplikasi bisa mengandalkan perilaku TCP tanpa perlu memahami bagaimana routing bekerja. Pembagian bersih itu adalah alasan utama TCP/IP menjadi fondasi tak terlihat di bawah hampir setiap aplikasi dan API yang Anda gunakan.
Pengalihan paket adalah gagasan yang membuat jaringan besar menjadi praktis: alih‑alih menyisihkan jalur khusus untuk seluruh pesan Anda, Anda memecah pesan menjadi potongan kecil dan mengirim tiap potongan secara mandiri.
Sebuah paket adalah bundel data kecil dengan header (siapa pengirimnya, siapa penerimanya, dan info routing lain) plus potongan konten.
Memecah data menjadi potongan membantu karena jaringan bisa:
Di sinilah “kekacauan” mulai muncul. Paket dari unduhan atau panggilan API yang sama mungkin mengambil jalur berbeda melalui jaringan, tergantung apa yang sibuk atau tersedia saat itu. Itu berarti mereka bisa tiba tidak berurutan—paket #12 bisa tiba sebelum paket #5.
Pengalihan paket tidak berusaha mencegah itu. Ia memprioritaskan mengalirkan paket dengan cepat, meskipun urutan kedatangan berantakan.
Kehilangan paket bukan jarang, dan tidak selalu kesalahan siapa pun. Penyebab umum meliputi:
Pilihan desain kunci adalah membiarkan jaringan tidak sempurna. IP fokus pada meneruskan paket sebaik mungkin, tanpa menjanjikan pengiriman atau urutan. Kebebasan itu memungkinkan jaringan tumbuh—dan itulah mengapa lapisan atas (seperti TCP) ada untuk membersihkan kekacauan.
IP mengantar paket dengan dasar “best effort”: beberapa mungkin tiba terlambat, tidak berurutan, diduplikasi, atau tidak sama sekali. TCP berada di atas itu dan menciptakan sesuatu yang bisa dipercaya aplikasi: aliran byte tunggal, berurutan, dan lengkap—seperti koneksi yang Anda harapkan saat mengunggah file, memuat halaman web, atau memanggil API.
Saat orang mengatakan TCP “andal,” mereka biasanya maksudkan:
TCP memecah data Anda menjadi potongan dan memberi label dengan nomor urut. Penerima mengirim balik acknowledgment (ACK) untuk mengonfirmasi apa yang diterima.
Jika pengirim tidak melihat ACK tepat waktu, ia menganggap ada yang hilang dan melakukan retransmisi. Inilah inti “ilusi”: meskipun jaringan mungkin menjatuhkan paket, TCP terus mencoba sampai penerima mengonfirmasi penerimaan.
Kedengarannya mirip tapi menyelesaikan masalah berbeda:
Bersama, mereka membantu TCP tetap cepat tanpa sembrono.
Timeout tetap akan gagal pada jaringan lambat dan cepat. TCP terus menyesuaikan timeout berdasarkan pengukuran round‑trip time. Jika kondisi memburuk, ia menunggu lebih lama sebelum mengirim ulang; jika kondisi membaik, ia menjadi lebih responsif. Adaptasi inilah yang membuat TCP terus bekerja di Wi‑Fi, jaringan seluler, dan tautan jarak jauh.
Salah satu ide terpenting di balik TCP/IP adalah prinsip end-to-end: tempatkan “kepintaran” di tepi jaringan (endpoint), dan biarkan inti jaringan relatif sederhana.
Secara praktis, endpoint adalah perangkat dan program yang benar‑benar peduli pada data: ponsel Anda, laptop, server, dan sistem operasi serta aplikasi yang berjalan di atasnya. Inti jaringan—router dan tautan di antara—fokus pada pemindahan paket.
Daripada mencoba membuat setiap router “sempurna,” TCP/IP menerima bahwa inti akan tidak sempurna dan membiarkan endpoint menangani bagian yang memerlukan konteks.
Menjaga inti lebih sederhana memudahkan perluasan Internet. Jaringan baru bisa bergabung tanpa mengharuskan setiap perangkat perantara memahami kebutuhan setiap aplikasi. Router tidak perlu tahu apakah sebuah paket bagian dari panggilan video, unduhan file, atau permintaan API—mereka hanya meneruskannya.
Di endpoint, Anda biasanya menangani:
Di jaringan, Anda umumnya menangani:
Berpikir end-to-end skala dengan baik, tetapi mendorong kompleksitas ke luar. Sistem operasi, pustaka, dan aplikasi menjadi bertanggung jawab untuk “membuatnya bekerja” di atas jaringan yang berantakan. Itu bagus untuk fleksibilitas, tetapi juga berarti bug, timeout yang salah konfigurasi, atau retry yang terlalu agresif bisa menimbulkan masalah nyata bagi pengguna.
IP (Internet Protocol) membuat janji sederhana: ia akan mencoba memindahkan paket Anda ke tujuan. Hanya itu. Tidak ada jaminan paket sampai, tiba sekali saja, tiba berurutan, atau tiba dalam waktu tertentu.
Itu mungkin terdengar seperti kekurangan—sampai Anda melihat apa yang dibutuhkan Internet untuk menjadi: jaringan global yang tersusun dari banyak jaringan kecil, dimiliki oleh organisasi berbeda, dan terus berubah.
Router adalah “pengarah lalu lintas” IP. Tugas utama mereka adalah penerusan: ketika paket datang, router melihat alamat tujuan dan memilih hop berikutnya yang tampak terbaik saat itu.
Router tidak melacak percakapan seperti operator telepon. Mereka umumnya tidak memesan kapasitas untuk Anda, dan mereka tidak menunggu untuk mengonfirmasi paket sampai. Dengan menjaga router fokus pada penerusan, inti jaringan tetap sederhana—dan dapat diskalakan ke jumlah perangkat dan koneksi yang sangat besar.
Jaminan itu mahal. Jika IP mencoba menjamin pengiriman, urutan, dan waktu untuk setiap paket, setiap jaringan di dunia harus berkoordinasi ketat, menyimpan banyak state, dan pulih dari kegagalan dengan cara yang sama. Beban koordinasi itu akan memperlambat pertumbuhan dan memperparah gangguan.
Sebagai gantinya, IP mentolerir kekacauan. Jika sebuah tautan gagal, router bisa mengirim paket lewat jalur lain. Jika sebuah jalur macet, paket mungkin tertunda atau dijatuhkan, tetapi lalu lintas sering bisa berlanjut lewat rute alternatif.
Hasilnya adalah ketahanan: Internet bisa terus bekerja bahkan ketika bagian‑bagian darinya rusak atau berubah—karena jaringan tidak dipaksa menjadi sempurna untuk berguna.
Saat Anda fetch() sebuah API, klik “Simpan,” atau membuka websocket, Anda tidak “berbicara ke server” dalam satu aliran mulus. Aplikasi Anda menyerahkan data ke sistem operasi, yang memecahnya menjadi paket dan mengirimkannya lewat banyak jaringan terpisah—setiap hop membuat keputusan sendiri.
Kejutan umum: Anda bisa punya throughput bagus dan tetap merasakan UI lambat karena setiap permintaan menunggu round trip.
TCP mengulang paket yang hilang, tapi ia tidak tahu apa arti “terlalu lama” bagi pengalaman pengguna Anda. Itulah sebabnya aplikasi menambahkan:
Paket bisa tertunda, diurutkan ulang, diduplikasi, atau hilang. Kemacetan bisa tiba‑tiba menaikkan latensi. Server bisa merespons tetapi respons tidak pernah sampai. Ini muncul sebagai tes yang flakey, 504 acak, atau “di mesin saya berjalan.” Seringkali kodenya baik—jalur antar mesin yang bermasalah.
Platform cloud bisa terasa seperti jenis komputasi yang benar‑benar baru—basis data terkelola, fungsi serverless, “skala tak terbatas.” Di bawahnya, permintaan Anda tetap melaju di atas fondasi TCP/IP yang sama yang digerakkan Bob Kahn: IP memindahkan paket antar jaringan, dan TCP (atau kadang UDP) membentuk bagaimana aplikasi mengalami jaringan itu.
Virtualisasi dan container mengubah di mana perangkat lunak berjalan dan bagaimana dikemas:
Tetapi itu adalah detail deployment. Paket tetap menggunakan pengalamatan dan routing IP, dan banyak koneksi masih bergantung pada TCP untuk pengiriman berurutan dan andal.
Arsitektur cloud umum dibangun dari blok jaringan yang familier:
Bahkan ketika Anda tidak pernah “melihat” alamat IP, platform mengalokasikannya, merutekan paket, dan melacak koneksi di belakang layar.
TCP bisa pulihkan paket yang hilang, mengurutkan ulang pengiriman, dan menyesuaikan ke kemacetan—tetapi ia tidak bisa menjanjikan hal yang mustahil. Di sistem cloud, keandalan adalah usaha tim:
Ini juga alasan platform yang menghasilkan dan mendeploy aplikasi full‑stack tetap bergantung pada dasar yang sama. Misalnya, Koder.ai bisa membantu Anda menyiapkan aplikasi React dengan backend Go dan PostgreSQL dengan cepat, tetapi saat aplikasi itu bicara ke API, database, atau klien mobile, Anda kembali ke ranah TCP/IP—koneksi, timeout, retry, dan semua konsekuensinya.
Saat pengembang mengatakan “jaringan,” mereka sering memilih antara dua transport kerja keras: TCP dan UDP. Keduanya berada di atas IP, tetapi membuat trade‑off yang sangat berbeda.
TCP cocok saat Anda butuh data tiba berurutan, tanpa celah, dan Anda lebih memilih menunggu daripada menebak. Pikirkan: halaman web, panggilan API, transfer file, koneksi database.
Itulah sebabnya banyak Internet sehari‑hari mengandalkannya—HTTPS berjalan di atas TCP (via TLS), dan sebagian besar software request/response mengasumsikan perilaku TCP.
Kendalanya: keandalan TCP bisa menambah latensi. Jika satu paket hilang, paket‑paket berikutnya mungkin ditahan sampai celah terisi (“head‑of‑line blocking”). Untuk pengalaman interaktif, menunggu itu bisa terasa lebih buruk daripada gangguan sesekali.
UDP lebih mendekati “kirim pesan dan berharap sampai.” Tidak ada pengurutan, retransmisi, atau penanganan kemacetan bawaan di lapisan UDP.
Pengembang memilih UDP ketika ketepatan waktu lebih penting daripada kesempurnaan, seperti audio/video langsung, gaming, atau telemetri real‑time. Banyak aplikasi ini membangun keandalan ringan sendiri (atau tidak sama sekali) berdasarkan apa yang benar‑benar dirasakan pengguna.
Contoh modern besar: QUIC berjalan di atas UDP, memungkinkan aplikasi mendapatkan setup koneksi lebih cepat dan menghindari beberapa bottleneck TCP—tanpa perlu mengubah jaringan IP di bawahnya.
Pilih berdasarkan:
TCP/IP adalah seperangkat aturan jaringan bersama yang memungkinkan jaringan berbeda saling terhubung dan tetap memindahkan data secara dapat diprediksi.
Ia penting karena membuat tautan heterogen yang tidak andal (Wi‑Fi, LTE, fiber, satelit) dapat digunakan oleh perangkat lunak—sehingga aplikasi bisa mengasumsikan mereka bisa mengirim byte dan menerima respons tanpa perlu memahami detail fisik jaringan.
Bob Kahn membantu mendorong gagasan “internetworking”: menghubungkan jaringan satu sama lain tanpa memaksa semuanya memakai perangkat keras atau desain internal yang sama.
Bersama kolaborator (terutama Vint Cerf), pekerjaan itu membentuk pemisahan di mana IP menangani pengalamatan/penyampaian antar-jaringan dan TCP menyediakan keandalan bagi aplikasi di lapisan atas.
Pengalihan paket memecah sebuah pesan menjadi paket-paket kecil yang bisa berjalan secara independen.
Manfaatnya:
IP fokus pada satu tugas: meneruskan paket menuju alamat tujuan. Ia tidak menjamin pengiriman, urutan, atau waktu.
Model “best effort” ini skalabel karena router bisa tetap sederhana dan cepat, serta jaringan dapat terus berfungsi saat tautan gagal, rute berubah, atau jaringan baru bergabung.
TCP mengubah paket-paket best-effort IP menjadi aliran byte yang terurut dan dapat diandalkan untuk aplikasi.
Ia melakukan ini dengan:
Mereka menyelesaikan masalah yang berbeda:
Dalam praktik, performa baik membutuhkan keduanya: pengirim cepat harus menghormati penerima kondisi jaringan.
Layering memisahkan tanggung jawab sehingga tiap bagian bisa berevolusi sendiri.
Bagi pengembang, ini berarti Anda bisa membangun API tanpa mendesain ulang aplikasi untuk setiap jenis jaringan.
Prinsip end-to-end menjaga inti jaringan (router) relatif sederhana dan menempatkan “kepintaran” di ujung-ujung koneksi.
Implikasi praktis: aplikasi dan sistem operasi yang mengurus keandalan, timeout, retry, dan enkripsi (sering melalui TLS), karena jaringan inti tidak bisa menyesuaikan perilaku untuk setiap aplikasi.
Latency adalah waktu bolak-balik; ia merugikan pola yang banyak percakapan kecil (banyak request kecil, redirect, panggilan berulang).
Throughput adalah jumlah byte per detik; ia penting untuk transfer besar (unggahan, gambar, backup).
Tips praktis:
Pilih berdasarkan kebutuhan:
Aturan praktis: jika aplikasi Anda model request/response dan mengutamakan kebenaran, TCP (atau QUIC lewat HTTP/3) biasanya titik mulai yang tepat.