QUIC là gì? Streams, Mã hóa, và Di chuyển Kết nối

QUIC là gì? Streams, Mã hóa, và Di chuyển Kết nối

Trình duyệt Scraping Không Rác cung cấp các phiên trình duyệt được quản lý có thể giao tiếp với các nguồn gốc web qua các giao thức truyền tải được trình duyệt và mạng hỗ trợ.

Tóm tắt ngắn gọn

  • QUIC là một giao thức truyền tải. HTTP/3 là một ứng dụng sử dụng nó.
  • Gói QUIC sử dụng bao bọc UDP. Độ tin cậy và hành vi tắc nghẽn được triển khai bởi các điểm cuối QUIC.
  • Các luồng có thứ tự giao hàng độc lập. Dữ liệu bị thiếu của một luồng không chặn việc giao hàng của luồng không liên quan.
  • Mã hóa được tích hợp vào phiên bản 1. Thiết lập khóa TLS 1.3 được tích hợp với cấu hình truyền tải.
  • ID kết nối hỗ trợ thay đổi đường dẫn. Một kết nối đã được xác thực có thể tồn tại sau một số thay đổi về IP hoặc cổng nhất định.

Giới thiệu

QUIC là một giao thức truyền tải an toàn, đa phương thức mà các gói của nó di chuyển trong các datagram UDP. Nó cung cấp các luồng đáng tin cậy, phát hiện mất mát, kiểm soát tắc nghẽn, bắt tay mật mã, và di chuyển kết nối trong một giao thức được triển khai trên giao diện UDP của hệ điều hành.

HTTP/3 là ứng dụng nổi tiếng nhất của QUIC, nhưng hai tên gọi này mô tả các lớp khác nhau. QUIC truyền tải dữ liệu ứng dụng. HTTP/3 xác định cách mà các yêu cầu, phản hồi, trường và thông điệp điều khiển HTTP sử dụng giao thức truyền tải đó.

Bao bọc UDP không có ngữ nghĩa UDP cho các ứng dụng

UDP cung cấp giao hàng datagram và hỗ trợ hệ điều hành rộng rãi. QUIC xây dựng trạng thái kết nối, xác nhận, phát lại thông tin bị mất, kiểm soát lưu lượng, và kiểm soát tắc nghẽn phía trên nó. Do đó, các ứng dụng không nhận được một gói datagram không đáng tin cậy khi họ sử dụng một luồng QUIC đáng tin cậy.

RFC 9000 định nghĩa phiên bản QUIC 1 như một giao thức truyền tải đa phương thức và an toàn dựa trên UDP. Việc giữ phần lớn logic trong không gian người dùng cho phép các triển khai phát triển mà không cần chờ đợi các ngăn xếp TCP của hệ điều hành, nhưng nó cũng đặt nhiều trách nhiệm hơn lên thư viện QUIC.

Gói, Khung, và Các Luồng

Một gói QUIC chứa các khung giao thức. Các khung STREAM mang các dải byte cho một luồng ứng dụng cụ thể, trong khi các khung khác xác nhận việc nhận, quản lý kiểm soát lưu lượng, đóng kết nối hoặc xác thực các đường dẫn. Số gói hỗ trợ phát hiện mất mát nhưng không phải là định danh thông điệp ứng dụng.

Một luồng cung cấp các byte đã sắp xếp trong luồng đó. Các luồng độc lập không chia sẻ một thứ tự giao hàng. Các ứng dụng vẫn xác định ranh giới thông điệp hoặc sử dụng một giao thức cấp cao hơn như HTTP/3. Kiểm soát lưu lượng tồn tại ở cả phạm vi luồng và kết nối để giữ cho một người gửi nhanh không làm cạn kiệt bộ nhớ của người nhận.

Thiết lập Mật mã Tích hợp

QUIC tích hợp TLS 1.3 để các thông số truyền tải và khóa mật mã được thiết lập cùng nhau. Hầu hết nội dung gói và thông tin kiểm soát được mã hóa, và máy chủ chứng minh danh tính của mình thông qua quá trình chứng chỉ được sử dụng bởi TLS.

Bắt tay có các mức độ mã hóa riêng biệt khi các điểm cuối thu được tài liệu khóa. Việc khôi phục có thể giảm chi phí thiết lập cho một đối tác đã biết, trong khi dữ liệu sớm cần các ngữ nghĩa ứng dụng nhận thức lại. RFC 9001 định nghĩa việc sử dụng TLS của QUIC.

Phát hiện Mất Mát và Kiểm soát Tắc nghẽn

QUIC xác nhận các gói nhận được và phát hiện mất mát bằng cách sử dụng không gian số gói và bộ đếm thời gian. Thông tin STREAM bị mất có thể được gửi trong một gói mới; QUIC không phát lại một gói với cùng số gói.

Kiểm soát tắc nghẽn giới hạn lượng dữ liệu mà một người gửi đặt lên đường dẫn, giống như một triển khai TCP có trách nhiệm. Tính độc lập của luồng loại bỏ sự kết nối giữa thứ tự giao hàng, không chia sẻ băng thông. Tắc nghẽn nghiêm trọng hoặc mất mát rộng rãi vẫn làm chậm toàn bộ kết nối vì mọi luồng đều sử dụng cùng một đường dẫn mạng và ngân sách tắc nghẽn.

ID kết nối và Di chuyển

Một kết nối QUIC có thể sử dụng ID kết nối được chọn bởi các điểm cuối. Bộ định tuyến và máy chủ có thể liên kết các gói với kết nối đúng ngay cả khi địa chỉ IP hoặc cổng công khai thay đổi.

Trước khi gửi lưu lượng lớn trên một đường dẫn mới, đối tác xác thực khả năng tiếp cận. Các triển khai cũng luân chuyển ID kết nối để giảm khả năng liên kết và cung cấp mã thông báo đặt lại không trạng thái cho các trường hợp thất bại cụ thể. Di chuyển kết nối hỗ trợ tính di động, nhưng chính sách máy chủ, hành vi NAT, và thiết kế bộ cân bằng tải quyết định mức độ nó hoạt động hiệu quả trong thực tế.

Hoạt động và Tính khả dụng Mạng

Vì QUIC mã hóa hầu hết các chi tiết kiểm soát, các thiết bị mạng thụ động thấy ít hơn so với những gì chúng thấy trong TCP. Điều đó giới hạn sự can thiệp của thiết bị trung gian và làm cho việc phát triển giao thức trở nên dễ dàng hơn, trong khi chuyển các chẩn đoán hữu ích về phía các điểm cuối.

Các nhà điều hành nên thu thập kết quả bắt tay, phiên bản đã thương thảo, ước tính mất mát, trạng thái tắc nghẽn, thay đổi đường dẫn, và thời gian ứng dụng từ các khách hàng và máy chủ đáng tin cậy. Tài liệu QUIC quản lý giải thích các trường nhìn thấy được, bảo vệ toàn vẹn, và các giới hạn của kiểm tra lưu lượng truyền thống.

Khái niệmHành vi QUICÝ nghĩa Vận hành
Bao bọcCác gói đi trong các datagram UDPMạng phải truyền dịch vụ UDP
Độ tin cậyCác luồng phát lại thông tin bị mấtCác ứng dụng có thể sử dụng các byte đã sắp xếp
Đa truy cậpNhiều luồng độc lậpMất mát không gây ra thứ tự luồng
An ninhTLS 1.3 đã được tích hợpHầu hết dữ liệu điều khiển được mã hóa
Danh tínhID kết nốiCó thể di chuyển đường dẫn đã xác thực
Tắc nghẽnKiểm soát cấp kết nốiTất cả các luồng vẫn chia sẻ dung lượng đường đi

QUIC là gì? Luồng, Mã hóa, và Kế hoạch xác thực di chuyển kết nối

QUIC là một giao thức vận chuyển. HTTP/3 là một ánh xạ ứng dụng sử dụng nó. Xác thực rằng yêu cầu đó qua toàn bộ đường dẫn sản xuất. Bắt đầu với một trao đổi đại diện nhỏ, ghi lại hành vi đã đàm phán tại máy khách và rìa, và xác nhận rằng ứng dụng nhận được các trường, khung, hoặc sự kiện mà nó mong đợi thông qua cùng một cổng, proxy, điểm chấm dứt chứng chỉ, và chính sách mạng được sử dụng bởi lưu lượng thực.

Biến giả định thiết kế đầu tiên thành một bài kiểm tra thất bại: Xác nhận rằng triển khai hỗ trợ phiên bản QUIC IETF 1. Sau đó kiểm tra áp lực tài nguyên xoay quanh giả định thứ hai: Bảo vệ các khóa riêng của máy chủ và gia hạn chứng chỉ. Một triển khai chính xác nên thất bại trong các giới hạn đã được tài liệu hóa, giải phóng trạng thái kết nối và bộ đệm, và để lại một dấu vết giải thích kết quả mà không tiết lộ thông tin xác thực hoặc payload riêng tư.

HTTP/3 và các phiên di động kiểm tra những phần khác nhau của thiết kế, vì vậy việc kiểm tra tính tương thích nên bao gồm cả hai hình dạng lưu lượng nơi chúng liên quan. Thêm một trình duyệt hiện tại, một khách hàng không phải trình duyệt, một đường dẫn mạng chậm hơn, và trung gian hỗ trợ lâu đời nhất. Ghi lại lựa chọn phiên bản, thời gian sống của kết nối, tuổi của thông điệp hoặc phản hồi, độ sâu hàng đợi, và lý do đóng cho đường dẫn ưu tiên và dự phòng của nó.

Xem xét ngữ nghĩa và vận chuyển như các lớp riêng biệt trong quá trình thử nghiệm. Một kết nối thành công không chứng minh rằng ứng dụng xử lý thứ tự, ủy quyền, hủy bỏ, bộ nhớ đệm, phát lại, hoặc khôi phục trạng thái một cách chính xác. Tương tự, một lỗi ứng dụng không chứng minh rằng giao thức đã đàm phán thất bại. Ghi nhãn các quan sát với tài nguyên, phạm vi người dùng, hoạt động hợp lý, và định danh kết nối, sau đó so sánh những gì mỗi điểm cuối tin rằng đã xảy ra. Sự phân tách này cũng làm cho công việc về dung lượng trở nên hữu ích hơn: các đội có thể thấy độ trễ đến từ việc thiết lập kết nối, giao hàng mạng, hàng đợi, xử lý ứng dụng, tuần tự hóa, hoặc một bộ nhận chậm. Giữ nội dung riêng tư ra khỏi dữ liệu telemetry thông thường trong khi vẫn giữ đủ dữ liệu về thời gian và kết quả để tái tạo quyết định.

Nơi mà QUIC là gì? Luồng, Mã hóa, và Di chuyển Kết nối Xuất hiện trong Thực tế

HTTP/3

QUIC mang các luồng yêu cầu HTTP, luồng điều khiển, và các khối trường nén.

Các phiên di động

Các ID kết nối giúp một kết nối thích ứng với sự thay đổi đường dẫn mạng đã xác thực.

Vận chuyển không gian người dùng

Thư viện có thể cập nhật hành vi vận chuyển nhanh hơn so với các giao thức kernel hệ điều hành.

Giao thức ứng dụng mã hóa

Các giao thức mới có thể sử dụng luồng an toàn mà không cần xây dựng lại độ tin cậy vận chuyển từ UDP thô.

Danh sách Kiểm tra Sản xuất QUIC là gì? Luồng, Mã hóa, và Di chuyển Kết nối

  • Xác nhận rằng triển khai hỗ trợ phiên bản QUIC IETF 1. Chuyển đổi điểm này thành một bài kiểm tra chấp nhận bằng văn bản để người đánh giá có thể phân biệt hành vi mong muốn từ một chi tiết triển khai tình cờ.
  • Bảo vệ các khóa riêng của máy chủ và gia hạn chứng chỉ. Đặt tên thành phần sở hữu cài đặt và người hoặc đội phản ứng khi hành vi quan sát được của nó thay đổi.
  • Kiểm tra khả năng tiếp cận UDP từ các mạng đại diện. Bắt tín hiệu liên quan trong nhật ký hoặc dấu vết, sau đó xác minh rằng tín hiệu tồn tại qua mỗi proxy, cổng, và ranh giới dịch vụ trong đường đi thực.
  • Giữ một đường dẫn dự phòng dựa trên TCP nơi người dùng yêu cầu nó. Kiểm tra quyết định với trường hợp bình thường, một đối tác chậm, kết nối đóng, một đầu vào quá cỡ, và sự không phù hợp về phiên bản hoặc khả năng.
  • Điều chỉnh bộ đệm socket và lập lịch làm việc. Tài liệu hóa mặc định an toàn và điều kiện chính xác cho phép một ngoại lệ; các ngoại lệ ẩn trở thành vấn đề tương tác trong các thay đổi sau này.
  • Ghi lại các chỉ số vận chuyển điểm cuối. Kiểm tra hành vi này từ một trình duyệt hoặc khách hàng đại diện thay vì chỉ phụ thuộc vào một bài kiểm tra đơn vị địa phương hoặc một màn hình cấu hình phía máy chủ.
  • Thiết kế cân bằng tải xung quanh các ID kết nối. Đặt một giới hạn tài nguyên hữu hạn và làm cho sự từ chối kết quả trở nên rõ ràng đối với cả nhà điều hành và ứng dụng gọi.
  • Xác thực các đường mới trước khi di chuyển. Bảo tồn đủ định danh để tương quan một trao đổi logic trên máy khách, rìa, ứng dụng, và bất kỳ công nhân bất đồng bộ nào.
  • Tách kiểm soát luồng từ các hàng đợi ứng dụng. Xem xét lựa chọn sau khi thay đổi hình dạng lưu lượng vì số lượng kết nối, kích thước payload, và tần suất thông điệp có thể thay đổi thiết kế chính xác.
  • Đo lường hành vi kết nối dưới sự mất mát và di động thực tế. Giữ cho đường dẫn dự phòng quan sát được và đã được thử nghiệm để tính tương thích không phụ thuộc vào một đường cũ mà âm thầm ngừng hoạt động.

Kết luận

QUIC là một giao thức vận chuyển. HTTP/3 là một ánh xạ ứng dụng sử dụng nó. ID kết nối hỗ trợ sự thay đổi đường dẫn. Một kết nối đã được xác thực có thể sống sót sau một số thay đổi về IP hoặc cổng nhất định. Áp dụng hai sự thật đó với các giới hạn rõ ràng, trạng thái có thể quan sát và một phương án dự phòng được kiểm tra bởi các khách hàng đại diện chứ không phải giả định từ cấu hình.

Sẵn sàng để xây dựng một quy trình dữ liệu web đáng tin cậy?

Chuyển quyết định giao thức thành các quy trình có thể quan sát từ trình duyệt và API với Scrapeless.

Đăng ký hôm nay và nhận $5 tín dụng miễn phíkhông cần thẻ tín dụng.

Nhận tín dụng $5 của bạn →

Câu hỏi thường gặp

Có phải QUIC là viết tắt của Kết nối Internet UDP Nhanh?

Tên này có nguồn gốc từ cụm từ đó, nhưng giao thức tiêu chuẩn hóa đơn giản được gọi là QUIC trong các đặc điểm kỹ thuật của IETF.

Có phải QUIC không đáng tin cậy vì nó sử dụng UDP?

Không. UDP mang các gói QUIC, trong khi QUIC thực hiện các luồng có thứ tự đáng tin cậy, các xác nhận, phát hiện mất mát, và kiểm soát tắc nghẽn.

Có phải QUIC chỉ dành cho HTTP/3?

Không. HTTP/3 là triển khai chính của nó, nhưng QUIC là một giao thức vận chuyển tổng quát mà các giao thức ứng dụng khác có thể sử dụng.

Có phải QUIC loại bỏ tất cả việc chặn dòng đầu?

QUIC ngăn chặn các byte bị thiếu của một luồng chặn việc giao hàng trên các luồng không liên quan, nhưng các byte có thứ tự trong luồng bị ảnh hưởng vẫn phải chờ.

Tại sao QUIC khó kiểm tra trên mạng hơn?

QUIC mã hóa hầu hết thông tin điều khiển vận chuyển, vì vậy các chẩn đoán chi tiết thường đến từ telemetry của điểm cuối được ủy quyền.

Tài liệu tham khảo