Bài giảng Mạng máy tính - Chương 3: Tầng giao vận
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:
- bai_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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- rdt3.0 (a) Không mất gói (b) Mất gói 1-31
- rdt3.0 (c) Mất ACK (c) Timeout 1-32
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- GBN Window size = 4 pkt 1-40
- 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
- Selective repeat: Cửasổ bên gửi, bên nhận 1-42
- 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
- Selective repeat 1-44
- 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
- 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
- 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
- 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
- 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
- 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
- RTT và timeout trong TCP EstimatedRTT = (1- α)*EstimatedRTT + α*SampleRTT Giá trị thường dùng: α = 0.125 1-51
- 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
- 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
- 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
- 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
- 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
- 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 }
- 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
- ề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
- 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
- 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
- Đ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
- Đ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
- 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
- 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
- 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
- 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
- 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
- QuảnlýkếtnốicủaTCP Chu kỳ hoạt động TCP server Chu kỳ hoạt động TCP client 1-69
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- Đ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
- 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
- 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
- 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
- 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
- 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
- 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
- Đ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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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