Transport Layer
n n n n
Goal: menyediakan layanan yang efisien, reliable, dan cost-effective kepada user-nya (proses di application layer) Provide a reliable service on top of an unreliable network Transport Entity menyediakan service dan interface-nya untuk aplikasi Layer yang bekerja di user side Memungkinkan detil network menjadi transparan bagi application programmer Menyediakan juga layanan (connectionless) datagram yang unreliable: untuk client-server dan streaming
2
Transport Layer
n n n n
Transport Layer
n n n n
TCP UDP
n
3
TCP UDP
Masalah Performansi
Masalah Performansi
4
Layanan
n
Layanan
n
Ada 2:
n n
Connection Oriented Connectionless Kode transport dijalankan di mesin user, sedang network layer di router (yang dioperasikan oleh penyedia layanan koneksi) Transport layer menutupikekurangan di network layer (packet loss, router crash)
Layer 1-4: Transport Service Provider Layer di atas 4: Transport Service User
Tetapi:
n
Pembedaan ini sangat mempengaruhi rancangan layer dan menempatkan transport layer di posisi penting, karena membentuk pembatas utama antara provider dan user dari layanan transmisi data yang reliable
6
Layanan
n n n n n
Server mengeksekusi LISTEN Ketika client ingin berkomunikasi, mengeksekusi CONNECT mengirim CON REQ TPDU Jika server berada dalam LISTEN, unblock server dan kirim balik CON ACC TPDU Perukaran data dengan SEND dan RECEIVE Ketika koneksi sudah tidak dibutuhkan, eksekusi DISCONNECT kirim DISC TPDU
TPDU
n n
Italic: Transisi karena kedatangan paket Solid line: Status client Dashed Line: Status server
10
Berkeley Socket
n
Berkeley Socket
n
11
12
Transport Layer
n n n n
TCP UDP
Masalah Performansi
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
14
Lingkungan
Transport protocol mirip data link protocol Keduanya berurusan dengan error control, sequencing dan flow control Perbedaan utama karena berbedanya lingkungan operasi protokolnya
n
Pada data link layer, 2 router berkomunikasi langsung lewat sebuah physical layer Pada transport layer, seolah-olah physical layer ini digantikan oleh subnet 15
(b) Transport
16
Perbedaan
n
Route: pada transport layer, diperlukan explicit addressing dari destination Connection Establishment:
n n
Sangat sederhana jika lewat wire Pada transport layer hal ini lebih rumit
Ada kemungkinan tempat penyimpanan sementara di subnet (di wire tidak ada) Buffering dan Flow Control berbeda:
n
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
18
Addressing
n
n
Addressing
TSAP Addresses
Stable:
n n
Setiap server mendengarkan TSAP yang dikenal Untuk layanan yang tidak pernah berubah (misal Web Server) Untuk user process yang sering berkomunikasi dengan user process lain yang muncul hanya sebentar dan tidak punya TSAP address yang dikenal sebelumnya Skema:
n
Not stable:
n
19
Initial:setiap mesin yang menawarkan layanan memiliki special process server sebagai proxy Directory server: ketika sebuah layanan baru dibentuk harus , mendaftarkandirinya ke directory server yang akan memberikan nama layanan dan TSAP
20
Connection Establishment
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
21 22
Connection Establishment
n
Connection Establishment
n
Cukup dengan mengirimkan CONNECTION REQUEST TPDU ke destination dan menunggu CONNECTION ACCEPTED? TIDAK! Problem:
n n
Solusi lain:
n
Packet lost Traffic jam (+packet delayed duplication) Gunakan throw-away transport address (dibuat saat diperlukan ) Connection identifier, kekurangan: informasi history sangat besar dan akan hilang jika crash
Solusi:
n
Tiap host punya time-of-day clock Sejumlah bit (low-order) dari clock dipakai sebagai nomor urut initial Koneksi harus dibentuk sebelumnya
24
23
Solusi lain
n n
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
26
Connection Release
n
Abrupt Disconnection
Asimetrik:
n n
Saat satu pihak menutup, koneksi terputus Kasar/mendadak dan mungkin menyebabkan data loss (data belum sampai lengkap , sudah putus) Menganggap koneksi sebagai 2 koneksi searah dan harus dilepaskan secara terpisah Host bisa masih menerima data setelah host tsb mengirim DISCONNECT TPDU
Simetrik:
n
27
28
Connection Release
n
Problem 2 pasukan
Situasi lain:
n
Protokol: Saya sudah selesai, anda sudah juga? Jika jawaban = Ya. Koneksi bisa diputus (?) Problem:
n
Berapa yang diperlukan: 2,3,4 atau lebih handshake protocol? Ganti disconnect dengan serang. Jika tidak ada yang disconnect jike belum yakin yang lain siap disconnect juga, maka tidak akan pernah disconnect
29 30
3-way protocol
n
3-way
4 skenario: (a) Normal (b) Final ACK hilang (c) Respons hilang (d) Respons dan DR berikutnya hilang
31 32
n n
Untuk kasus 2 pasukan, berapapun tidak akan cukup, karena tidak akan pernah yakin Kasus disconnection tidak sekritis perang 3-way dianggap cukup dengan tambahan timeout
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
33
Sama: skema sliding window atau yang lain diperlukan untuk setiap koneksi untuk menjaga transmitter yang cepat tidak overrun receiver lambat Beda: sebuah router biasanya punya line sedikit, sedang host mungkin banyak (relatif). Perbedaan ini menyebabkan tidak bisa dilakukannyapenerapan strategi buffering di datalink kepada transport layer
n n n
Jika network unreliable, sender harus mem-buffer semua TPDU yang dikirimkan. Jika network reliable, buffer bisa di receiver saja Masalah: penentuan ukuran buffer (vs. TPDU)
34
Ukuran buffer
n
Buffering
Pilihan optimal antara buffer sender dan buffer receiver ditentukan jenis koneksi
n
Low bandwidth, bursty (interactive terminal) -> buffer sender High bandwidth, file transfer -> buffer receiver
Alokasi buffer di receiver bisa dilakukan secara dinamis berdasar permintaan sender dengan TPDU terpisah untuk request buffer
36
Flow Control
n
Walaupun masalah buffer (diasumsikan) tidak ada (unlimited buffer), masih terdapat masalah bottleneck yaitu carrying capacity dari subnet Flow control pada sender harus berbasis pada kapasitas subnet Belsnes mengusulkan skema flow control dengan sliding windows. Ukuran windows dinamis sesuai kapasitas subnet
37
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
38
Multiplexing
n
Multiplexing
Upward Multiplexing: sejumlah koneksi transport berbeda ke dalam sebuah koneksi network Downward Multiplexing: sebuah koneksi transport mendistribusikan lalu lintas data ke sejumlah koenksi network, misal untuk meningkatkan bandwidth
39 40
Crash Recovery
n n
Addressing Connection Establishment Connection Release Flow Control dan Buffering Multiplexing Crash Recovery
41
Crash bisa terjadi pada host dan router. Jika transport entity berada sepenuhnya dalam host, recovery dari network dan router crash bisa langsung
n
Jika network layer menyediakan layanan conectionless (datagram), kehilangan TPDU adalah hal yang biasa Jika network layer menyediakan layanan connectionoriented, VC yang hilang ditangani dengan membuat VC baru dan probing ke remote transport entity mana yang sudah diterima mana yang belum. Yang belum akan diretransmisi
42
Crash Recovery
n
Crash Recovery
n
Masalah utama pada host (server) crash. Diinginkan jangan sampai mengganggu pekerjaan user (client), berkaitan dengan status sebelum crash.
n
Solusi nave: Server minta host lain menanyakan ke client statusnya apakah :
n n
S1: one TPDU outstanding -> retransmit recent TPDU S0: no TPDU outstanding
Ada 2 operasi: write TPDU dan send ack yang saling terpisah yang bisa menyebabkan recovery gagal
43
Dari sisi server ada 2 kemungkinan: ACK first atau Write first Dari sisi client ada 4 kemungkinan: selalu retransmit TPDU terakhir, tidak pernah retransmit, retramsnit jika status S0, retransmit jika status S1. Ada 8 kombinasi tetapi ada beberapa yang menyebabkan protocol fail
44
Crash Recovery
n
Crash Recovery
n
Strategi:
Secara umum, recovery untuk crash di layer N hanya bisa dilakukan di layer N+1 Dengan syarat bahwa layer N+1 memiliki informasi yang cukup untuk melakukan recovery Misal: Transport layer bisa recover crash di network jika kedua pihak yang berkomunikasi tahu di mana terjadinya crash
46
45
Transport Layer
n n n n
TCP UDP
Sebuah contoh transport layer sederhana untuk pembahasan lebih detil Primitif Layanan yang dibahas adalah untuk connection-oriented Mirip dengan TCP namun lebih sederhana
Masalah Performansi
47 48
Primitives
n
5 primitives: CONNECT, LISTEN, DISCONNECT, SEND dan RECEIVE Setiap primitive berkaitan dengan sebuah library procedure yang mengeksekusinya Parameter untuk primitives dan library adalah sb:
n n n n n
Connum = LISTEN(local) Connum = CONNECT(local, remote) Status = SEND(connum, buffer, bytes) Status = RECEIVE(connum, buffer, bytes) Status = DISCONNECT(connum)
49
LISTEN: memberitakan keinginan caller (procedure call) untuk menerima request koneksi ke local TSAP tertentu CONNECT: mencoba establish transport connection antara local TSAP dan remote TSAP (di sisi seberang). Jika sukses connum > 0 menandakan identifier koneksi. Jika gagal connum < 0 menandakan sebab kegagalan. Misal remote TSAP sudah terkoneksi dengan TSAP lain.
50
Primitives
n
n n
SEND: mengirim isi buffer sebagai message dalam transport connection connum. Kemungkinan error/kegagalan dikembalikan dalam status, misalnya: no connection, illegal buffer address, atau negative count. RECEIVE: keinginan caller menerima data. DISCONNECT: teminate transport connection yang diindikasikan dengan connum. Jika berhasil status = 0. Kemungkinan error: connum tidak valid
51
Menggunakan layanan connection-oriented yang reliable (dari layer network) Fokus pada masalah transport yang tidak muncul di layer bawah
n n n
Transport entity bisa merupakan bagian dari SO host, atau bisa berupa paket library yang dijalankan di dalam user address space
52
Interface ke layer network melalui procedure to_net dan from_net Memiliki 6 parameter:
n n n n n n
Jenis paket
Connection identifier Bit Q (control message) Bit M (more data following) Packet type Pointer ke data Ukuran data (jumlah bye)
53
54
n n n n n
IDLE: tidak adakoneksi WAITING: sudah eksekusi CONNECT dan CALL REQUEST telah dikirim QUEUED: CALL REQUEST telah tiba, belum ada LISTEN ESTABLISHED: koneksi terbentuk SENDING: user menunggu untuk mengirim paket RECEIVING: Sebuah RECEIVE telah dilakukan DISCONNECTING: Sebuah DISCONNECT telah dilakukan lokal
55
Eksekusi sebuah primitif Packet datang Time expires Callable by user program Spontaneus triggered by external events: packet_arrival, clock
56
Type procedure:
n n
Transport Layer
n n n n
UDP TCP
n
57
Masalah Performansi
58
UDP
n
Protokol Connectionless Internet dalam transport layer UDP pada dasarnya hanya IP dengan tambahan header singkat UDP memungkinkan aplikasi mengirim IP datagram yang dienkapsulasi dan dikirim tanpa perlu establish conection Dijelaskan di RFC 768
59
UDP mengirim segmen-segmen data berisi header 8 byte diikuti payload Header UDP
60
10
UDP
n
UDP tidak melakukan flow control, error control, atau retransmisi jika menerima bad segment. Semuanya tergantung user process. UDP hanya menyediakan interface ke protokol IP dengan tambahan demultiplexing banyak proses yang menggunakan port. UDP useful untuk situasi client-server (short request replied by short answer) Aplikasi: DNS (IP address lookup)
61
Memungkinkan program memanggil procedure yang berada di remote host(s) Saat proses di M1 call procedure di M2, proses tersebut di-suspend dan eksekusi procedure dilakukan di M2
n
Informasi bisa ditransport dari caller ke callee dalam parameter dan bisa dikembalikan sebagai procedure result Tidak ada message passing yang visible bagi programmer
62
RPC
n
RPC
Dalam bentuk paling sederhana, untuk memanggil remote procedure, program client memiliki library yang disebut client stub yang mewakili server procedure di address space client Server juga memiliki server stub yang membuat seolah-olah call dari client adalah local
63 64
RPC
n
Problem:
n
n n
Passing parameter tidak mungkin dilakukan karena client dan server berada di address space yang berbeda Tidak ada cara menspesifikasikan ukuran array Tidak selalu dapat mendeduksi type parameter (baik dari spesifikasi formal maupun dari code) Penggunaan variabel global Perlu dilakukan pembatasan (restriksi)
n n
Solusi:
n 65
RFC 1889 Fungsi utama RTP adalah multiplex sejumlah data stream real-time ke dalam satu stream paket UDP Stream USP bisa unicasting atau multicasting
66
11
RTP
Transport Layer
n n n n
UDP TCP
(a) (b)
n
67
Masalah Performansi
68
TCP
n
TCP Entity
n
Untuk aplikasi internet umumnya diperlukan delivery yang reliable dan terurut digunakan TCP TCP dirancang spesifik untuk menyediakan byte stream yang reliable di atas internetwork yang unreliable TCP dirancang untuk bisa beradaptasi dengan berbagai properti internetwork dan robust terhadap bermacam failure RFC 793, 1122, dan 1323
69
n n
Entity mengelola stream TCP dan interface dengan layer IP Entity menerima user data stream dari local process, memecah menjadi potongan-potongan lebih kecil dari 64KB (1460B jika menggunakan ethernet) dan mengirim masing-masing potongan lewat IP
70
TCP Entity
n
Ketika paket IP berisi TCP data tiba di mesin tujuan, diberikan ke TCP entity yang kemudian merekonstruksi byte stream TCP bisa berarti:
n n
n
71
Layanan TCP didapatkan sender dan receiver dengan membentuk end-point yang disebut socket Tiap socket punya nomor (address) berisi IP address host dan 16-bit nomor port (lokal) Port adalah nama TCP untuk TSAP
72
12
Port
n n
Koneksi harus terbentuk antara socket di mesin pengirim dan penerima Socket bisa digunakan untuk multiple connection bersamaan. 2 atau lebih koneksi bisa berujung di soket yang sama Koneksi diidentifikasi berdasarkan indentifier socket di kedua ujung. Tidak ada nomor VC atau identifier lain yang digunakan
73
n n n
Nomor port di bawah 1024 disebut well-known port dan di-reserve untuk layanan standar Nomor port yang bisa dipakai antara 1024 hingga 65535 FTP port 21 List port di www.iana.org
Contoh, web server mendengarkan port 80 untuk request dari clients (browsers). Ketika client ingin membentuk koneksi dengan server socket, client is diberi nomor port oleh local host. Misal client X (d i IP address 146.86.3.15) ingin browse web page d i server 146.86.5.20. Jika client X diberi port 12345, koneksi antara client dan server diidentifikasi sebgai pasangan socket <146.86.3.15 : 12345, 146.86.5.20 : 80> 74
Protokol TCP
n n
Semua koneksi TCP adalah full-duplex dan pointto-point. TCP tidak mendukung Muticasting atau Broadcasting Koneksi TCP adalah byte stream, bukan message stream.
n
Setiap byte dalam koneksi TCP memiliki nomor urut 32 bit TCP entity mempertukarkan data dalam bentuk segmen. Segmen TCP berisi fixed 20-byte header (+optional) diikuti data 2 limit pembatasan ukuran segmen:
n n
Jika pengirim menulis 4 x 512 bite ke TCP stream, data ini bisa dideliver sebagai 4 x 512, 2 x 1024, atau sebuah 2048, atau yang lain. Penerima tidak bisa mendeteksi besar unit penulisan data
75
Segmen termasuk header harus cukup di IP payload (65.515 byte = 65.535 - 20) Setiap network punya Maximum Transfer Unit (MTU) dan setiap segmen harus cukup di MTU. Pada prakteknya MTU umumnya 1500 bytes (Ethernet payload)
76
Protokol TCP
n
Ketika sender transmit segmen, timer dinyalakan Ketika segmen tiba di tujuan, penerima mengirim balik segmen (dengan data jika ada ) berisi juga nomor ack (sama dengan nomor urut berikutnya yang ditunggu, increment 1) Jika timer terlewati sebelum ack diterima, sender retransmit segmen
77 78
13
Menggunakan 3-way handshake Untuk membentuk koneksi, satu pihak akan pasif menunggu koneksi dengan LISTEN dan ACCEPT, tanpa menentukan siapapun Sisi lain mengeksekusi CONNECT beserta IP address dan port yang ingin dikoneksi, max TCP segment size, dan data optional lain (misal password)
79
Primitive CONNECT mengirim segmen TCP dengan SYN=on dan ACK=off dan menunggu respon Di destination, TCP entity memeriksa apakah ada proses yang sudah LISTEN ke port dimaksud.
n
Jika tidak dikirim jawaban dengan RST=on untuk menolak koneksi Jika ada proses listen, proses diberi TCP segmen . Proses bisa menolak atau menerima koneksi. Jika diterima, segmen ACK dikirimkan
80
(a) Normal
Setiap koneksi simplex dilepaskan secara independen Untuk melepaskan koneksi, sembarang pihak bisa mengirim segmen TCP dengan bit FIN=1, yang berarti tidak ada data lagi yang ingin dikirimkan Ketika FIN di-ack, koneksi arah tersebut terputus. Data masih bisa mengalir di arah yang lain. Ketika kedua arah telah diputus, maka koneksi baru dilepaskan
82
Normalnya, 4 segmen TCP diperlukan untuk melepaskan koneksi. Satu FIN dan satu ACK untuk masing-masing arah Untuk mengindari problem 2 pasukan, digunakan timer
83
84
14
Masing-masing menggambarkan jumlah byte yang boleh dikirim sender, dicari yang paling rendah (minimum) Menggunakan treshold (ambang batas). Ketika terjadi timeout, treshold diset setengah dari current congestion window dan congestion window di-reset ke satu maximum segmen
85
(a) A fast network feeding a low capacity receiver. (b) A slow network feeding a high-capacity receiver.
86
Wireless TCP
n
Secara teori:
n
Retransmission timer: menunggu ACK Persistence timer: mencegah deadlock Keepalive timer: idle sebelum disconnect
Transport protocol harus independen terhadap teknologi network layer di bawahnya TCP tidak peduli apakah IP dijalankan , misalnya, di Fiber atau lewat radio Kebanyakan implementasi TCP telah dioptimasi berdasar asumsi yang berlaku untuk wired network, tetapi tidak berlaku untuk wireless Kehilangan paket adalah penyebab utama terjadinya timeout
88
Pada prakteknya:
n
87
Wireless TCP
n
Wireless TCP
n
Hampir semua implementasi TCP berasumsi bahwa timeout terjadi karena congestion bukan karena kehilangan paket Konsekuensinya, ketika timeout, TCP memperlambat dan mengurangi laju pengiriman Idenya adalah dengan mengurangi network load maka congestion akan bisa dikurangi
89
Kehilangan paket sangat sering, hampir selalu terjadi Pendekatan paling cocok untuk kehialngan paket adalah mengirim ulang paket secepatnya Memperlambat malah akan memperburuk keadaan Pengambilan keputusan oleh sender jarang bisa dilakukan karena heterogenitas network
90
15
Indirect TCP
n
Indirect TCP
n n n
Solusi yang diajukan oleh Bakne dan Badrinath (1995) Membagi koneksi TCP menjadi 2 koneksi terpisah
Koneksi 1: dari sender ke base station Koneksi 2: dari base station ke receiver Kedua koneksi menjadi homogen
n n
91
92
Transactional TCP
n
T/TCP
Sebuah cara mengkombinasikan efisiensi RPC menggunakan UDP dan reliability dari TCP Merupakan varian eksperimen dari TCP (RFC 1379 dan 1644) Ide: Memodifikasi sedikit setup koneksi standar untuk memungkinkan transfer data selama setup Proposal lain adalah SCTP (Stream Control Transmission Protocol):
(a)
93
(b)
94
Performansi
n
Aturan 1: Kecepatan CPU (termasuk I/Onya) lebih penting daripada kecepatan network Aturan 2: Kurangi jumlah paket untuk mengurangi overhead software (pemrosesan TPDU) Aturan 3: Minimalkan perpindahan konteks (misal dari kernel ke user mode) Aturan 4: Minimalkan penyalinan (copy)
95
Aturan 5: Bandwidth tambahan bisa dibeli, tetapi pengurangan delay tidak bisa Aturan 6: Menghindari Congestion lebih baik daripada mengobati Aturan 7: Hindari timeout, gunakan hanya untuk keadaan darurat
96
16
APPLICATION LAYER
n
Next
Buat 18 kelompok, masing-masing kelas 9 kelompok Buatlah makalah dan presentasi untuk 9 topik di network security:
n n n n n n n n n
n 97 n
Cryptography Symmetric Key Public Key Digital Signature Public Key Management Communication Security Authentication Protocol E-mail security Web security
98
17