- 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)
- Dilakukan pembedaan OSI layer
- Layer 1-4: Transport Service Provider
- Layer di atas 4: Transport Service User
- 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
- 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
- Italic: Transisi ( karena kedatangan paket)
- Solid line: Status client
- Dashed Line: Status server
Berkeley Socket
Digunakan pada Berkeley UNIX untuk TCP Internet programming
Element:
• Connection Establishment
• Connection Release
• Flow Control dan Buffering
• Multiplexing
• Crash Recovery
- Transport protocol mirip data link protocol
- Keduanya berurusan dengan error control,sequencing dan flow control
- Perbedaan utama karena berbedanya lingkungan operasi protokolnya
- Pada data link layer, 2 router berkomunikasi langsung lewat sebuah physical layer
- Pada transport layer, seolah-olah physical layer ini digantikan oleh subnet
Perbedaan :
- Route: pada transport layer, diperlukan explicit addressing dari destination
- Connection Establishment:
- 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:
- Jumlah koneksi yang banyak dan bervariasi
- Stable:
- Setiap server mendengarkan TSAP yang dikenal
- Untuk layanan yang tidak pernah berubah (misal Web Server)
- Not stable:
- Untuk user process yang sering berkomunikasi dengan user process lain yang muncul hanya sebentar dan tidak punya TSAP address yang dikenal sebelumnya
- Skema:
- 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
- Cukup dengan mengirimkan CONNECTION REQUEST TPDU ke destination dan menunggu CONNECTION ACCEPTED? TIDAK!
- Problem:
- Packet lost
- Traffic jam (+packet delayed duplication)
- Solusi:
- Gunakan throw-away transport address (dibuat saat diperlukan )
- Connection identifier, kekurangan: informasi history sangat besar dan akan hilang jika crash
- Solusi lain:
- Pembatasan lifetime packet:
- Restricted subnet
- Hop counter
- Timestamp
- Jika mesin kehilangan isi memory:
- Clock-Based (Tomlinson):
- Tiap host punya time-of-day clock
- Sejumlah bit (low-order) dari clock dipakai sebagai nomor urut initial
- Koneksi harus dibentuk sebelumnya
- Problem: Incorrect Connection Establishment
- Solusi: 3-way handshake (Tomlinson)
Connection Release
- Asimetrik:
- Saat satu pihak menutup, koneksi terputus
- Kasar/mendadak dan mungkin menyebabkan data loss (data belum sampai lengkap , sudah putus)
- Simetrik:
- Menganggap koneksi sebagai 2 koneksi searah dan harus dilepaskan secara terpisah
- Host bisa masih menerima data setelah host tsb mengirim DISCONNECT TPDU
Situasi lain:
- Protokol: Saya sudah selesai, anda sudah juga? Jika jawaban = Ya. Koneksi bisa diputus (?)
- Problem:
- Problem 2 pasukan tentara:
- 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
- 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
4 skenario:
(a) Normal
(b) Final ACK hilang
(c) Respons hilang
(d) Respons dan DR berikutnya hilang
Flow Control dan Buffering
- Transport vs. Datalink layer:
- Sama: skema sliding window atau yang lain diperlukan untuk setiap koneksi untuk menjaga transmitter yang cepat tidak overrun receiver lambat
- Beda: sebuah router biasanyapunya line sedikit, sedang host mungkin banyak (relatif). Perbedaan ini menyebabkan tidak bisa dilakukannyapenerapan strategi buffering di datalink kepada transport layer
- 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)
- Pilihan optimal antara buffer sender dan buffer receiver ditentukan jenis koneksi
- 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
- 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
- Digunakan untuk mengoptimalkan penggunaan koneksi
- Ada 2 macam:
- 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
Crash Recovery
- Crash bisa terjadi pada host dan router.
- Jika transport entity berada sepenuhnya dalam host, recovery dari network dan router crash bisa langsung
- 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 manayang sudah diterima manayang belum. Yang belum akan diretransmisi
- Masalah utama pada host (server) crash.Diinginkan jangan sampai mengganggu pekerjaan user (client), berkaitan dengan status sebelum crash.
- Solusi naïve: Server minta host lain menanyakan ke client statusnya apakah :
- 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
- 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
- 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
- Sebuah contoh transport layer sederhana untuk pembahasan lebih detil
- Primitif Layanan yang dibahas adalah untuk connection-oriented
- Mirip dengan TCP namun lebih sederhana
- 5 primitives: CONNECT, LISTEN, DISCONNECT,SEND dan RECEIVE
- Setiap primitive berkaitan dengan sebuah library procedure yang mengeksekusinya
- Parameter untuk primitives dan library adalah sb:
- Connum= LISTEN(local)
- Connum= CONNECT(local, remote)
- Status = SEND(connum, buffer, bytes)
- Status = RECEIVE(connum, buffer, bytes)
- Status = DISCONNECT(connum)
- 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. Misalremote TSAP sudah terkoneksi dengan TSAP lain.
- 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
- Menggunakan layanan connection-oriented yang reliable (dari layer network)
- Fokus pada masalah transport yang tidak muncul di layer bawah
- Connection establishment
- Connection release
- Credit management
- Transport entity bisa merupakan bagian dari SO host, atau bisa berupa paket library yang dijalankan di dalam user address space
- Interface ke layer network melalui procedure to_net dan from_net
- Memiliki 6 parameter:
- Connection identifier
- Bit Q (control message)
- Bit M (more data following)
- Packet type
- Pointer ke data
- Ukuran data (jumlah bye)
- Setiap koneksiakan berada di salah satu dari 7 status sbb:
- 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
- Perubahan status terjadi karena 3 sebab:
- Eksekusi sebuah primitif
- Packet datang
- Time expires
- Type procedure:
- Callable by user program
- Spontaneus triggered by external events: packet_arrival, clock
- 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
- UDP mengirim segmen-segmen data berisi header 8 byte diikuti payload
- Header UDP
- 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)
- 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
- Informasi bisa ditransport dari caller ke callee dalam parameter dan bisa dikembalikan sebagai procedure result
- Tidak ada message passing yang visible bagi programmer
- Ide: membuat sebuah RPC terlihat sebagai local
- 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
- Problem:
- Passing parameter tidak mungkin dilakukan karena client dan server berada di address space yang berbeda
- Tidak ada cara menspesifikasikan ukuran array
- Tidak selalu dapat mendeduksitype parameter (baik dari spesifikasiformal maupun dari code)
- Penggunaan variabel global
- Solusi:
- Perlu dilakukan pembatasan (restriksi)
- Digunakan pada aplikasi multimedia real-time:
- Internet Radio
- Internet Telephony
- Music on demand
- Videoconferencing
- Video on demand
- RFC 1889
- Fungsi utama RTP adalah multiplex sejumlah data stream real-time ke dalam satu stream paket UDP
- Stream USP bisa unicasting atau multicasting
(a) posisi RTP dalam protocol stack
(b) packet nesting
TCP
- 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 beradaptasidengan berbagai properti internetwork dan robust terhadap bermacam failure
- Tiap mesin yang mendukung TCP memiliki transport entity berupa:
- Library procedure
- User process
- Bagian dari kernel OS
- 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
- Ketika paket IP berisi TCP data tiba di mesin tujuan, diberikan ke TCP entity yang kemudian merekonstruksi byte stream
- TCP bisa berarti:
- TCP transport entity (software)
- TCP protocol (aturan/rules)
- 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
- 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
- Semua koneksi TCP adalah full-duplex dan pointto Point-to-point
- TCP tidak mendukung Muticasting atau Broadcasting
- Koneksi TCP adalah byte stream, bukan message stream.
- 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
- 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:
- Segmen termasuk header harus cukup di IP payload (65.515 byte = 65.535 - 20)
- Setiap network punyaMaximum Transfer Unit (MTU) dan setiap segmen harus cukup di MTU. Pada prakteknya MTU umumnya 1500 bytes (Ethernet payload)
- Protokol yang dipakai TCP pada dasarnya adalah sliding window
- 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 terlewatisebelum ack diterima, sender retransmit segmen
- 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)
- 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.
- 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
(a) Normal (b) Call collision
- Setiap koneksisimplex dilepaskan secara independen
- Untuk melepaskan koneksi, sembarang pihak bisa mengirim segmen TCP dengan bit FIN=1, yang berarti tidakada 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
- Normalnya, 4 segmen TCP diperlukan untuk melepaskan koneksi. Satu FIN dan satu ACK untuk masing-masing arah
- Untuk mengindari problem 2 pasukan,digunakan timer