Quản trị mạng - Chương 3: Giao thức tầng giao vận (transport layer)

Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP

pdf43 trang | Chia sẻ: nguyenlam99 | Lượt xem: 1306 | Lượt tải: 1download
Bạn đang xem trước 20 trang tài liệu Quản trị mạng - Chương 3: Giao thức tầng giao vận (transport layer), để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 3. Giao thức tầng giao vận (transport layer) Trần Quang Hải Bằng Faculty of Information Technology University of Communication and Transport (Unit 2) Office location: Administration building, Block D3, Room 6 Office phone: 38962018 Cell phone: N/A Email: tqhbang@utc2.edu.vn Chương 3. Giao thức tầng giao vận (transport layer) 206/02- 24/03/2012 Chương 3. Giao thức tầng giao vận (transport layer) 306/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 406/02- 24/03/2012 Transport Layer Services & Principles  Cung cấp phương tiện truyền thông logic (logical communication) giữa các applications.  PDUs  application: messages.  transport: segments (đoạn).  Các msg từ tầng application gửi xuống được chia nhỏ thành các đoạn (segments).  Transport protocol được thực thi tại các trạm cuối (end system). application transport network data link physical application transport network data link physical network data link physical network data link physical network data link physical network data link physicalnetwork data link physical logical end-end transport Chương 3. Giao thức tầng giao vận (transport layer) 506/02- 24/03/2012 Transport & Network layers  Network layer:  Truyền thông logic giữa các trạm làm việc (host).  PDUs = packets (gói).  IP (Internet Protocol) là giao thức truyền không tin cậy.  Transport layer:  Tạo phương thức truyền thông logic giữa các ứng dụng (application/process).  Nhận các gói tin từ tầng Network gửi lên. Household analogy: 12 kids sending letters to 12 kids  processes = kids  app messages = letters in envelopes  hosts = houses  transport protocol = Ann and Bill  network-layer protocol = postal service Chương 3. Giao thức tầng giao vận (transport layer) 606/02- 24/03/2012 Transport Protocols  TCP (Transmission Control Protocol) Connection-oriented (có liên kết). Flow control (điều khiển luồng). Congestion control (điều khiển chống nghẽn mạng).  reliable transport protocol (tin cậy)  UDP (User Datagram Protocol) Connectionless. Không có kiểm soát luồng và kiểm soát nghẽn mạng.  unreliable transport protocol. Chương 3. Giao thức tầng giao vận (transport layer) 706/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 806/02- 24/03/2012 Multiplexing/demultiplexing (mux/demux)  Multiplexing (dồn kênh): Các msgs từ các apps (P1, P2) được chia nhỏ và đóng gói thành các segments (thêm header)  dồn kênh diễn ra ở sending hosts  Demultiplexing (phân kênh): Các segments nhận được được gửi tới apps tương ứng (P3, P4)  phân kênh diễn ra ở receiving hosts application transport network M P2 application transport network receiver Ht Hn segment segment M application transport network P1 M M M P3 P4 segment header application-layer data sender sender Chương 3. Giao thức tầng giao vận (transport layer) 906/02- 24/03/2012 Dồn và chia kênh thế nào?  source port number: ứng dụng gửi dữ liệu.  destination port number: ứng dụng nhận dữ liệu.  Port number: 0-1023: well-known port number (đã được giữ cho các apps phổ biến). 1024 – 65535. source port # dest port # 32 bits application data (message) other header fields TCP/UDP segment format Chương 3. Giao thức tầng giao vận (transport layer) 1006/02- 24/03/2012 Mux/demux: Ví dụ host A server B source port: x dest. port: 23 source port:23 dest. port: x port use: simple telnet app Web client host A Web server B Web client host C Source IP: C Dest IP: B source port: x dest. port: 80 Source IP: C Dest IP: B source port: y dest. port: 80 port use: Web server Source IP: A Dest IP: B source port: x dest. port: 80 Chương 3. Giao thức tầng giao vận (transport layer) 1106/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 1206/02- 24/03/2012 Connectionless Transport (UDP).  User Datagram Protocol [RFC 768]  “no frill”, “bare bones” Internet transport protocol.  chỉ cần những thủ tục cơ bản nhất.  thông tin điều khiển cũng chỉ cần cơ bản nhất.  “best effort” service: dữ liệu có thể mất mát, sai sót nhưng luôn “cố gắng hết sức” để giảm thiểu.  Connectionless:  Không có cơ chế bắt tay (handshaking): thiết lập truyền dữ liệu kết thúc.  Không nắm giữ trạng thái.  Các segments được xử lý độc lập với nhau. Chương 3. Giao thức tầng giao vận (transport layer) 1306/02- 24/03/2012 UDP: Segment structure  source port.  dest port.  length.  application data.  checksum: mã kiểm tra lỗi (phục vụ cho cơ chế nhận biết lỗi – error detection) source port # dest port # 32 bits Application data (message) UDP segment format length checksum Length, in bytes of UDP segment, including header Chương 3. Giao thức tầng giao vận (transport layer) 1406/02- 24/03/2012 UDP segment - example Receiver’s MAC address Sender’s MAC address Type of upper layer’s protocol ( 0x0800 = IP ) Chương 3. Giao thức tầng giao vận (transport layer) 1506/02- 24/03/2012 UDP segment – example (cnt.) IP’s Header Chương 3. Giao thức tầng giao vận (transport layer) 1606/02- 24/03/2012 UDP segment – example (cnt.) UDP’s header Chương 3. Giao thức tầng giao vận (transport layer) 1706/02- 24/03/2012 UDP segment – example (cnt.) Data of applicaton layer Chương 3. Giao thức tầng giao vận (transport layer) 1806/02- 24/03/2012 UDP checksum  Mã kiểm tra phục vụ cho cơ chế nhận biết lỗi.  Sender: Coi segment như chuỗi các số nguyên 16-bit. checksum = số bù một (1’s complement) của tổng các số nguyên đó.  Receiver: Tính toán checksum của segment nhận được. So sánh với checksum chứa trong trường checksum của segment nhận được nếu sai khác tức là có lỗi. Chương 3. Giao thức tầng giao vận (transport layer) 1906/02- 24/03/2012 UDP checksum: example  Phép cộng các số 16-bit liên tiếp là phép cộng có nhớ.  Kiểm tra checksum: Lấy tổng các số 16-bit (có nhớ) cộng với checksum: Kết quả là 1111 1111 1111 1111 thì không có lỗi, nếu khác là có lỗi. 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 wraparound sum checksum (bù 1) Chương 3. Giao thức tầng giao vận (transport layer) 2006/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 2106/02- 24/03/2012 Principles of Reliable Data Transfer (RDT)  Truyền dữ liệu tin cậy là vấn đề vô cùng quan trọng (top 10 list of important networking topics).  Cần thiết đối với app, transport, datalink layer. Chương 3. Giao thức tầng giao vận (transport layer) 2206/02- 24/03/2012 RDT send side receive side rdt_send(): called from above, (e.g., by app.). Passed data to deliver to receiver upper layer udt_send(): called by rdt, to transfer packet over unreliable channel to receiver rdt_rcv(): called when packet arrives on rcv-side of channel deliver_data(): called by rdt to deliver data to upper Chương 3. Giao thức tầng giao vận (transport layer) 2306/02- 24/03/2012 Finite State Machine (FSM) state 1 state 2 event causing state transition actions taken on state transition state: when in this “state” next state uniquely determined by next event event actions Chương 3. Giao thức tầng giao vận (transport layer) 2406/02- 24/03/2012 RDT1.0: reliable data transfer over reliable channel  Tầng dưới: Không có lỗi. Không mất mát dữ liệu (gói tin).  Sender gửi dữ liệu xuống tầng dưới.  Receiver nhận dữ liệu gửi từ tầng dưới lên. Wait for call from above packet = make_pkt(data) udt_send(packet) rdt_send(data) extract (packet,data) deliver_data(data) Wait for call from below rdt_rcv(packet) sender receiver Chương 3. Giao thức tầng giao vận (transport layer) 2506/02- 24/03/2012 RDT2.0: channel with bit errors  Tầng dưới có thể có lỗi bit (0  1)  UDP checksum có khả năng phát hiện lỗi bit.  Khắc phục lỗi (error recover) thế nào?  acknowledgements (ACKs): receiver thông báo đã nhận gói dữ liệu tốt (không có lỗi).  negative acknowledgements (NAKs): receiver thông báo gói dữ liệu nhận được có lỗi.  Nếu nhận được NAK, sender cần gửi lại gói tin bị lỗi.  human scenarios using ACKs, NAKs? (telephone talking!)  rdt2.0 so với rdt1.0:  error detection  receiver feedback: control msgs (ACK,NAK) rcvr->sender. Chương 3. Giao thức tầng giao vận (transport layer) 2606/02- 24/03/2012 RDT2.0: FSM specification Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK Wait for call from belowsender receiver rdt_send(data) Λ Chương 3. Giao thức tầng giao vận (transport layer) 2706/02- 24/03/2012 RDT2.0: operation with no errors Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK Wait for call from below rdt_send(data) Λ Chương 3. Giao thức tầng giao vận (transport layer) 2806/02- 24/03/2012 RDT2.0: error scenario Wait for call from above snkpkt = make_pkt(data, checksum) udt_send(sndpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK Wait for call from below rdt_send(data) Λ Chương 3. Giao thức tầng giao vận (transport layer) 2906/02- 24/03/2012 RDT2.0: problems  Nếu ACK, NAK bị lỗi?  Sender không biết kết quả gửi gói tin thế nào.  Cũng chẳng thể gửi lại gói tin vì có thể gây hiện tượng lặp gói tin.  Giải pháp:  Sender truyền lại nếu như ACK/NAK bị lỗi.  Kiểm soát lặp gói tin (duplicate handling)  Thêm vào gói tin trường số thứ tự (sequence number).  Căn cứ vào số thứ tự gói tin, receiver bỏ qua những gói tin bị lặp.  Sender sẽ không gửi gói tin tiếp theo nếu như chưa chắc chắn receiver nhận được gói trước đó (stop and wait protocol). Chương 3. Giao thức tầng giao vận (transport layer) 3006/02- 24/03/2012 RDT2.1: sender, handles garbled ACK/NAKs Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) Wait for ACK or NAK 0 udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) Wait for call 1 from above Wait for ACK or NAK 1 Λ Λ Chương 3. Giao thức tầng giao vận (transport layer) 3106/02- 24/03/2012 RDT2.1: receiver, handles garbled ACK/NAKs Wait for 0 from below sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) Wait for 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) Chương 3. Giao thức tầng giao vận (transport layer) 3206/02- 24/03/2012 RDT2.2: a NAK-free protocol Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) Wait for ACK 0 sender FSM fragment Wait for 0 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq1(rcvpkt)) udt_send(sndpkt) receiver FSM fragment Λ Chương 3. Giao thức tầng giao vận (transport layer) 3306/02- 24/03/2012 RDT3.0: channels with errors and loss  Tầng dưới: Có thể có lỗi. Có thể gây mất mát gói tin.  Giải pháp: Sender truyền lại gói tin nếu như chờ ACK một thời gian nhất định nào đó mà không thấy (cần countdown timer). Nếu ACK hay gói tin chỉ bị chậm thôi?  truyền lại sẽ gây ra hiện tượng lặp gói tin.  cần sequence number. Chương 3. Giao thức tầng giao vận (transport layer) 3406/02- 24/03/2012 RDT3.0 sender sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) Wait for ACK0 rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) Wait for call 1 from above sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer stop_timer udt_send(sndpkt) start_timer timeout udt_send(sndpkt) start_timer timeout rdt_rcv(rcvpkt) Wait for call 0from above Wait for ACK1 Λ rdt_rcv(rcvpkt) Λ Λ Λ Chương 3. Giao thức tầng giao vận (transport layer) 3506/02- 24/03/2012 RDT3.0 in action Chương 3. Giao thức tầng giao vận (transport layer) 3606/02- 24/03/2012 RDT3.0 in action (cont) Chương 3. Giao thức tầng giao vận (transport layer) 3706/02- 24/03/2012 Hiệu suất của RDT3.0  Giả sử có đường truyền giữa 2 host với các thông số sau:  Bandwidth: 1 Gbps (109 bits per second)  Propagation delay: 15 ms  Size of packet: 1KB transmit = 8kb/pkt 109 b/sec = 8 microsec  U sender: utilization – fraction of time sender busy sending  1KB trong 30msec -> 33KB/sec effective throught put over 1 Gbps link  network protocol limits use of physical resources! U sender = .008 30.008 = 0.00027 microsec L / R RTT + L / R = L (packet length in bits) R (transmission rate, bps) =T Chương 3. Giao thức tầng giao vận (transport layer) 3806/02- 24/03/2012 RDT3.0 stop-and-wait operation first packet bit transmitted, t = 0 sender receiver RTT first packet bit arrives ACK arrives, send next packet, t = RTT + L / R U sender = .008 30.008 = 0.00027 microsec L / R RTT + L / R = last packet bit transmitted, t = L / R last packet bit arrives, send ACK Chương 3. Giao thức tầng giao vận (transport layer) 3906/02- 24/03/2012 Tăng hiệu suất đường truyền - Pipelined protocols Pipelining: Gửi liên tục nhiều packets rồi đợi ACK  Số thứ tự gói tin (sequence numbers) tăng đều và duy nhất  Sử dụng bộ nhớ đệm tại Sender và Receiver  Có 2 phương án xử lý khi gặp lỗi:  go-Back-N  Selective repeat Chương 3. Giao thức tầng giao vận (transport layer) 4006/02- 24/03/2012 Tăng hiệu suất đường truyền - Pipelined protocols first packet bit transmitted, t = 0 sender receiver RTT last bit transmitted, t = L / R first packet bit arrives last packet bit arrives, send ACK ACK arrives, send next packet, t = RTT + L / R last bit of 2nd packet arrives, send ACK last bit of 3rd packet arrives, send ACK U sender = .024 30.008 = 0.0008 microsecon 3 * L / R RTT + L / R = Increase utilization by a factor of 3! Chương 3. Giao thức tầng giao vận (transport layer) 4106/02- 24/03/2012 Go-Back-N Sender:  Sử dụng k-bit ở header để lưu sequence number  Cửa sổ trượt cho phép chứa N packets chưa được báo ACK.  Nếu nhận ACK(n): Mọi packet có số hiệu tới n-1 đã gửi thành công  Cần giám sát thời gian timeout cho mỗi packet đang gửi đi (in-flight packet)  timeout(n): Gửi lại packet n và các packet có seq # lớn hơn trong window Chương 3. Giao thức tầng giao vận (transport layer) 4206/02- 24/03/2012 GBN in action Chương 3. Giao thức tầng giao vận (transport layer) 4306/02- 24/03/2012 Wait start_timer udt_send(sndpkt[base]) udt_send(sndpkt[base+1]) / udt_send(sndpkt[nextseqnum-1]) timeout rdt_send(data) if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) start_timer nextseqnum++ } else refuse_data(data) base = getacknum(rcvpkt)+1 If (base == nextseqnum) stop_timer else start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) base=1 nextseqnum=1 rdt_rcv(rcvpkt) && corrupt(rcvpkt) Λ GBN: sender extended FSM Chương 3. Giao thức tầng giao vận (transport layer) 4406/02- 24/03/2012 GBN: receiver extended FSM ACK-only: always send ACK for correctly-received pkt with highest in-order seq #  may generate duplicate ACKs  need only remember expectedseqnum  out-of-order pkt:  discard (don’t buffer) -> no receiver buffering!  Re-ACK pkt with highest in-order seq # Wait udt_send(sndpkt) default rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) && hasseqnum(rcvpkt,expectedseqnum) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++ expectedseqnum=1 sndpkt = make_pkt(expectedseqnum,ACK,chksum) Λ Chương 3. Giao thức tầng giao vận (transport layer) 4506/02- 24/03/2012 Selective Repeat (SR)  Receiver gửi ACK cho từng packet tới đích Lưu trữ packets vào buffers (nếu cần thiết) để chuyển lên layer phía trên  Sender gửi lại những packet không nhận được ACK sau khoảng timeout Cần cơ chế định thời timeout cho từng packet (chưa được ACK)  Sender window N consecutive seq #’s again limits seq #s of sent, unACKed pkts Chương 3. Giao thức tầng giao vận (transport layer) 4606/02- 24/03/2012 Selective repeat: sender, receiver windows Chương 3. Giao thức tầng giao vận (transport layer) 4706/02- 24/03/2012 data from above :  if next available seq # in window, send pkt timeout(n):  resend pkt n, restart timer ACK(n) in [sendbase,sendbase+N]:  mark pkt n as received  if n smallest unACKed pkt, advance window base to next unACKed seq # sender pkt n in [rcvbase, rcvbase+N-1]  send ACK(n)  out-of-order: buffer  in-order: deliver (also deliver buffered, in-order pkts), advance window to next not-yet-received pkt pkt n in [rcvbase-N,rcvbase-1]  ACK(n) otherwise:  ignore receiver Selective repeat Chương 3. Giao thức tầng giao vận (transport layer) 4806/02- 24/03/2012 Selective repeat in action Chương 3. Giao thức tầng giao vận (transport layer) 4906/02- 24/03/2012 Transport Layer 3-49 Selective repeat: rắc rối khi window size quá lớn Example:  seq #’s: 0, 1, 2, 3  window size=3  receiver sees no difference in two scenarios!  incorrectly passes duplicate data as new in (a) Q: what relationship between seq # size and window size? Yes, windows size= (total number /2) 0,1,2,3 => widwowsize=4/2=2 Chương 3. Giao thức tầng giao vận (transport layer) 5006/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 5106/02- 24/03/2012 TCP Overview  Transmission Control Protocol [RFCs: 793,1122, 1323, 2018, 2581]  Point-to-point: 1 sender, 1 receiver.  Giao thức tin cậy (reliable).  Kiểm soát luồng (flow control).  Kiểm soát nghẽn mạng (congestion control).  full duplex: Gửi & Nhận trên cùng một liên kết.  send/receive buffers socket door TCP send buffer TCP receive buffer socket door segment application writes data application reads data Chương 3. Giao thức tầng giao vận (transport layer) 5206/02- 24/03/2012 TCP segment structure source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number rcvr window size ptr urgent datachecksum FSRPAU head len not used Options (variable length) URG: urgent data (generally not used) ACK: ACK # valid PSH: push data to app immediately (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) # bytes rcvr willing to accept counting by bytes of data (not segments!) Internet checksum (as in UDP) Header length (by 32-bit word) Chương 3. Giao thức tầng giao vận (transport layer) 5306/02- 24/03/2012 TCP sequence number and ACKs Seq. #’s:  byte stream “number” of first byte in segment’s data ACKs:  seq # of next byte expected from other side  cumulative ACK Q: how receiver handles out- of-order segments  A: TCP spec doesn’t say, - up to implementor Host A Host B Seq=42, ACK=79, data = ‘C’ Seq= 79, A CK= 43, d ata = ‘C’ Seq=43, ACK=80 User types ‘C’ host ACKs receipt of echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ time simple telnet scenario Chương 3. Giao thức tầng giao vận (transport layer) 5406/02- 24/03/2012 TCP segment – example (cnt.) Receiver’s MAC address Sender’s MAC address Type of network layer’s protocol ( 0x0800 = IP ) Chương 3. Giao thức tầng giao vận (transport layer) 5506/02- 24/03/2012 TCP segment – example (cnt.) IP’s Header Chương 3. Giao thức tầng giao vận (transport layer) 5606/02- 24/03/2012 Flags (00010000) TCP segment – example (cnt.) TCP’s Header Src’s port # (2467) Dst’s port # (80) Sequence number ACK number Header’s length (0xa0 = 40 bytes) Wnd’s size Chương 3. Giao thức tầng giao vận (transport layer) 5706/02- 24/03/2012 TCP segment – example (cnt.) TCP’s Header Check sum Pointer urgent data Chương 3. Giao thức tầng giao vận (transport layer) 5806/02- 24/03/2012 TCP segment – example (cnt.) TCP’s Header TCP’s Options (20 bytes) Chương 3. Giao thức tầng giao vận (transport layer) 5906/02- 24/03/2012 TCP: Reliable Data Transfer (retransmission) Host A Seq=92, 8 bytes data ACK =10 0 loss ti m e ou t time lost ACK scenario Host B X Seq=92, 8 bytes data ACK =100 Chương 3. Giao thức tầng giao vận (transport layer) 6006/02- 24/03/2012 TCP flow control  Các apps có thể xử lý dữ liệu chậm, các gói tin nhận về được đưa vào bộ đệm (receiver buffer).  Flow control: kiểm soát không để cho receiver buffer bị tràn vì sender gửi nhiều gói tin quá.  Receiver: Thông báo cho sender biết kích thước của RcvWidow (free buffer): trường rcv window size trong TCP segment headers.  Sender: Luôn nắm được kích thước tối đa của gói tin có thể truyền tiếp. Chương 3. Giao thức tầng giao vận (transport layer) 6106/02- 24/03/2012 TCP Connection management  TCP: Connection-oriented.  Khởi tạo các giá trị:  sequence number.  buffers, flow control information.  Client:Connection initiator (khởi tạo liên kết: socket).  Server: Chấp nhận kết nối. Three way handshaking:  Bước 1: client gửi TCP SYN control segment tới server.  Bước 2: server nhận SYN segment rồi trả lời bằng SYNACK segment.  Bước 3: client nhận SYNACK segment và trả lời bằng ACK segment (có thể có dữ liệu đi kèm). Chương 3. Giao thức tầng giao vận (transport layer) 6206/02- 24/03/2012 Chương 3. Giao thức tầng giao vận (transport layer) 6306/02- 24/03/2012 TCP Connection management: ngắt liên kết  Bước 1: client (phía muốn ngắt liên kết) gửi TCP FIN segment.  Bước 2: server (phía còn lại) nhận được FIN, gửi ACK, ngắt liên kết, gửi tiếp FIN segment.  Bước 3: client nhận FIN, trả lời bằng ACK. timed wait (chờ một lúc nữa cho tới khi liên kết đóng hẳn).  Bước 4: server nhận ACK, đóng liên kết. client FIN server ACK ACK FIN closing closing closed ti m ed w ai t closed Chương 3. Giao thức tầng giao vận (transport layer) 6406/02- 24/03/2012 TCP client lifecycle TCP server lifecycle TCP Connection management (cont.) Chương 3. Giao thức tầng giao vận (transport layer) 6506/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 6606/02- 24/03/2012 Congestion control  Nghẽn mạng là điều khó tránh khỏi!!!  Khi mạng bị nghẽn, các gói tin có thể bị trễ hay bị mất.  Hai hướng tiếp cận:  End-end congestion control: Thông tin về mức độ nghẽn mạng được suy ra từ lượng tin bị mất mát trong quá trình truyền.  Network-assited congestion control: Routers cung cấp các thông tin phản hồi về tình trạng nghẽn mạng tới end systems.  Bit thông báo nghẽn mạng đừng gửi nữa hoăc xin chờ một lát.  Tốc độ tối đa cho phép gửi (maximum rate allowed).  TCP sử dụng phương pháp end-end congestion control. Chương 3. Giao thức tầng giao vận (transport layer) 6706/02- 24/03/2012 Causes/costs of congestion: scenario 1  2 senders, 2 receivers  01 router, buffers vô hạn  no retransmission  large delays when congested  maximum achievable throughput unlimited shared output link buffers Host A λin : original data Host B λout Chương 3. Giao thức tầng giao vận (transport layer) 6806/02- 24/03/2012 Causes/costs of congestion: scenario 2  one router, buffers có hạn  sender gửi lại các packet bị mất finite shared output link buffers Host A λin : original data Host B λout λ'in : original data, plus retransmitted data Chương 3. Giao thức tầng giao vận (transport layer) 6906/02- 24/03/2012  always: (goodput)  “perfect” retransmission only when loss:  retransmission of delayed (not lost) packet makes larger (than perfect case) for same λ in λ out = λ in λ out > λ in λ out “costs” of congestion:  more work (retrans) for given “goodput”  unneeded retransmissions: link carries multiple copies of pkt Causes/costs of congestion: scenario 2 Chương 3. Giao thức tầng giao vận (transport layer) 7006/02- 24/03/2012 Causes/costs of congestion: scenario 3  4 senders  multihop paths  timeout/retransmit λ in Q: what happens as and increase ?λ in finite shared output link buffers Host A λin : original data Host B λout λ'in : original data, plus retransmitted data Chương 3. Giao thức tầng giao vận (transport layer) 7106/02- 24/03/2012 Causes/costs of congestion: scenario 3 Another “cost” of congestion:  Khi thực hiện drop các packet trên đường truyền  dung lượng đường truyền đã sử dụng để gửi tin tới điểm bị drop là vô ích. H o s t A H o s t B λ o u t Chương 3. Giao thức tầng giao vận (transport layer) 7206/02- 24/03/2012 TCP Congestion Control  end-end control (no network assistance)  Sender điều khiển lượng dữ liệu gửi đi theo quy tắc: LastByteSent-LastByteAcked ≤ min {CongWin, ReceiverWnd}  Công thức xấp xỉ:  Giá trị CongWin luôn biến đổi và được tính toán theo khả năng truyền tải của mạng. Làm thế nào sender đánh giá được tình trạng nghẽn?  loss event = timeout or 3 duplicate ACKs  TCP sender reduces rate (CongWin) after loss event Cơ chế đánh giá nghẽn:  AIMD  Slow start  conservative after timeout events rate = CongWin RTT Bytes/sec Chương 3. Giao thức tầng giao vận (transport layer) 7306/02- 24/03/2012 8 Kbytes 16 Kbytes 24 Kbytes time congestion window multiplicative decrease: cut CongWin in half after loss event additive increase: increase CongWin by 1 MSS every RTT in the absence of loss events: probing Long-lived TCP connection TCP AIMD (additive-increase, multiplicative-decrease) Chương 3. Giao thức tầng giao vận (transport layer) 7406/02- 24/03/2012 TCP Slow Start  When connection begins, CongWin = 1 MSS  Example: MSS = 500 bytes & RTT = 200 msec  initial rate = 20 kbps  Available bandwidth may be >> MSS/RTT  desirable to quickly ramp up to respectable rate  When connection begins, increase rate exponentially fast until first loss event Chương 3. Giao thức tầng giao vận (transport layer) 7506/02- 24/03/2012 TCP Slow Start (more)  When connection begins, increase rate exponentially until first loss event:  double CongWin every RTT  done by incrementing CongWin for every ACK received  Summary: initial rate is slow but ramps up exponentially fast Host A one segment R T T Host B time two segments four segments Chương 3. Giao thức tầng giao vận (transport layer) 7606/02- 24/03/2012 Refinement  After 3 dup ACKs:  CongWin is cut in half  window then grows linearly  But after timeout event:  CongWin instead set to 1 MSS;  window then grows exponentially  to a threshold, then grows linearly • 3 dup ACKs indicates network capable of delivering some segments • timeout before 3 dup ACKs is “more alarming” Philosophy: Chương 3. Giao thức tầng giao vận (transport layer) 7706/02- 24/03/2012 Q: When should the exponential increase switch to linear? A: When CongWin gets to 1/2 of its value before timeout. Implementation:  Variable Threshold  At loss event, Threshold is set to 1/2 of CongWin just before loss event Refinement (more) Chương 3. Giao thức tầng giao vận (transport layer) 7806/02- 24/03/2012  When CongWin is below Threshold, sender in slow- start phase, window grows exponentially.  When CongWin is above Threshold, sender is in congestion-avoidance phase, window grows linearly.  When a triple duplicate ACK occurs, Threshold set to CongWin/2 and CongWin set to Threshold.  When timeout occurs, Threshold set to CongWin/2 and CongWin is set to 1 MSS. Summary: TCP Congestion Control Chương 3. Giao thức tầng giao vận (transport layer) 7906/02- 24/03/2012 TCP throughput (or transmission rate)  Gía trị throughout (số packet gửi đi / giây) của TCP tính theo Window size và RTT là bao nhiêu? Không tính giai đoạn slowstart  Gọi W là giá trị window size khi xuất hiện mất gói. Khi window size = W, throughput = W/RTT Ngay sau khi có nghẽn (lost), window size giảm xuống = W/2  throughput = W/2RTT.  Throughout trung bình là: 0.75 W/RTT Throughout TB = 3W/4RTT Chương 3. Giao thức tầng giao vận (transport layer) 8006/02- 24/03/2012 TCP Futures  Hỏi: Giả sử MSS = 1500 byte, RTT = 100µs , Cần gửi đi với tốc độ là 10 Gbps (throughput=109 bps). Vậy giá trị Windowsize phải là bao nhiêu ?  Trả lời: window size W = 83,333 in-flight segments  Throughput tính theo loss rate:  Trong đó L = loss rate LRTT MSS⋅22.1 Chương 3. Giao thức tầng giao vận (transport layer) 8106/02- 24/03/2012 Delay modeling Q: How long does it take to receive an object from a Web server after sending a request? Ignoring congestion, delay is influenced by:  TCP connection establishment  data transmission delay  slow start Notation, assumptions:  Assume one link between client and server of rate R  S: MSS (bits)  O: object size (bits)  no retransmissions (no loss, no corruption) Window size:  First assume: fixed congestion window, W segments  Then dynamic window, modeling slow start Chương 3. Giao thức tầng giao vận (transport layer) 8206/02- 24/03/2012 Fixed congestion window (1) First case: WS/R > RTT + S/R: ACK for first segment in window returns before window’s worth of data sent delay = 2RTT + O/R Chương 3. Giao thức tầng giao vận (transport layer) 8306/02- 24/03/2012 Transport Layer 3-83 Fixed congestion window (2) Second case:  WS/R < RTT + S/R: wait for ACK after sending window’s worth of data sent delay = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] Chương 3. Giao thức tầng giao vận (transport layer) 8406/02- 24/03/2012 Ch3. The Transport Layer 1. Transport Layer Services & Principles. 2. Multiplexing/Demultiplexing. 3. Connectionless Transport (UDP). 4. Principles of Reliable Data Transfer (RDT). 5. Connection-oriented Transport (TCP). 6. Congestion Control. 7. Sử dụng TCP hay UDP Chương 3. Giao thức tầng giao vận (transport layer) 8506/02- 24/03/2012 Một số so sánh TCP/UDP  Có liên kết, lưu trữ trạng thái liên kết (quản lý liên kết).  Điểm-điểm  Có độ trễ (delay): thiết lập, quản lý liên kết, luồng, nghẽn  Segment header lớn (20 bytes)  Bị giới hạn tốc độ truyền (congestion control)  Không liên kết, không lưu trữ trạng thái.  Điểm-điểm, quảng bá.  Độ trễ thấp.  Segment header nhỏ (8 bytes)  Không giới hạn tốc độ truyền. Chương 3. Giao thức tầng giao vận (transport layer) 8606/02- 24/03/2012 Các app thực tế typically UDPDNSName translation typically UDPRIPRouting protocol typically UDPSNMPNetwork management typically UDPproprietaryInternet telephony typically UDPproprietaryStreaming multimedia typically UDPNFSRemote file server TCPFTPFile transfer TCPHTTPWeb TCPTelnetRemote terminal access TCPSMTPElectronic mail Transport protocolApp protocolApplication

Các file đính kèm theo tài liệu này:

  • pdftran_quang_hai_bangmangmt_internet_ch3_8836.pdf
Tài liệu liên quan