Bài giảng Mạng máy tính - Chương 4: Giao thức TCP - Nguyễn Hồng Sơn

pdf 46 trang ngocly 60 Free
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 4: Giao thức TCP - Nguyễn Hồng Sơ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_4_giao_thuc_tcp_nguyen_hong_s.pdf

Nội dung text: Bài giảng Mạng máy tính - Chương 4: Giao thức TCP - Nguyễn Hồng Sơn

  1. Ch ươ ng 4 Giao th ức TCP 1
  2. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-2
  3. Tổng quan TCP Ì RFCs: 793, 1122, 1323, 2018, Ì Song công hoàn toàn: 2581 H Lu ồng s ố li ệu ch ạy trên c ả Ì point-to-point: hai chi ều c ủa cùng k ết n ối H Một truy ền và một thu Ì Kết n ối có h ướng Ì Tin c ậy, gi ữ đúng th ứ tự (connection-oriented): Ì Cơ ch ế ống d ẫn (pipeline): H Bắt tay thông qua tra đ ổi thông đi ệp đi ều khi ển H Ki ểm soát ngh ẽn và đi ều khi ển lu ồng, cài đ ặt c ửa s ổ Ì Đi ều khi ển lu ồng: Ì Sử dụng b ộ đ ệm truy ền và H Máy phát không làm tràn nh ận bộ đ ệm máy thu ng d ng Ưng d ng ghi data c data socket socket door door TCP TCP bm truy n bm thu segment Ch ươ ng 4-Giao th c TCP 3-3
  4. Cấu trúc TCP segment URG: urgent data, báo có data kh n 32 bits trong segment đ ưc ch ra b i data pointer source port # dest port # Đ m theo byte s li u sequence number ACK: ACK # là hp l acknowledgement number head not PSH: chuy n data len used UAP R S F Receive window lên trên ngay checksum Urg data pointer S byte (# bytes) RST, SYN, FIN: Options (chi u dài thay đ i) Máy thu s n sàng nh n Thi t l p k t n i S li u c a ng d ng Internet (chi u dài thay đ i) checksum (như UDP) Ch ươ ng 4-Giao th c TCP 3-4
  5. Ch ỉ số tu ần t ự và báo nh ận ACK  TCP xem toàn b kh i s li u là mt dòng các byte liên t c  Ch s tu n t trong m i segment là th t trong dòng byte ca byte đ u tiên trong ph n data c a segment  Ch s báo nh n ACK trong segment là ch s tu n t ca byte k ti p trong dòng byte mà máy g i segment này đang ch . Ch ươ ng 4-Giao th c TCP 3-5
  6. Ví dụ ứng d ụng Telnet Khái ni ệm: Client Server Ì Piggyback User Seq= 42, AC Ì Gõ ký t K=79 Cumulative ACK , data ‘C’ = ‘ C’ Nh n 'C' và C’ truy n l i ‘C’ ta = ‘ 3, da CK=4 79, A Seq = Nh n 'C' và ph n h i Seq vi data =43, A CK=8 tr ng 0 Gi s client b t đ u v i tu n t 42 time Server b t đ u v i tu n t 79 Ch ươ ng 4-Giao th c TCP 3-6
  7. Tham s ố RTT và Timeout (1) Giá tr ị timeout? Tính RTT? Ì Ph ải l ớn h ơn th ời gian Ì Đo l ường th ời gian t ừ khi truy ền hành trình RTT (round segment đ ến khi nh ận ACK trip time) Ì Th ời gian này thay đ ổi > trung H RTT thay đ ổi bình Ì Quá ng ắn? Ì Quá dài? Ch ươ ng 4-Giao th c TCP 3-7
  8. Tham s ố RTT và Timeout (2) EstimatedRTT = (1- ααα)*EstimatedRTT + ααα*SampleRTT Ì Exponential weighted moving average Ì Ảnh h ưởng c ủa m ẫu quá kh ứ gi ảm nhanh theo hàm mũ Ì Giá tr ị tiêu bi ểu là: ααα = 0.125 Ch ươ ng 4-Giao th c TCP 3-8
  9. Ví dụ RTT: gaia.cs.umass.edu to fantasia.eurecom.fr 350 300 250 RTT RTT (milliseconds) 200 150 100 1 8 15 22 29 36 43 50 57 64 71 78 85 92 99 106 time (seconnds) SampleRTT Estimated RTT Ch ươ ng 4-Giao th c TCP 3-9
  10. Tham s ố RTT và Timeout (3) Cài đ ặt timeout Ì EstimtedRTT cộng v ới “gia s ố an toàn” H EstimatedRTT thay đổi nhi ều -> gia s ố lớn h ơn Ì Tr ước h ết xác đ ịnh đ ộ lệch c ủa m ẫu so v ới EstimatedRTT : DevRTT = (1-βββ)*DevRTT + βββ*|SampleRTT-EstimatedRTT| (giá tr ị tiêu bi ểu βββ = 0.25) Sau đó gán giá tr timeout interval: TimeoutInterval = EstimatedRTT + 4*DevRTT Ch ươ ng 4-Giao th c TCP 3-10
  11. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-11
  12. Truy ền s ố li ệu tin c ậy Ì TCP th ực hi ện d ịch v ụ Ì Vi ệc truy ền l ại đ ược truy ền s ố li ệu tin c ậy ngay kích ho ạt b ởi: trên d ịch v ụ chuy ển H ự ệ datagram không b ảo đ ảm IP S ki n timeout H ậ Ì Các segment đ ược chuy ển Nh n ack trùng theo c ơ ch ế ống d ẫn (Pipeline) Ì Dùng báo nh ận ki ểu tích lũy đại di ện (cumulative ack) Ì TCP dùng m ột b ộ đ ịnh th ời truy ền l ại Ch ươ ng 4-Giao th c TCP 3-12
  13. Các s ự ki ện phía TCP sender Nh ận data t ừ ứng d ụng: timeout: Ì Tạo segment với ch ỉ số Ì Truy ền l ại segment gây tu ần t ự kế ti ếp (seq #) ra timeout Ì Kh ởi đ ộng timer n ếu Ì Kh ởi đ ộng l ại timer ch ưa ch ạy (nh ư cho Nh ận ACK: ấ ư segment cũ nh t ch a Ì Nếu ack cho các ậ có báo nh n) segment cũ ch ưa có Ì Kho ảng th ời gian báo nh ận timeout đ ược gán: H Cập nh ật TimeOutInterval H Kh ởi đ ộng timer n ếu còn segment đang đ ợi Ch ươ ng 4-Giao th c TCP 3-13
  14. ền lại ản truy Host B ịch b Host A Các k Seq=92, 8 bytes data Host B Seq= 100, 20 bytes data Host A 0 10 20 Seq=92, 8 bytes data = 1 K = C CK A A 00 =1 K timeout Seq=92 AC Seq=92, 8 bytes data X 0 timeout Sendbase 2 loss =1 = 100 CK Seq=92, 8 bytes data SendBase A = 120 0 timeout Seq=92 10 K= AC m SendBase Timeout s = 120 3-14 time c TCP Chương 4-Giao th SendBase = 100 t ACK time M
  15. ền lại (2) ị ản truy K ch b Host B Host A Seq=92, 8 bytes data 0 10 K= AC Seq=100, 20 bytes data X timeout loss 0 12 K= AC SendBase = 120 3-15 c TCP n i di ương 4-Giao th time y đ Ch ACK tích l
  16. Phát sinh ACK c t theo RFC 1122, RFC 2581 S ki n t i máy thu Hành vi t i máy thu Segment n úng th t vi ch Ch m ACK. i segment k trong si. T t c n ch 500ms. N u không có segment k , s này u ã ưc báo nh n gi ACK Segment n úng th t vi ch Gi ngay m t ACK i di n báo si. M t segment khác nh n cho c hai m t lúc ang ưc xúc ti n báo nh n Segment n không úng th t Gi ngay ACK trùng ch s ch vi ch s ln h ơn ch s byte ang i k ti p i. Phát hi n m t segment Segment n b sung vào m t Gi ngay ACK,báo ch segment v i ph n hay toàn b s b mt byte b t u t i ch thi u u tiên Ch ươ ng 4-Giao th c TCP 3-16
  17. Truy ền l ại nhanh (Fast Retransmit) Ì Kho ảng time out t ươ ng Ì Nếu máy phát nh ận 3 đối dài: ACK trùng cho cùng H Ch ậm truy ền l ại segment data, xem nh ư segmnet bị mất kế ti ếp đã b ị mất: Ì Phát hi ện m ất segment H Truy ền l ại nhanh : truy ền qua ACK trùng. lại tr ước khi timer h ết hạn H Sender g ửi nhi ều segment liên ti ếp H Nếu segment b ị mất s ẽ có nhi ều ACK trùng. Ch ươ ng 4-Giao th c TCP 3-17
  18. Host A Host B X Tru y n l i l n 2 timeout time Truy n l i sau khi nh n ba ACK trùng Ch ươ ng 4-Giao th c TCP 3-18
  19. Gi ải thu ật truy ền l ại nhanh: s ki n: nh n ACK , vi giá tr ACK cho y if (y > SendBase) { SendBase = y if (có các segment v n ch ưa ưc báo nh n) start timer } else { tng s m ACK nh n cho y if (n u s m ACK nh n cho y = 3) { truy n l i segment vi s tu n t y } Mt ACK trùng cho Truy n l i nhanh segment đ ưc báo nh n Ch ươ ng 4-Giao th c TCP 3-19
  20. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-20
  21. Đi ều khi ển lu ồng (Flow Control Ì Máy thu có bộ đ ệm Ì Đi ều ch ỉnh t ốc đ ộ phù thu: hợp: t ốc đ ộ truy ền và tốc đ ộ lấy data Data t Data trong Quá trình bộ đệm IP Vùng tr ng ng d ng Đi u khi n lu ng làm nhi m v không đ cho máy phát làm tràn b đ m thu vì truy n quá nhi u, quá nhanh Ì Quá trình ứng d ụng có th ể ch ậm l ấy data t ừ bộ đệm thu đ ể xử lý Ch ươ ng 4-Giao th c TCP 3-21
  22. Ho ạt đ ộng đi ều khi ển lu ồng Ì Máy thu qu ảng cáo Data t Data trong Quá trình kho ảng tr ống b ằng cách Vùng tr ng bộ đệm IP ng d ng gắn giá tr ị RcvWindow trong segment Ì Máy phát gi ới h ạn s ố (gi ả sử máy thu lo ại b ỏ các data ch ưa báo nh ận segment không đúng th ứ trong ph ạm vi tự) RcvWindow Ì Kho ảng tr ống trong b ộ đ ệm H Đảm b ảo máy thu không = RcvWindow bị tràn = RcvBuffer-[LastByteRcvd - LastByteRead] Ch ươ ng 4-Giao th c TCP 3-22
  23. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-23
  24. Qu ản lý liên k ết TCP (1/5) Nh ắc l ại: máy phát và máy Bắt tay ba b ước: thu t ạo c ầu n ối tr ước Bước 1: client gửi TCP SYN khi truy ền data segment đến server Ì Kh ởi t ạo các bi ến: H Ch ỉ ra seq # ban đ ầu H seq. #s H Không có data H buffers, flow control (ví Bước 2: server nh ận SYN, ph ản dụ RcvWindow ) hồi SYNACK segment H server cấp phát b ộ đ ệm H Ch ỉ ra seq # ban đ ầu Bước 3: client nh ận SYNACK, ph ản h ồi ACK segment, có th ể ch ứa data Ch ươ ng 4-Giao th c TCP 3-24
  25. Qu ản lý liên kêt TCP (2/5): Bắt tay ba bước Ch ươ ng 4-Giao th c TCP 3-25
  26. Qu ản lý liên k ết TCP(3/5) Th ủ tục h ủy k ết n ối: client server close Step 1: client gửi TCP FIN FIN đến server CK Step 2: server nh ận FIN, A close ph ản h ồi ACK. Ti ến hành FIN đóng k ết n ối và gửi FIN. ACK timed wait closed Ch ươ ng 4-Giao th c TCP 3-26
  27. Qu ản lý liên k ết (4/5) Step 3: client nh ận FIN, client server ả ồ ph n h i ACK. closing FIN H Vào tr ạng thái “timed wait” - gửi ACK cho server (báo nh ận FIN) CK A closing IN Step 4: server nh ận ACK , F cắt k ết n ối th ực s ự. ACK closed timed wait closed Ch ươ ng 4-Giao th c TCP 3-27
  28. Qu ản lý liên k ết TCP (5/5) Chu k ca TCP server Chu k ca TCP client Ch ươ ng 4-Giao th c TCP 3-28
  29. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-29
  30. Ki ểm soát ngh ẽn Hi ện t ượng ngh ẽn: Ì Thông th ường: “quá nhi ều ngu ồn g ửi quá nhi ều data và quá nhanh vào m ạng, quá kh ả năng ch ịu đ ựng” Ì Một khía c ạnh khác bi ệt v ới đi ều khi ển lu ồng, đi ều khi ển lu ồng ch ỉ gi ải quy ết ph ần ng ọn! Ì Các bi ểu hi ện c ủa ngh ẽn: H Mất gói (b ộ đ ệm t ại node b ị tràn) H Quá tr ễ (x ếp hàng dài trong b ộ đ ệm t ại node) Ì Một trong 10 v ấn đ ề hàng đ ầu c ủa m ạng! Ch ươ ng 4-Giao th c TCP 3-30
  31. Nguyên nhân và phí tổn: kịch b ản 1 Host A λ λ : s li u ngu n out Ì hai sender, hai in receiver Host B Bm u ra không Ì Một router, bộ gi i h n đệm vô h ạn Ì Không truy ền l ại Ì Quá tr ễ khi ngh ẽn Ì Tối đa thông lượng Ch ươ ng 4-Giao th c TCP 3-31
  32. Nguyên nhân và phí tổn: k ịch b ản 2 Ì Một router, bộ đ ệm h ữu h ạn Ì sender truy ền l ại gói b ị mất Host A λ λin : s li u ngu n out λ'in : s li u ngu n+ data truy n l i Host B Bm h u h n Ch ươ ng 4-Giao th c TCP 3-32
  33. Nguyên nhân và phí tổn: k ịch b ản 2 Ì Luôn luôn: λ = λ in out Ì Ch ỉ truy ền l ại khi m ất: λ > λ in out Ì Truy ền l ại các gói tr ễ (không m ất) làm cho t ải đ ầu vào λ l ớn h ơn in so v ới truy ền l ại khi m ất có cùng λ 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. Phí tổn do ngh ẽn: Ì Truy ền l ại quá nhi ều Ì Truy ền l ại không c ần thi ết: liên k ết mang quá nhi ều b ản sao c ủa gói Ch ươ ng 4-Giao th c TCP 3-33
  34. Nguyên nhân và phí tổn: k ịch b ản 3 (1/2) Ì Bốn sender Đi ều gì xảy ra khi λ in Ì Các đ ường đi qua nhi ều node vàλ gia tăng ? Ì timeout/truy ền l ại in Host A λout λin : data ngu n λ'in : data ngu n + data truy n l i Bm h u h n Host B Ch ươ ng 4-Giao th c TCP 3-34
  35. Nguyên nhân và phí tổn: k ịch b ản 3 (2/2) H λ o o s u t A t H o s t B Phí tổn khác: Ì Khi gói b ị hủy, b ất kỳ dung l ượng truy ền lên nào cho gói đ ều là lãng phí! Ch ươ ng 4-Giao th c TCP 3-35
  36. Các gi ải pháp End-end congestion Network-assisted control: congestion control: Ì Không có ph ản h ồi t ường Ì Các router thông báo cho minh t ừ mạng host Ì Các host xét tri ệu ch ứng H Bit ch ỉ đ ịnh ngh ẽn mất gói và tr ễ (SNA, DECbit, TCP/IP ECN, ATM) Ì TCP dùng cách này H Tốc đ ộ nào sender nên truy ền vào lúc nào Ch ươ ng 4-Giao th c TCP 3-36
  37. NỘI DUNG Ì Tổng quan Giao th ức truy ền t ải h ướng k ết n ối, TCP H Cấu trúc segment Ì Truy ền t ải s ố li ệu tin c ậy Ì Đi ều khi ển lu ồng (flow control) Ì Qu ản lý liên k ết Ì Ki ểm soát ngh ẽn Ì Ki ểm soát ngh ẽn TCP Ch ươ ng 4-Giao th c TCP 3-37
  38. Ki ểm soát ngh ẽn trong TCP Ì Gi ải pháp: tăng t ốc đ ộ truy ền (window size), thăm dò băng thông hữu d ụng cho đ ến khi x ảy ra m ất gói H additive increase: tăng CongWin lên 1 MSS sau m ỗi RTT (nh ận đ ược báo nh ận) cho đ ến khi phát hi ện m ất data H multiplicative decrease : gi ảm c ửa s ổ đi m ột n ửa CongWin khi th ấy m ất data congestion window 24 Kbytes Thăm dò băng thông 16 Kbytes 8 Kbytes congestion size window timetime Ch ươ ng 4-Giao th c TCP 3-38
  39. Chi ti ết ki ểm soát ngh ẽn trong TCP Ì Máy phát gi ới h ạn truy ền theo: Nh ận th ức ngh ẽn: LastByteSent-LastByteAcked Ì Sự ki ện m ất= timeout ≤≤≤ CongWin hay 3 ack trùng Ì Sơ b ộ, Ì Máy phát gi ảm t ốc CongWin (CongWin ) sau m ột s ự rate = Bytes/sec RTT ki ện m ất Ì CongWin là đ ộng,thay đ ổi theo Ba c ơ ch ế: tình tr ạng ngh ẽn c ủa m ạng (hàm H AIMD: additive số của ngh ẽn) increase-multiplicative decrease H slow start H Đàm phán sau các s ự ki ện timeout Ch ươ ng 4-Giao th c TCP 3-39
  40. TCP Slow Start (1/2) Ì Khi b ắt đ ầu, CongWin = 1 MSS H Ví dụ: MSS = 500 bytes và RTT = 200 msec H Tốc đ ộ kh ởi đ ộng = 20 kbps Ì Băng thông kh ả dụng có lẻ lớn h ơn nhi ều so v ới MSS/RTT H Mu ốn nhanh chóng đ ạt t ốc độ cao nh ất có th ể Ch ươ ng 4-Giao th c TCP 3-40
  41. TCP Slow Start (2/2) Ì Gia tăng t ốc đ ộ nhanh Host A Host B chóng theo hàm mũ cho 1 đến khi phát hi ện s ự segment ki ện m ất data đ ầu tiên: RTT 2 H Gấp đôi CongWin sau segments mỗi RTT H Được th ực hi ện sau m ỗi 4 lần nh ận ACK segments Ì Tóm l ại: tốc đ ộ ban đ ầu ch ậm nh ưng tăng nhanh theo hàm mũ time Ch ươ ng 4-Giao th c TCP 3-41
  42. Hi ệu ch ỉnh (1/2) Hi u ch nh c a s ngh n và tc đ tăng kích th ưc tùy theo tri u ch ng (s ki n ch th ) ngh n Ì Sau 3 ACK trùng: H CongWin gi ảm 1/2 H ế Sau đó window tăng tuy n Lý do tính Ì Sau s ự ki ện timeout:  3 ACK trùng có l mng còn có kh năng chuy n phát H CongWin = 1 MSS; segment H window tăng theo hàm mũ  timeout tín hi u c a tình H Đến ng ưỡng (Threshold) s ẽ tr ng ngh n tăng tuy ến tính Ch ươ ng 4-Giao th c TCP 3-42
  43. Hi ệu ch ỉnh (2/2) Câu h ỏi đ ặt ra: khi nào nên chuy ển t ừ tăng theo hàm mũ sang tăng theo tuy ến tính? Khi CongWin đạt 1/2 giá tr ị của nó tr ước khi có timeout x ảy ra Th ực hi ện: Ì Dùng ng ưỡng (Threshold) Ì Khi có sự ki ện ngh ẽn, gán Threshold = CongWin/2 (giá tr ị cửa s ổ ngh ẽn hi ện hành ngay tr ước khi có timeout) Ch ươ ng 4-Giao th c TCP 3-43
  44. Tóm t ắt gi ải thu ật ki ểm soát ngh ẽn c ủa TCP Ì Khi CongWin Threshold , máy phát ch ạy theo congestion-avoidance , cửa s ổ tăng tuy ến tính. Ì Khi có 3 ACK trùng nhau, gán ng ưỡng b ằng 1/2 c ửa sổ hi ện hành và gán l ại c ửa s ổ bằng ng ưỡng (=1/2 c ửa sổ hi ện hành. Ì Khi có timeout gán ng ưỡng b ằng CongWin/2 và gán lại CongWin = 1 MSS. Ch ươ ng 4-Giao th c TCP 3-44
  45. Ch ươ ng 4-Giao th c TCP 3-45
  46. HẾT CH ƯƠ NG 4 Ch ươ ng 4-Giao th c TCP 3-46