Bài giảng Mạng máy tính - Chương 3: Tầng giao vận - Bùi Trọng Tùng
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 gói 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
43
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. UDP
Đơn vị truyền: datagram
(UDP), segment (TCP)
application
transport
network
data link
physical
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
network
data link
physical
5
Tạ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
Tóm tắt nội dung tài liệu: Bài giảng Mạng máy tính - Chương 3: Tầng giao vận - Bùi Trọng Tùng
1Chương 3. Tầng giao vận 1 1. Tổng quan về tầng giao vậ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 2 2Nhắc lại về kiến trúc phân tầng Application (HTTP, Mail, ) Network (IP, ICMP) Datalink (Ethernet, ADSL) Physical (bits) Hỗ trợ các ứng dụng trên mạng Điều khiển truyền dữ liệu giữa các tiến trình của tầng ứ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ý Transport (UDP, TCP) 3 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 gói 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 4 3Tổ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 Đơn vị truyền: datagram (UDP), segment (TCP) application transport network data link physical 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 network data link physical 5 Tạ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 6 4Ứ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 7 2. Các chức năng chung Dồn kênh/phân kênh Mã kiểm soát lỗi 8 5Dồn kênh/phân kênh - Mux/Demux process socket Sử dụng thông tin trên tiêu đề gói tin để gửi dữ liệu tới đúng socket Nhận: Phân kênhNhận dữ liệu từ các tiến trình tầng ứng dụng khác nhau (qua socket), đóng gói theo giao thức tầng giao vận và gửi trên liên kết mạng Gửi: Dồn kênh transport application physical link network P2P1 transport application physical link network P4 transport application physical link network P3 9 Mux/Demux hoạt động ntn? Nút mạng nhận gói tin với các địa chỉ: Địa chỉ IP nguồn Địa chỉ IP đích Số hiệu cổng nguồn Số hiệu cổng đích Địa chỉ IP và số hiệu cổng được sử dụng để xác định socket nhận dữ liệu source port # dest port # 32 bits segment of application data (payload) other header fields source IP address destination IP address (other header fields) N etw o rk Tran sp o rt A p p licatio n 10 6Checksum Phát hiện lỗi bit trong các đoạn tin/gói tin Gửi:(nguyên lý chung) Chia dữ liệu thành các phần có kích thước n bit Tính tổng các phần. Nếu kết quả tràn quá n bit, cộng các bit tràn vào phần kết quả Đảo bit kết quả cuối cùng được checksum Truyền checksum kèm theo dữ liệu Nhận: Tách dữ liệu và checksum Chia dữ liệu thành các phần có kích thước n bit Tính tổng các phần và checksum. Nếu kết quả tràn quá n bit, cộng các bit tràn vào phần kết quả Nếu kết quả cuối xuất hiện bit 0 dữ liệu bị lỗi 11 3.UDP (User Datagram Protocol) Tổng quan Khuôn dạng gói tin 12 7Đặc điểm chung Giao thức hướng không kết nối (connectionless) Truyền tin “best-effort”: chỉ gửi 1 lần, không phát lại Vì sao cần UDP? Không cần thiết lập liên kết (giảm độ 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 13 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) 14 8mux/demux trên ứng dụng UDP transport application physical link network P2 transport application physical link network P1 transport application physical link network P3 source port: 9157 dest port: 6428 source port: 6428 dest port: 9157 source port: 6428 dest port: 5775 source port: 5775 dest port: 6428 Host A Host C Host B 15 Mỗi tiến trình chỉ cần sử dụng một socket duy nhất để trao đổi dữ liệu với các tiến trình khác 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 16 94. TCP (Transmission Control Protocol) 17 4.1.Khái niệm về truyền thông tin cậy 18 10 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): gói tin được nhận thành công NAK (negative acknowledgements): gói tin 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 send pkt pkt is corrupted send NAK rcv ACK send next packet rcv NAK resend pkt pkt is OK send ACK stop-and-wait 20 11 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 send pkt0 pkt1 is OK send ACK rcv ACK send pkt1 rcv sth corrupted! resend pkt1 pkt0 is OK send ACK rcv pkt1 duplicate, discard it 21 Giải pháp không dùng NAK Time Time Sender Receiver send pkt0 pkt1 is OK send ACK1 rcv ACK0 send pkt1 rcv ACK1 send pkt2 pkt0 is OK send ACK0 pkt2 is corrupted send ACK1rcv ACK1 resend pkt2 Gói tin nhận được lỗi gửi lại ACK trước đó Nhận được ACK với Seq# không đổi gửi lại gói tin 22 12 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 sender receiver rcv pkt1 rcv pkt2 send ack0 send ack1 send ack2 rcv ack0 send pkt2 send pkt1 rcv ack1 send pkt0 rcv pkt0 pkt0 pkt2 pkt1 ack1 ack0 ack2 (a) Không có mất gói tin sender receiver rcv pkt1 rcv pkt2 send ack0 send ack1 send ack2 rcv ack0 send pkt2 send pkt1 rcv ack1 send pkt0 rcv pkt0 pkt0 pkt2 ack1 ack0 ack2 (b) mất gói tin gửi đi pkt1 X loss pkt1 timeout resend pkt1 24 13 Minh họa rcv pkt1 send ack1 (detect duplicate) pkt1 sender receiver rcv pkt1 rcv pkt2 send ack0 send ack1 send ack2 rcv ack0 send pkt2 send pkt1 rcv ack1 send pkt0 rcv pkt0 pkt0 pkt2 ack1 ack0 ack2 (c) mất ACK báo nhận ack1 X loss pkt1 timeout resend pkt1 rcv pkt1 send ack1 (detect duplicate) pkt1 sender receiver rcv pkt1 send ack0 rcv ack0 send pkt1 send pkt0 rcv pkt0 pkt0 ack0 (d) timeout sớm/ACK tới trễ pkt1 timeout resend pkt1 ack1 send ack1 send pkt2 rcv ack1 pkt2 ack1 ack2 send pkt2 rcv ack1 pkt2 rcv pkt2 send ack2ack2 rcv pkt2 send ack2 (detect duplicate) Hiểu nhầm đây là ack cho gói tin pkt1 gửi lại trước đó Hiểu nhầm đây là ack báo lỗi pkt2 25 Hiệu năng của stop-and-wait bit đầu tiên được gửi đi t = 0 sender time RTT bit cuối cùng được gửi đi t = L / R Nhận được ACK, gửi gói tiếp theo t = RTT + L / R time L: Kích thước gói tin R: Băng thông RTT: Round trip time = / + / receiver bit đầu tiên tới đích bit cuối cùng tới đích 26 14 Pipeline Gửi liên tục một lượng hữu hạn các gói tin mà không cần chờ ACK Số thứ tự các gói tin phải tăng dần Dữ liệu gửi đi chờ sẵn ở bộ đệm gửi Dữ liệu tới đích chờ ở bộ đệm nhận 27 Hiệu năng của pipeline sender receiver RTT bit cuối cùng được gửi đi L / R Nhận được ACK, gửi gói tiếp theo RTT + L / R time time L: Kích thước gói tin R: Băng thông RTT: Round trip time n: Số gói tin gửi liên tục = ∗ / + / bit đầu tiên được gửi đi 0 các gói tin tới đích 28 15 Go-back-N Bên gửi • Chỉ gửi gói tin trong cửa sổ. Chỉ dùng 1 bộ đếm (timer) cho gói tin đầu tiên trong cửa sổ • Nếu nhận được ACKi, dịch cửa sổ sang vị trí (i+1). Đặt lại timer • Nếu timeout cho gói tin pkti gửi lại tất cả gói tin trong cửa sổ Bên nhận • Gửi ACKi cho gói tin pkti đã nhận được theo thứ tự • Gói tin đến không theo thứ tự: hủy gói tin và gửi lại ACK của gói tin gần nhất còn đúng thứ tự đã gửi, đã nhận ACK đã gửi, chưa nhận ACK đang gửi chưa gửi #Seq Cửa sổ gửi kích thước Swnd 29 Go-back-N send pkt0 send pkt1 send pkt2 send pkt3 (wait) sender receiver receive pkt0, send ack0 receive pkt1, send ack1 receive pkt3, discard, (re)send ack1rcv ack0, send pkt4 rcv ack1, send pkt5 pkt 2 timeout send pkt2 send pkt3 send pkt4 send pkt5 Xloss receive pkt4, discard, (re)send ack1 receive pkt5, discard, (re)send ack1 rcv pkt2, deliver, send ack2 rcv pkt3, deliver, send ack3 rcv pkt4, deliver, send ack4 rcv pkt5, deliver, send ack5 ignore duplicate ACK 0 1 2 3 4 5 6 7 8 sender window (N=4) 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 30 16 Selective Repeat Gửi: chỉ gửi gói tin trong cửa sổ gửi Nhận: chỉ nhận gói tin trong cửa sổ nhận Sử dụng bộ đệm để lưu tạm thời các gói tin tới chưa đúng thứ tự đã gửi, đã nhận ACK đã gửi, chưa nhận ACK đang gửi chưa gửi #Seq Cửa sổ gửi kích thước Swnd #Seq Cửa sổ nhận kích thước Rwnd đã nhận đúng thứ tự chưa nhận đã nhận, chưa đúng thứ tự 31 Selective Repeat Bên gửi Chỉ gửi gói tin trong cửa sổ gửi Dùng 1 timer cho mỗi gói tin trong cửa sổ Nếu timeout cho gói tin pkti chỉ gửi lại pkti Nhận được ACKi: Đánh dấu pkti đã có ACK Nếu i là giá trị nhỏ nhất trong các gói tin chưa nhận ACK, dịch cửa sổ sang vị trí gói tin tiếp theo chưa nhận ACK Bên nhận Chỉ nhận gói tin trong cửa sổ nhận Nhận pkti: Gửi lại ACKi Không đúng thứ tự: đưa vào bộ đệm Đúng thứ tự: chuyển cho tầng ứng dụng cùng với các gói tin trong bộ đệm đã trở thành đúng thứ tự sau khi nhận pkti 32 17 Selective Repeat Điều gì xảy ra nếu kích thước cửa số lớn hơn ½ giá trị Seq# lớn nhất? send pkt0 send pkt1 send pkt2 send pkt3 (wait) sender receiver receive pkt0, send ack0 receive pkt1, send ack1 receive pkt3, buffer, send ack3rcv ack0, send pkt4 rcv ack1, send pkt5 pkt 2 timeout send pkt2 Xloss receive pkt4, buffer, send ack4 receive pkt5, buffer, send ack5 rcv pkt2; deliver pkt2, pkt3, pkt4, pkt5; send ack2 record ack3 arrived 0 1 2 3 4 5 6 7 8 sender window (N=4) 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 0 1 2 3 4 5 6 7 8 record ack4 arrived record ack5 arrived Điều gì xảy ra nếu ack2 tới bên gửi 33 Kích thước cửa sổ quá lớn 34 receiversender 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 pkt0 pkt1 pkt2 0 1 2 3 0 1 2 pkt0 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 X will accept packet with seq number 0 0 1 2 3 0 1 2 pkt3 (a) pkt0 là gói tin mới 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2 pkt0 pkt1 pkt2 0 1 2 3 0 1 2 pkt0 timeout retransmit pkt0 0 1 2 3 0 1 2 0 1 2 3 0 1 2 0 1 2 3 0 1 2X X X will accept packet with seq number 0 (b) pkt0 là gói tin bị lặp receiversender Giả sử Seq# = {0, 1 , 2 ,3} Kích thước cửa sổ: 3 Phía nhận không phân biệt được 2 trường hợp Trong trường hợp b, gói tin pkt0 gửi lại được bên nhận coi như gói tin mới, đưa vào bộ đệm chờ xử lý 18 4.2. Hoạt động của TCP 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 35 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 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 36 19 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 pointerchecksum FSRPAU head len 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 37 mux/demux trên ứng dụng TCP transport application physical link network P1 transport application physical link transport application physical link network P2 source IP,port: A,9157 dest IP, port: B,80 source IP,port: B,80 dest IP,port: A,9157 client: IP address A client: IP address C server: IP address B network P3 source IP,port: C,5775 dest IP,port: B,80 source IP,port: C,9157 dest IP,port: B,80 P4 multi-thread server 38 Sử dụng socket khác nhau để trao đổi với các tiến trình khác nhau 20 Thông số của liên kết TCP Mỗi một liên kết TCP giữa hai tiến trình được xác định bởi bộ 4 thông số (4-tuple): Địa chỉ IP nguồn Địa chỉ IP đích Số hiệu cổng nguồn Số hiệu cổng đích Tầng mạng Tầng giao vận 39 TCP cung cấp dịch vụ tin cậy ntn? Kiểm soát lỗi dữ liệu: checksum Kiểm soát mất gói tin: phát lại khi có time-out 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: có thể thực hiện đồng thời(duplex) trên liên kết Đóng liên kết Cơ chế báo nhận 40 21 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 SYN/ACK 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 Tại sao không dùng giao thức bắt tay 2 bước 41 esta- blished esta- blished Cơ chế báo nhận trong TCP sequence numbers: Vị trí của byte đầu tiên trên payload của gói tin (segment) trong luồng dữ liệu acknowledgements: Vị trí của byte tiếp theo muốn nhận trong luồng dữ liệu source port # dest port # sequence number acknowledgement number checksum rwnd urg pointer Gói tin báo nhận A đã gửi đã nhận ACK đã gửi chưa nhận ACK đang gửi chưa gửi Kích thước cửa sổ N Chuỗi Seq# ở phía gửi source port # dest port # sequence number acknowledgement number checksum rwnd urg pointer Gói tin gửi đi ở phía gửi 42 22 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 User types ‘computer’ host ACKs receipt Gửi ACK báo nhận time 43 User types ‘network’ Đóng liên kết 44 FIN_WAIT_2 CLOSE_WAIT FIN, seq=y ACK, ACKnum=y+1 ACK, ACKnum=x+1 đợi nhận FIN từ server có thể tiếp tục gửi dữ liệu ngừng gửi dữ liệu LAST_ACK CLOSED TIMED_WAIT đợi trong 2 x thời gian gửi MSS CLOSED FIN_WAIT_1 FIN, seq=xkhông gửi tiếp nhưng vẫn nhận dữ liệu close(socket) A state B state ESTABESTAB A B 23 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 Server application Creates a listen socket Send SYN Send FIN Wait Receive FIN Send ACK Client application Initiates close connection 45 Pipeline trong TCP Go-back-N hay Selective Repeat? Bên gửi: Nếu nhận được ACK# = i thì coi tất cả gói tin trước đó đã tới đích (ngay cả khi chưa nhận được các ACK# < i). Dịch cửa sổ sang vị trí i Nếu có timeout của gói tin Seq# = i chỉ gửi lại gói tin đó Bên nhận: Đưa vào bộ đệm các gói tin không đúng thứ tự và gửi ACK thuật toán lai 46 24 TCP: Hoạt động của bên gửi Nhận dữ liệu từ tầng ứng dụng Đóng gói dữ liệu vào gói tin TCP với giá trị Seq# tương ứng Tính toán và thiết lập giá trị TimeOutInterval cho bộ đếm thời gian (timer) Gửi gói tin TCP xuống tầng mạng và khởi động bộ đếm cho gói đầu tiên trong cửa sổ timeout: Gửi lại gói tin bị timeout Khởi động lại bộ đếm Nhận ACK# = i Nếu là ACK cho gói tin nằm bên trái cửa sổ bỏ qua Ngược lại, trượt cửa sổ sang vị trí i Khởi động timer cho gói tin kế tiếp đang chờ ACK 47 Tính toán timeout Dựa trên giá trị RTT (> 1 RTT) Nhưng RTT thay đổi theo từng lượt gửi Timeout quá dài: hiệu năng giảm Timeout quá ngắn: không đủ thời gian để ACK báo về Ước lượng RTT EstimatedRTTi = *EstimatedRTTi-1 + (1- )*SampleRTTi-1 EstimatedRTT: RTT ước lượng SampleRTT: RTT đo được 0 < < 1: Jacobson đề nghị = 0.875 48 25 Tính toán timeout Độ lệch: DevRTTi = (1-)*DevRTTi-1 + *|SampleRTTi-1 - EstimatedRTTi-1| Jacobson đề nghị = 0.25 Timeout: TimeOutIntervali = EstimatedRTTi + 4*DevRTTi 49 Ước lượng RTT – Ví dụ Packet# Estimated RTT(ms) DevRTT (ms) TimeoutInt erval(ms) SampleR TT(ms) 1 40 20 120 80 2 45 25 145 15 3 4 5 ? 50 26 Phát lại như thế nào? 51 mất ACK Host BHost A Seq=92, 8 bytes of data ACK=100 Seq=92, 8 bytes of data Xtim e o u t ACK=100 timeout quá ngắn Host BHost A Seq=92, 8 bytes of data ACK=100 Seq=92, 8 bytes of data ti m e o u t ACK=120 Seq=100, 20 bytes of data ACK=120 ti m e o u t ti m e o u t Phát lại như thế nào? (tiếp) 52 X Host BHost A Seq=92, 8 bytes of data ACK=100 Seq=120, 15 bytes of data ti m e o u t Seq=100, 20 bytes of data ACK=120 ACK tích lũy 27 Hoạt động của bên nhận Sự kiện Nhận 1 gói tin với Seq# = i đúng thứ tự Nhận 1 gói tin với Seq# = i đúng thứ tự, trong khi chưa gửi ACK gói tin đã nhận thành công trước đó Nhận 1 gói tin với Seq# = i đúng thứ tự, trong bộ đệm còn gói tin với Seq# = i+N Nhận gói tin không đúng thứ tự Hành động Đợi 500ms, nếu không có gói kế tiếp, gửi ACK = i+Kích thước dữ liệu nhận được Gửi ACK tích lũy ACK# = i + Kích thước dữ liệu nhận được Gửi ACK# = i + N + Kích thước dữ liệu nhận được trên gói tin N Hồi phục nhanh 53 Hồi phục nhanh Thời gian timeout khá dài có thể làm giảm hiệu năng Cơ chế hồi phục nhanh: Bên nhận: Khi nhận gói tin không đúng thứ tự, gửi liên tiếp 2 gói tin lặp lại ACK# của gói tin còn đúng thứ tự trước đó Bên gửi: Nhận được 3 ACK# liên tiếp giống nhau, gửi lại ngay gói tin mà không chờ time-out X Host BHost A Seq=92, 8 bytes of data ACK=100 ti m e o u t ACK=100 ACK=100 Seq=100, 20 bytes of data Seq=100, 20 bytes of data 54 28 3.3. Kiểm soát luồng 55 Kiểm soát luồng (1) A B A B Chậm Quá tải 56 29 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) 57 Kiểm soát luồng trong TCP Kích thước vùng đệm trống = Rwnd = RcvBuffer-[LastByteRcvd - LastByteRead] 58 30 Trao đổi thông tin về Rwnd A B 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 59 Tính công bằng trong TCP Nếu có K kết nối TCP chia sẻ đường truyền có băng thông R thì mỗi kết nối có tốc độ truyền trung bình là R/K 60 TCP connection 1 bottleneck router capacity R TCP connection 2 31 4.4. Điều khiển tắc nghẽn trong TCP 61 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 62 32 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 Gói tin bị mất 2 4 6 8 10 12 14 16 18 20 SS Threshold=16 cwnd 63 TCP Slow Start (1) Ý tưởng cơ bản Đặt cwnd bằng 1 MSS (Maximum segment size) 1460 bytes (giá trị này có thể được thỏa thuận trong quá trình thiết lập liên kết) 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 64 33 TCP Slow Start (2) Host A R T T Host B time 65 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 R T T time 66 34 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ể đoán mạng đang có “tắc nghẽn” Khi nào thì phải truyền lại? Timeout! Nhận được nhiều ACK cùng ACK# 67 Phản ứng của TCP (2) Khi có timeout của bên gửi TCP đặt ngưỡng ssthresh 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 Hồi phục nhanh: Nút nhận: nhận được 1 gói tin không đúng thứ tự thì gửi liên tiếp 3 ACK giống nhau. Nút gửi: nhận được 3 ACK giống nhau TCP đặt ngưỡng ssthresh 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 mới TCP chuyển trạng thái “congestion avoidance” 68 35 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 69 Tổng kết 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 70 36 Tài liệu tham khảo Keio University “Computer Networking: A Top Down Approach”, J.Kurose “Computer Network”, Berkeley University 71
File đính kèm:
- bai_giang_mang_may_tinh_chuong_3_tang_giao_van_bui_trong_tun.pdf