Export (0) Print
Expand All

2.2.3 SMB2 NEGOTIATE Request

The SMB2 NEGOTIATE Request packet is used by the client to notify the server what dialects of the SMB 2 Protocol the client understands. This request is composed of an SMB2 header, as specified in section 2.2.1, followed by this request structure.


0

1

2

3

4

5

6

7

8

9
1
0

1

2

3

4

5

6

7

8

9
2
0

1

2

3

4

5

6

7

8

9
3
0

1

StructureSize

DialectCount

SecurityMode

Reserved

Capabilities

ClientGuid

...

...

...

ClientStartTime

...

Dialects (variable)

...

StructureSize (2 bytes): The client MUST set this field to 36, indicating the size of a NEGOTIATE request. This is not the size of the structure with a single dialect in the Dialects[] array. This value MUST be set regardless of the number of dialects sent.

 

DialectCount (2 bytes): The number of dialects that are contained in the Dialects[] array. This value MUST be greater than 0.<9>

SecurityMode (2 bytes): The security mode field specifies whether SMB signing is enabled or required at the client. This field MUST be constructed using the following values.

Value Meaning

SMB2_NEGOTIATE_SIGNING_ENABLED
0x0001

When set, indicates that security signatures are enabled on the client. The client MUST set this bit if the SMB2_NEGOTIATE_SIGNING_REQUIRED bit is not set, and MUST NOT set this bit if the SMB2_NEGOTIATE_SIGNING_REQUIRED bit is set. The server MUST ignore this bit.

SMB2_NEGOTIATE_SIGNING_REQUIRED
0x0002

When set, indicates that security signatures are required by the client.

Reserved (2 bytes): The client MUST set this to 0, and the server SHOULD<10> ignore it on receipt.

 

Capabilities (4 bytes): If the client implements the SMB 3.x dialect family, the Capabilities field MUST be constructed using the following values. Otherwise, this field MUST be set to 0.

Value Meaning

SMB2_GLOBAL_CAP_DFS
0x00000001

When set, indicates that the client supports the Distributed File System (DFS).

SMB2_GLOBAL_CAP_LEASING
0x00000002

When set, indicates that the client supports leasing.

SMB2_GLOBAL_CAP_LARGE_MTU
0x00000004

When set, indicates that the client supports multi-credit operations.

SMB2_GLOBAL_CAP_MULTI_CHANNEL
0x00000008

When set, indicates that the client supports establishing multiple channels for a single session.

SMB2_GLOBAL_CAP_PERSISTENT_HANDLES
0x00000010

When set, indicates that the client supports persistent handles.

SMB2_GLOBAL_CAP_DIRECTORY_LEASING
0x00000020

When set, indicates that the client supports directory leasing.

SMB2_GLOBAL_CAP_ENCRYPTION
0x00000040

When set, indicates that the client supports encryption.

ClientGuid (16 bytes): It MUST be a GUID (as specified in [MS-DTYP] section 2.3.4.3) generated by the client, if the Dialects field contains a value other than 0x0202. Otherwise, the client MUST set this to 0.

ClientStartTime (8 bytes): This field MUST NOT be used and MUST be reserved. The client MUST set this to 0, and the server MUST ignore it on receipt.

 

Dialects (variable): An array of one or more 16-bit integers specifying the supported dialect revision numbers. The array MUST contain at least one of the following values.<11>

Value Meaning

0x0202

SMB 2.002 dialect revision number.

0x0210

SMB 2.1 dialect revision number.<12>

0x0300

SMB 3.0 dialect revision number. <13>

0x0302

SMB 3.02 dialect revision number.<14>

 
Show:
© 2014 Microsoft