Bài giảng Mạng máy tính - Chương 3: Tầng giao vận

pdf 104 trang huongle 5940
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Mạng máy tính - Chương 3: Tầng giao vận", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_mang_may_tinh_chuong_3_tang_giao_van.pdf

Nội dung text: Bài giảng Mạng máy tính - Chương 3: Tầng giao vận

  1. Mạng máy tính Bộ môn Kỹ thuậtmáytínhvàMạng Khoa Công nghệ Thông tin ĐạihọcSư phạmHàNội 1-1
  2. Chương 3: Tầng giao vận Mục đích: ‰ Hiểucácnguyêntắc ‰ Họcvề giao thứctầng giao bên trong dịch vụ của vận trong Internet: tầng giao vận:  UDP: không hướng kếtnối  Multiplexing/Demultiple  TCP: hướng kếtnối xing  Điềukhiểntắc nghẽncủa  Truyềndữ liệutin cậy TCP  Điềukhiểnluồng  Điềukhiểntắc nghẽn 1-2
  3. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyền dữ liệu tin cậy  Điều khiển luồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quản lý kết nối ‰ 3.6 Các nguyên tắc của ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điều khiển tắc nghẽn ‰ 3.7 Điều khiển tắc nghẽn của TCP 1-3
  4. Các giao thứcvàdịch vụ tầng giao vận ‰ Cung cấp truyền thông lô-gíc application transport giữa các tiến trình ứng dụng network data link network chạy trên các host khác nhau physical data link network physical ‰ Các giao thức giao vận chạy data link physical trên các hệ thống cuối network data link  Bên gửi: chia các bản tin physical network data link ứng dụng thành các physical network segment, chuyển tới tầng data link mạng physical  Bên nhận: ghép các application transport segment thành bản tin, network data link chuyển lên tầng ứng dụng physical ‰ Nhiều hơn một giao thức giao vận cho ứng dụng  Internet: TCP và UDP 1-4
  5. Tầng giao vậnvàtầng mạng ‰ Tầng mạng: truyền thông lô- Tương tự hộ gia đình: gíc giữa các host 12 đứatrẻ gửithư cho 12 đứa ‰ Tầng giao vận: truyền thông trẻ lô-gíc giữacáctiếntrình ‰ Các tiếntrình= cácđứatrẻ  dựatrêndịch vụ củatầng ‰ Các bảntin ứng dụng = các mạng bứcthư ‰ host = nhà ‰ Giao thứcgiaovận= Ann và Bill ‰ Giao thứctầng mạng = dịch vụ chuyểnthư 1-5
  6. Các giao thứctầng giao vậncủa Internet ‰ Truyềntin cậy, có thứ tự application transport network (TCP) data link network physical data link  Điềukhiểntắc nghẽn network physical data link  Điềukhiểnluồng physical network data link  Thiếtlậpkếtnối physical network data link ‰ Truyền không có thứ tự, physical network không tin cậy: UDP data link physical ‰ Các dịch vụ không có: application transport  Đảmbảo độ trễ network data link  Đảmbảobăng thông physical 1-6
  7. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-7
  8. Multiplexing/demultiplexing Demultiplexing tại host nhận: Multiplexing tại host gửi: Thu thậpdữ liệutừ các socket, Chuyển các segment đãnhận đóng gói dữ liệubởi header tới đúng socket (sau đósẽ dùng để demultiplexing) = socket = tiếntrình application P3 P1P1 application P2 P4 application transport transport transport network network network link link link physical physical physical host 3 host 1 host 2 1-8
  9. Thựchiện demultiplexing ‰ Host nhậngóidữ liệuIP  Mỗi gói dữ liệucóđịachỉ IP 32 bits nguồn, địachỉ IP đích source port # dest port #  Mỗi gói dữ liệu mang một segment củatầng giao vận  Mỗi segment có giá trị cổng Các trường header nguồnvàcổng đích (giá trị cổng cốđịnh cho các kiểu ứng dụng cụ thể) Dữ liệu ứng dụng ‰ Host sử dụng địachỉ IP và giá (bảntin) trị cổng để chuyển segment tới socket thích hợp Định dạng TCP/UDP segment 1-9
  10. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-10
  11. UDP: User Datagram Protocol [RFC 768] ‰ Dịch vụ “best effort”, UDP segment có thể: Tại sao có UDP?  mất ‰ Không thiếtlậpkếtnối(thiết  chuyển không theo thứ lậpcóthể tăng độ trễ) tựđến ứng dụng ‰ Đơngiản: không có trạng ‰ Không hướng kếtnối: thái kếtnốitại bên gửi, bên  Không có bắttaygiữa nhận bên gửi và bên nhận ‰ Header của segment nhỏ  Mỗi UDP segment được ‰ Không điềukhiểntắc nghẽn: điềukhiển độclập UDP có thể gửiravớitốc độ mong muốn 1-11
  12. UDP (tiếp) ‰ Thường sử dụng cho các ứng dụng đaphương tiện 32 bits truyền dòng Length tính source port # dest port #  Chấpnhậnmất gói theo byte của length checksum  Nhạycảmvớitốc độ UDP ‰ Ứng dụng khác sử segment, dụng UDP bao gồm header  DNS  SNMP dữ liệu của ứng dụng ‰ Truyềntin cậy qua UDP: thêm sự tin cậytạitầng ứng (bảntin) dụng  Khôi phụclỗido ứng dụng cụ thể Định dạng của UDP segment 1-12
  13. UDP checksum Mục đích: phát hiệnlỗi trong segment đãtruyền Bên gửi: Bên nhận: ‰ Đốixử vớinội dung các ‰ Tính toán checksum của segment như chuỗicácsố segment nhận được nguyên 16 bít ‰ Kiểm tra xem checksum đ㠉 checksum: cộng (tổng bù tính có bằng giá trị trường của1) củanội dung checksum: segment  KHÔNG BẰNG– Phát hiện ‰ Phía gửi đặtgiátrị có lỗi checksum trong trường  BẰNG – không phát hiệnra checksum củaUDP lỗi. Nhưng có thể có lỗi? 1-13
  14. Ví dụ Checksum ‰ Chú ý  Khi cộng các số, giá trị bít nhớ cần thêm vào kết quả ‰ Ví dụ: cộng hai số nguyên 16 bít 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 Tổng 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 checksum 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 1-14
  15. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-15
  16. Các nguyên tắccủatruyềndữ liệutin cậy ‰ Tầm quan trọng củatầng liên kếtdữ liệu, tầng giao vận, tầng ứng dụng (a) Dịch vụ cung cấp(b) Càiđặtdịch vụ ‰ Đặc điểmcủa kênh truyền không tin cậyxácđịnh sự phứctạp củagiaothứctruyềndữ liệutin cậy(rdt) 1-16
  17. Truyềndữ liệu tin cậy rdt_send(): đượcgọibởitầng trên. deliver_data(): đượcgọibởi rdt Dữ liệu đãchuyển đượcchuyểntới để truyềndữ liệulêntầng trên tầng trên của bên nhận Bên gửi Bên nhận udt_send(): gọibởi rdt, để rdt_rcv(): gọi khi gói tin đếnphía truyền gói tin qua kênh không bên nhận tin cậytớibênnhận 1-17
  18. Truyềndữ liệu tin cậy ‰ Sử dụng máy trạng thái hữuhạn (FSM) để xử lý bên nhậnvàbêngửi Sự kiện gây ra chuyểntrạng thái Hành động khi chuyểntrạng thái state: khi trong 1 trạng thái, trạng thái tiếp state state sự kiện theo là duy nhất đối 1 2 với1 sự kiện hành động 1-18
  19. rdt1.0: Truyềntin cậy qua kênh tin cậy ‰ Tầng dướilàtruyềntin cậy  Không có lỗibít  Không mấtgóitin ‰ FSM của bên gửi và bên nhận:  Bên gửi chuyểndữ liệuxuống kênh phía dưới  Bên nhận đọcdữ liệutừ kênh bên dưới Đợicuộc rdt_send(data) đợicuộc rdt_rcv(packet) gọitừ gọitừ extract (packet,data) packet = make_pkt(data) phía trên phía dưới deliver_data(data) udt_send(packet) Bên gửi Bên nhận 1-19
  20. Rdt2.0: kênh có lỗibít ‰ Kênh phía dướicóthể có lỗi  checksum để phát hiệnlỗi ‰ Cách khôi phụclỗi  Báo nhận (ACK): bên nhậnchỉ rõ cho bên gửi gói tin nhận thành công  Báo lỗi(NAK):bên nhậnchỉ rõ cho bên gửigóitin cólỗi  Bên nhậntruyềnlạigóitin nếunhậnNAK ‰ Cơ chế rdt2.0:  Phát hiệnlỗi  Phảnhồi cho bên nhận: bảntin điềukhiển (ACK, NAK: bên nhận -> bên gửi) 1-20
  21. rdt2.0: Máy trạng thái rdt_send(data) snkpkt = make_pkt(data, checksum) Bên nhận udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) Đợicuộc ĐợiACK rdt_rcv(rcvpkt) && gọitừ trên hoặc udt_send(sndpkt) corrupt(rcvpkt) NAK udt_send(NAK) rdt_rcv(rcvpkt) && isACK(rcvpkt) Đợicuộc gọitừ phía Bên gửi dưới rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) 1-21
  22. rdt2.0: Trường hợp không lỗi rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) đợicuộc đợiACK rdt_rcv(rcvpkt) && gọitừ phía hoặc udt_send(sndpkt) corrupt(rcvpkt) trên NAK udt_send(NAK) rdt_rcv(rcvpkt) && isACK(rcvpkt) đợicuộc Λ gọitừ phía dưới rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) 1-22
  23. rdt2.0: Trường hợpcólỗi rdt_send(data) snkpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) đợicuộc đợiACK rdt_rcv(rcvpkt) && gọitừ phía hoặc udt_send(sndpkt) corrupt(rcvpkt) trên NAK udt_send(NAK) rdt_rcv(rcvpkt) && isACK(rcvpkt) đợicuộc Λ gọitừ phía dưới rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) extract(rcvpkt,data) deliver_data(data) udt_send(ACK) 1-23
  24. rdt2.1: Bên gửi, điềukhiển ACK/NAK lỗi rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || đợicuộc đợiACK hoặcNAK isNAK(rcvpkt) ) gọi0 từ udt_send(sndpkt) trên 0 rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) Λ đợiACK đợicuộc hoặcNAK gọi1 từ rdt_rcv(rcvpkt) && 1 trên ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_send(data) udt_send(sndpkt) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) 1-24
  25. rdt2.1: Bên nhận, điềukhiển ACK/NAK lỗi 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) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(NAK, chksum) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) udt_send(sndpkt) đợi0 đợi1 rdt_rcv(rcvpkt) && từ dưới từ dưới rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) has_seq0(rcvpkt) sndpkt = make_pkt(ACK, chksum) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) 1-25
  26. rdt2.1 Bên gửi: Bên nhận: ‰ seq # đượcthêmvào ‰ Phảikiểm tra gói tin đã gói tin nhậncólặp không ‰ Hai seq. #’s (0,1)  Trạng thái chỉđịnh pkt seq # mong đợi là 0 hay ‰ Phảikiểmtranếu 1 ACK/NAK đãnhậncó lỗi ‰ Hai lần-> ổn định 1-26
  27. rdt2.2: Giao thức NAK-free ‰ Tương tự rdt2.1, chỉ sử dụng ACK ‰ Thay vì NAK, bên nhậnphảigửi ACK cho pkt cuối đã nhậnOK ‰ ACK lặptại bên nhậnsẽ như xử lý như nhận NAK: truyềnlạipkthiệntại 1-27
  28. rdt2.2: Phân mảnh tại bên gửi và bên nhận rdt_send(data) sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || đợiACK đợicuộc isACK(rcvpkt,1) ) gọi0 từ 0 trên udt_send(sndpkt) FSM bên gửi rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && && isACK(rcvpkt,0) (corrupt(rcvpkt) || L has_seq1(rcvpkt)) đợi0 FSM bên nhận từ dưới udt_send(sndpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt) 1-28
  29. rdt3.0: kênh có lỗivàmất gói Giả sử: kênh phía dướicó Cách tiếpcận: bên nhận đợi thể mấtgói(dữ liệu ACK mộtthờigian hoặcACK) ‰ Truyềnlạinếu không có ACK  checksum, seq. #, ACK, nhậntạithời điểm này truyềnlại là không đủ ‰ Nếu gói tin (hoặcACK) trễ (không mất):  Truyềnlại-> lặp, sử dụng seq# để giải quyết  Bên nhậnphải gán seq # của gói tin đượcACK ‰ Đòi hỏibộđếmthờigian ngược 1-29
  30. rdt3.0 Bên gửi rdt_send(data) rdt_rcv(rcvpkt) && sndpkt = make_pkt(0, data, checksum) ( corrupt(rcvpkt) || udt_send(sndpkt) isACK(rcvpkt,1) ) rdt_rcv(rcvpkt) start_timer Λ Λ đợi đợi cuộc gọi timeout 0 từ trên ACK 0 udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt,1) && notcorrupt(rcvpkt) stop_timer && isACK(rcvpkt,0) stop_timer đợi đợicuộcgọi timeout ACK 1 1 từ trên udt_send(sndpkt) start_timer rdt_rcv(rcvpkt) rdt_send(data) Λ rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || sndpkt = make_pkt(1, data, checksum) isACK(rcvpkt,0) ) udt_send(sndpkt) start_timer Λ 1-30
  31. rdt3.0 (a) Không mất gói (b) Mất gói 1-31
  32. rdt3.0 (c) Mất ACK (c) Timeout 1-32
  33. Hiệunăng của rdt3.0 ‰ Hiệunăng của rdt3.0 bịảnh hưởng ‰ Ví dụ: đường truyền 1 Gbps, lan truyền 15 ms, gói tin 1KB: L (độ dài gói tin, bit) 8kb/pkt T = = = 8 microsec transmit R (tốc độ truyền, bps) 10 9 b/sec L / R .008 U = = = 0.00027 sender RTT + L / R 30.008  U sender: sự sử dụng –thời gian bên gửibậngửi  1KB pkt trong mỗi 30 msec -> 33kB/sec thông lượng qua đường truyền 1 Gbps  Giao thứcmạng hạnchế sử dụng tài nguyên vậtlý! 1-33
  34. rdt3.0: Hoạt động stop-and-wait Bên gửi Bên nhận gói tin đầutiênđượctruyền, t = 0 gói tin cuối cùng truyền, t = L / R bít của gói tin đầutiênđến RTT bít của gói tin cuốicùngđến, gửiACK ACK đến, gửi gói tin tiếp, t = RTT + L / R L / R .008 U = = = 0.00027 sender RTT + L / R 30.008 1-34
  35. Các giao thức Pipeline Pipeline: Bên gửi cho phép nhiều, tớicácgóitin được ack  Dảigiátrị sequence phảităng  Vùng đệmtại bên gửi và bên nhận ‰ Hai hình thức chung của các giao thức pipeline: go- Back-N, selective repeat 1-35
  36. Pipelining: Tăng hiệuquả sử dụng Bên gửi Bên nhận Bít gói tin đầutiênđượctruyền, t = 0 Bít cuối cùng đượctruyền t = L / R Bít gói tin đầutiênđến RTT Bít gói tin cuốicùngđến, gửiACK Bít cuối cùng của gói tin thứ 2 đến, gửi ACK ACK đến, gửi gói tin tiếp theo, Bít cuối cùng của gói tin 3 đến, gửiACK t = RTT + L / R Tăng hiệuquả sử dụng lên 3 lần 3 * L / R .024 U = = = 0.0008 sender RTT + L / R 30.008 1-36
  37. Go-Back-N Bên gửi: ‰ k-bit seq # trong pkt header ‰ “window” N, cho phép các gói tin không ack liên tiếp ‰ ACK(n): ACK mọi gói tin tới seq # n - “ACK tích lũy”  Có thể nhầmACK lặp ‰ Thờigianchomỗigóitin ‰ timeout(n): truyềnlại gói tin n và tấtcả gói tin seq# lớnhơn n trong cửasổ ‰ Lý do phảigiớihạnN: điềukhiểnluồng, điềukhiểntắcnghẽn 1-37
  38. GBN: FSM mở rộng của bên gửi rdt_send(data) if (nextseqnum < base+N) { sndpkt[nextseqnum] = make_pkt(nextseqnum,data,chksum) udt_send(sndpkt[nextseqnum]) if (base == nextseqnum) /* pkt chưa đượcackđầutiên*/ start_timer nextseqnum++ } Λ else refuse_data(data) base=1 nextseqnum=1 timeout start_timer đợi udt_send(sndpkt[base]) rdt_rcv(rcvpkt) udt_send(sndpkt[base+1]) && corrupt(rcvpkt) udt_send(sndpkt[nextseqnum-1]) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) Sử dụng một base = getacknum(rcvpkt)+1 timer cho gói tin If (base == nextseqnum) /* tấtcả các pkt đều đượcack*/ đãgửivàchưa stop_timer được ack và cũ else /* vẫn còn gói tin chưa đượcack*/ nhất start_timer 1-38
  39. GBN: FSM mở rộng của bên nhận default udt_send(sndpkt) rdt_rcv(rcvpkt) && notcurrupt(rcvpkt) Λ && hasseqnum(rcvpkt,expectedseqnum) đợi extract(rcvpkt,data) expectedseqnum=1 deliver_data(data) sndpkt = sndpkt = make_pkt(expectedseqnum,ACK,chksum) make_pkt(expectedseqnum,ACK,chksum) udt_send(sndpkt) expectedseqnum++ ACK: luôn gửi ACK cho gói tin đãnhận đúng với gói tin đúng thứ tự seq # nhất  Có thể sinh ra ACK lặp  Chỉ cầnnhớ expectedseqnum ‰ Gói tin không đúng thứ tự:  Loạibỏ (không đưavàobộ nhớđệm) 1-39
  40. GBN Window size = 4 pkt 1-40
  41. Selective Repeat ‰ Bên nhận ack riêng cho mọi gói tin nhận đúng  Đưa gói tin vào vùng đệmnếucầu, có thể sắpthứ tự chuyểnlênlớptrên ‰ Bên gửichỉ gửilại gói tin khi không nhậnACK  Bộđếmthời gian bên gửichomỗi gói tin không đượcACK ‰ Cửasổ bên nhận  N seq # liên tục  Giớihạn seq #s gửi, gói tin không ACK 1-41
  42. Selective repeat: Cửasổ bên gửi, bên nhận 1-42
  43. Selective repeat Bên gửi Bên nhận Dữ liệutừ trên: Gói tin n [rcvbase, rcvbase+N-1] ‰ Nếu có seq # tiếptrongcửasổ, ‰ GửiACK(n) gửi gói tin ‰ Không đúng thứ tự: vùng đệm timeout(n): ‰ Đúng thứ tự: chuyểnlên(cũng ‰ Gửilại gói tin n, khởitạolạibộ có thểđưa vào vùng đệm, xếp đếmthờigian thứ tự), cửasổ chuyểntiếptới gói tin đãnhậntiếp ACK(n) [sendbase,sendbase+N]: pkt n [rcvbase-N,rcvbase-1] ‰ Đánh dấu gói tin n đãnhận ‰ ACK(n) ‰ Nếu n gói tin không đượcACK nhỏ nhất, if n smallest unACKed Nếu không: pkt, chuyểncơ sở củacửasổ ‰ Bỏ qua tới seq # không được ACK tiếp 1-43
  44. Selective repeat 1-44
  45. Selective repeat Ví dụ: ‰ seq #’s: 0, 1, 2, 3 ‰ Kích thướccửasổ=3 ‰ Bên nhậnthấy không có sự khác nhau trong 2 kịch bản ‰ Chuyển không đúng dữ liệunhư mới(a) Q: Quan hệ giữakích thước seq# và kích thướccửasổ? 1-45
  46. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-46
  47. TCP: Tổng quan RFC: 793, 1122, 1323, 2018, 2581 ‰ Point-to-point: ‰ Dữ liệutruyền song  Một bên gửi, một bên nhận công: ‰ Tin cậy, có thứ tự  Luồng dữ liệutruyền hai chiềutrêncùngmộtkết ‰ Pipeline: nối  Điềukhiểntắc nghẽnvà  MSS: maximum segment điềukhiểnluồng củaTCP size thiếtlậpgiátrị kích thước cửasổ ‰ Hướng kếtnối: ‰ Vùng đệmgửivànhận  Bắttay(traođổicácbản tin điềukhiển), bên gửi khởi đầu ‰ Điềukhiểnluồng: application application writes data reads data  Bên gửi không gửi quá socket socket door door TCP TCP khả năng bên nhận send buffer receive buffer segment 1-47
  48. Cấutrúccủa TCP segment 32 bits URG: urgent data source port # dest port # đếmsố byte (không sử dụng) dữ liệu sequence number ACK: ACK # (không phải acknowledgement number segments!) head not PSH: push data len usedUAPRSF Receive window # bytes (không sử dụng) checksum Urg data pnter bên nhận RST, SYN, FIN: Options (chiều dài thay đổi) muốnnhận thiếtlậpkếtnối dữ liệu ứng dụng Internet (chiều dài thay đổi) checksum (như trong UDP) 1-48
  49. TCP seq # và ACK Seq. #: Host A Host B  Giá trị củaluồng Gõ byte củabyte đầu Seq= 42, AC ‘C’ K=79 , data tiên trong dữ liệu = ‘C’ của segment host ACK đãnhận ’ ACK: = ‘C ‘C’, báo lại , data K=43  seq # củabyte tiếp 9, AC ‘C’ eq=7 theo mong nhận S  ACK tích lũy host ACK đãnhận ‘C’ báo lại Q: Bên nhận điềukhiển Seq= 43, AC các segment không K=80 đúng thứ tự  A: Chuẩn không chỉ rõ, tùy thuộcvàocài time Kịch bản telnet đặtcụ thể 1-49
  50. RTT và Timeout trong TCP Q: Thiếtlậpgiátrị Q: Ướclượng RTT? timeout củaTCP? ‰ SampleRTT: đothờigiantừ truyền segment tớikhiACK đượcnhận ‰ LớnhơnRTT  Bỏ qua truyềnlại  RTT thay đổi ‰ SampleRTT thay đổi, ướclượng ‰ Quá nhỏ: timeout RTT chính xác hơn sớm  Giá trị trung bình của nhiềugiá trịđogần đó  Không cầnthiết truyềnlại ‰ Quá lớn: xử lý chậm các segment bị mất 1-50
  51. RTT và timeout trong TCP EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT ‰ Giá trị thường dùng: α = 0.125 1-51
  52. Ví dụướclượng RTT 350 300 250 RTT (milliseconds) RTT 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT 1-52
  53. RTT và timeout củaTCP Thiếtlập timeout ‰ EstimatedRTT cộng giớihạn an toàn  Sự thay đổilớncủa EstimatedRTT -> giá trị lề an toàn lớn ‰ Ướclượng SampleRTT kế thừatừ EstimatedRTT: DevRTT = (1-β)*DevRTT + β*|SampleRTT-EstimatedRTT| (thường, β = 0.25) Rồithiếtlập timeout: TimeoutInterval = EstimatedRTT + 4*DevRTT 1-53
  54. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-54
  55. Truyềndữ liệutin cậycủaTCP ‰ TCP tạodịch vụ rdt trên ‰ Truyềnlạikhi: dịch vụ không tin cậy  Có sự kiện timeout củaIP  Lặpack ‰ Pipelined segment ‰ Xét trường hợp bên ‰ ACK tích lũy gửi:  Bỏ qua điềukhiểnluồng, điềukhiểntắc nghẽn 1-55
  56. Các sự kiệncủa bên gửiTCP Nhậndữ liệutừứng dụng: Timeout: ‰ Tạo segment vớiseq# ‰ Truyềnlại segment bị quá ‰ seq # là giá trị luồng byte hạn củabyte đầutiêntrong ‰ Tính timeout interval cho segment segment truyềnlại ‰ Khởitạobộđếmthờigian ‰ Khởitạolạibộđếmthờigian ‰ Chuyển segment tớiIP Nhận Ack: ‰ Tính NextSeqNum ‰ Nếu segment trước đóchưa đượcACK  Cậpnhật để biết đãack ‰ Nếu segment trước đó đã ACK  Tăng bộđếmACK lặp, lặp3 lần thì truyềnlại 1-56
  57. NextSeqNum = InitialSeqNum SendBase = InitialSeqNum loop (forever) { switch(event) Bên gửi event: Nhận đượcdữ liệutừ tầng ứng dụng TạoTCP segment vớigiátrị sequence NextSeqNum TCP Khởi động timer cho segment NextSegNum Chuyển segment tớiIP (đơngiản) NextSeqNum = NextSeqNum + length(data) event: timer quá hạn cho segment có sequence number = y Giải thích: Truyềnlại segment có sequence number = y • SendBase-1: byte Tính timeout interval cho segment y Khởi động timer cho segment y được ack tích lũy cuối event: Nhận đượcACK, giátrị củatrường ACK: y Ví dụ: if (y > SendBase) { • SendBase-1 = 71; Bỏ timer củatấtcả các segment có sequence number y= 73, rcvr SendBase, } else { /* ACK lặp*/ vì thế dữ liệumới Tăng số ACK lặpcủa segment y if (số lầnACK lặpcủa segment y == 3) { đượcack Truyềnlại segment với sequence number = y Khởi động timer cho segment y } 1-57 }
  58. i ềnlạ Host B ảntruy Host A TCP: Kịch b Seq=92, 8 bytes dữ liệu Host B Seq=100, 20 bytes dữ liệu Host A 0 10 20 = 1 K = C K Seq=92, 8 bytes dữ liệu A AC 0 timeout Seq=92 10 K= Seq=92, 8 bytes dữ liệu AC X Sendbase 20 =1 timeout t mấ = 100 CK SendBase A Seq=92, 8 bytes dữ liệu = 120 Seq=92 timeout Seq=92 ớm 00 timeout s =1 CK SendBase A = 120 ại igian ềnl 1-58 thờ ước ản không truyđếntr Kịch b SendBase segment khi ACK = 100 timeout tACK ảnmấ thờigianKịch b
  59. ềnlại ảntruy Kịch b Host B Host A Seq=92, 8 bytes data 0 10 K= AC Seq=100, 20 bytes data X timeout mất 0 12 K= AC SendBase = 120 1-59 ũy thờigian ản ACK tích l Kịch b
  60. Truyềndữ liệutin cậycủaTCP: GBN hay Selective Repeat Giống GBN: ‰ ACK tích lũy ‰ Bên gửicủaTCP chỉ cầnduytrì  Sequence number nhỏ nhấtcủagóitin đãgửi, chưa đượcack (sendbase)  Sequence number củabyte tiếp theo sẽ gửi (nextseqnum) Khác GBN: ‰ Timeout của segment có sequence number là n chỉ gửi lại segment n ‰ RFC 2018 - TCP Selective Acknowledgment Options 1-60
  61. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-61
  62. Điềukhiểnluồng TCP Điềukhiểnluồng Bên gửi không gửi làm tràn ‰ Bên nhậncủakếtnối vùng đệm bên nhận: truyền quá TCP có buffer nhận: nhiều, quá nhanh ‰ Dịch vụ tương ứng tốc độ: tương ứng tốc độ gửivớitốc độ bên nhận 1-62
  63. Điềukhiểnluồng củaTCP ‰ Bên nhận thông tin về không gian còn thừa trong giá trị của RcvWindow trong segment (Giả sử bên nhậnbỏ segment ‰ Bên gửihạnchế dữ liệu không đúng thứ tự) chưa ACK theo RcvWindow ‰ Khônggiancònthừatrong  Đảmbảo buffer nhận buffer không bị tràn = RcvWindow LastByteSent - = RcvBuffer-(LastByteRcvd – LastByteAcked <= LastByteRead) RcvWindow ‰ RcvWindow = 0 ? 1-63
  64. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-64
  65. QuảnlýkếtnốicủaTCP Thiếtlậpkếtnối: Bắt tay 3 đường: Nhắclại: Bên gửi, bên nhận Bước1:Client gửi TCP SYN của TCP thiếtlậpkếtnối segment tớiserver trướckhitraođổidữ liệu  Chỉđịnh seq # ban đầu ‰ Khởitạogiátrị:  Không có dữ liệu  seq. # Bước2:Server nhậnSYN, trả lời  buffer, thông tin điều với SYNACK segment khiểnluồng (ví dụ: RcvWindow)  Server cấp phát buffer ‰ Client: khởitạokếtnối  Server khởitạo seq. # Socket clientSocket = new Bước3:Client nhận SYNACK, trả Socket("hostname","port lờibằng ACK segment, có thể number"); chứadữ liệu ‰ Server: liên lạcbởiclient Socket connectionSocket = welcomeSocket.accept(); 1-65
  66. Qu ảnlýk ế Thi tnốic ếtlậ ủaTCP pkế tnối: client server Co nn ec tion re qu es t (S YN =1 , se q=c lien t_i sn) Connection granted (SYN=1, seq=server_isn, ack=client_isn+1 ack (S YN =0 ack , s = eq se =c rve lie r_ nt_ isn is +1 n+ 1, 1-66
  67. QuảnlýkếtnốicủaTCP Đóng kếtnối: client server đóng client đóng socket: FIN clientSocket.close(); CK Bước1:client gửiTCP FIN A đóng tớiserver FIN Bước2:server nhận FIN, trả A lờibằng ACK. Đóng kếtnối, CK gửiFIN đơị igian ờ th đóng 1-67
  68. QuảnlýkếtnốicủaTCP Bước3:client nhận FIN, trả client server lờibằng ACK. đang đóng FIN  Thờigianđợi: trả lời bằng ACK báo đãnhận FIN CK A đang IN đóng Bước4:server, nhậnACK. F Kếtnối đóng. i ACK đã đóng đợ igian ờ th đóng 1-68
  69. QuảnlýkếtnốicủaTCP Chu kỳ hoạt động TCP server Chu kỳ hoạt động TCP client 1-69
  70. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-70
  71. Nguyên tắc điềukhiểntắcnghẽn Tắc nghẽn: ‰ Quá nhiềunguồngửi quá nhiềudữ liệu nhanh quá khả năng điềukhiểncủamạng ‰ Khác điềukhiểnluồng ‰ Đặc điểm:  Mất gói tin (tràn buffer tạirouter)  Độ trễ tăng (xếp hàng tại buffer củarouter) 1-71
  72. Nguyên nhân, tác hạicủatắcnghẽn: Kịch bản1 Host A l l : original data out ‰ Hai đốitượng gửi, in hai đốitượng nhận Host B unlimited shared ‰ Một router, vùng output link buffers đệm không giới hạn ‰ Không truyềnlại ‰ Độ trễ lớnkhi xảyratắc nghẽn ‰ Tối đa thông lượng có thểđạt được 1-72
  73. Nguyên nhân, tác hạicủatắcnghẽn: Kịch bản2 ‰ Một router, vùng đệm giớihạn ‰ Bên gửitruyềnlại gói tin mất Host A l lin : dữ liệu ban đầu out l'in : dữ liệu ban đầu, dữ liệu truyềnlại Host B vùng đệmcủa đường truyền đầuradùng chung và có giớihạn 1-73
  74. Nguyên nhân, tác hạicủatắcnghẽn: Kịch bản2 ‰ Luôn luôn: λ = λ (tốt) in out ‰ Truyềnlại “hoàn hảo”: truyềnlạichỉ khi mất λ > λ in out ‰ Sự truyềnlạicủa gói tin bị trễ (không mất) làmλ lớnhơn(trường in hợp hoàn hảo) so với λ out R/2 R/2 R/2 R/3 out out out R/4 λ λ λ R/2 R/2 R/2 λin λin λin a. b. c. “Tác hại” củatắc nghẽn: ‰ Xử lý nhiềuhơn(truyềnlại) ‰ Truyềnlại không cầnthiết: đường truyền mang nhiềubản sao chép của gói tin 1-74
  75. Nguyên nhân, tác hạicủatắcnghẽn: Kịch bản3 ‰ Bốn đốitượng gửi Q: Điềugìxảyrakhiλ ‰ Nhiều đường vàλ tăng? in ‰ timeout/truyềnlại in λin : dữ liệu ban đầu Host A λout λ'in : dữ liệu ban đầu, và dữ liệutruyềnlại vùng đệmcủa đường truyền ra dùng chung và có giớihạn Host B 1-75
  76. Nguyên nhân, tác hạicủatắcnghẽn: Kịch bản3 H λ o s o u t A t H o s t B Tác hạikháccủatắc nghẽn: ‰ Khi gói tin bị loạibỏ, khả năng truyền đường lên sử dụng cho gói tin đó đã lãng phí 1-76
  77. Các cách tiếpcận để điềukhiểntắcnghẽn Hai cách tiếpcậnchínhđể điềukhiểntắcnghẽn: Điềukhiểntắcnghẽn Điềukhiểntắcnghẽnvới cuối-cuối: sự giúp đỡ củamạng: ‰ Không có phảnhồi chính ‰ Router cung cấpphảnhồitới thứctừ mạng hệ thống cuối ‰ Tắc nghẽnsuyratừ hệ  Mộtbítchỉ ra tắcnghẽn thống cuối theo dõi mất gói (SNA, DECbit, TCP/IP, và độ trễ ECN, ATM) ‰ Cách tiếpcậnsử dụng bởi  Chỉ rõ tốc độ bên gửi nên TCP gửi 1-77
  78. Trường hợp nghiên cứu: ĐiềukhiểntắcnghẽnATM ABR ABR: Available Bit Rate: RM cell (Resource ‰ “Dịch vụ co dãn” Management): ‰ Nếu đường đicủa bên gửi ‰ Đượcgửibởi bên gửi, rảirác chưa đếngiớihạntải: cùng vớicell dữ liệu  Bên gửi nên sử dụng ‰ Các bít trong RM cell do switch băng thông khả dụng thiếtlập(cósự tham gia của ‰ Nếu đường đicủa bên gửi mạng) bị tắc nghẽn:  NI bit: không tăng tốc độ (tắc  Bên gửi điềuchỉnh tốc nghẽnnhẹ) độ đảmbảotốithiểu  CI bit: tắcnghẽn ‰ RM cell trả về cho bên gửibởi bên nhậnvới các bít không thay đổi 1-78
  79. Trường hợp nghiên cứu: ĐiềukhiểntắcnghẽnATM ABR ‰ Hai byte ER (Explicit Rate) trong RM cell  Switch tắc nghẽncóthể giảmgiátrị ER trong cell  Vì vậy, tốc độ gửicủa bên gửitốithiểutốc độ hỗ trợ trên đường ‰ Bít EFCI trong cell dữ liệu: đặtbằng 1 trong switch bị tắc nghẽn  Nếucell dữ liệu, trước cell RM, có EFCI thiếtlập, bên gửithiếtlậpbít CI trong cell RM trả về 1-79
  80. Chương 3: Tầng giao vận ‰ 3.1 Các dịch vụ tầng ‰ 3.5 Dịch vụ hướng kết giao vận nối: TCP ‰ 3.2 Multiplexing và  Cấu trúc segment demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng ‰ 3.3 Dịch vụ không hướng kếtnối: UDP  Quảnlýkếtnối ‰ 3.6 Các nguyên tắccủa ‰ 3.4 Các nguyên tắccủa truyềndữ liệutin cậy điềukhiểntắcnghẽn ‰ 3.7 Điềukhiểntắc nghẽn củaTCP 1-80
  81. Điềukhiểntắc nghẽncủaTCP ‰ Điềukhiển end-end (không có hỗ trợ Cách bên gửinhậnbiếtsự tắc củamạng) nghẽn? ‰ Bên gửigiớihạntruyền: ‰ Sự kiệnmất gói = timeout LastByteSent-LastByteAcked hoặclặplại3 ack ≤ CongWin ‰ Bên gửiTCP giảmtốc độ LastByteSent - LastByteAcked <= min{CongWin, (CongWin) sau sự kiệnmất RcvWin} gói ‰ Gần đúng, Ba cơ chế: CongWin  AIMD rate = Bytes/sec RTT  slow start  Không thay đổisausự kiện ‰ CongWin thay đổi động, chứcnăng timeout nhậnbiếtsự tắc nghẽncủamạng 1-81
  82. TCP AIMD Giảmcấpsố nhân: Giảm Tăng cấpsố cộng: Tăng CongWin mộtnửasau CongWin 1 MSS mỗi sự kiệnmấtgói RTT khi không có sự kiệnmất gói congestion window 24 Kbytes 16 Kbytes 8 Kbytes time Kếtnối TCP trong thời gian dài 1-82
  83. TCP Slow Start ‰ Khi kếtnốibắt đầu, tăng ‰ Khi kếtnốibắt đầu, tốc độ nhanh theo hàm CongWin = 1 MSS mũ cho đến khi có sự  Ví dụ: MSS = 500 byte & RTT = 200 msec kiệnmất gói đầutiên  Tốc độ ban đầu = 20 kbps ‰ Băng thông khả dụng có thể >> MSS/RTT  Mong muốn nhanh tớitốc độ đáng kể 1-83
  84. TCP Slow Start (tiếp) ‰ Khi kếtnốibắt đầu, Host A Host B tăng tốc độ hàm mũ tới 1 khi có sự kiệnmất gói segment đầutiên: RTT  Gấp đôi CongWin mỗi 2 segm RTT ents  Thự hiệnbằng cách tăng CongWin cho mọiACK 4 nhận được segments ‰ Tóm lại: tốc độ ban đầu là chậmnhưng nhanh chóng tăng theo hàm mũ time 1-84
  85. Quá trình tinh chỉnh Triếtlý: ‰ Sau 3 ACK lặplại: • 3 ACK lặpchỉ rằng khả  CongWin giảmmộtnửa năng củamạng chuyển  window tăng tuyếntính mộtsố segment ‰ Nhưng sau sự kiện timeout: • timeout trước 3 ACK lặp  CongWin thay vì thiết là đáng chú ý hơn lập 1 MSS;  window tăng hàm mũ  Tớingưỡng thì giảm tuyếntính 1-85
  86. Quá trình tinh chỉnh (tiếp) Q: Khi nào tăng theo số mũ chuyển thành theo tuyến tính? A: Khi CongWin có giá trị bằng 1/2 giá trị củanótrướckhi timeout. Thựchiện: ‰ Variable Threshold ‰ Tạisự kiệnmất gói, Threshold đặtbằng ½ CongWin ngay trướcsự kiện mất gói 1-86
  87. Tổng kết: Điềukhiểntắc nghẽncủaTCP ‰ Khi CongWin nhỏ hơn Threshold, bên gửi trong pha slow-start, window lớn theo hàm mũ. ‰ Khi CongWin lớnhơn Threshold, bên gửi trong pha congestion-avoidance, window lớn theo hàm tuyến tính. ‰ Khi xảyralặp3 ACK, Threshold đặtbằng CongWin/2 và CongWin đặtbằng Threshold. ‰ Khi timeout xảyra, Threshold đặtbằng CongWin/2 và CongWin đặtbằng 1 MSS. 1-87
  88. ĐiềukhiểntắcnghẽnbêngửicủaTCP Sự kiện Trạng thái Hành động bên gửi TCP Giải thích Nhận ACK Slow Start CongWin = CongWin + MSS, Kết quả bởi gấp đôi CongWin cho dữ liệu (SS) If (CongWin > Threshold) mỗi RTT không được Đặt trạng thái thành ack trước đó “Congestion Avoidance” Nhận ACK Congestion CongWin = CongWin+MSS * Tăng theo cấp số cộng, tăng cho dữ liệu Avoidance (MSS/CongWin) CongWin lên 1 MSS mỗi RTT không được (CA) ack trước đó Sự kiện mất SS hoặc CA Threshold = CongWin/2, Nhanh chóng phục hồi, thực gói phát hiện CongWin = Threshold, hiện tăng cấp số nhân. bởi 3 ACK lặp Đặt trạng thái thành “Congestion CongWin sẽ không giảm dưới Avoidance” 1 MSS. Timeout SS hoặc CA Threshold = CongWin/2, Vào slow start CongWin = 1 MSS, Đặt trạng thái thành “Slow Start” ACK lặp SS hoặc CA Tăng bộ đếm ACK lặp cho CongWin và Threshold không segment được ack thay đổi 1-88
  89. Thông lượng củaTCP ‰ Thông lượng trung bình củaTCP từ chức năng của window size và RTT?  Bỏ qua slow start ‰ Cho W là window size khi xảyramấtgói. ‰ Khi window là W, thông lượng là W/RTT ‰ Ngay sau mất gói, window giảmtớiW/2, thông lượng W/2RTT. ‰ Thông lượng trung bình: .75 W/RTT 1-89
  90. Tương lai củaTCP ‰ Ví dụ: 1500 byte segment, 100ms RTT, muốn 10 Gbps thông lượng ‰ Đòi hỏi window size W = 83,333 segment ‰ Thông lượng theo tốc độ mất gói: 1 . 22⋅ MSS RTT L ‰ ➜ L = 2·10-10 ‰ Phiên bảnmớicủaTCP chotốc độ caolàcầnthiết! 1-90
  91. Sự công bằng của TCP ‰ Mục đích của sự công bằng: Nếu K phiên TCP dùng chung đường truyền thắt nút băng thông R, mỗi đường nên có tốc độ trung bình là R/K KếtnốiTCP 1 điểmthắt nút Kết khả năng R nốiTCP2 1-91
  92. Lý do TCP công bằng Hai phiên cạnh tranh: R Chia sẻ băng thông bằng nhau 2 i ố n t ế k mất gói: giảm window hệ số 2 a ủ tránh tắc nghẽn: tăng cộng c g n ợ ư l g n ô h T Thông lượng củakếtnối1 R 1-92
  93. Sự công bằng (tiếp) Sự công bằng và UDP Sự công bằng và các kếtnối TCP song song ‰ Các ứng dụng đa phương tiệnthường ‰ Không ngănchặn ứng dụng không sử dụng TCP mở song song các kếtnối  Không muốntốc độ giảm giữa2 host bởi điềukhiểntắcnghẽn ‰ Trình duyệt Web thựchiện ‰ Ứng dụng sử dụng như trên UDP:  Đẩydữ liệu audio/video ở tốc độ hằng số, chấp nhậnmất gói 1-93
  94. Mô hình độ trễ Giả sử một đường truyềngiữa Q: Thờigianđể nhậnmột đối client và server có tốc độ R tượng từ Web server sau ‰ S: MSS (bits) khi gửimộtyêucầu? ‰ O: kích thước đốitượng (bit) Bỏ qua tắcnghẽn, độ trễảnh ‰ Không truyềnlại (không mất hưởng bởi: gói, không lỗi) ‰ ThiếtlậpkếtnốiTCP Kích thướccửasổ: ‰ Độ trễ truyềndữ liệu ‰ Cửasổ tắcnghẽncốđịnh, W segment ‰ Cửasốđộng, mô hình slow start 1-94
  95. Cửasổ tắc nghẽncốđịnh Trường hợp1: WS/R > RTT + S/R: ACK cho segment đầutiên trong cửasổ Độ trễ = 2RTT + O/R 1-95
  96. Cửasổ tắc nghẽncốđịnh Trường hợp2: ‰ WS/R < RTT + S/R: đợi ACK sau khi gửilượng dữ liệucủacửasổ Độ trễ = 2RTT + O/R + (K-1)[S/R + RTT - WS/R] 1-96
  97. Mô hình độ trễ TCP: Slow Start (1) Giả sử cửasổ lớn theo slow start Độ trễ cho một đốitượng là: O ⎡ S ⎤ P S Latency=2RTT +P + RTT ( +− 2 − 1 ) R ⎣⎢ R⎦⎥ R Trong đó, P là lượng thờigianTCP rỗitạiserver PQKmin= { ,− 1 } - Trong đó, Q là lượng thời gian server rỗinếu đốitượng kích thước không giớihạn. -VàK làsố cửasổ trùm qua đốitượng 1-97
  98. Mô hình độ trễ TCP: Slow Start (2) initiate TCP Các thành phầntrễ: connection • 2 RTT để thiếtlậpkết nốivàyêucầu request object • O/R để truyền đối first window tượng = S/R RTT •thờigianserver rỗivì second window slow start = 2S/R third window Server rỗi: = 4S/R P = min{K-1,Q} times fourth window Ví dụ: = 8S/R • O/S = 15 segment • K = 4 windows •Q = 2 • P = min{K-1,Q} = 2 complete object transmission delivered time at Thờigianrỗicủaserver time at server P=2 times client 1-98
  99. Mô hình độ trễ TCP (3) S thời gian khi server bắt đầu +RTT = R gửi segment tới khi server nhận ack segment initiate TCP connection k−1 S 2 = request thờigianđể truyềncửasổ object R first window thứ k = S/R + RTT second window ⎡ S k −1 S ⎤ = 2S/R ⎢ +RTT 2 − ⎥ = th ờigianrỗisau ⎣ R R ⎦ cửasổ thứ k third window = 4S/R O P delay= +2RTT + idleTime fourth window ∑ p = 8S/R R p=1 O P S S = +2RTT +∑ [ RTT +2k −1 − ] R k =1 R R complete object transmission delivered O S P S = +2RTT + [ P RTT + ] ( − 2 1 − ) time at time at server R R R client 1-99
  100. Mô hình độ trễ TCP (4) K = số cửasổ bao đốitượng Cách tính K? 0 1 k −1 Kmin= { k :+ 2 S + 2L S +SO 2 ≥ } 0 1 k −1 min= {k :+ 2 + 2L +OS 2 ≥ / } O min= {k :k− 2 ≥ 1 } S O min= {k :≥ k log + ( 1 )} 2 S ⎡ O ⎤ =log⎢ 2 ( + ⎥ 1 ) ⎢ S ⎥ Tính Q, giá rtị roỗ h icđốitượng có kích thước không giớihạntương tự. 1- 100
  101. Mô hình hóa HTTP ‰ Giả sử trang Web chứa:  1 trang HTML cơ sở (kích thước O bít)  M ảnh (mỗi ảnh kích thước O bít) ‰ Non-persistent HTTP:  M+1 kếtnốiTCP  Response time = (M+1)O/R + (M+1)2RTT + tổng thờigianrỗi ‰ Persistent HTTP:  2 RTT để yêu cầuvànhận file HTML cơ sở  1 RTT để yêu cầuvànhậnM ảnh  Response time = (M+1)O/R + 3RTT + tổng thờigianrỗi ‰ Non-persistent HTTP vớiX kếtnối song song  Giả sử M/X nguyên  1 kếtnối TCP cho file cơ sở  M/X tậpcủacáckếtnối song song cho ảnh  Response time = (M+1)O/R + (M/X + 1)2RTT + tổng thờigianrỗi 1- 101
  102. Thờigiantrả lời HTTP (giây) RTT = 100 msec, O = 5 Kbytes M=10 và X=5 20 18 16 14 non-persistent 12 10 persistent 8 6 parallel non- 4 persistent 2 0 28 100 1 Mbps 10 Kbps Kbps Mbps Đốivớibăng thông thấp, thờigiankếtnốivàthờigianphảnhồi chi phốibởi thờigiantruyền Persistent connection chỉ mang lạicảitiến thêm qua các kếtnối song song 1- 102
  103. Thờigianphảnhồi (giây) RTT =1 sec, O = 5 Kbyte, M=10 and X=5 70 60 50 non-persistent 40 30 persistent 20 parallel non- 10 persistent 0 28 100 1 Mbps 10 Kbps Kbps Mbps Đốivới RTT lớn, thờigianphảnhồi chi phốibởithiếtlậpkếtnốiTCP vàđộ trễ slow start. Persistent connection đem lạicảitiến quan trọng: đặcbiệt trong mạng delay, bandwidth cao. 1- 103
  104. Chương 3: Tổng kết ‰ Các nguyên tắcbêntrong các dịch vụ tầng giao vận:  multiplexing, demultiplexing  Truyềndữ liệutin cậy  Điềukhiểnluồng Tiếp theo:  Điềukhiểntắcnghẽn ‰ Dừng tìm hiểuphần bên ngoài củamạng (tầng ‰ Sự thựchiện trong Internet ứng dụng, tầng giao  UDP vận)  TCP ‰ Tìm hiểu vào trong lõi củamạng 1- 104