Phần này mô tả luồng kèo bóng đá pháp và ngữ nghĩa của mỗi loại tin nhắn. (Chi tiết về biểu diễn chính xác của mỗi tin nhắn xuất hiện trongPhần 54.7.) Có kèo bóng đá pháp số giao thức phụ khác nhau tùy thuộc vào trạng thái của kết nối: khởi động, truy vấn, gọi chức năng,Copy
, và chấm dứt. Ngoài ra còn có các quy định đặc biệt cho các hoạt động không đồng bộ (bao gồm các phản hồi kèo bóng đá pháp và hủy lệnh), có thể xảy ra bất cứ lúc nào sau giai đoạn khởi động.
Để bắt đầu một phiên, Frontend mở kết nối đến máy chủ và gửi tin nhắn khởi động. kèo bóng đá pháp này bao gồm tên của người dùng và cơ sở dữ liệu mà người dùng muốn kết nối;pg_hba.conf
) Để xác định xem kết nối có được chấp nhận tạm thời hay kèo bóng đá pháp và yêu cầu xác thực bổ sung nào (nếu có).
Máy chủ sau đó gửi một kèo bóng đá pháp yêu cầu xác thực phù hợp, mà Frontend phải trả lời với kèo bóng đá pháp phản hồi xác thực phù hợp (như mật khẩu). Đối với tất cả các phương thức xác thực ngoại trừ GSSAPI, SSPI và SASL, có nhiều nhất là một yêu cầu và một phản hồi.
Chu kỳ xác thực kết thúc bằng máy chủ từ chối nỗ lực kết nối (ErrorResponse) hoặc gửi xác thực.
kèo bóng đá pháp tin nhắn có thể từ máy chủ trong giai đoạn này là:
Nỗ lực kết nối đã bị từ chối. Máy chủ sau đó đóng ngay kết nối.
Trao đổi xác thực được hoàn thành thành công.
Frontend hiện phải tham gia hộp thoại xác thực Kerberos V5 (không được mô tả ở đây, kèo bóng đá pháp phần của đặc tả Kerberos) với máy chủ. Nếu điều này thành công, máy chủ sẽ phản hồi với xác thực, nếu không nó sẽ phản hồi bằng kèo bóng đá pháp lỗi.
Frontend hiện phải gửi mật khẩu có chứa mật khẩu ở dạng văn bản rõ ràng. Nếu đây là mật khẩu chính xác, máy chủ sẽ phản hồi bằng xác thực, nếu không nó sẽ trả lời với kèo bóng đá pháp errorResponse.
Frontend hiện phải gửi Mật khẩu có chứa mật khẩu (có tên người dùng) được mã hóa qua MD5, sau đó được mã hóa lại bằng muối ngẫu nhiên 4 byte được chỉ định trong kèo bóng đá pháp xác thựcMD5Password. Nếu đây là mật khẩu chính xác, máy chủ sẽ trả lời với xác thực, nếu không nó sẽ trả lời với ErrorResponse.15690_15764
. (Hãy ghi nhớmd5 ()
Hàm trả về kết quả của nó dưới dạng chuỗi hex.)
Hỗ trợ mật khẩu được mã hóa MD5 được kèo bóng đá pháp dùng nữa và sẽ bị xóa trong bản phát hành trong tương laiPostgreSQL. Tham khảoPhần 20.5Để biết chi tiết về việc chuyển sang loại mật khẩu khác.
Frontend hiện phải bắt đầu đàm phán GSSAPI. Frontend sẽ gửi kèo bóng đá pháp GSSResponse với phần đầu tiên của luồng dữ liệu GSSAPI để đáp ứng với điều này.
Frontend hiện phải bắt đầu kèo bóng đá pháp cuộc đàm phán SSPI. Frontend sẽ gửi GSSResponse với phần đầu tiên của luồng dữ liệu SSPI để đáp ứng điều này.
kèo bóng đá pháp này chứa dữ liệu phản hồi từ bước trước của đàm phán GSSAPI hoặc SSPI (xác thực, xác thực, xác thực trước đây). Nếu dữ liệu GSSAPI hoặc SSPI trong kèo bóng đá pháp này cho biết cần nhiều dữ liệu hơn để hoàn thành xác thực, thì Frontend phải gửi dữ liệu đó dưới dạng kèo bóng đá pháp GSSResponse khác.
Frontend hiện phải bắt đầu kèo bóng đá pháp cuộc đàm phán SASL, sử dụng kèo bóng đá pháp trong các cơ chế SASL được liệt kê trong tin nhắn. Frontend sẽ gửi kèo bóng đá pháp saslinitialresponse với tên của cơ chế đã chọn và phần đầu tiên của luồng dữ liệu SASL để đáp ứng với điều này.Phần 54.3Để biết chi tiết.
kèo bóng đá pháp này chứa dữ liệu thách thức từ bước trước của đàm phán SASL (xác thựcasL hoặc trước đây xác thựcaSlContinue). Frontend phải trả lời bằng tin nhắn Saslresponse.
Xác thực SASL đã hoàn thành với dữ liệu dành riêng cho cơ chế bổ sung cho máy khách. Máy chủ tiếp theo sẽ gửi xác thực để chỉ ra xác thực thành công hoặc ErrorResponse để chỉ ra lỗi.
Máy chủ không hỗ trợ phiên bản giao thức nhỏ được khách hàng yêu cầu, nhưng không hỗ trợ phiên bản trước của giao thức; kèo bóng đá pháp này cho biết phiên bản nhỏ được hỗ trợ cao nhất._PQ_.
) trong gói khởi động.
Sau tin nhắn này, xác thực sẽ tiếp tục sử dụng phiên bản được chỉ định bởi máy chủ. Nếu máy khách kèo bóng đá pháp hỗ trợ phiên bản cũ hơn, nó sẽ đóng ngay lập tức kết nối.
Nếu Frontend kèo bóng đá pháp hỗ trợ phương thức xác thực được yêu cầu bởi máy chủ, thì nó sẽ ngay lập tức đóng kết nối.
Sau khi nhận được xác thực, frontend phải chờ thêm tin nhắn từ máy chủ. Trong giai đoạn này, kèo bóng đá pháp quá trình phụ trợ đang được bắt đầu, và Frontend chỉ là kèo bóng đá pháp người ngoài cuộc quan tâm.
Trong giai đoạn này, phụ trợ sẽ cố gắng áp dụng bất kỳ cài đặt tham số thời gian chạy bổ sung nào được đưa ra trong kèo bóng đá pháp khởi động. Nếu thành công, các giá trị này sẽ trở thành mặc định phiên.
kèo bóng đá pháp tin nhắn có thể từ phần phụ trợ trong giai đoạn này là:
kèo bóng đá pháp này cung cấp dữ liệu khóa bí mật mà Frontend phải lưu nếu muốn có thể đưa ra các yêu cầu hủy sau này. Frontend không nên trả lời tin nhắn này, nhưng sẽ tiếp tục nghe một tin nhắn ReadyForQuery.
kèo bóng đá pháp này kèo bóng đá pháp cho Frontend về cài đặt (ban đầu) hiện tại của các tham số phụ trợ, chẳng hạn nhưclient_encodinghoặcDatestyle. Frontend có thể bỏ qua kèo bóng đá pháp này hoặc ghi lại các cài đặt để sử dụng trong tương lai;Phần 54.2.7Để biết thêm chi tiết. Frontend không nên trả lời tin nhắn này, nhưng sẽ tiếp tục nghe kèo bóng đá pháp tin nhắn ReadyForQuery.
Khởi nghiệp được hoàn thành. Frontend hiện có thể phát hành kèo bóng đá pháp lệnh.
Khởi nghiệp kèo bóng đá pháp thành công. Kết nối được đóng sau khi gửi tin nhắn này.
Một thông điệp cảnh báo đã được ban hành. Frontend sẽ hiển thị kèo bóng đá pháp nhưng tiếp tục nghe ReadyForQuery hoặc ErrorResponse.
kèo bóng đá pháp ReadyForQuery là cùng một tin nhắn mà phần phụ trợ sẽ phát hành sau mỗi chu kỳ lệnh. Tùy thuộc vào nhu cầu mã hóa của Frontend, thật hợp lý khi coi ReadyForQuery là bắt đầu một chu kỳ lệnh hoặc xem xét ReadyForQuery là kết thúc giai đoạn khởi động và mỗi chu kỳ lệnh tiếp theo.
Một chu trình truy vấn đơn giản được bắt đầu bởi frontend gửi tin nhắn truy vấn đến phần phụ trợ. kèo bóng đá pháp bao gồm một lệnh SQL (hoặc lệnh) được thể hiện dưới dạng chuỗi văn bản.
kèo bóng đá pháp phản hồi có thể từ phần phụ trợ là:
lệnh SQL hoàn thành bình thường.
Phần phụ trợ đã sẵn sàng sao chép dữ liệu từ phía trước sang bảng; nhìn thấyPhần 54.2.6.
Phần phụ trợ đã sẵn sàng sao chép dữ liệu từ bảng đến mặt trận; nhìn thấyPhần 54.2.6.
Cho biết rằng kèo bóng đá pháp hàng sắp được trả lại để đáp ứng với AChọn
, Fetch
, v.v. Truy vấn. Nội dung của kèo bóng đá pháp này mô tả bố cục cột của các hàng.
kèo bóng đá pháp trong những hàng hàng được trả về bởi AChọn
, Fetch
, v.v.
kèo bóng đá pháp chuỗi truy vấn trống đã được nhận ra.
Đã xảy ra lỗi.
Xử lý chuỗi truy vấn đã hoàn tất. Một kèo bóng đá pháp riêng được gửi để cho biết điều này vì chuỗi truy vấn có thể chứa nhiều lệnh SQL.
Một thông điệp cảnh báo đã được đưa ra liên quan đến truy vấn. Các kèo bóng đá pháp ngoài các câu trả lời khác, tức là, phần phụ trợ sẽ tiếp tục xử lý lệnh.
Phản hồi cho AChọn
Truy vấn (hoặc kèo bóng đá pháp truy vấn khác trả về kèo bóng đá pháp bộ hàng, chẳng hạn nhưGiải thích
hoặcshow
26360_26458Copy
Đến hoặc từ Frontend gọi giao thức đặc biệt như được mô tả trongPhần 54.2.6. Tất cả các loại truy vấn khác thường chỉ tạo ra một kèo bóng đá pháp CommandComplete.
Vì kèo bóng đá pháp chuỗi truy vấn có thể chứa kèo bóng đá pháp số truy vấn (được phân tách bằng dấu chấm phẩy), có thể có kèo bóng đá pháp số chuỗi phản hồi như vậy trước khi kết thúc hoàn thành chuỗi truy vấn. ReadyForQuery được phát hành khi toàn bộ chuỗi đã được xử lý và phụ trợ đã sẵn sàng để chấp nhận kèo bóng đá pháp chuỗi truy vấn mới.
Nếu nhận được chuỗi hoàn toàn trống (kèo bóng đá pháp có nội dung nào khác ngoài khoảng trắng)
Trong trường hợp có lỗi, ErrorResponse được cấp theo sau là ReadyForQuery. Tất cả việc xử lý tiếp theo của chuỗi truy vấn đều bị hủy bỏ bởi ErrorResponse (ngay cả khi vẫn còn nhiều truy vấn trong đó).
Trong chế độ truy vấn đơn giản, định dạng của kèo bóng đá pháp giá trị truy xuất luôn luôn là văn bản, ngoại trừ khi lệnh đã cho làFetch
Từ con trỏ được khai kèo bóng đá pháp vớinhị phân
Tùy chọn. Trong trường hợp đó, kèo bóng đá pháp giá trị được truy xuất ở định dạng nhị phân.
kèo bóng đá pháp frontend phải được chuẩn bị để chấp nhận các tin nhắn ErrorResponse và NoticeResponse bất cứ khi nào nó mong đợi bất kỳ loại tin nhắn nào khác. Xem thêmPhần 54.2.7Liên quan đến kèo bóng đá pháp tin nhắn mà phần phụ trợ có thể tạo do kèo bóng đá pháp sự kiện bên ngoài.
28248_28460
Khi một kèo bóng đá pháp truy vấn đơn giản chứa nhiều câu lệnh SQL (được phân tách bằng dấu chấm phẩy), các câu lệnh đó được thực thi dưới dạng một giao dịch duy nhất, trừ khi các lệnh kiểm soát giao dịch rõ ràng được đưa vào để buộc một hành vi khác. Ví dụ: nếu tin nhắn chứa
Chèn vào kèo bóng đá pháp giá trị mytable (1);
Sau đó, sự thất bại của Divide-by-Zero trongChọn
Sẽ buộc rollback của lần đầu tiênChèn
. Hơn nữa, vì việc thực thi tin nhắn bị bỏ rơi ở lỗi đầu tiên, lần thứ haiChèn
kèo bóng đá pháp bao giờ được cố gắng.
Nếu thay vào đó là kèo bóng đá pháp chứa
Bắt đầu;
Sau đó, lần đầu tiênChèn
được cam kết bởi rõ ràngcam kết
Lệnh. Thứ haiChèn
vàChọn
29891_29998Chèn
, nhưng kèo bóng đá pháp phải là cái đầu tiên.
Hành vi này được thực hiện bằng cách chạy các câu lệnh trong một kèo bóng đá pháp truy vấn đa trạng thái trong mộtKhối giao dịch ngầmTrừ khi có một số khối giao dịch rõ ràng để họ chạy vào. Sự khác biệt chính giữa một khối giao dịch ngầm và thông thường là một khối ẩn được đóng tự động ở cuối kèo bóng đá pháp truy vấn, bằng cách không có lỗi nếu không có lỗi hoặc một lần quay lại ẩn nếu có lỗi. Điều này tương tự như cam kết ngầm hoặc rollback xảy ra cho một câu lệnh được thực hiện bởi chính nó (khi không ở trong một khối giao dịch).
Nếu phiên đã ở trong kèo bóng đá pháp khối giao dịch, do kết quả của ABắt đầu
Trong một số tin nhắn trước đó, sau đó tin nhắn truy vấn chỉ đơn giản là tiếp tục khối giao dịch đó, cho dù tin nhắn có chứa một câu lệnh hay một số. Tuy nhiên, nếu kèo bóng đá pháp truy vấn chứacam kết
hoặcrollback
Đóng khối giao dịch hiện tại, sau đó mọi kèo bóng đá pháp cáo sau đây được thực thi trong một khối giao dịch ngầm. Ngược lại, nếu mộtbắt đầu
31225_31359cam kết
hoặcrollback
, cho dù điều đó xuất hiện trong kèo bóng đá pháp truy vấn này hoặc tin nhắn sau. Nếubắt đầu
tuân theo một số tuyên bố được thực thi dưới dạng một khối giao dịch ngầm, những tuyên bố đó không được thực hiện ngay lập tức; Trên thực tế, chúng được đưa vào hồi tố vào khối giao dịch kèo bóng đá pháp thường mới.
Acam kết
hoặcrollback
Xuất hiện trong một khối giao dịch ngầm được thực thi là bình thường, đóng khối ngầm; Tuy nhiên, một cảnh kèo bóng đá pháp sẽ được đưa ra kể từcam kết
hoặcrollback
kèo bóng đá pháp có trước đóbắt đầu
có thể biểu thị một sai lầm. Nếu nhiều kèo bóng đá pháp cáo theo sau, một khối giao dịch ngầm mới sẽ được bắt đầu cho họ.
SavePoints không được phép trong kèo bóng đá pháp khối giao dịch ngầm, vì chúng sẽ xung đột với hành vi tự động đóng khối theo bất kỳ lỗi nào.
Hãy nhớ rằng, bất kể bất kỳ lệnh điều khiển giao dịch nào có thể có mặt, việc thực hiện kèo bóng đá pháp truy vấn dừng ở lỗi đầu tiên. Do đó, ví dụ đã cho
Bắt đầu;
Trong một kèo bóng đá pháp truy vấn duy nhất, phiên sẽ được để lại bên trong một khối giao dịch thông thường không thành công, vìrollback
kèo bóng đá pháp đạt được sau lỗi phân chia từng kèo bóng đá pháp. Khácrollback
Sẽ cần thiết để khôi phục phiên về trạng thái có thể sử dụng.
kèo bóng đá pháp hành vi khác cần lưu ý là phân tích từ vựng và cú pháp ban đầu được thực hiện trên toàn bộ chuỗi truy vấn trước khi bất kỳ điều gì được thực thi. Do đó, các lỗi đơn giản (chẳng hạn như từ khóa sai chính tả) trong các câu sau có thể ngăn chặn việc thực thi bất kỳ câu lệnh nào.
Bắt đầu;
Sau đó, kèo bóng đá pháp có câu nào được chạy, dẫn đến sự khác biệt có thể nhìn thấy mà lần đầu tiênChèn
kèo bóng đá pháp được cam kết. Các lỗi được phát hiện ở phân tích ngữ nghĩa hoặc sau này, chẳng hạn như bảng sai chính tả hoặc tên cột, kèo bóng đá pháp có hiệu ứng này.
Giao thức truy vấn mở rộng chia giao thức truy vấn đơn giản được mô tả ở trên thành nhiều bước. Kết quả của kèo bóng đá pháp bước chuẩn bị có thể được sử dụng lại nhiều lần để cải thiện hiệu quả.
Trong giao thức mở rộng, Frontend trước tiên sẽ gửi một kèo bóng đá pháp phân tích cú pháp, chứa một chuỗi truy vấn văn bản, tùy chọn một số thông tin về các kiểu giữ chỗ dữ liệu và tên của một đối tượng định tuyến chuẩn bị đích (một chuỗi trống chọn câu lệnh được chuẩn bị không được đặt tên). Phản hồi là Parsecomplete hoặc ErrorResponse.
35169_35332$
n
) Được sử dụng trong chuỗi truy vấn. kèo bóng đá pháp trường hợp đặc biệt khác là loại tham số có thể được chỉ định làvoid
(nghĩa là oid củavoid
Pseudo-type). Điều này có nghĩa là để cho phép kèo bóng đá pháp ký hiệu tham số được sử dụng cho kèo bóng đá pháp tham số chức năng thực sự là kèo bóng đá pháp tham số.void
Có thể sử dụng tham số, nhưng nếu ký hiệu tham số như vậy xuất hiện trong danh sách tham số của hàm, nó sẽ bị bỏ qua kèo bóng đá pháp cách hiệu quả. Ví dụ: cuộc gọi chức năng nhưFOO ($ 1, $ 2, $ 3, $ 4)
Có thể khớp với kèo bóng đá pháp hàm với hai trong và hai đối số ra, nếu$ 3
và$ 4
được chỉ định là có loạivoid
.
Chuỗi truy vấn có trong kèo bóng đá pháp phân tích không thể bao gồm nhiều câu lệnh SQL; khác là một lỗi cú pháp được báo cáo.
Nếu được tạo thành công, kèo bóng đá pháp đối tượng đã chuẩn bị được đặt tên kéo dài cho đến cuối phiên hiện tại, trừ khi bị phá hủy rõ ràng. kèo bóng đá pháp tuyên bố được chuẩn bị không tên chỉ kéo dài cho đến khi câu lệnh phân tích điện phân tiếp theo chỉ định câu lệnh không tên là đích được đưa ra.Chuẩn bị
vàthực thi
.
Sau khi tồn tại một câu lệnh đã chuẩn bị, nó có thể được sẵn sàng để thực thi bằng tin nhắn liên kết. kèo bóng đá pháp ràng buộc cho biết tên của câu lệnh được chuẩn bị nguồn (chuỗi trống biểu thị câu lệnh đã chuẩn bị không tên), tên của cổng thông tin đích (chuỗi trống biểu thị cổng thông tin không tên) và các giá trị sẽ sử dụng cho bất kỳ người giữ chỗ tham số nào có trong câu lệnh đã chuẩn bị.void
tham số trong kèo bóng đá pháp phân tích, truyền các giá trị null cho chúng trong kèo bóng đá pháp liên kết.) Liên kết cũng chỉ định định dạng để sử dụng cho bất kỳ dữ liệu nào được trả về bởi truy vấn; Định dạng có thể được chỉ định tổng thể, hoặc trên mỗi cột.
Sự lựa chọn giữa văn bản và đầu ra nhị phân được xác định bởi kèo bóng đá pháp mã định dạng được đưa ra trong ràng buộc, bất kể lệnh SQL liên quan. Thenhị phân
Thuộc tính trong khai kèo bóng đá pháp con trỏ là không liên quan khi sử dụng giao thức truy vấn mở rộng.
Kế hoạch truy vấn thường xảy ra khi kèo bóng đá pháp liên kết được xử lý. Nếu câu lệnh đã chuẩn bị không có tham số hoặc được thực thi nhiều lần, máy chủ có thể lưu gói đã tạo và sử dụng lại nó trong các kèo bóng đá pháp ràng buộc tiếp theo cho cùng một câu lệnh đã chuẩn bị.
Nếu được tạo thành công, một đối tượng cổng kèo bóng đá pháp tin có tên kéo dài cho đến khi kết thúc giao dịch hiện tại, trừ khi bị phá hủy rõ ràng. Một cổng kèo bóng đá pháp tin không tên bị phá hủy vào cuối giao dịch hoặc ngay khi câu lệnh liên kết tiếp theo chỉ định cổng kèo bóng đá pháp tin không tên là đích được phát hành.Tuyên bố con trỏ
vàFetch
.
Một khi một cổng thông tin tồn tại, nó có thể được thực thi bằng tin nhắn thực thi. kèo bóng đá pháp thực thi chỉ định tên cổng thông tin (chuỗi trống biểu thị cổng thông tin không tên) và số lượng hàng kết quả tối đa (không có nghĩa làTìm nạp tất cả kèo bóng đá pháp hàngKhăn). Số lượng hàng kết quả chỉ có ý nghĩa đối với kèo bóng đá pháp cổng chứa kèo bóng đá pháp lệnh trả về kèo bóng đá pháp bộ hàng;
40251_40902
40912_41113bắt đầu
/cam kết
Khối giao dịch ("ĐóngCó nghĩa là cam kết nếu không có lỗi hoặc quay lại nếu lỗi). Sau đó, kèo bóng đá pháp phản hồi ReadyForQuery được ban hành.trong khiĐồng bộ hóa xử lý - Điều này đảm bảo rằng có kèo bóng đá pháp và chỉ kèo bóng đá pháp ReadyForQuery được gửi cho mỗi lần đồng bộ hóa.)
SYNC kèo bóng đá pháp gây ra khối giao dịch được mở bằngBắt đầu
Đóng. Có thể phát hiện tình huống này vì kèo bóng đá pháp ReadyForQuery bao gồm thông tin trạng thái giao dịch.
Ngoài các hoạt động cơ bản, cần thiết này, còn có kèo bóng đá pháp số hoạt động tùy chọn có thể được sử dụng với giao thức trình điều khiển mở rộng.
kèo bóng đá pháp mô tả (biến thể cổng thông tin) Chỉ định tên của một cổng thông tin hiện có (hoặc một chuỗi trống cho cổng thông tin không tên). Phản hồi là một kèo bóng đá pháp Rowdes mô tả các hàng sẽ được trả về bằng cách thực hiện cổng thông tin;
kèo bóng đá pháp mô tả (biến thể câu lệnh) Chỉ định tên của một câu lệnh đã chuẩn bị hiện có (hoặc một chuỗi trống cho câu lệnh đã chuẩn bị không tên). Phản hồi là một kèo bóng đá pháp tham số mô tả các tham số cần thiết cho câu lệnh, theo sau là kèo bóng đá pháp ROWDES mô tả các hàng sẽ được trả về khi câu lệnh cuối cùng được thực thi (hoặc kèo bóng đá pháp NODATA nếu câu lệnh sẽ không trả lại hàng).
Trong hầu hết các kịch bản, Frontend nên đưa ra kèo bóng đá pháp hoặc biến thể khác của mô tả trước khi phát hành thực thi, để đảm bảo rằng nó biết cách diễn giải kết quả mà nó sẽ quay lại.
kèo bóng đá pháp điệp gần gũi đóng một câu lệnh hoặc cổng kèo bóng đá pháp tin đã chuẩn bị hiện có và phát hành tài nguyên. Nó không phải là một lỗi để phát hành gần với câu lệnh hoặc tên cổng kèo bóng đá pháp tin không tồn tại.
kèo bóng đá pháp Flush không gây ra bất kỳ đầu ra cụ thể nào được tạo, nhưng buộc phần phụ trợ để cung cấp bất kỳ dữ liệu nào đang chờ xử lý trong các bộ đệm đầu ra của nó. Một tuôn ra phải được gửi sau khi bất kỳ lệnh trình độ mở rộng nào ngoại trừ đồng bộ hóa, nếu frontend muốn kiểm tra kết quả của lệnh đó trước khi ban hành nhiều lệnh hơn.
kèo bóng đá pháp truy vấn đơn giản gần tương đương với chuỗi phân tích, BIND, Cổng mô tả, thực thi, đóng, đồng bộ hóa, sử dụng câu lệnh được chuẩn bị không tên và đối tượng cổng thông tin và không có tham số. Một điểm khác biệt là nó sẽ chấp nhận nhiều câu lệnh SQL trong chuỗi truy vấn, tự động thực hiện trình tự BIND/MÔ TẢ/thực thi cho mỗi câu liên tiếp.
Sử dụng giao thức truy vấn mở rộng cho phépđường ống, có nghĩa là gửi kèo bóng đá pháp loạt các truy vấn mà không chờ đợi trước đó để hoàn thành. Điều này làm giảm số lượng các chuyến đi vòng mạng cần thiết để hoàn thành kèo bóng đá pháp loạt các hoạt động nhất định.
kèo bóng đá pháp cách để đối phó với điều đó là làm cho toàn bộ chuỗi truy vấn trở thành kèo bóng đá pháp giao dịch duy nhất, kết thúc nó trongbắt đầu
...cam kết
. Tuy nhiên, điều này không giúp ích gì nếu kèo bóng đá pháp người muốn kèo bóng đá pháp số lệnh cam kết độc lập với người khác.
Giao thức truy vấn mở rộng cung cấp một cách khác để quản lý mối quan tâm này, đó là bỏ qua việc gửi tin nhắn đồng bộ hóa giữa các bước phụ thuộc. Vì sau khi bị lỗi, phần phụ trợ sẽ bỏ qua các kèo bóng đá pháp lệnh cho đến khi tìm thấy đồng bộ hóa, điều này cho phép các lệnh sau đó trong đường ống được bỏ qua khi một lệnh trước đó không thành công, mà không cần máy khách phải quản lý điều đó một cách rõ ràng vớibắt đầu
vàcam kết
. Có thể phân tách các phân đoạn độc lập của đường ống có thể được phân tách bằng các kèo bóng đá pháp đồng bộ hóa.
Nếu khách hàng kèo bóng đá pháp phát hành rõ ràngBắt đầu
, sau đó kèo bóng đá pháp khối giao dịch ngầm được bắt đầu và mỗi lần đồng bộ hóa thường gây ra kèo bóng đá pháp ẩn ýcam kết
Nếu bước trước đó đã thành công hoặc ẩnrollback
Nếu họ thất bại. Khối giao dịch ngầm này sẽ chỉ được máy chủ phát hiện khi lệnh đầu tiên kết thúc mà kèo bóng đá pháp đồng bộ hóa.Tạo cơ sở dữ liệu
) Không thể được thực thi bên trong kèo bóng đá pháp khối giao dịch. Nếu kèo bóng đá pháp trong số này được thực thi trong kèo bóng đá pháp đường ống, nó sẽ thất bại trừ khi đó là lệnh đầu tiên sau khi đồng bộ hóa.
47583_47883
Hàm gọi phụ cho phép máy khách yêu cầu gọi trực tiếp của bất kỳ chức năng nào tồn tại trong cơ sở dữ liệuPG_PROC
Danh mục hệ thống. Máy khách phải có quyền thực thi cho chức năng.
Chức năng gọi phụ là kèo bóng đá pháp tính năng di sản có lẽ được tránh tốt nhất trong mã mới. Kết quả tương tự có thể được thực hiện bằng cách thiết lập kèo bóng đá pháp câu lệnh đã chuẩn bịChọn chức năng ($ 1, ...)
. Chu trình cuộc gọi chức năng sau đó có thể được thay thế bằng BIND/EXECUTE.
Chu kỳ cuộc gọi chức năng được bắt đầu bởi Frontend gửi một kèo bóng đá pháp FunctionCall đến phần phụ trợ. Phần phụ trợ sau đó gửi một hoặc nhiều tin nhắn phản hồi tùy thuộc vào kết quả của cuộc gọi chức năng và cuối cùng là một kèo bóng đá pháp phản hồi ReadyForQuery.
kèo bóng đá pháp phản hồi có thể từ phần phụ trợ là:
Đã xảy ra lỗi.
Cuộc gọi chức năng đã được hoàn thành và trả về kết quả được đưa ra trong tin nhắn. (Lưu ý rằng giao thức cuộc gọi chức năng chỉ có thể xử lý kèo bóng đá pháp kết quả vô hướng, không phải là loại hàng hoặc tập hợp kết quả.)
Xử lý cuộc gọi chức năng đã hoàn tất. ReadyForQuery sẽ luôn được gửi, cho dù việc xử lý chấm dứt thành công hay với lỗi.
Một kèo bóng đá pháp cảnh báo đã được đưa ra liên quan đến cuộc gọi chức năng. Các kèo bóng đá pháp ngoài các câu trả lời khác, tức là, phần phụ trợ sẽ tiếp tục xử lý lệnh.
TheCopy
Lệnh cho phép truyền dữ liệu số lượng lớn tốc độ cao đến hoặc từ máy chủ. Các hoạt động sao chép và sao chép mỗi lần chuyển kết nối thành kèo bóng đá pháp giao thức phụ riêng biệt, kéo dài cho đến khi hoạt động hoàn tất.
Chế độ sao chép (truyền dữ liệu vào máy chủ) được bắt đầu khi phần phụ trợ thực thiSao chép từ Stdin
Câu lệnh SQL. Phần phụ trợ gửi một kèo bóng đá pháp copyInresponse đến frontend.Copy
Tuyên bố SQL bị lỗi). Phần phụ trợ sau đó trở lại chế độ xử lý lệnh mà nó đã ở trướcCopy
Bắt đầu, sẽ là giao thức truy vấn đơn giản hoặc mở rộng. Tiếp theo nó sẽ gửi kèo bóng đá pháp trong hai CommandComplete (nếu thành công) hoặc errorResponse (nếu không).
51654_51816Copy
Lệnh đã được cấp thông qua một kèo bóng đá pháp trình biết mở rộng, phần phụ trợ sẽ loại bỏ các tin nhắn phía trước cho đến khi nhận được tin nhắn đồng bộ hóa, sau đó nó sẽ phát hành ReadyForQuery và trở lại xử lý thông thường. NếuCopy
Lệnh đã được cấp trong một kèo bóng đá pháp truy vấn đơn giản, phần còn lại của tin nhắn đó bị loại bỏ và ReadyForQuery được phát hành. Trong cả hai trường hợp, bất kỳ tin nhắn copyData, copyDone hoặc copyfail nào tiếp theo do frontend ban hành sẽ đơn giản là bị loại bỏ.
Phần phụ trợ sẽ bỏ qua các tin nhắn tuôn ra và đồng bộ hóa nhận được trong chế độ sao chép. Nhận bất kỳ loại tin nhắn không sao chép nào khác tạo thành kèo bóng đá pháp lỗi sẽ hủy bỏ trạng thái sao chép như được mô tả ở trên.Sao chép từ Stdin
.)
Chế độ sao chép (truyền dữ liệu từ máy chủ) được bắt đầu khi phần phụ trợ thực thiSao chép vào stdout
Câu lệnh SQL. Phần phụ trợ gửi một kèo bóng đá pháp CopyouTresponse đến phía trước, theo sau là không có hoặc nhiều tin nhắn copyData (luôn luôn một mỗi hàng), theo sau là copyDone.Copy
Bắt đầu và gửi CommandComplete. Frontend kèo bóng đá pháp thể hủy bỏ việc chuyển nhượng (ngoại trừ bằng cách đóng kết nối hoặc đưa ra yêu cầu hủy), nhưng nó có thể loại bỏ các tin nhắn copyData và copyDone kèo bóng đá pháp mong muốn.
53389_53619
Có thể tin nhắn noticeResponse và parameterStatus được xen kẽ giữa các tin nhắn copyData; Frontends phải xử lý các trường hợp này và cũng nên được chuẩn bị cho các loại tin nhắn kèo bóng đá pháp đồng bộ khác (xemPhần 54.2.7). Nếu kèo bóng đá pháp, bất kỳ loại tin nhắn nào khác ngoài COPYDATA hoặc COPYDONE có thể được coi là Chế độ sao chép kết thúc.
54090_54191vàTừ máy chủ. Copy-Both Mode được bắt đầu khi phần phụ trợ trong chế độ Walsender thực thistart_Replication
Tuyên bố. Phần phụ trợ gửi kèo bóng đá pháp tin nhắn copybothresponse đến frontend.Phần 54.4Để biết thêm kèo bóng đá pháp tin về Subrotocol được truyền qua chế độ sao chép-cả.
Tin nhắn copyInresponse, copyouTresponse và copyBothresponse bao gồm các trường kèo bóng đá pháp cho số lượng cột mỗi hàng và mã định dạng được sử dụng cho mỗi cột. (Kể từ khi triển khai hiện tại, tất cả các cột trong một đã choCopy
Hoạt động sẽ sử dụng cùng kèo bóng đá pháp định dạng, nhưng thiết kế tin nhắn không giả định điều này.)
Có kèo bóng đá pháp số trường hợp phụ trợ sẽ gửi các tin nhắn không được nhắc cụ thể bởi luồng lệnh của Frontend. Frontends phải được chuẩn bị để đối phó với các tin nhắn này bất cứ lúc nào, ngay cả khi không tham gia vào kèo bóng đá pháp truy vấn.
Có thể tạo kèo bóng đá pháp tin nhắn NoticeResponse được tạo do hoạt động bên ngoài; Ví dụ: nếu quản trị viên cơ sở dữ liệu ra lệnhFastTắt cơ sở dữ liệu, phần phụ trợ sẽ gửi một NoticeResponse chỉ ra thực tế này trước khi đóng kết nối. Theo đó, Frontends phải luôn luôn được chuẩn bị để chấp nhận và hiển thị các kèo bóng đá pháp NoticeResponse, ngay cả khi kết nối không hoạt động.
Thông số kèo bóng đá pháp sẽ được tạo bất cứ khi nào giá trị hoạt động thay đổi cho bất kỳ tham số nào mà phần phụ trợ tin rằng Frontend nên biết. Thông thường nhất là điều này xảy ra để đáp ứng vớiset
Lệnh SQL được thực hiện bởi Frontend và trường hợp này có hiệu quả đồng bộ - nhưng cũng có thể thay đổi trạng thái tham số xảy ra vì quản trị viên đã thay đổi tệp cấu hình và sau đó đã gửiSIGHUPTín hiệu cho máy chủ. Ngoài ra, nếu kèo bóng đá phápset
Lệnh được quay lại, một kèo bóng đá pháp tham số thích hợp sẽ được tạo để báo cáo giá trị hiệu quả hiện tại.
Hiện tại có kèo bóng đá pháp bộ tham số có dây cứng mà tham số sẽ được tạo. Họ là:
application_name |
scram_iterations |
client_encoding |
search_path |
Datestyle |
server_encoding |
default_transaction_read_only |
server_version |
in_hot_standby |
session_Authorization |
integer_datetimes |
Standard_Conforming_Strings |
IntervalStyle |
timezone |
is_superuser |
(Default_Transaction_Read_only
vàin_hot_standby
Không được kèo bóng đá pháp cáo bởi các bản phát hành trước 14;scram_iterations
không được kèo bóng đá pháp cáo bởi các bản phát hành trước 16;search_path
Không được kèo bóng đá pháp cáo bởi các bản phát hành trước 18.) Lưu ý rằngserver_version
, server_encoding
vàinteger_datetimes
là các tham số giả kèo bóng đá pháp thể thay đổi sau khi khởi động. Bộ này có thể thay đổi trong tương lai, hoặc thậm chí trở thành cấu hình.
Nếu kèo bóng đá pháp frontend phát hành Anghe
59802_59925kèo bóng đá pháp
Lệnh được thực thi cho cùng tên kênh.
Hiện tại, kèo bóng đá pháp chỉ có thể được gửi bên ngoài một giao dịch và do đó nó sẽ không xảy ra ở giữa một chuỗi phản hồi lệnh, mặc dù nó có thể xảy ra ngay trước khi ReadyForQuery. Tuy nhiên, không khôn ngoan khi thiết kế logic frontend giả định rằng, tuy nhiên.
Trong quá trình xử lý truy vấn, frontend có thể yêu cầu hủy truy vấn. Yêu cầu Hủy kèo bóng đá pháp được gửi trực tiếp trên kết nối mở đến phần phụ trợ vì lý do hiệu quả thực hiện: Chúng tôi kèo bóng đá pháp muốn có phần phụ trợ liên tục kiểm tra đầu vào mới từ phía trước trong quá trình xử lý truy vấn.
Để đưa ra yêu cầu hủy, Frontend mở kết nối mới đến máy chủ và gửi tin nhắn DECCEQUEST, thay vì kèo bóng đá pháp StartupMessage thường được gửi qua kết nối mới. Máy chủ sẽ xử lý yêu cầu này và sau đó đóng kết nối.
kèo bóng đá pháp hủyRequest sẽ bị bỏ qua trừ khi nó chứa cùng một dữ liệu khóa (khóa PID và Bí mật) được chuyển đến Frontend trong quá trình khởi động kết nối. Nếu yêu cầu khớp với khóa PID và bí mật cho một phụ trợ hiện đang thực hiện, việc xử lý truy vấn hiện tại sẽ bị hủy bỏ.
Tín hiệu hủy có thể hoặc có thể không có bất kỳ ảnh hưởng nào - ví dụ, nếu nó đến sau khi phần phụ trợ đã hoàn thành việc xử lý truy vấn, thì nó sẽ không có tác dụng. Nếu hủy bỏ có hiệu lực, nó sẽ dẫn đến lệnh hiện tại bị chấm dứt sớm với kèo bóng đá pháp lỗi.
Kết quả của tất cả điều này là vì lý do của cả bảo mật và hiệu quả, mặt tiền kèo bóng đá pháp có cách trực tiếp nào để biết liệu yêu cầu hủy có thành công hay kèo bóng đá pháp. Nó phải tiếp tục chờ đợi phần phụ trợ để trả lời truy vấn.
Vì yêu cầu hủy được gửi qua kết nối mới đến máy chủ chứ không phải qua liên kết giao tiếp phía trước/phụ trợ kèo bóng đá pháp thường, nên có thể hủy yêu cầu hủy bỏ bởi bất kỳ quy trình nào, không chỉ là truy vấn của họ. Điều này có thể cung cấp tính linh hoạt bổ sung khi xây dựng các ứng dụng nhiều quá trình.
Quy trình chấm dứt bình thường, duyên dáng là Frontend gửi tin nhắn chấm dứt và ngay lập tức đóng kết nối. Khi nhận được tin nhắn này, phụ trợ đóng kết nối và chấm dứt.
Trong các trường hợp hiếm hoi (chẳng hạn như tắt máy cơ sở dữ liệu được quản lý), phần phụ trợ có thể ngắt kết nối mà không cần bất kỳ yêu cầu nào để làm như vậy. Trong những trường hợp như vậy, phụ trợ sẽ cố gắng gửi một lỗi hoặc kèo bóng đá pháp kèo bóng đá pháp đưa ra lý do cho sự ngắt kết nối trước khi nó đóng kết nối.
Các kịch bản chấm dứt khác phát sinh từ các trường hợp thất bại khác nhau, chẳng hạn như kết xuất lõi ở đầu này hay đầu kia, mất liên kết liên lạc, mất đồng bộ hóa liên kết tin nhắn, v.v. Frontend có tùy chọn khởi chạy kèo bóng đá pháp phụ trợ mới bằng cách giới thiệu lại máy chủ nếu nó không muốn tự chấm dứt.
Đối với việc chấm dứt bình thường hoặc bất thường, bất kỳ giao dịch mở nào được quay lại, không cam kết. Tuy nhiên, người ta nên lưu ý rằng nếu kèo bóng đá pháp frontend ngắt kết nối trong khi khôngChọn
Truy vấn đang được xử lý, phần phụ trợ có thể sẽ hoàn thành truy vấn trước khi nhận thấy sự ngắt kết nối. Nếu truy vấn nằm ngoài bất kỳ khối giao dịch nào (bắt đầu
...cam kết
Trình tự) Sau đó, kết quả của nó có thể được thực hiện trước khi ngắt kết nối được nhận ra.
nếuPostgreSQLđược xây dựng vớiSSLHỗ trợ, giao tiếp phía trước/phụ trợ có thể được mã hóa bằng cách sử dụngSSL. Điều này cung cấp bảo mật truyền kèo bóng đá pháp trong các môi trường nơi những kẻ tấn công có thể nắm bắt lưu lượng phiên.PostgreSQLPhiên vớiSSL, xemPhần 18.9.
để bắt đầuSSLKết nối -Crypted, Frontend ban đầu gửi tin nhắn SSLRequest thay vì StartupMessage. Máy chủ sau đó trả lời với kèo bóng đá pháp byte duy nhất có chứaS
hoặcn
, chỉ ra rằng nó sẵn sàng hoặc kèo bóng đá pháp muốn thực hiệnSSL, tương ứng. Mặt trận có thể đóng kết nối tại thời điểm này nếu nó kèo bóng đá pháp hài lòng với phản hồi.S
, thực hiệnSSLBắt tay khởi động (không được mô tả ở đây, kèo bóng đá pháp phần củaSSLĐặc điểm kỹ thuật) với máy chủ. Nếu điều này thành công, tiếp tục gửi cho StartupMessage kèo bóng đá pháp thường.SSL-encrypted. Để tiếp tục saun
, Gửi phần khởi động kèo bóng đá pháp thường và tiến hành mà không cần mã hóa. (Khácn
Phản hồi để cố gắng sử dụngGSSAPIMã hóa thay vìSSL.)
Frontend cũng nên được chuẩn bị để xử lý phản hồi ErrorMessage với SSLRequest từ máy chủ. Frontend không được hiển thị kèo bóng đá pháp lỗi này cho người dùng/ứng dụng, vì máy chủ chưa được xác thực (CVE-2024-10977). Trong trường hợp này, kết nối phải được đóng, nhưng frontend có thể chọn mở kết nối mới và tiến hành mà kèo bóng đá pháp yêu cầuSSL.
KhiSSLMã hóa có thể được thực hiện, máy chủ dự kiến sẽ chỉ gửi đơn lẻS
byte và sau đó đợi frontend bắt đầuSSLbắt tay. Nếu các byte bổ sung có sẵn để đọc tại thời điểm này, điều đó có thể có nghĩa là kèo bóng đá pháp người đàn ông đang cố gắng thực hiện kèo bóng đá pháp cuộc tấn công quá trình đệm bộ đệm (CVE-2021-23222). Frontends nên được mã hóa để đọc chính xác kèo bóng đá pháp byte từ ổ cắm trước khi chuyển ổ cắm sang thư viện SSL của họ hoặc coi nó là vi phạm giao thức nếu họ thấy họ đã đọc Byte bổ sung.
Tương tự như vậy, máy chủ mong đợi máy khách kèo bóng đá pháp bắt đầuSSLĐàm phán cho đến khi nhận được phản hồi byte đơn của máy chủ choSSLYêu cầu. Nếu máy khách bắt đầuSSLĐàm phán ngay lập tức mà không chờ đợi phản hồi của máy chủ, nó có thể giảm độ trễ kết nối bằng kèo bóng đá pháp chuyến đi khứ hồi. Tuy nhiên, điều này đến với chi phí không thể xử lý trường hợp máy chủ gửi phản hồi tiêu cực choSSLYêu cầu. Trong trường hợp đó thay vì tiếp tục với GSSAPI hoặc kết nối kèo bóng đá pháp được mã hóa hoặc lỗi giao thức, máy chủ sẽ chỉ ngắt kết nối.
SSLRequest ban đầu cũng có thể được sử dụng trong kèo bóng đá pháp kết nối đang được mở để gửi tin nhắn Decc
Cách thay thế thứ hai để bắt đầuSSLMã hóa có sẵn. Máy chủ sẽ nhận ra kèo bóng đá pháp kết nối ngay lập tức bắt đầuSSLĐàm phán mà không có bất kỳ gói SSLRequest nào trước đó. kèo bóng đá pháp khiSSLKết nối được thành lập Máy chủ sẽ mong đợi kèo bóng đá pháp gói yêu cầu khởi động bình thường và tiếp tục đàm phán qua kênh được mã hóa. Trong trường hợp này, bất kỳ yêu cầu mã hóa nào khác sẽ bị từ chối.SSLKết nối. Khi sử dụngSSLKết nối theo kiểu này, máy khách được yêu cầu sử dụng tiện ích mở rộng ALPN được xác định bởiRFC 7301Để bảo vệ chống lại kèo bóng đá pháp cuộc tấn công nhầm lẫn giao thức. ThePostgreSQLGiao thức là "PostgreSQL" như đã đăng ký tạiIANA TLS ID giao thức ALPNĐăng ký.
Trong khi bản thân giao thức kèo bóng đá pháp cung cấp cách để máy chủ buộcSSLMã hóa, quản trị viên có thể định cấu hình máy chủ để từ chối các phiên kèo bóng đá pháp được mã hóa dưới dạng sản phẩm phụ của kiểm tra xác thực.
nếuPOSTGRESQLđược xây dựng vớiGSSAPIHỗ trợ, giao tiếp phía trước/phụ trợ có thể được mã hóa bằng cách sử dụngGSSAPI. Điều này cung cấp bảo mật truyền kèo bóng đá pháp trong các môi trường nơi những kẻ tấn công có thể nắm bắt lưu lượng phiên.POSTGRESQLPhiên vớiGSSAPI, xemPhần 18.10.
Để bắt đầu AGSSAPIKết nối -Crypted, Frontend ban đầu gửi kèo bóng đá pháp GSSencRequest thay vì StartupMessage. Máy chủ sau đó trả lời với một byte duy nhất có chứag
hoặcn
, chỉ ra rằng nó sẵn sàng hoặc kèo bóng đá pháp muốn thực hiệnGSSAPIMã hóa, tương ứng. Mặt trận có thể đóng kết nối tại thời điểm này nếu nó kèo bóng đá pháp hài lòng với phản hồi.g
, Sử dụng kèo bóng đá pháp ràng buộc GSSAPI C như đã thảo luận trongRFC 2744hoặc tương đương, thực hiện AGSSAPIKhởi tạo bằng cách gọigss_init_sec_context ()
Trong kèo bóng đá pháp vòng lặp và gửi kết quả đến máy chủ, bắt đầu với kèo bóng đá pháp đầu vào trống và sau đó với mỗi kết quả từ máy chủ, cho đến khi nó trả về không có đầu ra. Khi gửi kết quả củagss_init_sec_context ()
Đến máy chủ, hãy dành thời gian của tin nhắn dưới dạng số nguyên bốn byte trong thứ tự byte mạng. Để tiếp tục saun
, Gửi phần khởi động kèo bóng đá pháp thường và tiến hành mà không cần mã hóa. (Ngoài ra, được phép gửi tin nhắn sslRequest saun
Phản hồi để cố gắng sử dụngSSLmã hóa thay vìGSSAPI.)
Frontend cũng nên được chuẩn bị để xử lý phản hồi ErrorMessage với GSSencRequest từ máy chủ. Frontend không được hiển thị kèo bóng đá pháp lỗi này cho người dùng/ứng dụng, vì máy chủ chưa được xác thực (CVE-2024-10977). Trong trường hợp này, kết nối phải được đóng, nhưng frontend có thể chọn mở kết nối mới và tiến hành mà kèo bóng đá pháp yêu cầuGSSAPImã hóa.
KhiGSSAPIMã hóa có thể được thực hiện, máy chủ dự kiến sẽ chỉ gửi đơn lẻg
byte và sau đó đợi frontend bắt đầu AGSSAPIbắt tay. Nếu các byte bổ sung có sẵn để đọc tại thời điểm này, điều đó có thể có nghĩa là kèo bóng đá pháp người đàn ông đang cố gắng thực hiện kèo bóng đá pháp cuộc tấn công quá trình đệm bộ đệm (CVE-2021-23222). Frontends nên được mã hóa để đọc chính xác kèo bóng đá pháp byte từ ổ cắm trước khi chuyển ổ cắm sang thư viện GSSAPI của họ hoặc coi nó là vi phạm giao thức nếu họ thấy họ đã đọc các byte bổ sung.
74721_74834
kèo bóng đá pháp lầnGSSAPIMã hóa đã được thiết lập thành công, sử dụngGSS_WRAP ()
74981_75086gss_wrap ()
Là kèo bóng đá pháp số nguyên bốn byte trong thứ tự byte mạng theo tải trọng được mã hóa thực tế. Lưu ý rằng máy chủ sẽ chỉ chấp nhận các gói được mã hóa từ máy khách dưới 16kb;GSS_WRAP_SIZE_LIMIT ()
nên được khách hàng sử dụng để xác định kích thước của kèo bóng đá pháp không được mã hóa sẽ phù hợp với giới hạn này và các kèo bóng đá pháp lớn hơn sẽ được chia thành nhiềugss_wrap ()
cuộc gọi. Các phân đoạn điển hình là 8kb dữ liệu không được mã hóa, dẫn đến các gói được mã hóa lớn hơn kèo bóng đá pháp chút so với 8kb nhưng trong phạm vi tối đa 16kB.
Trong khi bản thân giao thức kèo bóng đá pháp cung cấp cách để máy chủ buộcGSSAPIMã hóa, quản trị viên có thể định cấu hình máy chủ để từ chối các phiên kèo bóng đá pháp được mã hóa dưới dạng sản phẩm phụ của kiểm tra xác thực.