Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển
tầng vận chuyển - 2
Thực thi ở end-system
Bên gởi: thực hiện Dồn kênh
Nhận dữ liệu từ tầng ứng dụng (từ các socket)
Phân đoạn thông điệp ở tầng ứng dụng thành các segment
Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng Transport
Chuyển các segment xuống tầng mạng (network layer)
Bên nhận: thực hiện Phân kênh
Nhận các segment từ tầng mạng
Phân rã các segment thành thông điệp tầng ứng dụng
Chuyển thông điệp lên tầng ứng dụng (đến socket tương
ứng)
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 III.3: Tầng vận chuyển", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính - Chương III.3: Tầng vận chuyển
Chương 03 Tầng vận chuyển MẠNG MÁY TÍNH Tháng 09/2011 Chức năng - 1 Cung cấp kênh truyền dữ liệu ở mức logic giữa 2 tiến trình trên 2 máy Application Presentation Session Data link Physical Network Transport network data link physical network data link physical network data link physical network data link physical network data link physical application transport network data link physical application transport network data link physical li ti tr rt t r t li i l pplic tion transport net ork data link physical 2 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nội dung Giới thiệu Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP Giao thức UDP 3 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nhắc lại source application transport network link physical Ht Hn M segment Ht packet destination application transport network link physical Ht Hn M Ht M M network link physical link physical Ht Hn Hl M Ht Hn M Ht Hn M Ht Hn Hl M router switch message M M frame 4 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh tầng vận chuyển - 1 application transport network M P4 application transport network H n segment application transport network P1 M M M P2 P3 D D M Ht D Ht H n segment D Ht D Process nhận? Gởi đến Process? Ht 5 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh tầng vận chuyển - 2 Thực thi ở end-system Bên gởi: thực hiện Dồn kênh Nhận dữ liệu từ tầng ứng dụng (từ các socket) Phân đoạn thông điệp ở tầng ứng dụng thành các segment Dán nhãn dữ liệu: đóng gói theo giao thức tại tầng Transport Chuyển các segment xuống tầng mạng (network layer) Bên nhận: thực hiện Phân kênh Nhận các segment từ tầng mạng Phân rã các segment thành thông điệp tầng ứng dụng Chuyển thông điệp lên tầng ứng dụng (đến socket tương ứng) 6 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh tầng vận chuyển - 3 Hỗ trợ Truyền dữ liệu đáng tin cậy • Điều khiển luồng • Điều khiển tắt nghẽn • Thiết lập và duy trì kết nối Truyền dữ liệu không đáng tin cậy • Nổ lực gởi dữ liệu hiệu quả nhất Không hỗ trợ Đảm bảo thời gian trễ Đảm bảo băng thông 7 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Dồn kênh – Phân kênh - 1 Dồn kênh (Multiplexing): Thực hiện tại bên gởi Thu thập dữ liệu từ các socket dán nhãn dữ liệu với 1 header Phân kênh (Demultiplexing): Thực hiện tại bên nhận phân phối các segment nhận được cho socket tương ứng Khi đóng gói dữ liệu ở tầng transport, header sẽ thêm vào: Source port Destination port 8 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Dồn kênh – Phân kênh - 2 source port # dest port # 32 bits application data (message) other header fields Cấu trúc của một segment 9 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh P1 P1 5775 P2 6428 Dồn kênh – Phân kênh - 3 Client IP:A server IP: B SP: 6428 DP: 5775 SP: 5775 DP: 6428 10 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nội dung Giới thiệu Giao thức UDP Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP 11 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh UDP - 1 UDP: User Datagram Protocol [rfc768] Dịch vụ “nỗ lực” để truyền nhanh Gói tin UDP có thể: • Mất • Không đúng thứ tự Không kết nối: • Không có handshaking giữa bên gửi và nhận • Mỗi gói tin UDP được xử lý độc lập • Không có trạng thái kết nối 12 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh UDP - 2 source port # dest port # 32 bits Application data (message) UDP segment format length checksum Chiều dài gói tin (tính cả header) 13 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh UDP - 3 Application Transport .. Application Transport .. M U1 U2 U3 U Các segment đến không đúng thứ tự??? Mất segment? 14 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh UDP - 4 Tại sao lại sử dụng UDP? Không thiết lập kết nối Đơn giản: • không quản lý trạng thái nối kết • Không kiểm soát luồng Header nhỏ Nhanh Truyền thông tin cậy qua UDP Tầng application phát hiện và phục hồi lỗi 15 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh UDP - 5 Thường sử dụng cho các ứng dụng multimedia Chịu lỗi Yêu cầu tốc độ Một số ứng dụng sử dụng UDP DNS SNMP TFTP 16 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nội dung Giới thiệu Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP Giao thức UDP 17 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Bài toán Làm sao để truyền đáng tin cậy??? 18 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nguyên lý truyền dữ liệu đáng tin cậy Đặc tính của đường truyền không tin cậy quyết định độ phức tạp của nghi thức truyền tin cậy Bên gửi Bên nhận Đường truyền tin cậy tr a n s p o rt Nghi thức truyền tin cậy Nghi thức truyền tin cậy Đường truyền không tin cậy a. Cung cấp dvụ b. Triển khai dvụ a p p lic a ti o n 19 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nội dung Nghi thức truyền dữ liệu đáng tin cậy RDT 1.0 RDT 2.0, RDT 2.1, RDT 2.2 RDT 3.0 Pipeline Go-back-N Gởi lại có chọn 20 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Giải quyết lỗi bit Bên gởi Gởi kèm theo thông tin kiểm tra lỗi Sử dụng các phương pháp kiểm tra lỗi • Checksum, parity checkbit, CRC,.. Bên nhận Kiểm tra có xảy ra lỗi bit? Hành động khi xảy ra lỗi bit? • Báo về bên gởi 21 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Giải quyết mất gói Bên nhận Gởi tín hiệu báo • Gởi gói tin báo hiệu ACK, NAK Bên gởi Định nghĩa trường hợp mất gói Chờ nhận tín hiệu báo Hành động khi phát hiện mất gói 22 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Giao thức RDT RDT = Reliable Data Transfer Nguyên tắc: dừng và chờ Bên gởi • Gởi gói tin kèm theo thông tin kiểm tra lỗi • Dừng và chờ đến khi nào gói tin vừa gởi đến được bên nhận an toàn: nhận được gói tin ACK • Gởi lại khi có lỗi xảy ra: lỗi bit, mất gói Bên nhận: • Kiểm tra lỗi, trùng lắp dữ liệu • Gởi gói tin phản hồi Phiên bản: RDT 1.0 RDT 2.0, RDT 2.1, RDT 2.2 RDT 3.0 23 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nguyên lý pipe line Cho phép gởi nhiều gói tin khi chưa nhận ACK Sử dụng buffer để lưu các gói tin Bên gởi: lưu gói tin đã gởi nhưng chưa ack Bên nhận: lưu gói tin đã nhận đúng nhưng chưa đúng thứ tự Giải quyết mất gói Go back N Selective Repeat (gởi lại có chọn) 24 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt1.0 : đường truyền lý tưởng Giả thiết: kênh truyền bên dưới tuyệt đối Không lỗi bit Không mất gói tin FSM (finite state machine) cho bên gửi và nhận Bên gửi chuyển dữ liệu xuống kênh bên dưới Bên nhận đọc dữ liệu từ kênh truyền bên dưới Wait for call from above packet = make_pkt(data) udt_send(packet) rdt_send(data) extract (packet,data) deliver_data(data) Wait for call from below rdt_rcv(packet) sender receiver 25 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.0 kênh truyền có lỗi bit - 1 Giả thiết: kênh truyền có thể xảy ra lỗi bit Sử dụng các cơ chế kiểm tra lỗi • checksum Làm sao để khắc phục khi nhận ra lỗi? Acknowledgement(ACKs): bên nhận báo cho bên gửi đã nhận được dữ liệu Nagetive acknowledgement(NAKs): bên nhận báo gói tin bị lỗi Bên gửi sẽ gửi lại gói tin khi nhận NAK So với rdt1.0, rdt2.0: Nhận dạng lỗi Cơ chế phản hồi: ACK, NAK 26 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.0 FSM - 2 Wait for call from above extract(rcvpkt,data) deliver_data(data) udt_send(ACK) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) rdt_rcv(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && isNAK(rcvpkt) udt_send(NAK) rdt_rcv(rcvpkt) && corrupt(rcvpkt) Wait for ACK or NAK Wait for call from below sender receiver snkpkt = make_pkt(data, checksum) udt_send(sndpkt) rdt_send(data) L ACK/NAK sai??? 27 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.0 - 3 Giải quyết: Bên gửi gửi lại gói tin khi nhận ACK/NAK sai Bên gửi đánh số thứ tự cho mỗi gói tin Bên nhận sẽ loại bỏ gói tin trùng. Dừng và đợi Bên gửi gửi một gói tin và chờ phản hồi từ bên nhận 28 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.1 bên gửi xử lí lỗi ACK/NAK Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) Wait for ACK or NAK 0 udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isNAK(rcvpkt) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt) Wait for call 1 from above Wait for ACK or NAK 1 L L 29 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.1 bên nhận xử lí lỗi ACK/NAK Wait for 0 from below sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq0(rcvpkt) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) Wait for 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq0(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && not corrupt(rcvpkt) && has_seq1(rcvpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) sndpkt = make_pkt(ACK, chksum) udt_send(sndpkt) sndpkt = make_pkt(NAK, chksum) udt_send(sndpkt) 30 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.1 thảo luận Bên gửi Thêm số thứ tự vào gói tin 0 và 1??? Phải kiểm tra: ACK/NAK sai không Phải nhớ gói tin hiện thời có thứ tự 0 hay 1 Bên nhận • Phải kiểm tra nếu nhận trùng – So sánh trạng thái đang chờ (0 hay 1) với trạng thái gói tin nhận được • Bên nhận không biết ACK/NAK cuối cùng có chuyển tới bên gửi an toàn không? 31 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Cơ chế truyền đáng tin cậy - RDT Cơ chế: Checksum: kiểm tra có lỗi xảy ra không? ACK: bên nhận nhận đúng gói tin NAK: bên nhận nhận sai gói tin Sequence Number (1 bit = 0 hoặc 1) 32 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.2 không sử dụng NAK Hoạt động giống rdt2.1, nhưng không dùng NAK Bên nhận gửi ACK cho gói tin không lỗi nhận được cuối cùng. Bên nhận phải thêm số thứ tự vào gói tin ACK Bên gửi nhận trùng gói tin ACK xem như gói tin NAK gửi lại gói vừa gởi vì gói này chưa nhận được ACK 33 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt2.2: bên gửi và bên nhận Wait for call 0 from above sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) rdt_send(data) udt_send(sndpkt) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) Wait for ACK 0 sender FSM fragment Wait for 1 from below rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && has_seq1(rcvpkt) extract(rcvpkt,data) deliver_data(data) sndpkt = make_pkt(ACK1, chksum) udt_send(sndpkt) rdt_rcv(rcvpkt) && (corrupt(rcvpkt) || has_seq0(rcvpkt) ) sndpkt = make_pkt(ACK0, chksum) udt_send(sndpkt) receiver FSM fragment L 34 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 kênh truyền có lỗi và mất - 1 Giả thiết: Lỗi bit mất gói Checksum, số thứ tự, ACKs, truyền lại vẫn chưa đủ Xử lý? Giải pháp: • bên gửi đợi một khoảng thời gian hợp lí cho ACK • Gửi lại nếu không nhận đc ACK trong khoảng thời gian này • Nếu gói tin (hay ACK) bị trễ (không mất) – Gửi lại có thể trùng, phải đánh số thứ tự – Bên nhận phải xác định thứ tự của gói tin đã ACK • Yêu cầu đếm thời gian 35 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 bên gửi - 2 sndpkt = make_pkt(0, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) Wait for ACK0 rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,1) ) Wait for call 1 from above sndpkt = make_pkt(1, data, checksum) udt_send(sndpkt) start_timer rdt_send(data) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,0) rdt_rcv(rcvpkt) && ( corrupt(rcvpkt) || isACK(rcvpkt,0) ) rdt_rcv(rcvpkt) && notcorrupt(rcvpkt) && isACK(rcvpkt,1) stop_timer stop_timer udt_send(sndpkt) start_timer timeout udt_send(sndpkt) start_timer timeout Wait for call 0from above Wait for ACK1 L rdt_rcv(rcvpkt) L L 36 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 - 3 37 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 - 4 38 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 dừng và đợi - 5 39 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Rdt3.0 – Hiệu quả - 6 Rdt3.0 làm việc, nhưng không hiệu quả Vd:băng thông 1Gbps, 15ms end2end delay, gói tin 8Kb • Usender : tỉ lệ thời gian bên gửi gửi gói tin • Nghi thức đã hạn chế việc sử dụng tài nguyên mạng 40 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nghi thức pipeline - 1 Pipelining: bên gửi cho phép gửi nhiều gói tin khi chưa được báo nhận (ACK) Gói tin: sắp theo thứ tự tăng dần Dùng bộ đệm ở bên gửi hoặc/và bên nhận: “Sliding window” • Có hai giải pháp chính của nghi thức pipeline: – go-Back-N – gửi lại có chọn. 41 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nghi thức pipeline - 2 Tăng hiệu quả sử dụng lên 3 lần 42 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Go-Back-N – 1 Số thứ tự: k-bit “window” = N số gói tin được gởi liên tục không ACK • ACK(seq#): nhận đúng đến seq# 43 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Go-Back-N: bên nhận - 2 Bên gởi: Sử dụng buffer (“window”) để lưu các gói tin đã gởi nhưng chưa nhận được ACK Gởi nếu gói tin có thể đưa vào “window” Thiết lập đồng hồ cho gói tin cũ nhất (gói tin ở đầu “window”) Timeout: gửi lại tất cả các gói tin chưa ACK trong window Bên nhận: Chỉ gửi ACK cho gói tin đã nhận đúng với số thứ tự cao nhất • Có thể phát sinh trùng ACK Chỉ cần nhớ số thứ tự đang đợi Gói tin không theo thứ tự: • Loại bỏ: không có bộ đệm • Gửi lại ACK với số thứ tự lớn nhất 44 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Go-Back-N – ví dụ - 3 45 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Gửi lại có chọn - 1 Bên nhận: Báo nhận riêng lẻ từng gói tin nhận đúng • ACK(seq#): đã nhận đúng gói tin seq# dùng bộ đệm để lưu các gói tin không đúng thứ tự Nhận 1 gói tin không đúng thứ tự • Đưa vào bộ đệm nếu còn chỗ • Hủy gói tin Bên gởi: Có đồng hồ cho mỗi gói tin chưa nhận đc ACK Time out: chỉ gửi những gói tin không nhận được ACK 46 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Gửi lại có chọn - 2 Bắt đầu bên gửi Thứ tự kế tiếp Bắt đầu bên nhận Thứ tự bên gửi Thứ tự bên nhận Đã ACK Gửi, chưa ACK Chưa dùng không dùng đc Sai thứ tự nhưng đã ACK Đang đợi, chưa nhận đc Có thể nhận đc không dùng đc 47 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Gửi lại có chọn - 4 48 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Gửi lại có chọn - 5 Vd: Số thứ tự:0,1,2,3 Window size: 3 Mối quan hệ giữa số thứ tự và window size??? 49 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Nội dung Giới thiệu Nguyên tắc truyền dữ liệu đáng tin cậy Giao thức TCP Giao thức UDP 50 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP Giới thiệu Nguyên tắc hoạt động Quản lý kết nối Điều khiển luồng Điều khiển tắt nghẽn 51 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – giới thiệu - 1 TCP = Transport Control Protocol rfc: 793,1122,1323,2018,2581 Point – to – point • 1 người gởi và 1 người nhận Full-duplex • Dữ liệu truyền 2 chiều trên cùng kết nối • MSS: maximum segment size Hướng kết nối • Handshaking trước khi gửi dữ liệu 52 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP - giới thiệu - 2 TCP = Transport Control Protocol TCP cung cấp kết nối theo kiểu dòng (stream-of-bytes) • Không có ranh giới giữa các gói tin • Sử dụng buffer gởi và nhận Tin cậy, theo thứ tự Pipeline Kiểm soát luồng Kiểm soát tắt nghẽn socket door TCP send buffer TCP receive buffer socket door segment application writes data application reads data 53 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – cấu trúc gói tin source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number rcvr window size ptr urgent data checksum F S R P A U head len not used Options (variable length) URG: urgent data (generally not used) ACK: ACK # valid PSH: push data now (generally not used) RST, SYN, FIN: connection estab (setup, teardown commands) # bytes rcvr willing to accept 54 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – định nghĩa các trường - 1 Source & destination port Port của nơi gởi và nơi nhận Sequence number Số thứ tự của byte đầu tiên trong phần data của gói tin Acknowledgment number Số thứ tự của byte đang mong chờ nhận tiếp theo Window size Thông báo có thể nhận bao nhiêu byte sau byte cuối cùng được xác nhận đã nhận 55 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – định nghĩa các trường - 2 Checksum Checksum TCP header Urgent pointer Chỉ đến dữ liệu khẩn trong trường dữ liệu Cờ: URG = trường urgent pointer valid ACK = trường Acknowledge number valid PSH = dữ liệu cần phân phối ngay RST = chỉ định nối kết cần thiết lập lại (reset) SYN = sử dụng để thiết lập kết nối FIN = sử dụng để đóng kết nối 56 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – ví dụ Host A Host B User types ‘C’ host ACKs receipt of echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ simple telnet scenario Seq: số thứ tự của byte đầu tiên trong vùng data ACK: số thứ tự của byte chờ nhận tiếp theo 57 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – TRUYỀN DỮ LIỆU ĐÁNG TIN CẬY Nguyên tắc: dùng pipeline Bên gỏi đính kèm thông tin kiểm tra lỗi trong mỗi gói tin Sử dụng ACK để báo nhận Thiết lập thời gian timeout khi cho gói tin ở đầu buffer Gởi lại toàn bộ dữ liệu trong buffer khi hết time out 58 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – bên gởi Nhận dữ liệu từ tầng ứng dụng Tạo các segment Bật đồng hồ (nếu chưa bật) Thiết lập thời gian chờ, timeout Nhận gói tin ACK Nếu trước đó chưa nhận: trượt “cửa sổ” Thiết lập lại thời gian của đồng hồ Hết time out Gởi lại dữ liệu còn trong buffer Reset đồng hồ 59 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – bên nhận Nhận gói tin đúng thứ tự Chấp nhận Gởi ACK về cho bên gởi Nhận gói tin không đúng thứ tự Phát hiện “khoảng trống dữ liệu (GAP)” Gởi ACK trùng 60 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – ví dụ Host A time premature timeout Host B Se q =9 2 t im eo u t Host A loss ti m eo u t lost ACK scenario Host B X time Se q =9 2 ti m eo u t SendBase = 120 SendBase = 120 Sendbase = 100 61 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – thiết lập kết nối Thực hiện thao tác bắt tay 3 lần (Three way handshake) Máy A Máy B SYN_RCVD state ESTABLISHED state 62 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – đóng kết nối Thực hiện thao tác bắt tay 2 lần client server close close closed ti m e d w ai t 63 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP – quản lý kết nối TCP client lifecycle TCP server lifecycle 64 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP - Điều khiển luồng - 1 Nguyên nhân: Bên gởi làm tràn bộ đệm của bên nhận khi gởi quá nhiều dữ liệu hoặc gởi quá nhanh Sử dụng trường “window size” Window size: lượng DL có thể đưa vào buffer 65 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh TCP - Điều khiển luồng - 2 Ứng dụng gửi 2K Bên gửi bị khóa Bên gửi có thể gửi đến 2K Empty 2K Full 2K 2K 1K 0 4K Bộ đệm bên nhận Nhận Gửi Ứng dụng gửi 2K 66 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Kiểm soát tắt nghẽn - 1 Vấn đề: 1 node có thể nhận dữ liệu từ nhiều nguồn Buffer: giới hạn gói tin: đến ồ ạt xử lý không kịp tắt nghẽn Hiện tượng: Mất gói Delay cao Sử dụng đường truyền không hiệu quả unlimited shared output link buffers Host A lin : original data Host B lout 67 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Kiểm soát tắt nghẽn - 2 Giải quyết trong TCP: Bên gởi: • Thiết lập tốc độ gởi dựa trên phản hồi từ bên nhận – Nhận ACK – Mất gói – Độ trễ gói tin Tốc độ gởi: có 2 pha – Slow-Start – Congestion Avoidance Host A R T T Host B time 68 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh Tài liệu tham khảo Bài giảng của J.F Kurose and K.W. Ross về Computer Networking: A Top Down Approach 69 Khoa Công nghệ thông tin - Đại học Khoa học tự nhiên TP Hồ Chí Minh
File đính kèm:
- bai_giang_mang_may_tinh_chuong_iii_3_tang_van_chuyen.pdf