Transport Layer
Tujuan • Mengirimkan data dari Aplication Layer pada suatu kesatuan ke kesatuan lainnya pada layer yang sama • Menghubungkan antara lapis protokol Aplication layer dan network layer
Tugas • • • •
Menyusun paket Membuat koneksi Pengalamatan Menyediakan keandalan
Packetizing Tugas utama layer ini adalah memecah sebuah data yang berukuran besar menjadi beberapa buah fragmen kecil, agar bisa ditransmisikan dengan mudah. Alasan sebuah data dipecah-pecah menjadi fragmen-fragmen adalah : – Batasan besaran jumlah paket kiriman dari protocol. – Jika suatu data dikirim dalam jumlah besar, maka kemungkinan yang terjadi adalah data tersebut nantinya akan memonopoli media transmisi sampai data tadi selesai di transmisikan atau dikirim.
Creating A connection • Orientasi Koneksi dimulai dengan membuat koneksi virtual atau membuat session antara sender dengan receiver • Connectionless tidak ada koneksi virtual atau session antara sender dengan receiver. Biasa digunakan dalam sistem dimana paket tunggal perlu dikirimkan tanpa harus membuat koneksi dan koneksi
Addressing • Local Adressing diperlukan alamat client dan server • Port Number alamat nomor dibatasi dalam 16 bit dalam range 0 s/d 65535 (=2^16).
Addresing Pada Transport Layer • Transport address berbeda dengan Network Address. • Metode yang digunakan adalah TSAP • 3 jenis identitas :names,addresses dan routes. - nama dari sumberdaya mana yang dicari,alamat menunjukkan dimana dan rute menujukkan bagaimana mendapatkannya. • Alamat mengidentifikasi : - Jenis layanan atau aplikasi. - Alamat dari layanan harus diketahui. • Port Komunikasi: - Layanan :terkait dengan 1 port. - Port Access : Asyncrhonous atau synchronous. Contoh : 192.169.100.12:80
Reliability • Layanan tidak handal dirancang dengan tujuan memberikan kecepatan transfer yang maksimal. Muncul masalah : kerusakan paket, hilang, paket diterima tidak sesuai urutan, paket terduplikasi. Contoh TFTP, UDP • Layanan Handal memberikan jaminan keandalan dalam kendali kerusakan, loss control, order control, duplicate control. Namun lebih lambat dalam pengiriman dan lebih komplek. Contoh : TCP
Damage control • Error detection • ACK • Time out
Transport Layer Protocol Pada Transport layer terdapat dua buah protocol : 1. TCP (Transmision Control Protocol) - Connection Oriented artinya sebelum melakukan pertukaran data, dua pengguna TCP harus melakukan hubungan terlebih dahulu. - Reliable artinya TCP menerapkan proses deteksi kesalahan paket dan transmisi. - Bit Stream Service paket dikirimkan dan sampai ke tujuan secara berurutan. 2.
UDP (User Datagram Protocol) Merupakan protocol yang tidak reliable dan connectionless bagi aplikasi-aplikasi yang tidak memerlukan pengurutan TCP atau pengendalian aliran dan bagi aplikasi-aplikasi yang akan melayani dirinya sendiri. UDP juga digunakan secara luas pada query dan client/server jenis request reply, dimana pengiriman cepat lebih diutamakan daripada pengiriman yang akurat.(pengiriman percakapan atau video).
IP Adressing • IP Add must uniq & universally • Mendefinisikan koneksi pada sebuah host atau sebiah router ke jaringan internet. • IPv4 32 bit = 2^23 = 4.294.967.296 • Dinotasikan dengan cara biner , dotted decimal 128 = 100000000 11 = 00001011 3 = 00000011 31 = 00011111
UDP: User Datagram Protocol [RFC 768] •
•
“best effort” service, segmen UDP dapat megalami: – lost – Dikirimkan tidak terurut connectionless: – Tidak ada handshaking antara pengirim dan penerima UDP – Setiap segmen UDP ditangani sendiri-sendiri tanpa tergantung pada segmen yang lain
Mengapa UDP? • •
• •
Tidak perlu pembentukan koneksi (mengurangi delay) simple: tidak ada informasi state baik di pengirim maupun penerima Header : pendek Tidak ada kendali kongesti
13
UDP •
Biasa digunakan untuk aplikasi streaming multimedia – loss tolerant Length, in – rate sensitive bytes of UDP
• Penggunaan UDP yang lain untuk: •
– DNS – SNMP Bila ingin melakukan reliable transfer menggunakan UDP: tambahkan reliability di layer aplikasi – application-specific error recover!
32 bits source port #
dest port #
length
checksum
segment, including header
Application data (message)
UDP segment format 14
TCP: Overview • point-to-point: – Satu pengirim utk satu penerima
• reliable, in-order byte stream: • pipelined: – Kendali kongesti dan flow control TCP menetapkan ukuran window
• Ada buffer di pengirim dan penerima socket door
application writes data
application reads data
TCP send buffer
TCP receive buffer
RFCs: 793, 1122, 1323, 2018, 2581
• full duplex data: – Aliran data dua arah pada koneksi yang sama – MSS: maximum segment size
• connection-oriented: – Ada handshaking sebelum pertukaran data
• flow controlled: – sender will not overwhelm receiver socket door
segment
15
Struktur segmen TCP 32 bits URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) Internet checksum (as in UDP)
source port #
dest port #
sequence number acknowledgement number head not UA P R S F len used
checksum
rcvr window size ptr urgent data
Options (variable length)
counting by bytes of data (not segments!) # bytes rcvr willing to accept
application data (variable length)
16
TCP : Nomor urut segmen dan ACKs Nomor urut segmen: – Nomor byte pertama pada suatu aliran segmen data ACKs: – Nomor urut byte berikutnya yang diharapkan dari sisi yg lain – cumulative ACK Q: bagaimana receiver menangani segmen yg tak terurut – Tidak ada dlm spesifikasi TCP (tergantung pengembang program)
Host A User types ‘C’
Host B
host ACKs receipt of ‘C’, echoes back ‘C’
host ACKs receipt of echoed ‘C’
time simple telnet scenario 17
TCP ACK generation [RFC 1122, RFC 2581] Event
TCP Receiver action
in-order segment arrival, no gaps, everything else already ACKed
delayed ACK. Wait up to 500ms for next segment. If no next segment, send ACK
in-order segment arrival, no gaps, one delayed ACK pending
immediately send single cumulative ACK
out-of-order segment arrival higher-than-expect seq. # gap detected
send duplicate ACK, indicating seq. # of next expected byte
arrival of segment that partially or completely fills gap
immediate ACK if segment starts at lower end of gap 18
TCP: retransmission scenarios Host A
Host A
Host B
Host B
t S
X loss
time
lost ACK scenario
time
premature timeout, cumulative ACKs
19
TCP Flow Control flow control
Mencegah pengirim membanjiri penerima dengan data (shg buffer tidak overflow) RcvBuffer = Ukuran buffer TCP Receive RcvWindow = sisa Buffer space
receiver: secara eksplisit memberi tahu pengirim ruang buffer yang masih kosong – RcvWindow field dalam segmen TCP sender: menjaga agar jumlah data yang dikirimkan (yg belum di-ACK) lebih kecil drpd RcvWindow terakhir yg diterima
receiver buffering 20
TCP Round Trip Time dan Timeout Q: cara menetapkan harga TCP timeout? •
Q: Cara mengestimasi RTT? •
Lebih lama dari RTT – RTT bervariasi
•
•
Bila terlalu pendek: premature timeout – Bisa ada retransmisi yg tdk diperlukan Bila terlalu lama: reaksi thdp segmen yg hilang akan lambat
•
SampleRTT: waktu sejak segmen dikirimkan sampai ACK diterima – ignore retransmissions, cumulatively ACKed segments SampleRTT akan bervariasi, sehingga bila ingin diperoleh hasil yang lebih tepat : – Lakukan beberapa kali pengukuran
21
EstimatedRTT = (1-x)*EstimatedRTT + x*SampleRTT Harga tipikal x = 0,1
Menetapkan timeout • •
EstimtedRTT ditambah “safety margin” large variation in EstimatedRTT -> larger safety margin Timeout = EstimatedRTT + 4*Deviation Deviation = (1-x)*Deviation + x*|SampleRTT-EstimatedRTT| 22
TCP Congestion Control • •
Pengendalian end-to-end (tdk ada bantuan dari jaringan) Laju transmisi dibatasi oleh congestion window size, Congwin, dari suatu segmen
Congwin Segmen w, masing-masing dengan byte MSS yg dikirimkan dalam satu
RTT:
throughput =
w * MSS Bytes/sec RTT 23
TCP congestion control: • “probing” untuk bandwidth yg dpt digunakan: – ideally: mengirim secepat mungkin (Congwin sebesar mungkin) tanpa loss – Naikkan Congwin sampai terjadi loss (congestion) – Bila terjadi loss: turunkan Congwin, lalu mulai lagi melakukan probing (increasing)
• Ada dua fasa – slow start – congestion avoidance
• Variable yang penting: – Congwin – threshold: mendefinisikan threshold antara fasa slow start dengan fasa kendali kongesti
24
TCP Slowstart Host A
Host B
Slowstart algorithm
R
initialize: Congwin = 1 for (each segment ACKed) Congwin++ until (loss event OR CongWin > threshold)
•
•
Kenaikan exponential (per RTT) dalam ukuran window (tidak begitu lambat !) loss event: timeout (Tahoe TCP) dan/atau bila ada ACK duplikasi (Reno TCP)
time
25
TCP Congestion Avoidance Congestion avoidance /* slowstart is over */ /* Congwin > threshold */ Until (loss event) { every w segments ACKed: Congwin++ } threshold = Congwin/2 Congwin = 1 perform slowstart 1
1: TCP Reno skips slowstart (fast recovery) after three duplicate ACKs 26