TỔNG QUAN VỀ GIAO THỨC TCP
Lịch sử phát triển của TCP
Mạng Internet là một mạng máy tính toàn cầu, được hình thành từ cuối thập kỷ 60 từ thí nghiệm của Bộ quốc phòng Mỹ với tên gọi ARPAnet Ban đầu, ARPAnet phục vụ cho nghiên cứu quốc phòng, với mục tiêu xây dựng một mạng máy tính có khả năng chịu đựng sự cố, cho phép các máy tính liên lạc với nhau ngay cả khi một số nút bị tấn công và phá hủy.
Khả năng kết nối các hệ thống máy tính khác nhau đã thu hút sự quan tâm của nhiều người, đồng thời là phương pháp thực tế duy nhất để liên kết các máy tính từ các hãng khác nhau Điều này dẫn đến việc các nhà phát triển phần mềm tại Mỹ, Anh và châu Âu tích cực nghiên cứu và phát triển các giải pháp kết nối hiệu quả.
Châu Âu đã khởi xướng việc phát triển phần mềm dựa trên giao thức TCP/IP, một tiêu chuẩn quan trọng trong truyền thông Internet, cho mọi loại máy tính Sự phát triển này thu hút sự quan tâm từ các trường đại học, trung tâm nghiên cứu lớn và cơ quan chính phủ, những tổ chức đang tìm kiếm giải pháp máy tính độc lập, không bị ràng buộc bởi một nhà sản xuất cụ thể nào.
Vào năm 1983, sự phát triển của các hệ thống mạng cục bộ LAN bắt đầu đồng hành với sự ra đời của máy để bàn (Desktop Workstations) Hầu hết các máy để bàn sử dụng Berkeley UNIX, trong đó phần mềm kết nối TCP/IP được tích hợp như một phần của hệ điều hành Điều này cho thấy các mạng này có khả năng kết nối với nhau một cách dễ dàng.
Trong quá trình hình thành mạng Internet, NSFNET, với sự tài trợ của Hội Khoa học Quốc gia Mỹ, đã đóng vai trò quan trọng Vào cuối những năm 80, NSFNET được thiết lập để kết nối các mạng máy tính và thúc đẩy sự phát triển của Internet, góp phần tạo nền tảng cho sự bùng nổ công nghệ thông tin sau này.
Năm trung tâm siêu máy tính mới đã được ra mắt, mở ra cơ hội cho nhiều người trong lĩnh vực khoa học tiếp cận công nghệ tiên tiến Trước đây, những máy tính nhanh nhất thế giới chủ yếu phục vụ cho việc phát triển vũ khí và một số công ty lớn Giờ đây, với sự phát triển của các trung tâm này, NFS đã tạo điều kiện cho cộng đồng khoa học sử dụng sức mạnh tính toán mạnh mẽ để thúc đẩy nghiên cứu và đổi mới.
NHÓM 13 download by : skknchat@gmail.com
NFS đã cố gắng sử dụng ARPAnet để kết nối 5 trung tâm máy tính, nhưng kế hoạch này đã bị cản trở bởi sự quan liêu Do đó, NFS quyết định xây dựng một mạng riêng dựa trên giao thức TCP/IP với tốc độ truyền 56 Kbps Các trường đại học được kết nối thành các mạng vùng, và những mạng này được liên kết với các trung tâm siêu máy tính.
Ngày nay, Internet đã phát triển mạnh mẽ trong lĩnh vực khoa học và giáo dục tại Mỹ, sau đó lan rộng ra toàn cầu Nó đóng vai trò quan trọng trong việc trao đổi thông tin, đặc biệt trong nghiên cứu, giáo dục và gần đây là trong thương mại.
Internet hoạt động dựa trên kỹ thuật chuyển mạch gói và giao thức TCP/IP Hiện nay, nhiều mạng có kiến trúc khác nhau có khả năng kết nối vào Internet thông qua các cầu nối đa giao thức.
Giao thức TCP
Giao thức TCP (Transmission Control Protocol) là một trong những giao thức cốt lõi của bộ giao thức TCP/IP, cho phép các ứng dụng trên các máy chủ kết nối và trao đổi dữ liệu một cách đáng tin cậy và theo thứ tự Nó phân biệt dữ liệu từ nhiều ứng dụng khác nhau, như dịch vụ Web và dịch vụ thư điện tử, trên cùng một máy chủ Để đơn giản hóa thiết kế mạng, hầu hết các mạng máy tính hiện nay được xây dựng theo mô hình phân tầng, trong đó mỗi tầng dựa trên tầng trước đó Mô hình tham chiếu 7 lớp của tổ chức tiêu chuẩn hóa quốc tế (IOS) cung cấp một chuẩn để so sánh các giao thức khác, vì vậy trước khi nghiên cứu giao thức TCP/IP, cần xem xét mô hình 7 lớp OSI.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương I: Tổng quan về giao thức TCP
Trong mô hình OSI, mỗi tầng có nhiệm vụ cung cấp dịch vụ cho tầng cao hơn, đồng thời mô tả chi tiết cách cài đặt các dịch vụ này Các tầng được trừu tượng hóa, với mỗi tầng chỉ nhận biết về việc liên lạc với tầng tương ứng trên máy khác Thực tế, mỗi tầng chỉ giao tiếp với các tầng liền kề trên và dưới trong cùng một hệ thống.
Trong mô hình mạng không tầng, mọi tầng trừ tầng thấp nhất không thể chuyển thông tin trực tiếp với tầng tương ứng trong mạng máy tính khác Thông tin cần gửi phải đi qua tất cả các tầng thấp hơn trước khi được truyền qua Card mạng đến máy nhận Tại máy nhận, thông tin sẽ được truyền lên qua các tầng cho đến khi đến được tầng đã gửi thông tin.
Mô hình này bao gồm 7 tầng Tên gọi và chức năng các tầng được trình bày trong Hình 1.1.
Hình 1.1: Mô hình 7 lớp OSI
NHÓM 13 download by : skknchat@gmail.com
Chức năng của các tầng như sau:
1 Tầng vật lý (Physical): Liên quan đến nhiệm vụ truyền dòng bits không có cấu trúc qua đường truyền vật lý, truy nhập đường truyền vật lý nhờ các phương tiện cơ, điện, hàm, vật lý.
2 Tầng liên kết dữ liệu (Data link): Cung cấp phương tiện để truyền thông tin qua liên kết vật lý đảm bảo tin cậy, gửi các khối dữ liệu với các cơ chế đồng bộ hoá, kiểm soát lỗi và kiểm soát luồng dữ liệu cần thiết.
3 Tầng mạng (Network): Thực hiện việc chọn đường và chuyển tiếp thông tin với công nghệ chuyển mạch thích hợp, thực hiện kiểm soát luồng dữ liệu và cắt hợp dữ liệu nếu cần.
4 Tầng giao vận (Transport): Thực hiện việc truyền dữ liệu giữa hai đầu mút (end - to - end), thực hiện cả việc kiểm soát lỗi và kiểm soát luồng dữ liệu giữa hai đầu mút Cũng có thể thực hiện việc ghép kênh, cắt / hợp dữ liệu nếu cần.
5 Tầng phiên (Session): Cung cấp phương tiện quản lý truyền thông giữa các ứng dụng, thiết lập, duy trì, đồng bộ hoá và huỷ bỏ các phiên truyền thông giữa các ứng dụng.
6 Tầng trình diễn (Presentation): Chuyển đổi cú pháp dữ liệu để đáp ứng yêu cầu truyền dữ liệu của các tầng ứng dụng qua mô hình OSI.
7 Tầng ứng dụng (Application): Cung cấp các phương tiện để người sử dụng có thể truy cập được vào môi trường OSI, đồng thời cung cấp các dịch vụ thông tin phân tán.
1.2.3 Mô hình giao thức TCP
Mạng Internet sử dụng giao thức TCP/IP, được minh họa tổng quát trong hình 1.2, cho thấy các dịch vụ mà nó cung cấp cùng với các chuẩn sử dụng Bài viết cũng so sánh TCP/IP với kiến trúc hệ thống mở OSI, giúp người đọc có cái nhìn tổng quan về họ giao thức này.
NHÓM 13 download by : skknchat@gmail.com
Hình 1.2: Giao thức TCP/IP khi so sánh với mô hình OSI
SMTP- Simple Mail Transfer Protocol
SNMP - Simple Network Manage Protocol
ICMP- Internet Control Message Protocol
FDDI - Fiber Distributed Data Interface
TCP (Transmission Control Protocol) là giao thức quan trọng trong tầng giao vận của TCP/IP, đảm nhiệm việc đảm bảo sự liên lạc liên tục và tính chính xác của dữ liệu giữa hai đầu kết nối thông qua các gói tin IP.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương I: Tổng quan về giao thức TCP
UDP (User Datagram Protocol) là một giao thức ở tầng giao vận của TCP/IP, không giống như TCP, UDP không đảm bảo tính toàn vẹn của dữ liệu và không có cơ chế sửa lỗi Tuy nhiên, UDP mang lại tốc độ truyền dữ liệu nhanh hơn so với TCP.
IP: (Internet Protocol) Là giao thức ở tầng thứ 3 của TCP/IP, nó có trách nhiệm vận chuyển các Datagrams qua mạng Internet.
ICMP (Giao thức Thông điệp Điều khiển Internet) là một thủ tục quan trọng trong mạng TCP/IP, chịu trách nhiệm truyền tải các thông tin điều khiển Giao thức này xử lý các thông báo trạng thái cho IP, bao gồm thông tin về lỗi và các thay đổi phần cứng trong mạng, ảnh hưởng đến quá trình định tuyến thông tin.
RIP: (Routing Information Protocol) Giao thức định tuyến thông tin đây là một trong những giao thức để xác định phương pháp định tuyến tốt nhất cho truyền tin.
ARP (Giao thức phân giải địa chỉ) là một giao thức hoạt động ở tầng liên kết dữ liệu, có chức năng tìm kiếm địa chỉ vật lý tương ứng với một địa chỉ IP cụ thể Để thực hiện điều này, ARP tiến hành phát sóng (broadcast) trên mạng, và máy trạm nào có địa chỉ IP trùng khớp với yêu cầu sẽ phản hồi bằng thông tin về địa chỉ vật lý của nó.
DSN: (Domain name System) Xác định các địa chỉ theo số từ các tên của máy tính kết nối trên mạng.
FTP, or File Transfer Protocol, is a fundamental service of the Internet that enables the transfer of files from one computer to another.
Cấu trúc phân đoạn TCP
Phân đoạn TCP bao gồm tiêu đề và trường dữ liệu, trong đó trường dữ liệu chứa thông tin ứng dụng MSS (Maximum Segment Size) xác định kích thước tối đa cho trường dữ liệu của một phân đoạn Khi truyền tệp lớn, như hình ảnh trên trang web, TCP thường chia tệp thành các phần có kích thước MSS Ngược lại, các ứng dụng tương tác thường gửi dữ liệu với kích thước nhỏ hơn MSS, chẳng hạn như trong các ứng dụng điều khiển từ xa như Telnet và SSH, nơi trường dữ liệu trong phân đoạn TCP thường nhỏ hơn.
NHÓM 13 download by : skknchat@gmail.com chỉ có một byte Vì tiêu đề TCP thường 20 byte ( nhiều hơn 12 byte so với tiêu đề UDP), các phân đoạn được gửi bởi Telnet và ssh có thể chỉ có độ dài 21 byte.
Hình 1.4 cho thấy cấu trúc phân đoạn của TCP Tiêu đề phân đoạn TCP có chứa các trường sau:
Trường số thứ tự 32 bit và số xác nhận 32 bit là hai thành phần quan trọng mà người gửi và người nhận TCP sử dụng để đảm bảo việc điều khiển dữ liệu một cách đáng tin cậy trong dịch vụ chuyển nhượng.
Trường 16 bit được sử dụng điều khiển luồng Nó được sử dụng để chỉ số byte mà người nhận sẵn sàng chấp nhận.
Trường độ dài tiêu đề TCP là 4 bit, chỉ ra độ dài của tiêu đề TCP dưới dạng từ 32 bit Tiêu đề này có thể thay đổi độ dài nhờ vào trường tùy chọn TCP, mặc dù thường thì trường tùy chọn này không được sử dụng, vì độ dài tiêu đề TCP điển hình là 20 byte.
Tùy chọn trong giao thức có độ dài thay đổi, được sử dụng khi người gửi và người nhận thương lượng kích thước phân đoạn tối đa (MSS) hoặc như một hệ số tỷ lệ cửa sổ cho mạng tốc độ cao Ngoài ra, một tùy chọn đóng dấu thời gian cũng được xác định để cải thiện hiệu suất truyền dữ liệu.
Trường cờ trong TCP chứa 6 bit, trong đó bit ACK xác nhận rằng giá trị trong trường xác nhận là hợp lệ, cho thấy phân đoạn đã được nhận thành công Các bit RST, SYN và FIN được sử dụng để thiết lập và kết thúc kết nối, trong khi bit CWR và ECE tham gia vào việc thông báo tắc nghẽn Bit PSH cho biết máy thu cần chuyển dữ liệu lên lớp trên ngay lập tức, và bit URG chỉ ra rằng có dữ liệu khẩn cấp trong phân đoạn, với vị trí của dữ liệu khẩn cấp được xác định bởi trường con trỏ dữ liệu khẩn cấp 16 bit TCP cần thông báo cho lớp trên bên nhận khi có dữ liệu khẩn cấp và cung cấp con trỏ tới vị trí kết thúc của dữ liệu đó Mặc dù trong thực tế, các trường PSH, URG và con trỏ dữ liệu khẩn cấp ít khi được sử dụng, nhưng vẫn cần đề cập đến chúng để hoàn thiện thông tin.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương I: Tổng quan về giao thức TCP
Hình 1.4: Cấu trúc phân đoạn TCP.
Sequence Numbers and Acknowledgment Numbers:
Trong giao thức TCP, hai trường quan trọng nhất là số thứ tự và số xác nhận, đóng vai trò thiết yếu trong việc cung cấp dịch vụ truyền dữ liệu đáng tin cậy Trước khi tìm hiểu cách thức hoạt động của các trường này, cần làm rõ nội dung mà TCP lưu trữ trong chúng.
TCP coi dữ liệu như một luồng byte không có cấu trúc nhưng có thứ tự, với số thứ tự phản ánh vị trí của từng byte trong luồng Mỗi phân đoạn dữ liệu được đánh số dựa trên byte đầu tiên của nó, giúp duy trì trật tự khi truyền dữ liệu Ví dụ, khi một quy trình trên Máy chủ A gửi dữ liệu tới Máy chủ B qua kết nối TCP, TCP sẽ đánh số từng byte trong luồng dữ liệu Nếu luồng dữ liệu có kích thước 500.000 byte và kích thước tối đa của phân đoạn (MSS) là 1.000 byte, byte đầu tiên sẽ được đánh số 0, từ đó TCP sẽ xây dựng các phân đoạn dữ liệu tương ứng.
NHÓM 13 download by : skknchat@gmail.com dựng 500 phân đoạn ra khỏi luồng dữ liệu Phân đoạn đầu tiên được chỉ định số thứ tự 0, phân đoạn thứ hai được gán số thứ tự 1.000, phân đoạn thứ ba được đã gán số thứ tự 2.000, v.v Mỗi số thứ tự được chèn vào trường số thứ tự trong tiêu đề của phân đoạn TCP thích hợp.
Trong giao thức TCP, số xác nhận đóng vai trò quan trọng trong việc duy trì kết nối song công giữa các máy chủ Khi Máy chủ A nhận dữ liệu từ Máy chủ B, nó sẽ gửi lại một số xác nhận, phản ánh byte tiếp theo mà nó mong đợi Ví dụ, nếu Máy chủ A đã nhận tất cả các byte từ 0 đến 535, nó sẽ đặt số xác nhận là 536 trong phân đoạn gửi đến Máy chủ B, cho biết rằng nó đang chờ nhận byte 536 và các byte tiếp theo trong luồng dữ liệu.
Telnet: A Case Study for Sequence and Acknowledgment Numbers
Telnet, được định nghĩa trong RFC 854, là một giao thức tầng ứng dụng phổ biến cho điều khiển từ xa đăng nhập, hoạt động trên TCP và giữa bất kỳ cặp máy chủ nào Tuy nhiên, do dữ liệu trong kết nối Telnet, bao gồm cả mật khẩu, không được mã hóa, nhiều người dùng hiện nay đã chuyển sang sử dụng giao thức SSH an toàn hơn, nhằm tránh nguy cơ bị tấn công nghe trộm.
Khi Máy chủ A khởi tạo phiên Telnet với Máy chủ B, Máy chủ A được xem là máy khách và Máy chủ B là máy chủ Mọi ký tự mà người dùng nhập trên máy khách sẽ được gửi đến máy chủ từ xa, và máy chủ sẽ gửi lại một bản sao của từng ký tự đó, hiển thị trên màn hình Telnet của người dùng.
“Phản hồi lại” này được sử dụng để đảm bảo rằng các ký tự được người dùng Telnet nhìn NHÓM 13 download by : skknchat@gmail.com
Chương I: Tổng quan về giao thức TCP đề cập đến việc báo hiệu điều khiển và kết nối, cho thấy dữ liệu đã được nhận và xử lý tại trang web từ xa Mỗi ký tự được truyền qua mạng hai lần, giữa thời gian người dùng nhấn phím và thời gian ký tự xuất hiện trên màn hình.
Hình 1.5: Số thứ tự và xác nhận cho một Telnet đơn giản ứng dụng qua TCP
Khi người dùng nhập chữ cái ‘C’ và sau đó lấy một ly cà phê, cần kiểm tra các phân đoạn TCP giữa máy khách và máy chủ Giả sử số thứ tự bắt đầu là 42 cho máy khách và 79 cho máy chủ, số thứ tự của một đoạn tương ứng với byte đầu tiên trong trường dữ liệu Do đó, phân đoạn đầu tiên từ máy khách sẽ có số thứ tự 42, trong khi phân đoạn đầu tiên từ máy chủ sẽ có số thứ tự 79 Sau khi kết nối TCP được thiết lập, máy khách đang chờ byte 79, còn máy chủ đang chờ byte 42.
Trong Hình 1.5, ba phân đoạn được truyền đi, trong đó phân đoạn đầu tiên gửi từ máy khách đến máy chủ chứa biểu diễn ASCII 1 byte của chữ ‘C’ trong trường dữ liệu Phân đoạn này mang số thứ tự 42, chỉ để minh họa cho mô tả của chúng ta.
ĐIỀU KHIỂN TẮC NGHẼN CHO GIAO THỨC TCP
Kiểm soát tắc nghẽn TCP cổ điển
Phương pháp TCP yêu cầu người gửi giới hạn tốc độ gửi lưu lượng truy cập vào kết nối nhằm kiểm soát tắc nghẽn mạng Khi nhận thấy ít tắc nghẽn, người gửi sẽ tăng tốc độ gửi, nhưng nếu có tắc nghẽn, tốc độ sẽ được giảm xuống Tuy nhiên, phương pháp này đặt ra ba câu hỏi quan trọng: Thứ nhất, làm thế nào để giới hạn tốc độ gửi lưu lượng? Thứ hai, làm thế nào để nhận biết tắc nghẽn trên đường dẫn? Thứ ba, thuật toán nào nên được sử dụng để điều chỉnh tốc độ gửi?
Khi kết nối TCP được thiết lập, mỗi bên sẽ có bộ đệm nhận, bộ đệm gửi và một số biến như LastByteRead và rwnd Cơ chế kiểm soát tắc nghẽn TCP tại phía người gửi theo dõi thêm một biến gọi là cửa sổ tắc nghẽn (cwnd), nhằm giới hạn tốc độ gửi lưu lượng vào mạng Lượng dữ liệu chưa được xác nhận tại người gửi không được vượt quá giá trị tối thiểu của cwnd và rwnd.
Để kiểm soát tắc nghẽn trong TCP, công thức LastByteSent – LastByteAcked ≤ min {cwnd, rwnd} được áp dụng, trong đó giả định rằng bộ đệm nhận TCP đủ lớn để không bị ràng buộc bởi cửa sổ nhận Do đó, lượng dữ liệu chưa được xác nhận ở người gửi chỉ phụ thuộc vào cwnd Giả định này cũng cho rằng người gửi luôn có dữ liệu để gửi, tức là tất cả các phân đoạn trong cửa sổ tắc nghẽn đều được gửi đi.
Trong một kết nối mà tổn thất và độ trễ truyền gói không đáng kể, vào đầu mỗi RTT, người gửi được phép gửi cwnd byte dữ liệu vào kết nối.
NHÓM 13 download by : skknchat@gmail.com
Trong giao thức TCP, vào cuối thời gian RTT, người gửi nhận được thông báo xác nhận cho dữ liệu đã gửi Tốc độ gửi của người gửi được tính toán khoảng cwnd / RTT (byte/giây) Bằng cách điều chỉnh giá trị cwnd, người gửi có khả năng điều chỉnh tốc độ gửi dữ liệu qua kết nối của mình.
Trong giao thức TCP, tắc nghẽn trên đường dẫn từ người gửi đến đích được phát hiện thông qua sự kiện mất gói, được định nghĩa là thời gian chờ hoặc nhận ba ACK trùng lặp Khi có tắc nghẽn, một hoặc nhiều bộ đệm của bộ định tuyến sẽ tràn, dẫn đến việc mất gói dữ liệu và gây ra sự mất mát thông tin ở người gửi Ngược lại, trong trường hợp mạng không bị tắc nghẽn, người gửi sẽ nhận được xác nhận cho các phân đoạn chưa được xác nhận, cho thấy rằng dữ liệu đang được truyền tải thành công TCP sẽ sử dụng những xác nhận này để tăng kích thước cửa sổ tắc nghẽn, tuy nhiên nếu xác nhận đến chậm, quá trình tăng kích thước sẽ diễn ra từ từ Ngược lại, nếu xác nhận đến nhanh chóng, cửa sổ tắc nghẽn sẽ được mở rộng nhanh hơn Do đó, TCP tự động điều chỉnh kích thước cửa sổ tắc nghẽn dựa trên tần suất nhận xác nhận.
Người gửi TCP cần phải xác định tốc độ gửi một cách hợp lý để tránh làm nghẽn mạng, đồng thời tối ưu hóa việc sử dụng băng thông Nếu gửi quá nhanh, họ có thể gây tắc nghẽn, trong khi gửi quá chậm lại lãng phí tài nguyên mạng Do đó, việc điều chỉnh giá trị cwnd là cần thiết để cân bằng giữa tốc độ gửi và tình trạng mạng, đảm bảo hiệu suất tối ưu mà không gây ra sự cố cho mạng.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối trong Chương II tập trung vào việc điều khiển tắc nghẽn cho giao thức TCP với mục tiêu tối ưu hóa băng thông có sẵn Một câu hỏi quan trọng là liệu người gửi TCP có thể phối hợp một cách rõ ràng hay không, hay chỉ có thể điều chỉnh tốc độ gửi dựa trên thông tin cục bộ thông qua một phương pháp phân tán TCP giải quyết những vấn đề này bằng cách áp dụng các nguyên tắc quản lý tắc nghẽn hiệu quả.
Khi một phân đoạn TCP bị mất, tốc độ gửi của người gửi sẽ giảm do tắc nghẽn Sự kiện hết thời gian chờ hoặc nhận được bốn xác nhận (bao gồm một ACK gốc và ba ACK trùng lặp) được coi là dấu hiệu ngầm định cho việc mất mát phân đoạn Điều này dẫn đến việc gửi lại phân đoạn bị mất và yêu cầu người gửi TCP giảm kích thước cửa sổ tắc nghẽn.
Một phân đoạn xác nhận cho thấy mạng đang chuyển giao các phân đoạn từ người gửi đến người nhận, dẫn đến việc tỷ lệ của người gửi có thể gia tăng khi nhận được ACK cho một phân đoạn chưa được xác nhận Sự xuất hiện của các xác nhận này được xem là dấu hiệu cho thấy quá trình chuyển giao diễn ra suôn sẻ và mạng không gặp phải tình trạng tắc nghẽn, từ đó cho phép tăng kích thước cửa sổ tắc nghẽn.
TCP thăm dò băng thông bằng cách điều chỉnh tốc độ truyền dựa trên các tín hiệu ACK và sự kiện mất mát Khi nhận được ACK, TCP tăng tốc độ truyền cho đến khi xảy ra mất mát, lúc đó tốc độ sẽ được giảm xuống Quá trình này cho phép TCP xác định tốc độ bắt đầu tắc nghẽn và điều chỉnh lại để kiểm tra xem tốc độ đó có thay đổi hay không Mạng không cung cấp tín hiệu rõ ràng về trạng thái tắc nghẽn, do đó, ACK và sự kiện mất mát trở thành tín hiệu ngầm định, và mỗi người gửi TCP hoạt động dựa trên thông tin cục bộ không đồng bộ từ các người gửi khác.
NHÓM 13 download by : skknchat@gmail.com
Thuật toán kiểm soát tắc nghẽn TCP, được giới thiệu lần đầu tiên trong [Jacobson 1988] và tiêu chuẩn hóa trong [RFC 5681], bao gồm ba thành phần chính: khởi động chậm, tránh tắc nghẽn và khôi phục nhanh Khởi động chậm và tránh tắc nghẽn là hai thành phần bắt buộc của TCP, với cách thức tăng kích thước của cwnd khác nhau dựa trên các ACK đã nhận Mặc dù có tên gọi là "khởi động chậm," thành phần này thực tế làm tăng kích thước cwnd nhanh hơn so với tránh tắc nghẽn Khôi phục nhanh là một phương pháp được khuyến nghị nhưng không bắt buộc cho người gửi TCP.
Slow Start (Khởi động chậm)
Khi kết nối TCP bắt đầu, giá trị cwnd thường được khởi tạo là 1 MSS, dẫn đến tốc độ gửi ban đầu được tính bằng MSS/RTT Ví dụ, với MSS = 500 byte và RTT = 200 msec, tốc độ gửi ban đầu là 20 kbps Để nhanh chóng xác định băng thông khả dụng, cwnd sẽ tăng dần, bắt đầu từ 1 MSS và tăng thêm 1 MSS mỗi khi một phân đoạn được xác nhận lần đầu Quá trình này cho phép tốc độ gửi TCP tăng gấp đôi mỗi RTT, mặc dù khởi đầu chậm nhưng sau đó tăng trưởng theo cấp số nhân trong giai đoạn khởi động chậm.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương II: Điều khiển tắc nghẽn cho giao thức TCP
Hình 2.1: TCP khởi động chậm
Nhưng câu hỏi được đặt ra ở đây là sự tăng trưởng theo cấp số nhân này khi nào sẽ kết thúc?
- Đầu tiên, nếu xảy ra hiện tượng tắc nghẽn, người gửi TCP đặt giá trị cwnd thành
MSS và quá trình khởi động chậm sẽ được khởi động lại, trong đó giá trị của biến trạng thái thứ hai, ssthresh (ngưỡng khởi động chậm), sẽ được thiết lập thành một nửa giá trị của cửa sổ tắc nghẽn (cwnd) khi phát hiện tình trạng tắc nghẽn.
Quá trình khởi động chậm trong TCP có thể kết thúc khi giá trị cwnd đạt ssthresh, mà ssthresh được xác định là một nửa giá trị cwnd cuối cùng khi phát hiện tắc nghẽn Khi cwnd bằng ssthresh, TCP sẽ chuyển sang chế độ tránh tắc nghẽn, trong đó cwnd được tăng một cách cẩn thận hơn để đảm bảo hiệu suất mạng ổn định.
NHÓM 13 download by : skknchat@gmail.com
Thông báo tắc nghẽn rõ ràng do mạng hỗ trợ và Kiểm soát tắc nghẽn dựa trên độ trễ
Kể từ khi tiêu chuẩn hóa về khởi động chậm và kiểm soát tắc nghẽn vào cuối những năm 1980, TCP đã áp dụng hình thức kiểm soát tắc nghẽn đầu cuối, trong đó người gửi không nhận được chỉ báo rõ ràng về tắc nghẽn từ lớp mạng mà chỉ phát hiện qua mất gói Gần đây, các mở rộng cho IP và TCP đã được đề xuất và triển khai, cho phép mạng thông báo rõ ràng tình trạng tắc nghẽn đến người gửi và người nhận Thêm vào đó, một số biến thể của giao thức kiểm soát tắc nghẽn TCP đã được phát triển nhằm suy ra tình trạng tắc nghẽn thông qua việc đo độ trễ của gói.
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương II: Điều khiển tắc nghẽn cho giao thức TCP
Chúng ta sẽ xem xét cả kiểm soát tắc nghẽn do mạng hỗ trợ và dựa trên độ trễ trong phần này.
Thông báo tắc nghẽn rõ ràng ECN
Thông báo tắc nghẽn là phương pháp kiểm soát tắc nghẽn trên Internet, liên quan đến cả TCP và IP Tại lớp mạng, hai bit trong trường loại dịch vụ của tiêu đề IP được sử dụng cho ECN, với bốn giá trị có thể Bộ định tuyến sử dụng các bit ECN để chỉ ra tình trạng tắc nghẽn mà nó đang gặp phải.
Hình 2.6: Thông báo tắc nghẽn rõ ràng: được hỗ trợ bởi mạng điều khiển tắc nghẽn.
Dấu hiệu tắc nghẽn được chuyển đến máy chủ đích qua sơ đồ IP, và thông báo cho máy chủ gửi, như thể hiện trong Hình 2.6 [RFC 3168] Mặc dù RFC 3168 không định nghĩa rõ thời điểm bộ định tuyến bị tắc nghẽn, quyết định này phụ thuộc vào cấu hình của nhà cung cấp bộ định tuyến và nhà khai thác mạng Bit chỉ báo tắc nghẽn có thể được thiết lập để thông báo về sự khởi đầu của tắc nghẽn cho quá trình gửi trước khi xảy ra mất mát thực sự.
NHÓM 13 download by : skknchat@gmail.com
ECN là một công nghệ mà máy chủ sử dụng để thông báo cho các bộ định tuyến về khả năng của người gửi và người nhận trong việc xử lý ECN, giúp họ thực hiện các biện pháp cần thiết để đối phó với tình trạng tắc nghẽn mạng mà ECN chỉ định.
Khi TCP trong máy chủ nhận nhận được thông báo tắc nghẽn ECN, nó sẽ thông báo cho TCP trong máy chủ gửi bằng cách cài đặt bit ECE trong phân đoạn TCP ACK Khi TCP gửi nhận được ACK có thông báo tắc nghẽn, nó sẽ giảm một nửa cửa sổ tắc nghẽn và thực hiện truyền lại nhanh cho phân đoạn bị mất, đồng thời đặt bit CWR trong tiêu đề của lần truyền tiếp theo đến TCP nhận.
Ngoài TCP, nhiều giao thức lớp truyền tải khác cũng hỗ trợ ECN được báo hiệu bởi lớp mạng Giao thức kiểm soát tắc nghẽn Datagram (DCCP) cung cấp dịch vụ kiểm soát tắc nghẽn với chi phí thấp và không đáng tin cậy, tương tự như UDP, cũng sử dụng ECN Các giao thức DCTCP và DCQCN được thiết kế cho mạng trung tâm dữ liệu cũng tích hợp ECN Các phép đo Internet gần đây cho thấy sự gia tăng triển khai khả năng ECN trong các máy chủ phổ biến và các bộ định tuyến trên đường dẫn đến các máy chủ đó.
Kiểm soát tắc nghẽn dựa trên độ trễ
Một bộ định tuyến bị tắc nghẽn có thể đặt bit thông báo tắc nghẽn để cảnh báo người gửi về tình trạng tắc nghẽn, giúp họ giảm tốc độ gửi trước khi xảy ra mất gói tin Điều này giúp tránh mất mát hoặc truyền lại các gói tin quan trọng Ngoài ra, một cách tiếp cận khác là dựa vào độ trễ để phát hiện sớm tình trạng tắc nghẽn trước khi mất gói tin xảy ra.
Trong TCP Vegas, người gửi ước lượng thời gian tròn đi (RTT) đến nguồn đích cho tất cả các gói được thừa nhận RTT tối thiểu (RTT min) được xác định từ các phép đo này tại phía người gửi, xảy ra khi đường dẫn không bị tắc nghẽn và các gói gặp phải độ trễ xếp hàng.
Trong chương II về điều khiển tắc nghẽn cho giao thức TCP, kích thước cửa sổ tắc nghẽn của TCP Vegas được ký hiệu là cwnd, và tốc độ thông lượng chưa bị kiểm tra được tính bằng công thức cwnd / RTT min TCP Vegas hoạt động dựa trên nguyên tắc rằng nếu thông lượng thực tế do người gửi đo gần với giá trị này, tốc độ gửi có thể được tăng lên vì đường dẫn không bị tắc nghẽn Ngược lại, nếu thông lượng thực tế thấp hơn đáng kể so với tốc độ thông lượng không bị tắc nghẽn, điều này cho thấy đường dẫn đang bị tắc nghẽn, dẫn đến việc người gửi TCP Vegas sẽ giảm tốc độ gửi.
TCP Vegas hoạt động theo nguyên tắc "Giữ cho đường ống vừa đầy, nhưng không đầy hơn" Điều này có nghĩa là các liên kết, đặc biệt là các nút cổ chai hạn chế thông lượng, cần luôn bận rộn truyền tải dữ liệu để thực hiện công việc hữu ích Tuy nhiên, việc "không đầy hơn" nhấn mạnh rằng nếu hàng đợi lớn tích tụ trong khi đường ống đã đầy, sẽ không có lợi ích nào đạt được, ngoại trừ việc tăng độ trễ.
Giao thức kiểm soát tắc nghẽn BBR, được phát triển từ ý tưởng trong TCP Vegas, kết hợp các cơ chế giúp nó cạnh tranh hiệu quả với các gửi TCP không phải BBR Kể từ năm 2016, Google đã triển khai BBR cho toàn bộ lưu lượng TCP trên mạng B4, kết nối các trung tâm dữ liệu của mình, thay thế cho CUBIC BBR cũng đang được áp dụng trên các máy chủ web của Google và YouTube Ngoài BBR, các giao thức kiểm soát tắc nghẽn TCP khác dựa trên độ trễ như TIMELY, Compound TCP (CTPC) và FAST cũng được sử dụng cho các mạng trung tâm dữ liệu và mạng đường dài với tốc độ cao.
Ngang hàng
Trong một kết nối TCP, mỗi đường dẫn end-to-end là duy nhất nhưng tất cả đều phải đi qua một liên kết nút cổ chai với tốc độ truyền R bps Tại liên kết nút cổ chai, mặc dù có tắc nghẽn, nhưng các liên kết khác dọc theo đường dẫn của kết nối đều không bị tắc nghẽn và có dung lượng truyền dồi dào Giả sử mỗi kết nối đang truyền một tệp lớn mà không có lưu lượng UDP, một cơ chế kiểm soát tắc nghẽn được coi là hiệu quả nếu tốc độ truyền được duy trì ổn định.
NHÓM 13 download by : skknchat@gmail.com truyền trung bình của mỗi kết nối là xấp xỉ R/K; nghĩa là mỗi kết nối nhận được một phần băng thông liên kết bằng nhau.
Thuật toán AIMD (Additive Increase Multiplicative Decrease) của TCP mang lại nhiều lợi ích, đặc biệt trong bối cảnh các kết nối TCP khác nhau có thể khởi động vào những thời điểm khác nhau Điều này dẫn đến việc kích thước cửa sổ của các kết nối có thể khác nhau tại một thời điểm nhất định, giúp tối ưu hóa việc sử dụng băng thông và giảm thiểu tình trạng tắc nghẽn mạng.
Xét hai kết nối TCP chia sẻ một liên kết với tốc độ truyền R, giả sử cả hai có cùng kích thước MSS và RTT, dẫn đến cùng thông lượng nếu kích thước cửa sổ tắc nghẽn giống nhau Cả hai kết nối đều có lượng lớn dữ liệu để gửi và không có kết nối TCP hoặc UDP nào khác sử dụng liên kết này Bỏ qua giai đoạn slow-start của TCP, ta giả định rằng các kết nối TCP luôn hoạt động ở chế độ CA (AIMD).
Biểu đồ thông lượng trong Hình 2.7 thể hiện hai kết nối TCP chia sẻ băng thông liên kết Khi băng thông được chia sẻ đồng đều, thông lượng sẽ nằm dọc theo mũi tên 45 độ xuất phát từ điểm gốc, với tổng thông lượng lý tưởng bằng R Mỗi kết nối cần nhận được một phần dung lượng liên kết bằng nhau, tuy nhiên, điều này không phải lúc nào cũng đạt được Mục tiêu chính là đạt được thông lượng gần với giao điểm giữa đường chia sẻ băng thông bằng nhau và đường sử dụng băng thông đầy đủ.
Hình 2.7: Hai kết nối TCP chia sẻ một liên kết tắc nghẽn duy nhất
NHÓM 13 download by : skknchat@gmail.com
Báo hiệu điều khiển và kết nối Chương II: Điều khiển tắc nghẽn cho giao thức TCP
Giả sử rằng các kích thước cửa sổ TCP cho phép hai kết nối 1 và 2 đạt được thông lượng tại điểm A trong Hình 2.7 Khi băng thông được tiêu thụ chung bởi hai kết nối nhỏ hơn R, sẽ không xảy ra mất mát và cả hai kết nối sẽ tăng cửa sổ của chúng lên 1 MSS mỗi RTT nhờ thuật toán tránh tắc nghẽn của TCP Do đó, thông lượng chung của hai kết nối sẽ tăng đều theo đường 45 độ từ điểm A Tuy nhiên, khi băng thông chung vượt quá R, sẽ xảy ra mất gói.
Khi hai kết nối 1 và 2 bị mất gói dữ liệu tại điểm B, chúng giảm kích thước cửa sổ của mình theo hệ số hai, dẫn đến thông lượng tại điểm C Tại đây, do băng thông chung nhỏ hơn R, hai kết nối tăng thông lượng theo đường 45 độ từ điểm C Tuy nhiên, sự mất mát lại xảy ra tại điểm D, khiến chúng tiếp tục giảm kích thước cửa sổ theo hệ số hai Điều này cho thấy băng thông được nhận ra bởi hai kết nối sẽ dao động dọc theo đường chia sẻ băng thông bằng nhau, và hành vi này sẽ hội tụ bất kể vị trí của chúng trong không gian hai chiều Mặc dù có một số giả định lý tưởng, kịch bản này vẫn giúp chúng ta hiểu rõ hơn về việc TCP dẫn đến việc chia sẻ băng thông công bằng giữa các kết nối.
NHÓM 13 download by : skknchat@gmail.com
Hình 2.8: Thông lượng được thực hiện bới các kết nối 1 và 2
Trong một tình huống lý tưởng, chỉ các kết nối TCP đi qua nút cổ chai với cùng giá trị RTT và một kết nối TCP duy nhất cho mỗi cặp máy chủ-đích Tuy nhiên, trong thực tế, các điều kiện này thường không được đáp ứng, dẫn đến việc các ứng dụng máy khách-máy chủ nhận được băng thông không đồng đều Đặc biệt, khi nhiều kết nối chia sẻ một nút cổ chai, các phiên có RTT nhỏ hơn có khả năng chiếm băng thông nhanh hơn khi liên kết trở nên miễn phí, từ đó tận hưởng thông lượng cao hơn so với các kết nối có RTT lớn hơn.
Chúng ta đã tìm hiểu về cách kiểm soát tắc nghẽn TCP điều chỉnh tốc độ truyền của ứng dụng thông qua cơ chế cửa sổ tắc nghẽn Nhiều ứng dụng đa phương tiện, như điện thoại Internet và hội nghị truyền hình, thường tránh sử dụng TCP để không bị giới hạn tốc độ truyền, ngay cả khi mạng gặp sự cố.
NHÓM 13 download by : skknchat@gmail.com
Điều khiển tắc nghẽn trong giao thức TCP thường gặp khó khăn khi phải cạnh tranh với các ứng dụng chạy trên UDP, vốn không có tính năng kiểm soát tắc nghẽn Các ứng dụng này có thể truyền âm thanh và video với tốc độ ổn định, nhưng thường dẫn đến mất gói dữ liệu thay vì điều chỉnh tốc độ khi xảy ra tắc nghẽn Điều này khiến TCP cảm thấy các ứng dụng UDP không công bằng, vì chúng không hợp tác với các kết nối khác Trong khi TCP tự động giảm tốc độ truyền khi gặp tắc nghẽn, các nguồn UDP lại không làm như vậy, dẫn đến việc chúng có thể lấn át lưu lượng TCP Để giải quyết vấn đề này, một số cơ chế kiểm soát tắc nghẽn đã được đề xuất nhằm ngăn chặn lưu lượng UDP gây ảnh hưởng đến băng thông của Internet.
Kết nối TCP Ngang bằng và Song song
Mặc dù có thể điều chỉnh lưu lượng truy cập UDP để hoạt động tương đương, nhưng vấn đề công bằng vẫn chưa được giải quyết triệt để Nguyên nhân là do không có biện pháp nào ngăn cản các ứng dụng dựa trên TCP sử dụng nhiều kết nối song song.
Các trình duyệt Web thường sử dụng nhiều kết nối TCP song song để tải nhiều đối tượng trong một trang Web, và số lượng kết nối này có thể được cấu hình Khi một ứng dụng sử dụng nhiều kết nối song song, nó có thể tận dụng băng thông hiệu quả hơn trong một liên kết bị tắc nghẽn Chẳng hạn, trong một liên kết tốc độ R với chín ứng dụng đang hoạt động, mỗi ứng dụng sẽ nhận được băng thông R/10 Tuy nhiên, nếu một ứng dụng mới tham gia và sử dụng 11 kết nối TCP song song, nó sẽ chiếm ưu thế hơn với băng thông khoảng R/2 Do đó, việc sử dụng nhiều kết nối song song là rất phổ biến trong lưu lượng truy cập Web trên Internet.
NHÓM 13 download by : skknchat@gmail.com