Agenda:
• Arsitektur TCP/IP
• IP
• Pengalamatan IP (IP Addressing)
• TCP dan UDP
• PORT
• SOCKET
TCP/IP (Transmission Control
Protocol/Internet Protocol)
• Protocol TCP/IP merupakan protokol jaringan yang
terbuka (dalam pengertian bahwa protokol tersebut
mendukung semua SW/HW dari berbagai vendor
dapat membentuk suatu jaringan atau
internetworking).
• Protokol ini sering disebut protokol global (secara
defacto menjadi standar saat ini).
• Protokol TCP/IP saat ini tersedia dalam berbagai
macam “platform” (host operating system / Network
operating system), misalnya MSDOS, UNIX, OS/2,
Windows, Solaris, dll. yang berjalan diatas perangkat
keras / komputar yang berbeda).
Arsitektur TCP/IP
DoD
Model
Process/ Telnet FTP NFS SNMP
Application TFTP SMTP LPD X windows
Host-to-
TCP UDP
Host
ICMP BootP ARP RARP
Internet
IP
Network Fast Token
Ethernet FDDI
Access Ethernet Ring
Software protokol TCP/IP merupakan suatu
paket yang meliputi beberapa fungsi:
• PROTOKOL TRANSPORT
• PROTOKOL ROUTING
• NETWORK ADDRESS
• USER SERVICE : (UTILITI dan APLIKASI)
• GATEWAY PROTOCOLS
• APLIKASI
PROTOKOL TRANSPORT:
Adalah protokol kendali perpindahan data
diantara dua komputer
• TCP (Transmission Control Protocol)
• UDP (User Datagram Protocol)
PROTOKOL ROUTING
• IP (Internet Protocol) - >Routed Protocol
• ICMP (Internet Control Message Protocol)
• RIP (Routing Information Protocol)
• OSPF(Open Shortest Path First)
NETWORK ADDRESS
• ARP (Address Resolution Protocol)
• DNS (Domain Name System)
• RARP (Reverse Address Resolution Protocol)
• BOOT (Boot Protocol)
USER SERVICE :
(UTILITI dan APLIKASI)
• FTP (File Transfer Protocol)
• TFTP (Trivial File Transfer Protocol)
• TELNET (Terminal emulator)
• BGP (Border Gateway Protocol)
• HTTP (Hyper Text Transfer Protocol)
• SMTP (Simple Mail Transfer Protocol) / MIME ( Multi
Purpose Internet Mail Extention)
GATEWAY PROTOCOLS
• EGP (Exterior Gateway Protocol)
• GGP (Gateway to Gateway Protocol)
• IGP (Interior Gateway Protocol)
LAIN-LAIN : (Aplikasi)
• NFS (Network File System)
• NIS (Network Information System)
• RPC (Remote Procedure Call)
• SMTP (Simple Mail Transfer Protocol)
• SNMP (Simple Network Managemen Protocol)
• Gopher
• Finger
• Wais
• Directory Service : X500/ LDAP (Lightweight Directory Access
Protocol)
• dll.
LAPISAN INTERNET (RFC 791)
• Lapisan internet adalah bagian penting dari protocol TCP/IP. IP
menyediakan layanan-layanan dasar untuk penyampaian
paket-paket pada jaringan TCP/IP.
• Fungsi utama IP meliputi:
• Mendefinisikan datagram, yang merupakan unit dasar dalam
internet.
• Mendefinisikan pola pengalamatan internet
• Bertanggung jawab menyampaikan data (datagram) dari
lapisan akses jaringan (lapisan fisik) dengan lapisan transport
(host to host)
• Menentukan perutean (routing) datagram ke remote host
(menuju suatu host yang melintasi memerapa jaringan)
• Melakukan proses fragmentasi dan reassembly suatu
datagram
Mode komunikasi IP
IP merupakan protokol yang bersifat
connectionless protocol, yang berarti suatu
protocol yang tidak memiliki mekanisme
kontrol pertukaran data yang diperlukan
untuk membangun koneksi end-to-end
sebelum dilakukan transmisi data. Akibatnya
jika dipandang dari lapisan internet maka
protokol IP merupakan protokol yang tidak
handal (unreliable).
Frame IP
Nomor Protokol dan PORT
• TCP pada frame IP memiliki Protocol ID adalah 6 dan
• UDP memiliki Protocol ID adalah 17
• Nomor Port (pada server) digunakan untuk
membedakan jenis layanan pada lapisan aplikasi.
Nomor Port telah ditetapkan berdasar RFC 1060 yang
sering dikenal dengan well known port.
• Pada client : nomor port dibangkitkan secara random
(>1000)
NOMOR PROTOKOL dan Nomor Port
pada Server:
TCP (Transfer Control Protocol) , UDP (User Datagram Protocol),
dan
SOCKET
Merupakan kombinasi alamat IP dan nomor
PORT
Fungsinya untuk mebangun suatu koneksi
antar aplikasi.
Pada server SOCKET bersifat multi user
(multipleks)
SOCKET
TCP (23)
TCP (23)
TCP (23)
Multipleks pada TCP/IP
Multipleks pada TCP/IP
Server
Multiple clients on a
TCP (23)
TCP (23)
TCP (23)
[Link]
single host
(Multiplex)
Almond
TCP (9811)
TCP (2001)
TCP (5123)
[Link]
Peanut
WINSOCK API
WINSOCK (WINdows SOCKet) merupakan program API (Application
Programming Interface).
Winsock API berupa sekumpulan fungsi-fungsi yang dapat digunakan
untuk antarmuka program aplikasi dengan suatu Socket.
Dua diantara program Socket adalah: Socket Barkeley (dari Barkeley
Software Distribution of UNIX) dan WINSOCK (dari Microsoft
Windows).
Winsock memiliki beberapa fungsi tambahan dari Socket Barkeley
yang digunakan untuk mendukung Sistem Operasi Windows yang
menggunakan konsep arsitektur Massage Driven -nya.
SERVER CLIENT
Aliran fungsi Socket()
Menciptakan soket
Winsock Bind()
client/server Memberi nama soket
dengan TCP Listen()
Mendengar hubungan dari client
Socket()
Menciptakan soket
Connection
Oriented Menunggu hubungan
dari Client
Connect()
Menghubungi server
Accept()
Penerimaan hubungan menyebabkan
diciptakannya soket baru ketika soket asli
melanjutakan menanti hubungan baru
Send()/Recv() Send()/Recv()
Mengirim dan menerima data Mengirim dan menerima data
Closesocket() Closesocket()
Memutus hubungan Memutus hubungan
Aliran fungsi Winsock client/server
dengan UDP (Connectionless)
Struktur Winsock pada MS Windows
Aplikasi Aplikasi
WinSock 2 WinSock 1.1
WinSock 1.1
API
WinSock. DLL (16 bit)
[Link] (32)
WinSock 2 API
WS2_32.DLL (32 bit)
TCP/IP Transport
Protocol Driver
Tipe Socket
(Windows Socket Menyediakan tiga jenis
layanan)
• Stream Socket
• Datagram Socket, dan
• Raw Socket
Layanan Stream Socket
Layanan yang berorientasi pada hubungan (Connection
Oriented Stream Service), maka dapat memberikan
jaminan layanan yang handal
Layanan Stream Socket didasarkan pada protokol kendali
transmisi TCP. Sebelum dua proses dapat kirim/terima
data, suatu hubungan harus sudah terbentuk.
Socket stream membaca aliran data secara kontinyu, aliran
dua arah tanpa batas rekaman (record)
Datagram Socket
Layanan yang berorientasi tanpa hubungan (Connectionless Datagram Service),
maka kehandalan kurang diperhatikan.
Layanan ini didasarkan pada protokol UDP. Sebelum dua proses saling bertukar
pesan, tidak memerlukan pembentukan hubungan terlebih dahulu.
Socket datagram membaca aliran data sebagai deretan paket dengan
memperhatikan batas rekaman. Pengirim mengirim paket dan penerima
menerima seluruh paket.
Tipe data ini dapat dengan mudah digunakan untuk mengirim rekaman oleh
karena tidak diperlukan pengaturan header.
UDP (USER DATAGRAM PROTOCOL)
UDP adalah salah satu protokol
lapisan transpor TCP/IP yang
mendukung komunikasi yang tidak
andal (unreliable), tanpa koneksi
(connectionless) antara host dalam
jaringan yang menggunakan TCP/IP.
Protokol UDP didefinisikan dalam
RFC 768
MENGAPA ADA UDP?
Tidak perlu adanya setup koneksi terlebih dahulu (hal ini dapat
menyebabkan tambahan delay)
Sederhana, antara penerima dan pengirim tidak perlu menjaga
session atau status koneksi
Ukuran header segment sederhana
Tidak perlu kontrol kemacetan koneksi, UDP dapat mengirimkan
per segment tanpa dipengaruhi oleh kesibukan jaringan
HEADER UDP
PORT UDP
UDP 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.
PORT UDP
PORT UDP yang telah dikenal secara luas
APLIKASI UDP
Digunakan untuk multimedia streaming, yang sangat memberikan toleransi kehilangan segment
cukup baik dan yang sangat tidak sensitif terhadap kerusakan atau kehilangan segment
Contoh protokol aplikasi yang menggunakan UDP :
• DNS (Domain Name System) 53
• SNMP (Simple Network Management Protocol)
161,162
• • TFTP (Trivial File Transfer Protocol) 69
• • SunRPC port 111.
• • dsb.
Untuk membuat pengiriman yang reliable dengan protokol UDP, maka pada lapisan protokol
aplikasinya harus menyediakan penanganan kesalahan tersendiri.
Raw Socket
• Layanan ini dugunakan untuk pengiriman
pesan ICMP (pada lapisan internet / IP)
Contoh:
Mengilustrasikan perbedaan antara aliran
data stream dan datagram
• Anggap dua pesan string berikut dikirimkan ke
socket penerima, yaitu pesan “PENGIRIMAN
PESAN DENGAN TCP/IP” dan pesan “KONSEP
PORT DAN SOCKET”
Pengiriman dengan Socket Stream
• Aplikasi tidak membacanya sebagai dua rekaman
yang terpisah (batas rekaman tidak diperhatikan).
• Jika socket penerima ditetapkan menerima pesan
dengan ukuran buffer 10 byte, maka pembacaan
pesan pertama adalah : “PENGIRIMAN”, kedua
“PESAN DENG”, ketiga “AN TCP/IP “, keempat
“KONSEP POR”, dan kelima “T DAN SOCK”, dan
keenam “ET”
Pengiriman dengan Socket Datagram
• Aplikasi membaca dua string tersebut sebagai
dua rekamam yang terpisah (batas rekaman
diperhatikan).
• Jika socket penerima ditetapkan menerima
pesan dengan ukuran buffer 10 byte, maka
pembacaan pesan pertama adalah :
“PENGIRIMAN” dan kedua “KONSEP POR”.
• Aakibatnya ada sisa string yang hilang.
Blocking dan Non-Blocking
Operasi pada suatu socket, ada dua operasi yang
dimungkinkan dapat dilakukan, yaitu:
• Operasi pemblokiran (Blocking Operation),
dan
• Operasi tanpa pemblokiran(Non-Blocking
Operation)
Operasi Blocking
• Yaitu operasi yang memanfaatkan socket
pemblokiran (Blocking Socket), program diblokir
sampai syarat permintaan dipenuhi.
• Suatu operasi yang menerapkan socket blocking akan
menyebabkan waktu tunda yang lebih lama, karena
OS harus menunggu untuk menangani data jaringan,
tetapi aplikasi tersebut juga memblokir dirinya
sendiri sampai sistem operasi WINSOCK kembali dari
operasi yang diberikan. Metode operasi ini baik
diterapkan pada aplikasi yang kecil.
Operasi Non-Blocking
• Pada operasinon blocking memerintahkan [Link]
untuk mengirim balik sebuah pesan, apabila operasi jaringan
telah terpenuhi. Aplikasi tersebut kemudian bebas untuk
melanjutkan pemrosesan selama aktifitas jaringan terjadi
dalam slot waktu [Link] pada prosesor.
• Program yang menfaatkan socket non-blocking, kirim dan
terima pesan dapat dilakukan dengan dua metode:
- Metode pertama, disebut pooling, secara berkala
berusaha untuk membaca atau menulis data pada
socket menggunakan timer.
- Metode kedua menggunakan pemberitahuan tak-
sinkron (asynchronous notification), dimana program
diberitahu jika sustu kejadian pada socket muncul dan
kemudian menanggapi kejadian tersebut (konsep event-
driven).
IP Protokol
TCP/IP
• Protokol TCP/IP merupakan protokol yang
mengutamakan atau menjaga konektivitas
antara client dan server, sehingga protokol ini
memiliki langkah-langkah yang berbeda
dengan protokol UDP
• TCP mampu menangani : Lost packet,
Duplikasi paket, Sekuensial, dan Flow Control
44
Diagram alir TCP pada client dan server
45
CLIENT
Langkah yang dilakukan client dalam
protokol TCP adalah :
Melakukan
Melakukan Menutup
Membuat koneksi
komunikasi socket jika
Socket (connect) ke
(read/write) selesai
server
46
Langkah pada Client
• Membuat Socket
sock = socket(PF_INET,SOCK_STREAM,0);
if ( sock == -1 )
err_status("socket()");
memset(&adr_srvr,0,sizeof adr_srvr);
adr_srvr.sin_family = AF_INET;
adr_srvr.sin_port = htons(atoi(srvr_port));
adr_srvr.sin_addr.s_addr = inet_addr(srvr_addr);
if ( adr_srvr.sin_addr.s_addr == INADDR_NONE )
err_status("bad address.");
47
Langkah pada Client
• Melakukan Koneksi (connect)
len_inet = sizeof adr_srvr;
z = connect(sock,&adr_srvr,len_inet);
if ( z == -1 )
err_status("connect(2)");
48
Langkah pada Client
• Melakukan Komunikasi
z = write(sock,pesan,pjteks);
if ( z == -1 )
err_status("write(2)");
puts("");
z = read(sock,pesan,pjteks);
if ( z == -1 )
err_status("write(2)");
printf("%s",pesan);
49
Langkah pada Client
• Menutup koneksi
close(sock);
50
SERVER
• Langkah yang dilakukan server adalah
– Membuat socket
– Mengikat (bind) alamat socket
– Mendengarkan koneksi (listen)
– Menerima koneksi (accept)
– Komunikasi dengan client
– Menutup socket jika selesai
51
Langkah pada Server
• Membuat Socket
Socket_server = socket(PF_INET,SOCK_STREAM,0);
if (socket_server == -1 )
fputs(strerror(errno), stderr);
fputs(": ", stderr);
memset(&adr_srvr,0,sizeof adr_srvr);
adr_srvr.sin_family = AF_INET;
adr_srvr.sin_port = htons(atoi(srvr_port));
if ( strcmp(srvr_addr,"*") != 0 )
52
Langkah pada Server
• Mengikat (bind) alamat Socket
len_inet = sizeof adr_srvr;
z = bind(soket_server,(struct sockaddr
*)&adr_srvr, len_inet);
if ( z == -1 )
err_status("bind(2)");
53
Langkah pada Server
• Mendengarkan koneksi (listen)
z = listen(soket_server,5);
if ( z == -1 )
err_status("listen(2)");
54
Langkah pada Server
• Menerima koneksi (accept)
len_inet = sizeof adr_clnt;
clnt_sock = accept(soket_server,(struct sockaddr
*)&adr_clnt,&len_inet);
if ( clnt_sock == -1 )
err_status("accept(2)");
55
Langkah pada Server
• Berkomunikasi dengan client
z = read(clnt_sock,&dtbuf,sizeof dtbuf-1);
if ( z == -1 )
err_status("read(2)");
printf("\nPesan dari client : %s \n",dtbuf);
z=write(clnt_sock,"pesan anda telah diterima
server",100);
if ( z == -1 )
err_status("write(2)");
56
Langkah pada Server
• Menutup koneksi
close(clnt_sock);
57
Tugas
• Buatlah program untuk melakukan komunikasi dua host
(bisa dalam 1 computer) dengan antarmuka socket TCP.
• Program bisa menggunakan Bahasa program apapun (C++,
Phyton, Matlab, Labview, dll).
• Berikan penjelasan pada setiap perintah program
• Berikan referensi yang digunakan.
• Dikumpulkan dengan di emailkan paling lambat tanggal 6
Mei 2020.
• Hasil yang dikumpulkan berupa dokumen hasil kode
program, penjelasan, serta screenshoot hasil running
program, serta hasil pengujiannya.
• Tugas dikumpul dalam bentuk file word, dilampiri kode
program.
TERIMA KASIH