Bài giảng Mạng máy tính - Chương 6: Tầng giao vận - Ngô Hồng Sơn
Tổng quan về tầng giao vận (1)
Cung cấp phương tiện
truyền giữa các ứng dụng
cuối
Bên gửi:
Nhận dữ liệu từ ứng dụng
ðặt dữ liệu vào các đoạn tin và
chuyển cho tầng mạng
Nếu dữ liệu quá lớn, nó sẽ
được chia làm nhiều phần và
đặt vào nhiều đoạn tin khác
nhau
Bên nhận:
Nhận các đoạn tin từ tầng
mạng
Tập hợp dữ liệu và chuyển lên
cho ứng dụng
Tổng quan về tầng giao vận (2)
ðược cài đặt trên các hệ
thống cuối
Không cài đặt trên các
routers, switches
Hai dạng dịch vụ giao vận
Tin cậy, hướng liên kết, e.g
TCP
Không tin cậy, không liên kết,
e.g. UD
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 6: Tầng giao vận - Ngô Hồng Sơ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 6: Tầng giao vận - Ngô Hồng Sơn
1Chương 6: Tầng giao vận Giảng viên: Ngô Hồng Sơn Bộ môn Truyền thông và Mạng máy tính Khoa CNTT- ðHBK Hà Nội 2Tổng quan Các tuần trước : Giao thức IP ðịa chỉ, gói tin IP ICMP Chọn ñường Hôm nay: Tầng giao vận Nguyên lý tầng giao vận Giao thức UDP Giao thức TCP 3Các khái niệm cơ bản Nhắc lại kiến trúc phân tầng Hướng liên kết vs. Không liên kết UDP & TCP 4Nhắc lại về kiến trúc phân tầng Application (HTTP, Mail, ) Transport (UDP, TCP ) Network (IP, ICMP) Datalink (Ethernet, ADSL) Physical (bits) Hỗ trợ các ứng dụng trên mạng Truyền dữ liệu giữa các ứng dụng Chọn ñường và chuyển tiếp gói tin giữa các máy, các mạng Hỗ trợ việc truyền thông cho các thành phần kế tiếp trên cùng 1 mạng Truyền và nhận dòng bit trên ñường truyền vật lý 5Tổng quan về tầng giao vận (1) Cung cấp phương tiện truyền giữa các ứng dụng cuối Bên gửi: Nhận dữ liệu từ ứng dụng ðặt dữ liệu vào các ñoạn tin và chuyển cho tầng mạng Nếu dữ liệu quá lớn, nó sẽ ñược chia làm nhiều phần và ñặt vào nhiều ñoạn tin khác nhau Bên nhận: Nhận các ñoạn tin từ tầng mạng Tập hợp dữ liệu và chuyển lên cho ứng dụng application transport network data link physical application transport network data link physical logical end -end transport 6Tổng quan về tầng giao vận (2) ðược cài ñặt trên các hệ thống cuối Không cài ñặt trên các routers, switches Hai dạng dịch vụ giao vận Tin cậy, hướng liên kết, e.g TCP Không tin cậy, không liên kết, e.g. UDP application transport network data link physical network data link physical 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 logical end -end transport 7Tại sao lại cần 2 loại dịch vụ? Các yêu cầu ñến từ tầng ứng dụng là ña dạng Các ứng dụng cần dịch vụ với 100% ñộ tin cậy như mail, web Sử dụng dịch vụ của TCP Các ứng dụng cần chuyển dữ liệu nhanh, có khả năng chịu lỗi, e.g. VoIP, Video Streaming Sử dụng dịch vụ của UDP 8Ứng dụng và dịch vụ giao vận Ứng dụng e-mail remote terminal access Web file transfer streaming multimedia Internet telephony Giao thức ứng dụng SMTP Telnet HTTP FTP giao thức riêng (e.g. RealNetworks) giao thức riêng (e.g., Vonage,Dialpad) Giao thức giao vận TCP TCP TCP TCP TCP or UDP thường là UDP 9Các chức năng chung Dồn kênh/phân kênh Mã kiểm soát lỗi 10 Dồn kênh/phân kênh - Mux/Demux Multiplexing Demultiplexing Giao thức tầng mạng HTTP FTP Chat HTTP FTP Chat Giao thức giao vận Giao thức ứng dụng 11 Mux/Demux hoạt ñộng ntn? Tại tầng mạng, gói tin IP ñược ñịnh danh bởi ñịa chỉ IP ðể xác ñịnh máy trạm Làm thế nào ñể phân biệt các ứng dụng trên cùng một máy? Sử dụng số hiệu cổng (16 bits) Mỗi tiến trình ứng dụng ñược gán 1 cổng Socket: Một cặp ñịa chỉ IP và số hiệu cổng source port # dest port # 32 bits application data (message) other header fields TCP/UDP segment format 12 Checksum Phát hiện lỗi bit trong các ñoạn tin/gói tin Nguyên lý giống như checksum (16 bits) của giao thức IP Ví dụ: 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 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 Tổng Checksum 13 UDP User Datagram Protocol Tổng quan Khuôn dạng gói tin 14 Giao thức dạng “Best effort” Vì sao cần UDP? Không cần thiết lập liên kết (tăng ñộ trễ) ðơn giản: Không cần lưu lại trạng thái liên kết ở bên gửi và bên nhận Phần ñầu ñoạn tin nhỏ Không có quản lý tắc nghẽn: UDP cứ gửi dữ liệu nhanh nhất, nhiều nhất nếu có thể UDP có những chức năng cơ bản gì? Dồn kênh/phân kênh Phát hiện lỗi bit bằng checksum 15 Khuôn dạng bức tin (datagram) source port # dest port # 32 bits Application data (message) Khuôn dạng ñơn vị dữ liệu của UDP length checksum ðộ dài toàn bộ bức tin tính theo byte UDP sử dụng ñơn vị dữ liệu gọi là – datagram (bức tin) 16 Các vấn ñề của UDP Không có kiểm soát tắc nghẽn Làm Internet bị quá tải Không bảo ñảm ñược ñộ tin cậy Các ứng dụng phải cài ñặt cơ chế tự kiểm soát ñộ tin cậy Việc phát triển ứng dụng sẽ phức tạp hơn 17 Khái niệm về truyền thông tin cậy 18 Kênh có lỗi bit, không bị mất tin Phát hiện lỗi? Checksum Làm thế nào ñể báo cho bên gửi? ACK (acknowledgements): NAK (negative acknowledgements): báo cho bên nhận rằng pkt bị lỗi Phản ứng của bên gửi? Truyền lại nếu là NAK 19 Hoạt ñộng Time Time Sender Receiver pkt0 pkt1 pkt1 N A K A C K send pkt0 pkt1 is corrupted rcv ACK send pkt1 rcv NAK resend pkt1 pkt1 is OK 20 Lỗi ACK/NAK Cần truyền lại Xử lý việc lặp gói tin ntn? Thêm Seq.# Time Time Sender Receiver pkt0 pkt1 pkt1 A C K A C K send pkt0 pkt1 is OK rcv ACK send pkt1 rcv sth corrupted! resend pkt1 pkt0 is OK rcv pkt1 duplicate, discard it 21 Giải pháp không dùng NAK Time Time Sender Receiver pkt0 pkt1 pkt0 A C K 1 A C K 0 send pkt0 pkt1 is OK rcv ACK0 send pkt1 rcv ACK1 send pkt0 pkt0 is OK pkt0 is corrupted pkt0 A C K 1 rcv ACK1 resend pkt0 22 Kênh có lỗi bit và mất gói tin Dữ liệu và ACK có thể bị mất Nếu không nhận ñược ACK? Truyền lại như thế nào? Timeout! Thời gian chờ là bao lâu? Ít nhất là 1 RTT (Round Trip Time) Mỗi gói tin gửi ñi cần 1 timer Nếu gói tin vẫn ñến ñích và ACK bị mất? Dùng số hiệu gói tin 23 Minh họa 24 Minh họa 25 Truyền theo kiểu pipeline Sender Receiver ACKs Data pkts Sender Receiver ACK 1 data pkt stop-and-wait Pipeline 26 So sánh hiệu quả 0 sender time RTT L / R A C K RTT + L / R Performance = L / R RTT + L / R time stop-and-wait L: Size of data pkt R: Link bandwidth RTT: Round trip time receiver DATA sender receiver RTT L / R RTT + L / R time time Performance = 3 * L / R RTT + L / R Pipeline DATA 27 Go-back-N Sender Chỉ gửi các gói tin với số hiệu trong cửa sổ, “dịch” cửa sổ sang phải mỗi khi nhận ñược ACK ACK(n): xác nhận cho các gói tin với số hiệu cho ñến n Khi có timeout: truyền lại tất cả các gói tin có số hiệu lớn hơn n trong cửa sổ. Sent, ACKed Sent, yet ACKed Can be used Can not be used Window, size N Receiver Chỉ gửi 1 xác nhận ACK cho gói tin có số hiệu lớn nhất ñã nhận ñược theo ñúng thứ tự. Với các gói tin không theo thứ tự: Hủy bỏ -> không lưu vào vùng ñệm Xác nhận lại gói tin với số hiệu lớn nhất còn ñúng thứ tự Seq, # 28 Ví dụ về GBN 29 Selective Repeat Bên nhận xác nhận riêng rẽ cho từng gói tin Chỉ gửi lại các gói tin chưa ñược xác nhận bị timeout Tổ chức vùng ñệm ñể sắp xếp các gói tin theo ñúng thứ tự ñể chuyển cho tầng trên Sending window, N Rcv. window, NACKed Received Sent ACK Yet ACKed Out-of-order pkts, buffered Acceptable Expected Waiting ACK Usable for sending 30 Ví dụ về Selective Repeat 31 Q. Hãy nhận xét về 2 phương pháp? Ưu ñiểm Nhược ñiểm 32 TCP Transmission Control Protocol Cấu trúc ñoạn tin TCP Quản lý liên kết Kiểm soát luồng Kiểm soát tắc nghẽn 33 Tổng quan về TCP Giao thức hướng liên kết Bắt tay ba bước Giao thức truyền dữ liệu theo dòng byte, tin cậy Sử dụng vùng ñệm Truyền theo kiểu pipeline Tăng hiệu quả Kiểm soát luồng Bên gửi không làm quá tải bên nhận (thực tế: quá tải) Kiểm soát tắc nghẽn Việc truyền dữ liệu không nên làm tắc nghẽn mạng (thực tế: luôn có tẵc nghẽn) 34 Khuôn dạng ñoạn tin - TCP segment source port # dest port # 32 bits application data (variable length) sequence number acknowledgement number Receive window Urg data pnterchecksum FSRPAUheadlen not used Options (variable length) URG: Dữ liệu khẩn ACK: ACK # PSH: Chuyển dữ liệu ngay RST, SYN, FIN: Ký hiệu cho các gói tin ñặc biệt -Số lượng bytes có thế nhận - ðiều khiển luồng - Dùng ñể truyền dữ liệu tin cậy - Tính theo bytes 35 TCP cung cấp dịch vụ tin cậy ntn? Kiểm soát dữ liệu ñã ñược nhận chưa: Seq. # Ack Chu trình làm việc của TCP: Thiết lập liên kết Bắt tay ba bước Truyền/nhận dữ liệu ðóng liên kết 36 Cơ chế báo nhận trong TCP Seq. #: Số hiệu của byte ñầu tiên của ñoạn tin trong dòng dữ liệu ACK: Số hiệu byte ñầu tiên mong muốn nhận từ ñối tác Host A Host B 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 types ‘C’ host ACKs receipt of echoed ‘C’ host ACKs receipt of ‘C’, echoes back ‘C’ time simple telnet scenario 37 Thiết lập liên kết TCP : Giao thức bắt tay 3 bước Bước 1: A gửi SYN cho B chỉ ra giá trị khởi tạo seq # của A không có dữ liệu Bước 2: B nhận SYN, trả lời bằng SYNACK B khởi tạo vùng ñệm chỉ ra giá trị khởi tạo seq. # của B Bước 3: A nhận SYNACK, trả lời ACK, có thể kèm theo dữ liệu A B SYN ACK A C K / S Y N 38 Ví dụ về việc ñóng liên kết A FIN B A C K ACK F I N closing closing closed t i m e d w a i t closed Bước 1: Gửi FIN cho B Bước 2: B nhận ñược FIN, trả lời ACK, ñồng thời ñóng liên kết và gửi FIN. Bước 3: A nhận FIN, trả lời ACK, vào trạng thái “chờ”. Bước 4: B nhận ACK. ñóng liên kết. Lưu ý: Cả hai bên ñều có thể chủ ñộng ñóng liên kết 39 Chu trình sống của TCP (ñơn giản hóa) SYN_SENT FIN_WAIT_1 FIN_WAIT_2 ESTABLISHED Receive ACK Send nothing Receive SYN/ACK Send ACK CLOSED TIME_WAIT CLOSED LISTENLAST_ACK SYN_RCVDCLOSE_WAIT ESTABLISHED Receive SYN Send SYN/ACK Receive ACK Send nothing Receive FIN Send ACK Send FIN Receive ACK Send nothing Client application Initiates a TCP connection Server application Creates a listen socket Send SYN Send FIN Wait 30 sec. Receive FIN Send ACK Client application Initiates close connection 40 Kiểm soát luồng 41 Kiểm soát luồng (1) A B A B Chậm Quá tải 42 Kiểm soát luồng (2) ðiều khiển lượng dữ liệu ñược gửi ñi Bảo ñảm rằng hiệu quả là tốt Không làm quá tải các bên Các bên sẽ có cửa sổ kiểm soát Rwnd: Cửa sổ nhận CWnd: Cửa sổ kiểm soát tắc nghẽn Lượng dữ liệu gửi ñi phải nhỏ hơn min(Rwnd, Cwnd) 43 Kiểm soát luồng trong TCP Kích thước vùng ñệm trống = Rwnd = RcvBuffer-[LastByteRcvd - LastByteRead] 44 Trao ñổi thông tin về Rwnd A B A C K ( r w n d = 1 0 0 ) data data Bên nhận sẽ báo cho bên gửi biết Rwnd trong các ñoạn tin Bên gửi ñặt kích thước cửa sổ gửi theo Rwnd 45 ðiều khiển tắc nghẽn trong TCP 46 Tổng quan về tắc nghẽn Khi nào tắc nghẽn xảy ra ? Quá nhiều cặp gửi-nhận trên mạng Truyền quá nhiều làm cho mạng quá tải Hậu quả của việc nghẽn mạng Mất gói tin Thông lượng giảm, ñộ trễ tăng Tình trạng của mạng sẽ trở nên tồi tệ hơn. Congestion occur 47 Nguyên lý kiểm soát tắc nghẽn Slow-start Tăng tốc ñộ theo hàm số mũ Tiếp tục tăng ñến một ngưỡng nào ñó Tránh tắc nghẽn Tăng dẫn tốc ñộ theo hàm tuyến tính cho ñến khi phát hiện tắc nghẽn Phát hiện tắc nghẽn Nếu gói tin bị mất 2 4 6 8 10 12 14 16 18 20 SS Threshold=16 cwnd 48 TCP Slow Start (1) Ý tưởng cơ bản ðặt cwnd bằng 1 MSS (Maximum segment size) Tăng cwnd lên gấp ñôi Khi nhận ñược ACK Bắt ñầu chậm, nhưng tăng theo hàm mũ Tăng cho ñến một ngưỡng: ssthresh Sau ñó, TCP chuyển sang trạng thái tránh tắc nghẽn 49 TCP Slow Start (2) Host A one segment R T T Host B time two segments four segments 50 Tránh tắc nghẽn - Congestion avoidance ý tưởng cơ bản Tăng cwnd theo cấp số cộng sau khi nó ñạt tới ssthresh Khi bên gửi nhận ñược ACK Tăng cwnd thêm 1 MSS Host A Host B one segment R T T time two segments three segments 51 Phản ứng của TCP (1) Giảm tốc ñộ gửi Phát hiện tắc nghẽn? Nếu như phải truyền lại Có thể suy ra là mạng “tắc nghẽn” Khi nào thì phải truyền lại? Timeout! Cùng một gói tin số hiệu gói tin trong ACK 52 Phản ứng của TCP (2) Khi có timeout của bên gửi TCP ñặt ngưỡng xuống còn một nửa giá trị hiện tại của cwnd TCP ñặt cwnd về 1 MSS TCP chuyển về slow start Nếu nhận ñược 3 ACK giống nhau TCP ñặt ngưỡng xuống còn một nửa giá trị hiện tại của cwnd TCP ñặt cwnd về giá trị hiện tại của ngưỡng cũ TCP chuyển trạng thái “congestion avoidance” 53 Kiểm soát tắc nghẽn – minh họa 2 4 6 8 10 12 14 16 18 20 22 Timeout 3 ACKs SS SS AI AI AI Threshold=16 Threshold=10 Threshold=6 Threshold is set to half of cwnd (20) And slow start starts Threshold is set to half of cwnd (12) And additive increase starts cwnd Step 54 Tổng kết Còn rất nhiều chi tiết về TCP! Có hai dạng giao thức giao vận UDP và TCP Best effort vs. reliable transport protocol Các cơ chế bảo ñảm ñộ tin cậy Báo nhận Truyền lại Kiểm soát luồng và kiểm soát tắc nghẽn 55 Tuần tới: Application Layer Application service model Client-server vs. P2P Typical applications and protocols HTTP Mail FTP P2P file sharing and your applications? 56 Acknowledgment Bài giảng có sử dụng các hình vẽ từ Tài liệu của trường ñại học Keio và Ritsumekan Tài liệu “Computer Network, a top down approach” của J.F Kurose và K.W. Ross
File đính kèm:
- bai_giang_mang_may_tinh_chuong_6_tang_giao_van_ngo_hong_son.pdf