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

❒ Tổng quan Giao thức truyền tải hướng kết nối, TCP + 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 Tổng quan TCP ❒ Song công hoàn toàn: ❍ Luồng số liệu chạy trên cả hai chiều của cùng kết nối ❒ Kết nối có hướng (connection-oriented): ❍ Bắt tay thông qua tra đổi thông điệp điều khiển ❒ Điều khiển luồng: ❍ Máy phát không làm tràn bộ đệm máy thu ❒ RFCs: 793, 1122, 1323, 2018, 2581 ❒ point-to-point: ❍ Một truyền và một thu ❒ Tin cậy, giữ đúng thứ tự ❒ Cơ chế ống dẫn (pipeline): ❍ Kiểm soát nghẽn và điều khiển luồng, cài đặt cửa sổ ❒ Sử dụng bộ đệm truyền và nhận

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