Skip to main content

TCP Protokol

TCP protokol merupakan salah salah satu protokol yang sering digunakkan dalam proses transfer data anatar perangkat. disamping itu ada juga protokol UDP dan IP. namun dalam pembahasan ini kali ini akan membahas protokol TCP. protokol TCp ini berada pada layer transport pada mode OSI network. dengan protokol ini menjamin sebuah packet sampai ke tujuan. bagimana bentuk packet tersebut

berikut bentuk packet data yang dikirimkan ke protokol TCp diatas HTTP

+--------------------------------------------------------------------------------+
| TCP Header (20 bytes or more) |
| - Source Port: 49152 |
| - Destination Port: 80 (HTTP) |
| - Sequence Number: 12345 |
| - Acknowledgment Number: 0 |
| - Data Offset: 5 (20 bytes) |
| - Flags: SYN, ACK, etc. |
| - Window Size: 65535 |
| - Checksum: 0x1c7c |
| - Urgent Pointer: 0 |
+--------------------------------------------------------------------------------+
| HTTP Request Data (Payload) |
| - GET /api/v1/users HTTP/1.1 |
| - Host: example.com |
| - User-Agent: curl/7.68.0 |
| - Accept: */* |
+--------------------------------------------------------------------------------+

dari data diatas terdiri dari TCP dan HTTP request. TCP header ini digunakkan sebagai connection yang sudah dihubugkan antar client dan server

sedangkan HTTP request ini adalah data yang dikirimkan. karena data tersebut dikirimkan menggunakkan HTTP maka data tersebut terdabat beberap data seperti method, host, user agent ataupun data bodynya

mari coba membuat kode sederahana untuk mengimplemntasikan sebuah protokol. dalam protokol sendiri biasanya memiliki client dan server untuk berkomunikasi.

server
import socket

# Inisialisasi TCP socket
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# IP dan port server
server_address = ('127.0.0.1', 12345)
server_socket.bind(server_address)

# Dengarkan koneksi masuk (maksimal 1 koneksi di queue)
server_socket.listen(1)
print("Server siap menerima koneksi...")

# Terima koneksi dari klien
client_socket, client_address = server_socket.accept()
print(f"Koneksi diterima dari {client_address}")

while True:
# Terima data dari klien
data = client_socket.recv(1024)
if not data:
break

# Tampilkan pesan yang diterima
print(f"Pesan diterima: {data.decode('utf-8')}")

# Kirim respons balik ke klien
response = f"Pesan '{data.decode('utf-8')}' diterima"
client_socket.sendall(response.encode('utf-8'))

# Tutup koneksi
client_socket.close()
server_socket.close()



buat juga kode yang bertindak sebagai client yang digunakka untuk mencoba mengirimkan data ke server

client

import socket

# Inisialisasi TCP socket
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)

# Alamat server yang akan dihubungi
server_address = ('127.0.0.1', 12345)

# Koneksi ke server
client_socket.connect(server_address)

print("Client siap mengirim pesan. Ketik 'exit' untuk keluar.")

while True:
# Input pesan dari pengguna
message = input("Masukkan pesan: ")

# Keluar dari loop jika pengguna mengetik 'exit'
if message.lower() == 'exit':
print("Client dihentikan.")
break

# Kirim pesan ke server
client_socket.sendall(message.encode('utf-8'))

# Terima respons dari server
data = client_socket.recv(1024)
print(f"Respons dari server: {data.decode('utf-8')}")

# Tutup koneksi
client_socket.close()


jalankan server.py dan kemudian client.py maka ketikam kita mengirimkan sebuah pesan keserver, maka server akan memberikan response balik, bahwa data sudah diterima dengan benar

alt text