diff --git a/doc/src/sgml/protocol.sgml b/doc/src/sgml/protocol.sgml
index c4d3853cbf2..6ea0c1b788b 100644
--- a/doc/src/sgml/protocol.sgml
+++ b/doc/src/sgml/protocol.sgml
@@ -7772,6 +7772,18 @@ psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;"
  <sect1 id="protocol-changes">
   <title>Summary of Changes since Protocol 2.0</title>
 
+  <para>
+   This section provides a quick checklist of changes, for the benefit of
+   developers trying to update existing client libraries to protocol 3.2.
+  </para>
+
+  <para>
+  The secret key used in query cancellation was enlarged from 4 bytes to a
+  variable length field. The BackendKeyData message was changed to accommodate
+  that, and the CancelRequest message was redefined to have a variable length
+  payload.
+  </para>
+
   <para>
    This section provides a quick checklist of changes, for the benefit of
    developers trying to update existing client libraries to protocol 3.0.
@@ -7871,5 +7883,15 @@ psql "dbname=postgres replication=database" -c "IDENTIFY_SYSTEM;"
    The EmptyQueryResponse ('<literal>I</literal>') message used to include an empty
    string parameter; this has been removed.
   </para>
+
+  <para>
+   In version 17 SSL negotiation was modified.
+   Before version 17 To initiate an SSL-encrypted connection, the frontend initially
+   sends an SSLRequest message rather than a StartupMessage. The server then responds
+   with a single byte containing S or N, indicating that it is willing or unwilling
+   to perform SSL, respectively. After which the frontend begins SSL negotiation
+   Starting in version 17 the server will recognize connections which immediately
+   begin SSL negotiation without any previous SSLRequest packets
+  </para>
  </sect1>
 </chapter>
