Anda di halaman 1dari 24

Bab 2 – Bagian 2

Lapisan Aplikasi

Catatan Penggunaan:
Slide ini dibuat untuk dipergunakan secara bebas bagi semua pihak
(fakultas, peserta kuliah, pembaca). Berbentuk presentasi sehingga bisa
menampilkan animasi dan dapat menambahkan, mengubah dan
menghapus slide (termasuk halaman ini) dan isi slidenya untuk
menyesuaikan kebutuhan. Slide-slide ini merupakan karya kami. Dalam
penggunaannya, kami berharap anda melakukan hal berikut:
Computer
 Jika digunakan dalam kelas, sebutkanlah sumbernya. Bagaimanapun
kami ingin buku ini dipergunakan. Networking: A Top
 Jika mengunggah slide pada situs www, yang mengacu pada slide kami,
perhatikan hak cipta material ini. Down Approach
Terima kasih dan selamat menggunakan 7th edition
Jim Kurose, Keith Ross
All material copyright 1996-2016 Pearson/Addison Wesley
J.F Kurose and K.W. Ross, All Rights Reserved April 2016
Application Layer 2-1
Bab 2: Ikhtisar
2.1 Prinsip-prinsip 2.5 Aplikasi P2P
Aplikasi Jaringan 2.6 Pemrograman Soket
2.2 Web dan HTTP dengan UDP dan TCP
2.3 Surat Elektronik
• SMTP, POP3, IMAP
2.4 DNS

Application Layer 2-2


Pure P2P architecture
 tidak ada always-on
server
 sebarang end-system
saling berkomunikasi
langsung
• peers tidak selalu
terhubung dan dapat
berganti alamat IP
contoh:
• distribusi file (BitTorrent)
• Streaming (KanKan)
• VoIP (Skype)
Application Layer 2-3
File distribution: client-server vs P2P
T: berapa banyak waktu untuk mendistribusikan file (berukuran F) dari satu server
ke N peers?
• kapasitas peer untuk upload/download terbatas

us: kapasitas upload


server

u1 di: kapasitas download


file, ukuran F us d1 u2 peer i
d2
server
di
uN network (dengan
bandwidth berlimpah) ui
dN
ui: kapasitas upload
peer i

Application Layer 2-4


File distribution time: client-server
 transmisi server: harus secara
sekuensial mengirim (upload) F
us
dari N bagian file:
di
• waktu untuk kirim satu bagian: F/us
network
• waktu untuk kirim N bagian: NF/us ui

 klien: setiap klien harus unduh bagian


file
• dmin = kecepatan download min klien
• waktu download klien min: F/dmin

waktu untuk distribusi F


ke N klien menggunakanDc-s > max{NF/us,,F/dmin}
pendekatan klien-server

Application Layer
naik secara linier sesuai N2-5
File distribution time: P2P
• transmisi server: harus unggah
setidaknya satu bagian F
us
• waktu untuk kirim satu bagian:
di
 client:
F/us setiap klien harus unduh network
bagian file ui
• waktu minimum unduh: F/dmin
 clients: sebagai agregat harus unduh NF bits
• kecepatan maks unggah (membatasi kecepatan maks unduh)
adalah us + Sui
waktu distribusi F
ke N clients D
P2P > max{F/us,,F/dmin,,NF/(us + Sui)}
menggunakan P2P

naik secara linier sesuai N …


… begitu juga ini, karena peer mempunyai kapasitas service
Application Layer 2-6
klien-server vs. P2P: contoh
kecepatan unggah klien = u, F/u = 1 hour, us = 10u, dmin ≥ us

 Application Layer  2-7


P2P file distribution: BitTorrent
 file dipecah menjadi potongan-potongan (chunks) 256Kb
 peers pada torrent mengirim/menerima file chunks

tracker: melacak peers yang torrent: sekelompok peers


berpartisipasi di torrent yang saling bertukar chunks
sebuah file

Alice arrives …
… obtains list
of peers from tracker
… and begins exchanging
file chunks with peers in torrent

Application Layer 2-8


P2P file distribution: BitTorrent
• peer joining torrent:
• tidak punya chunks, tapi akan
mengakumulasi chunks dari peers
lainnya
• mendaftar ke tracker untuk
mendapat daftar peers, buat koneksi
ke subset dari peers (“neighbors”)

 ketika mengunduh, peer mengunggah chunks ke peers lainnya


 peer boleh berganti peers lain untuk bertukar chunks
 churn: peers boleh datang dan pergi
 ketika peer sudah memiliki file seluruhnya, peer bisa (egois)
pergi atau tetap berada di torrent
Application Layer 2-9
BitTorrent: requesting, sending file chunks

requesting chunks: sending chunks: tit-for-tat


 pada waktu tertentu, peers  Alice mengirim chunks ke
yang berbeda memiliki chunk empat peers teratas yang sedang
subset yang berbeda dari file mengiriminya chunks pada
kecepatan tertinggi
 secara periodik, Alice • peers yang lainnya di-pending
bertanya ke setiap peer daftar (choked) oleh Alice (tidak
chunk yang mereka miliki menerima chunks dari Alice)
• top 4 dievaluasi setiap 10 detik
 Alice request chunk yang
belum dimilikinya dari peers,  setiap 30 detik: secara random
dari yang paling jarang dulu memilih peer yang lain, mulai
mengirim chunks
• “optimistically unchoke” peer ini
• peer yang baru dipilih dapat join
top 4
Application Layer 2-10
BitTorrent: tit-for-tat
(1) Alice “optimistically unchokes” Bob
(2) Alice menjadi salah satu dari 4 besar provider bagi Bob; Bob resiprokasi
(3) Bob menjadi salah satu dari 4 besar provider bagi Alice

semakin tinggi kecepatan


upload: menemukan partner
yang lebih baik, file lebih cepat
Application Layerdidapat! 2-11
Bab 2: Ikhtisar
2.1 Prinsip-prinsip 2.5 Aplikasi P2P
Aplikasi Jaringan 2.6 Video Streaming dan
2.2 Web dan HTTP Content Distribution
2.3 Surat Elektronik Networks
• SMTP, POP3, IMAP 2.7 Pemrograman Socket
2.4 DNS dengan UDP dan TCP

Application Layer 2-25


Socket programming
tujuan: mempelajari bagaimana membangun aplikasi
klien/server yang berkomunikasi menggunakan socket
socket: pintu antara proses pada aplikasi dan protokol end-end-
transport

application application
socket dikontrol oleh
process process app developer

transport transport
network network dikontrol
link
oleh OS
link Internet
physical physical

Application Layer 2-26


Socket programming
Dua tipe socket untuk dua layanan transport:
• UDP: unreliable datagram
• TCP: reliable, byte stream-oriented

Contoh Aplikasi:
1. client membaca sebuah baris karakter (data) dari
keyboard dan mengirimkan data ke server
2. server menerima data dan mengkonversi karakter
menjadi uppercase (huruf kapital)
3. server mengirim data yang telah dimodifikasi ke
client
4. client menerima data yang telah dimodifikasi dan
menampilkan baris tersebut di layar
Application Layer 2-27
Socket programming dengan UDP
UDP: tidak ada “connection” antara klien & server
 tidak ada handshaking sebelum mengirim data
 pengirim secara eksplisit menyertakan alamat IP dan
nomor port tujuan ke setiap paket
 penerima memilah alamat IP dan nomor port dari paket
yang diterima
UDP: data yang ditransmisikan mungkin hilang
atau diterima dengan urutan yang tidak benar
sudut pandang aplikasi:
 UDP menyediakan unreliable transfer sekelompok bytes
(“datagrams”) antara klien dan server

Application Layer 2-28


Interaksi socket klien/server: UDP

server (running on serverIP) client


buat socket:
buat socket, port= x: clientSocket =
serverSocket = socket(AF_INET,SOCK_DGRAM)
socket(AF_INET,SOCK_DGRAM)
Buat datagram dengan IP server dan
port=x; kirim datagram via
baca datagram dari clientSocket
serverSocket

tulis reply ke
baca datagram dari
serverSocket
clientSocket
tentukan alamat client,
nomor port tutup
clientSocket

Application 2-29
Contoh app: klien UDP
Python UDPClient
memasukkan socket
library Python from socket import *
serverName = ‘hostname’
serverPort = 12000
membuat socket UDP clientSocket = socket(AF_INET,
untuk server
SOCK_DGRAM)
dapatkan input dari keyboard
user message = raw_input(’Input lowercase sentence:’)
Cantumkan nama server, clientSocket.sendto(message.encode(),
port ke pesan; masukkan
ke socket (serverName, serverPort))
baca karakter balasan dari modifiedMessage, serverAddress =
socket masukkan menjadi
string clientSocket.recvfrom(2048)
tampilkan string yang print modifiedMessage.decode()
diterima dan tutup socket
clientSocket.close()
Application Layer 2-30
Contoh app: server UDP
Python UDPServer
from socket import *
serverPort = 12000
buat socket UDP serverSocket = socket(AF_INET, SOCK_DGRAM)
bind socket ke nomor port
lokal 12000
serverSocket.bind(('', serverPort))
print (“The server is ready to receive”)
loop selamanya while True:
Baca socket UDP dan
masukkan pesan,
message, clientAddress = serverSocket.recvfrom(2048)
dapatkan alamat client (IP modifiedMessage = message.decode().upper()
dan port client)
kirim kembali upper case serverSocket.sendto(modifiedMessage.encode(),
string ke client clientAddress)

Application Layer 2-31


Socket programming dengan TCP
klien harus menghubungi server • ketika dihubungi klien, server
 server process harus running TCP membuat socket baru
terlebih dahulu untuk server process agar
 server harus membuat socket dapat berkomunikasi dengan
(pintu) untuk menyambut client tersebut
panggilan client • mengijinkan server untuk
berkomunikasi dengan
client menghubungi server beberapa klien
dengan cara: • nomor port sumber untuk
 membuat socket TCP, tentukan membedakan klien (lebih
alamat IP, nomor port dari server detail di Bab 3)
process
 ketika klien membuat socket: application viewpoint:
klien TCP membangun koneksi TCP menyediakan reliable, in-order
ke server TCP byte-stream transfer (“pipe”)
antara klien dan server
Application Layer 2-32
Interaksi socket klien/server: TCP
server (running on hostid) client
buat socket,
port=x, untuk request
yang datang:
serverSocket = socket()

tunggu connection request buat socket,


datang
TCP
connect ke hostid, port=x
connectionSocket = connection setup clientSocket = socket()
serverSocket.accept()

kirim request menggunakan


baca request dari clientSocket
connectionSocket

tulis balasan ke
connectionSocket baca balasan dari
clientSocket
tutup
connectionSocket tutup
clientSocket

Application Layer 2-33


Contoh app: klien TCP
Python TCPClient
from socket import *
serverName = ’servername’
buat socket TCP untuk serverPort = 12000
server, remote port 12000
clientSocket = socket(AF_INET, SOCK_STREAM)
clientSocket.connect((serverName,serverPort))
sentence = raw_input(‘Input lowercase sentence:’)
Tidak perlu clientSocket.send(sentence.encode())
menyantumkan nama
server, port modifiedSentence = clientSocket.recv(1024)
print (‘From Server:’, modifiedSentence.decode())
clientSocket.close()

Application Layer 2-34


Contoh app: server TCP
Python TCPServer
from socket import *
buat socket TCP untuk
serverPort = 12000
menyambut serverSocket = socket(AF_INET,SOCK_STREAM)
serverSocket.bind((‘’,serverPort))
server mulai
mendengarkan TCP
serverSocket.listen(1)
requests datang print ‘The server is ready to receive’
loop selamanya while True:
server menunggu accept() connectionSocket, addr = serverSocket.accept()
untuk requests yang datang,
socket yang baru dibuat
sebagai hasilnya
sentence = connectionSocket.recv(1024).decode()
baca bytes dar socket
(tanpa alamat seperti di capitalizedSentence = sentence.upper()
UDP)
tutup koneksi ke client
connectionSocket.send(capitalizedSentence.
(tapi socket untuk encode())
menyambut tidak ditutup)
connectionSocket.close()
Application Layer 2-35
Chapter 2: Ringkasan
Pelajaran tentang aplikasi berbasis jaringan sudah selesai!
 arsitektur aplikasi  protokol spesifik:
• client-server • HTTP
• P2P • SMTP, POP, IMAP
 kebutuhan layanan aplikasi: • DNS
• reliability, bandwidth, delay • P2P: BitTorrent
 model layanan transport Internet  socket programming:
• connection-oriented, reliable:
TCP TCP, UDP sockets
• unreliable, datagrams: UDP

Application Layer 2-36


Chapter 2: summary
yang paling penting: belajar tentang protokol!

• umumnya pertukaran pesan tema penting:


request/reply:
• client requests info atau  control vs. messages
service • in-band, out-of-band
• server merespon data,  centralized vs. decentralized
status code
 stateless vs. stateful
• format pesan:
• headers: fields  reliable vs. unreliable
memberikan info tentang message transfer
data  “kompleksitas pada edge-
• data: info(payload) yg network”
dikomunikasikan

Application Layer 2-37

Anda mungkin juga menyukai