Transmission Control Protocol (End-to-End Protocols) Jaringan Komputer (IKI-20240) Johny Moningka (moningka@cs.ui.ac.id) Fakultas Ilmu Komputer Universitas Indonesia Semester 2003/2004 Versi: 1.1 Agenda Apa yang telah dipelajari: Teknologi yang menghubungkan kumpulan komputer => jaringan: Direct links, packet switching, internet protocol (IP) Selanjutnya: Ekstensi koneksi dan penyampaian paket host-to-host => untuk komunikasi antar komputer yang terhubung dengan jaringan. Komunikasi aplikasi => antar proses melalui communication channel. Problem: Getting processes to communicate! (Ch. 5) User Datagram Protocol (UDP) Transmission Control Protocol (TCP) 1
Review: Layered Ingat: tujuan jaringan komputer, menghubungkan aplikasi => saling berkomunikasi Layer bawah mendukung komunikasi antar aplikasi untuk mencapai tujuan tsb. IP => hanya menyampaikan paket data ke host (bukan ke aplikasi, tidak ada alamat proses pada IP address). Transport Layer (OSI) => mendukung koneksi antar aplikasi (proses) End-System Mengapa disebut transport layer end-to-end protocol? Transport layer: hanya berada pada host (endsystem) End-system => user; asumsi: kontrol terakhir pengiriman data berada pada aplikasi. Services ke berbagai proses aplikasi Suatu host dapat mempunyai lebih dari satu proses (aplikasi) yang aktif Kebutuhan berbagai aplikasi berbeda; mis. reliable delivery vs unreliable delivery (low overhead) 2
Problems: Getting process to communicate! Kebutuhan aplikasi (reliable data stream): multiple koneksi per-host (sharing): lebih dari satu aplikasi aktif dapat mengirim messages ke jaringan (multiplexing) garansi penyampaian message, notifikasi jika terjadi error (mis. target aplikasi tidak aktif) error control: pemeriksaan kesalahan, berurut, dan sekali saja (tidak ada duplikasi) message size: tidak terbatas dengan ukuran paket (model stream) flow control: sinkronisasi antara aplikasi (proses) pengirim dan penerima Transmission Control Protocol (TCP) TCP menyediakan byte-stream services Aplikasi mengirim dalam urutan (stream) bytes, tidak ada batas antar data (tergantung program) TCP memilah streams dalam bentuk segments (paket) Aplikasi menerima dalam urutan bytes Application process Application process Write Bytes Read Bytes TCP TCP Send buffer Receive buffer Segment Segment Segment Transmit segments 3
TCP: Characteristics TCP is connection oriented 3 fase: connection setup, transfer data (bytestreams), disconnect TCP is reliable: Membagi data (bytes) dari aplikasi dalam kelompok segments (messages) Kontrol kesalahan pada setiap segments ACK delivery data Checksum deteksi kesalahan pada data Nomor urut (sequence bytes) jika terjadi duplikasi atau segment hilang. Retransmisi (sliding window) untuk mengatur pengiriman segments Transport vs. Data Link Layers OSI Ref.: keduanya reliable delivery data transmission Data Link: hanya menghubungkan dua nodes yang terhubung langsung (vs. Transport, melalui networks). Potentially connects many different hosts need explicit connection establishment and termination Potentially long delay in network need to be prepared for arrival of very old packets Potentially different network capacity need to be prepared for network congestion need not contribute to network congestion 4
Encapsulation of User Data User Data 20 bytes of TCP header TCP Header 20 bytes of IP header IP Header Figure 8.26 User data are encapsulated in TCP Segments. A TCP Segment is the unit of data for user messages TCP Segment Format 0 4 10 16 24 31 Source Port Destination Port Sequence Number Header Length Reserved Acknowledgement Number U RG A CK P SH R ST S YN F IN Window Size Checksum Options Urgent Pointer Padding Data Figure 8.20 5
TCP Segment Format (1) Source / Destination Ports (16b unsinged int): Identifikasi (address) proses (aplikasi): source & sink user application Sequence (Acknowledgement) Numbers (32b unsigned int): Number of first byte sent (expected from other side) in the segment to other side Acknowledgement Number is byte expected next (ACK) Header Length: in 32b words Reserved (0) TCP Segment Format (2) Flags: Informasi sesuai jenis paket TCP URG: urgent pointer is valid ACK: Acknowledgement number is valid PSH: deliver data received by receiving TCP immediately RST: Receving TCP must abort connection SYN: Connection Request; FIN: Sender has no more data to send to receiving TCP; ( Advertised ) Window Size: amount of data receiver is willing to accept. 6
TCP Segment Format (3) Urgent Pointer (if URG flag is set) points to last byte of urgent data; any data from beginning of segment to up are urgent TCP Segment Structure (Summary) 32 bits URG: urgent data 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 UAP R S F len used rcvr window size checksum ptr urgent data Options (variable length) application data (variable length) counting by bytes of data (not segments!) # bytes rcvr willing to accept 7
TCP: Connection Setup Active Open Umum: koneksi diawali dari client => mengirim tipe messages SYN (connection setup) ke server. Passive Open Server mendengar untuk koneksi dari client Server membalas dengan mengirim tipe message SYN+ACK Connection Establishment Two way handshake A send SYN, B replies with ACK-SYN SYN hilang, timeout dan retransmisi Bagaimana jika muncul delayed SYN (false connection)? Kemungkinan delayed SYN menyebabkan duplikasi SYNs => receiver? Mana yang valid Gunakan Three Way Handshake Gunakan identifikasi SYN dengan bilangan tertentu => Initial Sequence Number Gunakan SYN dan ISN Balasan ACK harus menunjuk ISN yang sama RFC 793: ISN harus increment setiap 4 mikro-detik. 8
TCP Connection Management TCP sender, receiver establish connection before exchanging data segments Initialize TCP variables: sequence numbers buffers, flow control info (e.g., RcvWindow) Three way handshake: Step 1: client end system sends TCP SYN control segment to server specifies initial sequence number Step 2: server end system receives SYN, replies with SYN- ACK control segment ACKs received SYN allocates buffers specifies server receiver initial sequence number. TCP: Connection Setup Reliability 3-way handshake Sequence Numbers: x, y (full duplex) Message types (Flag): Synchronize (SYN), Acknowledge (ACK) Active participant (client) SYN, SequenceNum = x SYN + ACK, SequenceNum = y, Acknowledgment = x + 1 ACK, Acknowledgment = y + 1 Passive participant (server) 9
Data Transfer: Sequence Numbers and ACKs Sequence Numbers: byte stream number of first byte in segment s data ACKs: seq. # of next byte expected from other side cumulative ACK Example next figure: telnet interaction; User types C host ACKs receipt of echoed C Simple telnet scenario Host A SN(42), ACK(79), data( C ) SN(79), ACK(43), data( C ) SN(43), ACK(80) Host B B ACKs receipt of C ; echoes back C time TCP Connections: Graceful Close Step 1: client end system sends TCP FIN control segment to server (client knows when input has finished) Step 2: server receives FIN, replies with ACK. Closes connection, sends FIN. TIME_WAIT closed Host A Host B FIN, SN(5086) FIN, SN(453), ACK(5087) ACK(454) Figure 8.27 10
TCP: Reliability Deteksi kesalahan: TCP Checksum Retransmisi segment kembali jika terjadi kesalahan Kontrol kesalahan: Penerima memberikan ACK untuk segment (byte) yang telah diterima Timer (jika ACK atau segment hilang) Flow control Kita ingin mengirim lebih dari satu segment (utilisasi koneksi), tanpa menunggu ACK segment sebelumnya Pengaturan supaya sender yang cepat tidak overflow receiver => sinkronisasi TCP: Flow control TCP Sliding Window + Flow Control: ( acknowledgment, SequenceNum, AdvertisedWindow ) Data (SequenceNum) Sender Receiver Acknowledgment + AdvertisedWindow 11
TCP: Advertised Window (Flow Control) Flow control Mencegah sender mengirim terlalu banyak sehingga melebihi kapasitas menerima dari receiver Negosiasi (informasi) ke sender => status dan kapasistas buffer dari receiver (proses) Menggunakan informasi: Advertised Window (field pada header TCP paket): Max. ukuran buffer receiver (sisa bytes yang belum dibaca oleh aplikasi) Dinamik, tergantung kecepatan aplikasi memproses data pada buffer receiver. 12