3.2.1.2 Per SMB2 Transport Connection

The client MUST implement the following:

Connection.SessionTable: A table of authenticated sessions, as specified in section 3.2.1.3, that the client has established on this SMB2 transport connection. The table MUST allow lookup by both Session.SessionId and by the security context of the user that established the connection.

Connection.PreauthSessionTable: A table of sessions that have not completed authentication, as specified in section 3.2.1.3. The table MUST allow lookup by Session.SessionId.

Connection.OutstandingRequests: A table of requests, as specified in section 3.2.1.7, that have been issued on this connection and are awaiting a response. The table MUST allow lookup by Request.CancelId and by MessageId, and each request MUST store the time at which the request was sent.

Connection.SequenceWindow: A table of available sequence numbers for sending requests to the server, as specified in section 3.2.4.1.6.

Connection.GSSNegotiateToken: A byte array containing the token received during a negotiation and remembered for authentication.

Connection.MaxTransactSize: The maximum buffer size, in bytes, that the server will accept on this connection for QUERY_INFO, QUERY_DIRECTORY, SET_INFO and CHANGE_NOTIFY operations. This field is applicable only for buffers sent by the client in SET_INFO requests, or returned from the server in QUERY_INFO, QUERY_DIRECTORY, and CHANGE_NOTIFY responses.<102>

Connection.MaxReadSize: The maximum read size, in bytes, that the server will accept in an SMB2 READ Request on this connection.

Connection.MaxWriteSize: The maximum write size, in bytes, that the server will accept in an SMB2 WRITE Request on this connection.

Connection.ServerGuid: A globally unique identifier that is generated by the remote server to uniquely identify the remote server. This field MUST NOT be used by a client as a secure method of identifying a server.

Connection.RequireSigning: A Boolean indicating whether the server requires requests/responses on this connection to be signed.

Connection.ServerName: A Unicode UTF-16 fully qualified domain name, a NetBIOS name, or an IP address of the server machine.

If the client implements the SMB 2.1 dialect or SMB 3.x dialect family, it MUST also implement the following:

  • Connection.Dialect:  The dialect of SMB2 negotiated with the server. This value MUST be "2.0.2", "2.1", "3.0", "3.0.2", "3.1.1", or "Unknown". For the purpose of generalization in the client processing rules, the condition that Connection.Dialect is equal to "3.0", "3.0.2", or "3.1.1" is referred to as "Connection.Dialect belongs to the SMB 3.x dialect family".

  • Connection.SupportsFileLeasing: A Boolean indicating whether the server supports file leasing functionality.

  • Connection.SupportsMultiCredit: A Boolean indicating whether the server supports multi-credit operations.

  • Connection.ClientGuid: A GUID used to identify the client.

If the client implements the SMB 3.x dialect family, it MUST also implement the following:

  • Connection.SupportsDirectoryLeasing: A Boolean indicating whether the server supports directory leasing.

  • Connection.SupportsMultiChannel: A Boolean indicating whether the server supports establishing multiple channels for sessions.

  • Connection.SupportsPersistentHandles: A Boolean indicating whether the server supports persistent handles.

  • Connection.SupportsEncryption: A Boolean indicating whether the SMB2 server supports encryption.

  • Connection.ClientCapabilities: The capabilities sent by the client in the SMB2 NEGOTIATE Request on this connection, in a form that MUST follow the syntax as specified in section 2.2.3.

  • Connection.ServerCapabilities: The capabilities received from the server in the SMB2 NEGOTIATE Response on this connection, in a form that MUST follow the syntax as specified in section 2.2.4.

  • Connection.ClientSecurityMode: The security mode sent by the client in the SMB2 NEGOTIATE request on this connection, in a form that MUST follow the syntax as specified in section 2.2.3.

  • Connection.ServerSecurityMode: The security mode received from the server in the SMB2 NEGOTIATE response on this connection, in a form that MUST follow the syntax as specified in section 2.2.4.

  • Connection.Server: A reference to the server entry to which the connection is established.

  • Connection.OfferedDialects: An array of dialects sent in the SMB2 NEGOTIATE Request on this connection.

If the client implements the SMB 3.1.1 dialect, it MUST also implement the following:

  • Connection.PreauthIntegrityHashId: The ID of the preauthentication integrity hash function that was negotiated for this connection.

  • Connection.PreauthIntegrityHashValue: The preauthentication integrity hash value that was computed for the exchange of SMB2 NEGOTIATE request and response messages on this connection.

  • Connection.CipherId: The ID of the cipher that was negotiated for this connection.

  • Connection.CompressionIds: A list of compression algorithm identifiers, if any, used for this connection. Valid values are specified in section 2.2.3.1.3.

  • Connection.SupportsChainedCompression: A Boolean that, if set, indicates that chained compression is supported on this connection.

  • Connection.RDMATransformIds: A list of RDMA transform identifiers, if any, used for this connection. Valid values are specified in section 2.2.3.1.6.

  • Connection.SigningAlgorithmId: An identifier of the signing algorithm that was negotiated for this connection. Valid values are specified in section 2.2.3.1.7.

  • Connection.AcceptTransportSecurity: A Boolean that, if set, indicates that transport security is enabled and SMB2 encryption is disabled.

  • Connection.SupportsNotifications: A Boolean indicating whether this connection supports one-way notifications being sent to the client.