Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 54 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
54
Dung lượng
751,87 KB
Nội dung
Chương 3: Tầng giao vận I Dịch vụ nguyên tắc c a tầng giao vận Nằm tầng ng dụng tầng mạng, tầng giao vận tầng trung tâm kiến trúc phân tầng với nhiệm vụ cung cấp dịch vụ truyền thơng tiến trình ng dụng chạy máy tính khác Ch ơng nghiên c u tất dịch vụ c a tầng giao vận nh nguyên tắc thực điều theo nhiều cách tiếp cận khác Chúng ta xem dịch vụ đ ợc triển khai giao th c nh Tầng giao vận c a Internet có hai giao th c quan trọng TCP UDP Hai ch ơng tr ớc đư nói vai trị dịch vụ mà tầng giao vận cung cấp bây gi , đư biết tầng giao vận? Hình 3.1 Tầng giao vận cung cấp dịch vụ truyền thơng logic cho tiến trình ng dụng Giao th c tầng giao vận cung cấp kênh truyền logic (ảo) tiến trình ng dụng chạy máy tính khác Gọi logic không tồn đ ng truyền vật lý thực hai tiến trình Các tiến trình ng dụng sử dụng đ ng truyền ảo để trao đổi thông điệp mà bận tâm s hạ tầng c a môi tr ng vật lý thực Hình 3.1 minh họa điều Trên hình 3.1, tầng giao vận nằm thiết bị đầu cu i ch Router hoạt động tầng mạng phía gửi, thực thể giao vận chèn thơng điệp mà nhận đ ợc từ tiến trình ng dụng vào 4PDU (là đơn vị liệu c a giao th c tầng giao vận - Protocol Data Unit) Công việc đ ợc thực cách chia thông điệp thành nhiều đoạn nh , bổ sung vào đầu đoạn tiêu đề c a tầng giao vận để tạo gói liệu c a tầng giao vận (4-PDU) Sau tầng giao vận truyền gói liệu (4PDU) xu ng tầng mạng, gói đ ợc đặt gói liệu c a tầng mạng (3-PDU) phía nhận, tầng giao vận nhận gói liệu từ tầng mạng, loại b phần tiêu đề c a gói liệu 4-PDU, ghép chúng lại thành thơng điệp hồn chỉnh chuyển cho tiến trình ng dụng nhận Trên mạng máy tính có nhiều giao th c hoạt động tầng giao vận Mỗi giao th c cung cấp dịch vụ với chất l ợng khác cho ng dụng Tất giao th c tầng giao vận cung cấp dịch vụ dồn kênh (multiplex) phân kênh (demultiplex), điều nói cụ thể phần sau Nh đư nói phần 2.1 , ngồi dịch vụ dồn kênh/phân kênh, tầng giao vận cịn cung cấp dịch vụ khác cho tiến trình ng dụng nh truyền liệu tin cậy, đảm bảo thông hay giới hạn độ trễ Quan hệ tầng giao vận tầng mạng Tầng giao vận nằm tầng mạng Nếu giao th c tầng giao vận cung cấp đ ng truyền logic tiến trình chạy máy tính khác nhau, giao th c tầng mạng cung cấp đ ng truyền máy tính Điểm khác biệt nh khó nhận biết nh ng quan trọng, xét ví dụ d ới Giả sử có hai nhà: b biển phía đơng, b biển phía tây n ớc Mĩ, nhà có 12 đ a trẻ anh em họ với Hàng tuần chúng trao đổi th cho nhau, th đ ợc đặt phong bì riêng đ ợc dịch vụ b u gửi theo địa ghi phong bì Hàng tuần nhà nhận 144 th từ nhà bên (bọn trẻ tiết kiệm đ ợc tiền chúng sử dụng email) nhà có đ a trẻ chịu trách nhiệm thu thập phân phát th - Ann nhà phía tây, Bill nhà phía đông Mỗi tuần, Ann lấy th từ bọn trẻ nhà chuyển cho nhân viên b u cục - ng i th ng xuyên ghé qua nhà để lấy chuyển th Khi nhận th từ nhân viên b u tá, Ann chuyển tiếp th cho ng i nhận Bill thực công việc t ơng tự nh Trong ví dụ trên, dịch vụ b u cung cấp đ ng truyền logic hai nhà - chuyển th từ nhà đến nhà kia, ch từ ng i đến ng i Còn Ann Bill cung cấp đ ng truyền logic ng i hai nhà Đ i với lũ trẻ, Ann Bill dịch vụ chuyển th Ann Bill phần (phần đầu mút) c a hệ th ng chuyển th Qua ví dụ ta hiểu đ ợc quan hệ tầng giao vận tầng mạng: Máy tính (hay thiết bị đầu cu i) = Ngơi nhà Tiến trình = Từng ng i ngơi nhà Thơng điệp ng dụng = Th phong bì Giao th c tầng mạng = Dịch vụ b u (gồm nhân viên b u chính) Giao th c tầng giao vận = Ann Bill Trong ví dụ trên, Ann Bill thực công việc phân phát th ngơi nhà c a chúng, nh ng không thực việc nh xếp th b u cục (và trạm trung chuyển đ ng đi) hay gửi th từ b u cục tới b u cục khác T ơng tự, giao th c tầng giao vận hoạt động thiết bị đầu cu i Tại thiết bị đầu cu i, giao th c tầng giao vận chuyển liệu từ tiến trình ng dụng xu ng tầng mạng ng ợc lại nh ng thông điệp đ ợc truyền nh tầng mạng Trên hình 3.1, router không xử lý thông tin tiêu đề mà tầng giao vận chèn vào bên cạnh thông điệp ng dụng Giả sử Ann Bill vắng, Susan Harvey làm thay Nh ng thật đáng tiếc hai đ a trẻ nh , không làm việc đ ợc cẩn thận nh Ann Bill Chúng làm th T ơng tự nh vậy, mạng máy tính có nhiều giao th c giao vận, giao th c cung cấp dịch vụ với chất l ợng khác cho ch ơng trình ng dụng Dịch vụ mà Ann Bill cung cấp phụ thuộc vào dịch vụ c a b u điện Ví dụ b u điện khơng đảm bảo th i gian chuyển th hai nhà Ann Bill khơng đảm bảo đ ợc th i gian chuyển th hai ng i hai nhà T ơng tự, dịch vụ c a giao th c tầng giao vận cung cấp phụ thuộc vào dịch vụ c a tầng mạng bên d ới Nếu giao th c tầng mạng không đảm bảo th i gian trễ hay đảm bảo băng thông cho gói liệu 4-PDU q trình gửi máy tính, giao th c tầng giao vận khơng thể cung cấp dich vụ gửi thơng điệp tiến trình ng dụng Tuy nhiên, tầng giao vận cung cấp dịch vụ mà tầng mạng không cung cấp đ ợc Những dich vụ nh đ ợc nghiên c u ch ơng này, ví dụ giao th c tầng giao vận cung cấp dịch vụ truyền liệu tin cậy cho tầng ng dụng tầng mạng không đáng tin cậy làm mất, gửi lỗi hay gửi trùng lặp liệu Một dịch vụ khác nghiên c u ch ơng (An ninh mạng) khả mư hố thơng điệp c a tầng giao vận để đảm bảo thông điệp không bị đọc trộm, tầng mạng không thực đ ợc điều Tổng quan tầng giao vận Internet Trong mạng Internet hay mạng TCP/IP nói chung có hai giao th c tầng giao vận: UDP TCP UDP (User Datagram Protocol) cung cấp dịch vụ truyền không tin cậy không h ớng n i TCP (Transmission Control Protocol) cung cấp dịch vụ tin cậy h ớng n i cho ng dụng Ng i thiết kế ng dụng phải lựa chọn hai giao th c cho ng dụng c a Để đơn giản, mơ hình Internet ta coi 4-PDU segment Tuy vậy, nh ng khuyến nghị RFC 4-PDU đ ợc coi segment đ i với TCP datagram đ i với UDP Nói chung thuật ngữ datagram th ng sử dụng đ i cho PDU tầng mạng nh ng sách nhập mơn nh này, nói chung xảy nhầm lẫn sử dụng thuật ngữ segment cho TCP PDU UDP PDU Tr ớc tiếp tục, nói qua tầng mạng c a Internet (Tầng mạng đ ợc nghiên c u chi tiết ch ơng 4) Giao th c c a tầng mạng IP (Internet Protocol) IP cung cấp đ ng truyền 1ogic máy tính mơ hình dịch vụ c a theo kiểucố gắng tối đa (best effort delivery service) Nghĩa IP c gắng gửi segment máy tính - hay thiết bị đầu cu i khác nhau, nh ng không đảm bảo điều Nói cụ thể hơn, IP khơng đảm bảo th tự truyền, tính tồn vẹn c a liệu segment Chính ng i ta xem IP dịch vụ khơng tin cậy Mỗi máy tính có địa IP xác định Trong ch ơng ta cần biết máy tính phải có địa IP xác định Nhiệm vụ c a UDP TCP m rộng dịch vụ IP - truyền liệu hai thiết bị đầu cu i - thành dịch vụ truyền liệu hai tiến trình chạy thiết bị đầu cu i Việc m rộng từ truyền liệu máy tính (host-to-host) đến truyền liệu tiến trình (process-to-process) đ ợc gọi trình dồn kênh (multipiex) phân kênh (demuitip/ex) Vấn đề nghiên c u phần sau UDP TCP kiểm sốt tính tồn vẹn (hay tính đắn) c a liệu nh tr ng phát lỗi đặt tiêu đề gói liệu UDP cung cấp dịch vụ phân ph i liệu hai tiến trình kiểm tra lỗi T ơng tự IP, UDP dịch vụ không tin cậy, không đảm bảo liệu đ ợc truyền cách đắn tiến trình UDP đ ợc thảo luận kỹ phần 3.1 Ngoài phân kênh, dồn kênh, TCP cung cấp s dịch vụ khác cho ng dụng Dịch vụ quan trọng truyền liệu tin cậy (reliable data transfer) Các chế điều khiển l u l ợng, đánh s th tự, s th tự biên nhận, định th i giúp TCP đảm bảo liệu đ ợc truyền từ tiến trình gửi đến tiến trình nhận xác th tự Nh giao th c TCP đư biến dịch vụ truyền không tin cậy thiết bị đầu cu i (IP) thành dịch vụ truyền liệu tin cậy tiến trình Giao th c cung cấp dịch vụ truyền liệu tin cậy kiểm soát tắc nghẽn ph c tạp Các phần từ 3.4 đến 3.8 trình bày nguyên tắc chung c a dịch vụ giao th c TCP Cách tiếp cận c a ch ơng giới thiệu xen kẽ nguyên lý với giao th c TCP Ví dụ nói tổng quan cách th c cung cấp dịch vụ truyền liệu tin cậy sau nghiên c u TCP thực điều nh Chúng ta bắt đầu công việc dồn kênh/phân kênh với liệu từ tầng ng dụng II Dịch vụ dồn kênh, phân kênh Phần nghiên c u công việc dồn kênh phân kênh mạng Để đơn giản, chung ta nói đến dịch vụ c a tầng giao vận mơ hình Internet.Tuy nhiên cần nhấn mạnh - dịch vụ cần thiết đ i với tất mơ hình kết n i mạng Mặc dù dồn kênh/phân kênh dịch vụ quan trọng c a tầng giao vận, nh ng cần thiết Để hiểu nh vậy, ta thấy IP truyền liệu hai thiết bị đầu cu i, thiết bị có địa IP định IP khơng truyền liệu tiến trình ng dụng chạy máy tính M rộng việc gửi - từ máy tính đến máy tính - tới từ tiến trình đến tiến trình cơng việc dồn kênh phân kênh Tại máy tính nhận, tầng giao vận nhận gói liệu (hay gọi segment) từ tầng mạng phía d ới có trách nhiệm gửi liệu segment tới tiến trình ng dụng thích hợp máy tính Giả sử lúc máy tính c a bạn tải trang Web xu ng, chạy phiên FTP hai phiên Telnet lúc Nh bạn chạy tiến trình ng dụng: tiến trình Telnet, tiến trình FTP, tiến trình HTTP Khi tầng giao vận máy tính c a bạn nhận đ ợc liệu từ tầng mạng chuyển lên, phải gửi liệu tới tiến trình Việc diễn nh nào? Mỗi segment c a tầng giao vận có tr ng xác định tiến trình nhận liệu Tầng giao vận bên nhận sử dụng tr ng để xác định rõ tiến trình nhận gửi liệu segment tới tiến trình Cơng việc chuyển liệu segment tới tiến trình ng dụng đ ợc gọi phân kênh Tại thiết bị gửi, tầng giao vận nhận liệu từ nhiều tiến trình ng dụng khác nhau, tạo segment ch a liệu với s thông tin tiêu đề cu i chuyển segment xu ng tầng mạng Quá trình đ ợc gọi dồn kênh Hình 3.2 minh hoạ hai trình Hình 3.2 Dịch vụ dồn kênh, phân kênh Để hiểu rõ dịch vụ dồn kênh, ta quay lại ví dụ tr ớc Mỗi đ a trẻ đ ợc xác định qua tên Khi Bill nhận đ ợc th từ ng i đ a th , cậu bé thực trình phân kênh cách đọc tên phong bì th để chuyển cho ng i nhận Còn Ann thực trình dồn kênh thu thập th từ ng i chuyển cho ng i đ a th UDP TCP thực việc dồn kênh phân kênh nh hai tr ng đặc biệt đầu segment: tr ng định danh cổng tiến trình gửi (nguồn - source port number) tr ng định danh cổng tiến trình nhận (đích - destination port number) Hai tr ng đ ợc minh họa hình 3.3 Chúng xác định tiến trình ng dụng chạy máy tính Tất nhiên UDP TCP cịn có nhiều tr ng khác mà nghiên c u sau Khái niệm s hiệu cổng đư đ ợc giới thiệu qua phần 2.6 - 2.7 Nó s 16 bit, nhận giá trị từ tới 65535 Các giá trị từ đến 1023 giá trị đặc biệt đ ợc sử dụng hạn chế, t c ng dụng thông dụng nh HTTP, FTP sử dụng HTTP sử dụng cổng 80, FTP sử dụng cổng 21 Danh sách cổng thơng dụng tham khảo RFC 1700 Khi xây dựng ng dụng mới, phải xác định s hiệu cổng cho ng dụng Mỗi ng dụng chạy thiết bị đầu cu i có s hiệu cổng định B i vấn đề đặt segment tầng giao vận có tr ng s hiệu cổng nguồn đích Một thiết bị đầu cu i chạy đồng th i hai tiến trình kiểu, nh s hiệu cổng đích ch a đ để phân biệt tiến trình Giả sử Web server chạy tiến trình HTTP xử lý thông điệp yêu cầu; Web server phục vụ nhiều yêu cầu lúc (điều hết s c thơng th ng) server chạy nhiều tiến trình cổng 80 Để gửi liệu đến tiến trình nhận, phải xác định s hiệu cổng c a phía gửi (cổng nguồn) Hình 3.3 Tr ng địa tiến trình gửi, tiến trình nhận gói liệu segment Cổng nguồn đ ợc tạo nh nào? Nhận giá trị bao nhiêu? Để trả l i câu h i hưy nhớ lại ng dụng mạng sử dụng kiến trúc khách hàng ng i phục vụ Thơng th ng máy tính kh i đầu tr ớc đóng vai trị client, máy tính đóng vai trị server Xét ví dụ tiến trình ng dụng có s hiệu cổng 23 (s hiệu cổng c a ng dụng Telnet server) Hưy quan sát segment tầng giao vận r i client (là máy tính chạy ch ơng trình Telnet client) chuyển tới server S hiệu cổng nguồn đích c a segment bao nhiêu? S hiệu cổng đích s hiệu cổng tiến trình nhận - 23 Cịn s hiệu cổng nguồn - phía client - giá trị ch a đ ợc sử dụng b i tiến trình nào, đ ợc phần mềm giao vận chạy máy tính client xác định tự động Giả sử phía client chọn s hiệu cổng x segment đ ợc gửi tới ng dụng Telnet có cổng nguồn x, cổng đích 23 Khi segment tới, server c vào s hiệu cổng để chuyển liệu segment tới tiến trình ng dụng nhận Cổng đích 23 xác định tiến trình Telnet, cổng nguồn x để xác định tiến trình gửi cụ thể Segment truyền từ server tới client ng ợc lại Cổng nguồn bây gi cổng c a ng dụng có giá trị 23, cịn cổng đích x (là s hiệu cổng nguồn segment gửi từ client tới server) Khi segment tới, client c vào s hiệu cổng nguồn đích để gửi liệu segment tới tiến trình ng dụng Hình minh hoạ trình Hình 3.4 Sử dụng s hiệu cổng nguồn cổng đích trình ng dụng khách/ch Chuyện xảy có hai client khác thiết lập phiên làm việc tới server client chọn cổng nguồn x? Điều dễ xảy với Web server có nhiều ng i truy cập, phải phục vụ nhiều yêu cầu Bên server phải phân kênh segment nh hai phiên làm việc có cặp s hiệu cổng? Khi server phải sử dụng địa IP gói liệu IP (datagram) ch a segment Trên hình 3.5, máy C có hai phiên làm việc máy A có phiên làm việc HTTP tới server B Cả ba máy A, B, C có địa IP phân biệt lần l ợt A, B, C Máy C sử dụng hai cổng nguồn (x,y) khác cho hai kết n i HTTP tới B A chọn s hiệu cổng nguồn độc lập với C nên gán cổng nguồn x cho kết n i HTTP c a Tuy nhiên máy ch B thực phân kênh hai gói segement có cặp cổng gi ng địa IP nguồn khác Tóm lại, bên nhận sử dụng ba giá trị (địa IP nguồn, s hiệu cổng nguồn, s hiệu cổng đích) để xác định tiến trình ng dụng nhận Sau xem xét tầng giao vận thực việc dồn kênh phân kênh tiến trình ng dụng nh nào, nghiên c u giao th c giao vận c a Internet - UDP Trong phần thấy hai dịch vụ dồn kênh phân kênh, UDP gần nh không cung cấp dịch vụ khác Hình 3.5 Hai client s hiệu cổng đích truyền thơng với server III UDP - Giao th c không hướng nối Trong phần ta nghiên c u chế hoạt động c a UDP Độc giả cần nhớ lại khái quát dịch vụ UDP trình bày phần 2.1, trình tạo socket UDP phần 2.7 Bạn làm mu n xây dựng giao th c giao vận đơn giản - giao th c giao vận "rỗng"? Khi đó, thực thể giao vận phía gửi nhận thơng điệp từ tiến trình ng dụng chuyển xu ng tầng mạng; thực thể giao vận phía nhận chuyển thơng điệp tầng mạng đ a lên tới ch ơng trình ng dụng t ơng ng Tầng giao vận cung cấp dịch vụ dồn kênh/phân kênh chuyển liệu đến từ tầng mạng tới tiến trình ng dụng nhận UDP đặc tả RFC 768 giao th c giao vận đơn giản Bên cạnh ch c dồn kênh/phân kênh, UDP có thêm chế phát lỗi đơn giản.Có nói sử dụng UDP gần nh ng dụng làm việc trực tiếp với tầng mạng IP UDP lấy thơng điệp từ tiến trình ng dụng, chèn thêm s tr ng tiêu đề, có hai tr ng địa cổng nguồn đích cho dịch vụ dồn kênh/phân kênh để tạo nên gói liệu segment Gói segment sau tạo đ ợc đ a xu ng tầng mạng Tầng mạng đặt segment gói liệu IP datagram c gắng gửi gói IP datagram tới máy tính nhận Nếu segment tới nơi nhận UDP sử dụng s hiệu cổng địa IP c a tiến trình nhận để truyền liệu segment tới tiến trình ng dụng nhận Chú ý UDP khơng địi h i thực thể bên gửi bên nhận phải liên kết tr ớc trao đổi liệu Vì UDP đ ợc xem dịch vụ không h ớng n i hay không liên kết tr ớc (connectionless) DNS giao th c tầng ng dụng chạy UDP Khi mu n tạo truy vấn, DNS xây dựng thông điệp truy vấn DNS, chuyển thông điệp tới socket (xem lại phần 2.7) UDP bổ sung s tr ng vào đầu thông điệp để tạo nên UDP segment gửi segment xu ng tầng mạng Tầng mạng đóng gói UDP segment IP datagram gửi datagram tới đích (name server) Sau đó, DNS bên gửi đợi trả l i Nếu không nhận đ ợc câu trả l i (điều xảy tầng d ới làm thông điệp yêu cầu hay thơng điệp trả l i) DNS gửi lại yêu cầu báo cho ng dụng biết không nhận đ ợc câu trả l i Các đặc tả DNS cho phép DNS chạy TCP nh ng thực tế DNS th ng chạy UDP So với UDP, TCP có nhiều u điểm hơn: TCP cung cấp dịch vụ truyền liệu tin cậy UDP không làm đ ợc Tuy nhiên thực tế nhiều ng dụng phù hợp với UDP · Khơng có giai đoạn thiết lập kết nối: TCP sử dụng chế "bắt tay" ba b ớc tr ớc bắt đầu truyền liệu thực UDP không cần chế tr ớc truyền liệu Vì UDP khơng phải chịu th i gian trễ để thiết lập đ ng truyền Đây ngun nhân DNS chạy UDP ch khơng phải TCP DNS chạy chậm sử dụng TCP HTTP sử dụng TCP đ i t ợng Web cần đ ợc tải xác - yêu cầu đ ng truyền tin cậy Nh ng nh đư trình bày phần 2.2, giai đoạn thiết lập đ ng truyền TCP gây nên th i gian trễ cho HTTP (tình trạng "world wide wait") · Khơng trì trạng thái kết nối TCP ghi nhớ trạng thái kết n i hệ th ng đầu cu i Trạng thái kết n i bao gồm vùng đệm (buffer) c a bên nhận bên gửi, tham s kiểm soát tắc nghẽn, s phát s biên nhận Nó giúp TCP triển khai dịch vụ truyền tin tin cậy chế kiểm soát tắc nghẽn Trong phần 3.5 ta hiểu ý nghĩa trạng thái UDP l u giữ thông tin nh Do phía server sử dụng UDP có khả phục vụ đồng th i nhiều client · Tiêu đề gói liệu nhỏ: Tiêu đề c a TCP segment 20 bytes UDP có bytes Khơng kiểm sốt tốc độ gửi TCP có chế kiểm soát tắc nghẽn, điều chỉnh t c độ gửi xẩy tắc nghẽn Cơ chế điều chỉnh ảnh h ng tới ng dụng th i gian thực - ng dụng chấp nhận mát liệu (trong phạm vi đó) nh ng lại địi h i phải có t c độ truyền t i thiểu T c độ truyền liệu c a UDP bị giới hạn b i t c độ sinh liệu c a ng dụng, khả máy tính nguồn (CPU, t c độ đồng hồ), t c độ truy cập mạng Chú ý bên nhận không thiết phải nhận toàn liệu Khi mạng bị tắc nghẽn, phần liệu bị tràn vùng đệm router T c độ nhận bị giới hạn tắc nghẽn t c độ gửi không bị giới hạn ng dụng Giao th c tầng ng dụng Tầng giao vận tương ng Th điện tử SMTP TCP Truy cập từ xa Telnet TCP Web HTTP TCP Truyền file FTP TCP File server NFS th ng UDP Đa ph ơng tiện Phụ thuộc hưng sản xuất th ng UDP Điện thoại qua Internet Phụ thuộc hưng sản xuất th ng UDP Quản lý mạng SNMP th ng UDP Định tuyến RIP th ng UDP Tên miền DNS th ng UDP Hình 3.6 liệt kê s ng dụng phổ biến giao th c giao vận c a chúng Email, truy cập từ xa, Web truyền file chạy TCP chúng cần đến dịch vụ truyền liệu tin cậy Tuy nhiên có s ng dụng khác thích hợp với UDP TCP Giao th c cập nhật bảng định tuyến RIP (sẽ học ch ơng 4) sử dụng UDP, b i việc cập nhật đ ợc thực định kỳ (th ng khoảng phút lần), dù cập nhật bị nh ng có cập nhật sau khoảng th i gian ngắn UDP đ ợc sử dụng để gửi liệu quản trị mạng (SNMP; xem ch ơng 8) Trong tr ng hợp UDP thích hợp TCP tiến trình quản trị mạng th ng hoạt động mạng có c khơng thể truyền liệu xác hay chế kiểm sốt tắc nghẽn khơng làm việc DNS sử dụng UDP, tránh đ ợc th i gian trễ c a giai đoạn thiết lập kết n i Ngày UDP th ng đ ợc ng dụng đa ph ơng tiện nh điện thoại Internet, hội thảo từ xa, ng dụng th i gian thực sử dụng Những ng dụng đ ợc thảo luận chi tiết ch ơng Các ng dụng nh chấp nhận mát, lỗi phần liệu, truyền liệu tin cậy khơng phải tiêu chí quan trọng đánh giá thành công c a ng dụng Hơn ng dụng th i gian thực nh điện thoại Internet hội thảo từ xa khơng thích ng đ ợc với chế kiểm soát tắc nghẽn c a TCP Do ng dụng đa ph ơng tiện th i gian thực th ng lựa chọn UDP tầng giao vận Hiện đư triển khai thực tế, song việc ng dụng đa ph ơng tiện sử dụng UDP gây nhiều tranh cưi Nh nói trên, UDP khơng kiểm sốt đ ợc tắc nghẽn nên mạng dễ bị tắc nghẽn - thơng tin đ ợc chuyển Nếu tất ng i xem phim trực tuyến gói tin bị tràn đệm router - chẳng xem đ ợc Thiếu chế kiểm sốt tắc nghẽn vân đề nghiêm trọng đ i với UDP Ng i ta đư đ a nhiều chế đòi h i tất thực thể - kể UDP - thực chế kiểm sốt l u l ợng thích nghi [Mahdavi 1997 Floyd 2000] Tr ớc trình bày cấu trúc UDP segment, cần ý sử dụng UDP nh ng ng dụng có đ ng truyền tin cậy Điều đ ợc thực cách đảm bảo tính tin cậy thân ng dụng (bằng chế đánh s th tự, truyền lại) Công việc làm ng dụng cồng kềnh ph c tạp Tuy nhiên u điểm ng dụng truyền thơng tin cậy với t c độ khơng bị chế kiểm sốt tắc nghẽn c a TCP kh ng chế Ngày s phần mềm chuyên dụng đa ph ơng tiện sử dụng chế đánh s th tự truyền lại ch ơng trình ng dụng để giảm bớt việc liệu [Rhee 1998] Cấu trúc c a UDP segment Cấu trúc UDP segment, đặc tả RFC 768 đ ợc minh hoạ hình 3.7 Dữ liệu c a ng dụng nằm tr ng liệu c a UDP datagram Ví dụ đ i với DNS, tr ng liệu ch a thông điệp yêu cầu hay thông điệp trả l i Tiêu đề UDP có b n tr ng, độ lớn tr ng hai byte Nh đư nói phân tr ớc, s hiệu cổng cho phép thiết bị gửi chuyển liệu tới tiến trình chạy thiết bị nhận (ch c phân kênh) Tr ng Checksum đ ợc bên nhận sử dụng để kiểm tra segment có lỗi hay không Trên thực tế, kể tiêu đề c a gói liệu IP đ ợc tính checksum Nguyên tắc c a chế phát sửa lỗi đ ợc trình bày phần 5.1 Tr ng độ dài (Length) cho biết độ dài (tính theo byte) c a tồn gói liệu UDP segment - kể phần tiêu đề Hình 3.7 Cấu trúc gói UDP datagram UDP checksum UDP checksum đ ợc sử dụng để phát lỗi Checksum đ ợc tính nh sau: tính giá trị bù c a tổng từ 16 bit segment, giá trị nhận đ ợc đ ợc đặt vào tr ng checksum gói liệu phát có đoạn tr ng dịng liệu - nghĩa thiếu segment Vì TCP không sử dụng biên nhận ph định (NAK) nên bên nhận gửi biên nhận ph định Thay vào đó, biên nhận lại byte th tự cu i mà nhận đ ợc (tạo ACK trùng lặp) Nếu bên gửi TCP nhận đ ợc ACK trùng lặp cho segment, cho segment sau segment đ ợc biên nhận ba lần bị Trong tr ng hợp này, TCP thực chế truyền lại nhanh (fast retransmit) [RFC 258], gửi lại segment bị cho tr ớc timer c a segment hết hạn (kết thúc) /* assume sender is not contrained by TCP flow or congestion control, that data from above is less than MSS in size, and that data transfer is in one direction only */ sendbase = initial_sequence number nextseqnum = initial_sequence number loop (forever) { switch (event) event: data received from application above create TCP segment with sequence number nextseqnum start timer for segment nextseqnum pass segment to IP nextseqnum = nextseqnum + length(data) break; /* end of event data received from above */ event: timer timeout for segment with sequence number y retransmit segment with sequence number y compute new timeout interval for segment y break: /* end of timeout event */ event: ACK received with ACK field value of y if (y > sendbase) { /* cumulative ACK of all data up to y */ cancel all timers for segments with sequence numbers < y sendbase = y } else {/* a duplicate ACK for already ACKed segment */ Increment number of duplicate ACKs received for y If (number of duplicate ACKs received for y == 3) { /* TCP fast retransmit */ Resend segment with sequence number y Restart timer for segment y } } break; /* end of ACK received event */ } /* end of loop forever */ Hình 3.31 Bên gửi c a TCP Sự kiện Segment đến có s th tự s th tự mong mu n Tất liệu đến s th tự mong Hành động tiếp nhận c a TCP Trì hoưn ACK Đợi segment th tự khoảng th i gian 500ms mu n đư đ ợc biên nhận Khơng có khoảng tr ng liệu nhận đ ợc Segment đến có s th tự s th tự mong mu n Segment đến tr ớc đợi gửi biên nhận Khơng có khoảng tr ng liệu nhận đ ợc Segment không th tự đến, có s th tự cao s th tự mong mu n nhận Phát có khoảng tr ng liệu Segment đến lấp đầy phần toàn tr ng liệu nhận đ ợc Nếu segment không xuất gửi ACK Ngay lập t c gửi ACK tích luỹ biên nhận cho hai segment th tự Ngay lập t c gửi ACK trùng lặp s th tự c a byte mong mu n nhận Ngay lập t c gửi ACK biên nhận cho đoạn khoảng liệu th tự liên tục lớn nhận đ ợc Hình 3.32 Truyền lại vi ACK Chúng ta kết thúc thảo luận để xem xét vài tr ng hợp đơn giản Giả sử segment có s th tự 92 có byte liệu Sau gửi segment này, máy A ch segment ACK với giá trị biên nhận 100 c a máy B Mặc dù segment gửi từ máy A đư đến máy B nh ng ACK gửi từ máy B đến máy A bị Trong tr ng hợp này, hết th i gian đợi, máy A truyền lại segment gi ng hệt cho B Dĩ nhiên nhận đ ợc segment truyền lại, máy B phát trùng lặp nh tr ng s th tự Vì thực thể TCP máy B loại b segment truyền lại Trong tr ng hợp th hai, máy A gửi hai segment liên tiếp Segment có s th tự 92 byte liệu, segment th hai có s th tự 100 20 byte liệu Giả sử hai segment đến máy B nguyên vẹn máy B gửi biên nhận ACK riêng rẽ cho segment ACK cho segment có s biên nhận 100 cho segment th hai 120 Lại giả sử hai ACK không đến đ ợc máy A tr ớc hết th i gian đợi c a segment Khi hết th i gian đợi, máy A gửi lại segment có s th tự 92 Vậy máy A có gửi lại segment th hai khơng ? Theo quy tắc mô tả trên, máy A gửi lại segment th hai hết th i gian đợi tr ớc ACK có s biên nhận 120 lớn đến Vì vậy, nh minh hoạ hình 3.33, ACK th hai không đến tr ớc timeout c a segment th hai máy A gửi lại segment th hai Trong tr ng hợp th ba tr ng hợp cu i cùng, giả sử máy tính A gửi hai segment gi ng nh ví dụ hai ACK c a segment bị mất, nh ng tr ớc hết th i gian đợi c a segment đầu tiên, máy A nhận đ ợc ACK có s biên nhận 120 - máy A hiểu mảy B đư nhận đ ợc tất byte đến tận byte th 119, máy A khơng phải gửi lại segment hai segment Hình 3.33 Segment khơng cần truyền lại ACK đến tr ớc thi hết th i gian đợi Mặc dù phần tr ớc đư nói TCP giao th c kiểu Go-Back-N giá trị biên nhận mang tính tích luỹ bên nhận không biên nhận cho segment đư nhận nh ng không theo s th tự TCP bên gửi cần ghi nhớ s th tự nh c a byte đư đ ợc gửi nh ng ch a đ ợc biên nhận (sendbase) s th tự cho byte đ ợc gửi (nextseqnum) Tuy nhiên cần l u ý thành phần truyền liệu tin cậy c a TCP gi ng Go-Back-N, nh ng gi ng hoàn toàn Để phân biệt s điểm khác TCP Go-Back- N, xem điều xảy bên gửi gửi segment nên tiếp 1, N, tất segment đ ợc nhận th tự khơng có lỗi Giả sử ACK c a segment n