TCP/IP adalah tumpukan protokol yang menjadi fondasi internet dan sebagian besar jaringan komputer. Ia menggabungkan protokol TCP, yang bertanggung jawab atas pengiriman data yang andal, dan IP, yang menyediakan routing paket antar node. Menurut data IETF RFC 1180 (2024), tumpukan TCP/IP memproses lebih dari 80% lalu lintas jaringan global, termasuk aplikasi mobile dan web. Tumpukan protokol menentukan bagaimana data dikemas, dialamatkan, dan ditransmisikan antar perangkat di jaringan.
Poin Penting
TCP/IP (Transmission Control Protocol / Internet Protocol) adalah tumpukan protokol yang dikembangkan pada tahun 1970-an untuk ARPANET dan menjadi standar de facto untuk jaringan internet global. Ia menentukan bagaimana data dipecah menjadi paket, dialamatkan, ditransmisikan, dan dirakit di sisi penerima.
Arsitektur TCP/IP dibangun berdasarkan prinsip multi-lapis, di mana setiap lapisan mengabstraksi fungsi-fungsi tertentu. Lapisan aplikasi bekerja dengan data aplikasi, lapisan transport menyediakan keandalan, lapisan jaringan menangani routing, dan lapisan tautan menangani transmisi melalui media fisik. Modularitas memungkinkan penggantian protokol di dalam lapisan tanpa mengubah lapisan yang berdekatan.
Dalam pengembangan mobile, TCP/IP digunakan oleh setiap aplikasi yang melakukan permintaan jaringan. Pustaka URLSession, OkHttp, AFNetworking, dan Alamofire bekerja di atas tumpukan ini, menyembunyikan dari pengembang detail pengemasan dan routing paket. Namun, memahami TCP/IP diperlukan untuk optimalisasi kinerja: konfigurasi parameter TCP melalui URLSessionConfiguration memungkinkan pengelolaan waktu tunggu, pemeliharaan HTTP Persistent Connections, dan pengaturan proxy untuk lingkungan perusahaan.
Memahami TCP/IP diperlukan untuk diagnosis masalah jaringan: jika aplikasi tidak dapat terhubung ke server, masalahnya bisa berada di lapisan mana pun dari tumpukan — dari saluran fisik hingga protokol aplikasi. Alat seperti tcpdump, Wireshark, dan Charles Proxy memungkinkan analisis lalu lintas di setiap lapisan dan menemukan titik hambatan. Untuk pengembang mobile, Xcode menyediakan Network Debug Dashboard, dan Android Studio menyediakan Network Inspector untuk analisis koneksi TCP secara real-time.
Model TCP/IP mencakup empat lapisan, yang masing-masing menjalankan fungsi yang ditentukan secara ketat saat mentransmisikan data. Memahami hierarki ini diperlukan untuk diagnosis masalah jaringan dan optimalisasi aplikasi.
Pada lapisan aplikasi bekerja protokol-protokol yang berinteraksi langsung dengan aplikasi: HTTP, HTTPS, FTP, SMTP, DNS, WebSocket. Lapisan ini membentuk data dalam format yang dapat dipahami oleh aplikasi dan meneruskannya ke lapisan transport. Pengembang aplikasi mobile bekerja tepat pada lapisan ini melalui pustaka jaringan.
Lapisan transport menyediakan transmisi data antar aplikasi pada perangkat yang berbeda. Protokol utama: TCP (transmisi andal dengan konfirmasi) dan UDP (transmisi cepat tanpa jaminan). TCP menambahkan port pengirim dan penerima ke data, mengelola urutan paket, dan mengontrol kemacetan jaringan.
Lapisan jaringan diimplementasikan oleh protokol IP, yang menentukan pengalamatan (IPv4, IPv6) dan routing paket. Setiap paket berisi alamat IP pengirim dan penerima, dan router di jalur transmisi memutuskan node berikutnya berdasarkan tabel routing. IPv4 menggunakan alamat 32-bit (sekitar 4,3 miliar), dan IPv6 menggunakan alamat 128-bit, yang memecahkan masalah kehabisan alamat.
Lapisan tautan bekerja dengan media transmisi fisik: Ethernet, Wi-Fi, Bluetooth. Lapisan ini mengubah paket menjadi sinyal dan sebaliknya, mengelola akses ke media transmisi melalui alamat MAC, dan mendeteksi kesalahan lapisan fisik menggunakan checksum bingkai (FCS).
Pada lapisan tautan bekerja protokol seperti ARP (Address Resolution Protocol), yang mengubah alamat IP menjadi alamat MAC perangkat di jaringan lokal, dan PPP (Point-to-Point Protocol), yang digunakan dalam koneksi VPN dan jaringan transmisi data mobile.
| Lapisan | Protokol | Fungsi |
|---|---|---|
| Aplikasi | HTTP, HTTPS, DNS, FTP, WebSocket | Pembentukan data aplikasi |
| Transport | TCP, UDP | Transmisi antar aplikasi, kontrol kesalahan |
| Jaringan | IP, ICMP, ARP | Routing dan pengalamatan paket |
| Tautan | Ethernet, Wi-Fi, PPP | Transmisi melalui media fisik |
TCP (Transmission Control Protocol) adalah salah satu protokol utama dari lapisan transport. Ia menyediakan pengiriman aliran byte yang andal, terurut, dan dapat diverifikasi antar aplikasi. Sebelum transmisi data, TCP membangun koneksi melalui jabat tangan tiga langkah.
Jabat tangan tiga langkah (three-way handshake) dimulai dengan pengiriman paket SYN oleh klien. Server merespons dengan paket SYN-ACK, mengonfirmasi penerimaan. Klien menyelesaikan jabat tangan dengan paket ACK, setelah itu transmisi data dimulai. Proses ini menjamin bahwa kedua pihak siap untuk bertukar data dan tersinkronisasi dalam hal nomor urut.
import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('example.com', 80))
sock.send(b'GET / HTTP/1.1\r\nHost: example.com\r\n\r\n')
response = sock.recv(4096)
print(response.decode())
sock.close()
Dalam contoh, dibuat soket TCP dengan tipe SOCK_STREAM, yang secara otomatis melakukan jabat tangan tiga langkah saat connect dipanggil. Metode send mengirim permintaan HTTP, recv menerima respons. Setelah selesai, close mengirim paket FIN untuk menutup koneksi dengan benar.
Mari kita lihat contoh server TCP dalam Python yang menerima beberapa klien melalui thread. Setiap koneksi diproses dalam thread terpisah, memungkinkan banyak klien dilayani secara bersamaan tanpa memblokir loop utama.
import socket
import threading
def handle_client(conn, addr):
print(f'Klien terhubung: {addr}')
with conn:
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data.upper())
print(f'Klien {addr} terputus')
server = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server.bind(('0.0.0.0', 9090))
server.listen(5)
print('Server TCP berjalan di port 9090')
while True:
conn, addr = server.accept()
thread = threading.Thread(target=handle_client, args=(conn, addr))
thread.start()
Server TCP memproses setiap koneksi dalam thread terpisah, memanggil accept dalam loop tak terbatas. Fungsi handle_client menerima data, mengubahnya menjadi huruf kapital, dan mengirimnya kembali melalui sendall. Saat loop recv berakhir (ketika klien menutup koneksi), thread berakhir dan soket otomatis ditutup. Dalam aplikasi mobile, pekerjaan tingkat rendah dengan soket seperti ini tidak digunakan secara langsung — pustaka HTTP mobile mengelola koneksi melalui kumpulan thread dan secara otomatis menggunakan kembali koneksi TCP.
Pilihan antara TCP dan UDP adalah salah satu keputusan kunci dalam merancang interaksi jaringan. TCP menjamin pengiriman, urutan, dan integritas data dengan mengorbankan latensi tambahan. UDP mengorbankan keandalan demi latensi minimal dan beban saluran yang lebih rendah.
| Karakteristik | TCP | UDP |
|---|---|---|
| Koneksi | Membangun (handshake) | Tidak membangun |
| Keandalan | Menjamin pengiriman | Tidak menjamin |
| Urutan paket | Mengurutkan | Tidak mengurutkan |
| Kecepatan | Lebih rendah | Lebih tinggi |
| Penggunaan | Web, email, file | Streaming, game, DNS |
Untuk aplikasi mobile, pilihan protokol tergantung pada skenario: REST-API dan unduhan data memerlukan TCP, sedangkan panggilan video dan game online mendapat manfaat dari kecepatan UDP. Beberapa aplikasi menggabungkan kedua protokol — TCP untuk kontrol dan UDP untuk aliran media. Protokol modern QUIC, yang bekerja di atas UDP dan digunakan dalam HTTP/3, menggabungkan keunggulan kedua pendekatan dan sudah didukung di iOS dan Android melalui URLSession secara otomatis.
Mari kita lihat contoh klien TCP dalam Python dengan penanganan kesalahan dan waktu tunggu. Pendekatan ini digunakan dalam aplikasi mobile untuk koneksi yang andal ke server.
import socket
import sys
def tcp_client(host, port):
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect((host, port))
print(f'Terhubung ke {host}:{port}')
return sock
except socket.error as err:
print(f'Kesalahan koneksi: {err}')
sys.exit(1)
sock = tcp_client('api.example.com', 443)
sock.close()
Fungsi tcp_client menerima host dan port, membuat soket dengan waktu tunggu 10 detik, dan mencoba terhubung. Jika terjadi kesalahan koneksi — misalnya, server tidak tersedia atau diblokir oleh firewall — exception dilemparkan dengan deskripsi masalah. Dalam aplikasi mobile, waktu tunggu koneksi sangat penting: terlalu pendek menyebabkan kesalahan palsu di jaringan lambat, terlalu lama menyebabkan interface membeku. Nilai yang disarankan untuk jaringan mobile adalah 10–15 detik untuk timeoutIntervalForRequest dan 30–60 detik untuk timeoutIntervalForResource dalam konfigurasi URLSession.
Pertanyaan yang Sering Diajukan
IP bertanggung jawab untuk routing — pengiriman paket dari pengirim ke penerima melalui node perantara. TCP menyediakan perakitan data yang andal: mengontrol urutan, memeriksa integritas, dan meminta transmisi ulang paket yang hilang. Bersama-sama mereka membentuk tumpukan TCP/IP.
TCP/IP tidak menggunakan port tetap — port ditetapkan oleh aplikasi. Port standar: 80 (HTTP), 443 (HTTPS), 22 (SSH), 25 (SMTP). Port 443 adalah port utama untuk lalu lintas web aman dalam aplikasi mobile.
Koneksi TCP adalah saluran logis antara dua aplikasi, dibangun melalui jabat tangan tiga langkah (SYN, SYN-ACK, ACK). Koneksi diidentifikasi oleh pasangan (alamat IP, port) pengirim dan penerima. Jabat tangan menjamin bahwa kedua pihak siap untuk bertukar data.
Ya, TCP/IP bekerja di jaringan lokal (LAN) tanpa akses internet. Perangkat terhubung melalui Wi-Fi Direct, Bluetooth PAN, atau Ethernet dan bertukar data melalui alamat IP lokal. TCP/IP lokal digunakan dalam perangkat IoT dan aplikasi peer-to-peer.
TCP lebih lambat karena mekanisme tambahan: jabat tangan tiga langkah sebelum transmisi, konfirmasi setiap paket, pengiriman ulang segmen yang hilang, kontrol kemacetan. UDP mengirim datagram tanpa pemeriksaan ini, yang mengurangi latensi dengan mengorbankan kemungkinan kehilangan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga