Table of Contents

A BSTRACT III

I NTENDED U SAGE III

DISCLAIMER OF WARRANTIES AND REPRESENTATIONS IV

LIMITATION OF LIABILITY IV

INTELLECTUAL PROPERTY RIGHTS IV

COPYRIGHT AND USAGE AGREEMENT V

A CKNOWLEDGEMENTS VI

  1. INTRODUCTION 1

    1.1. S UMMARY OF FEATURES 1

    1.1.1. File access 1

    1.1.2. File and record locking 2

    1.1.3. Safe caching, read-ahead, and write-behind 2

    1.1.4. File change notification 2

    1.1.5. Protocol version negotiation 2

    1.1.6. Extended attributes 2

    1.1.7. Distributed replicated virtual volumes 2

    1.1.8. Server name resolution independence 2

    1.1.9. Batched requests 3

    1.1.10. Obsolescence 3

  2. PROTOCOL OPERATION OVERVIEW 4

    2.1. S ERVER N AME D ETERMINATION 4

    2.2. S ERVER N AME R ESOLUTION 4

    2.3. S AMPLE M ESSAGE F LOW 5

    2.4. CIFS P ROTOCOL D IALECT N EGOTIATION 5

    2.5. M ESSAGE T RANSPORT 5

    2.5.1. Connection Management 6

    2.6. O PPORTUNISTIC L OCKS 6

    2.6.1. Oplock Types 7

    2.6.1.1. Exclusive and Batch Oplocks 7

    2.6.1.2. Level II Oplocks 8

    2.6.2. Comparison with Other File Locking Methods 9

    2.6.3. Oplock SMBs 10

    2.6.3.1. Obtaining an Oplock 10

    2.6.3.2. Releasing an Oplock 10

    2.6.3.3. Revoking an Oplock 10

    2.6.4. Other Issues 11

    2.7. S ECURITY M ODEL 11

    2.8. A UTHENTICATION 12

    2.8.1. Overview 12

    2.8.2. Base Algorithms 12

    2.8.3. Authentication Algorithms 13

    2.8.3.1. NT Session Key 13

    2.8.3.2. LM Session Key 14

    2.8.3.3. Response 14

    2.8.3.4. MAC key 14

    2.8.3.5. Message Authentication Code 14

    2.8.4. Session Authentication Protocol 15

    2.8.4.1. Plain Text Password 15

    2.8.4.2. Challenge/Response 15

    2.8.5. Message authentication code 15

    2.8.6. Security Level 17

    2.9. D ISTRIBUTED F ILE S YSTEM (DFS) S UPPORT 17

  3. SMB MESSAGE FORMATS AND DATA TYPES 19

    3.1. N OTATION 19

    3.2. SMB H EADER 19

    3.2.1. Command field 20

    3.2.2. Flags field 20

    3.2.3. Flags2 Field 21

    3.2.4. Tid Field 21

    3.2.5. Pid Field 22

    3.2.6. Uid Field 22

    3.2.7. Mid Field 22

    3.2.8. Status Field 22

    3.2.9. Timeouts 22

    3.2.10. Data Buffer (BUFFER) and String Formats 23

    3.3. N AME R ESTRICTIONS 24

    3.4. F ILE N AMES 24

    3.5. W ILDCARDS 24

    3.6. DFS P ATHNAMES 25

    3.7. T IME A ND D ATE E NCODING 26

    3.8. A CCESS M ODE E NCODING 27

    3.9. A CCESS M ASK E NCODING 27

    3.10. O PEN F UNCTION E NCODING 28

    3.11. O PEN A CTION E NCODING 28

    3.12. F ILE A TTRIBUTE E NCODING 29

    3.13. E XTENDED F ILE A TTRIBUTE E NCODING 30

    3.14. B ATCHING R EQUESTS ("A ND X" M ESSAGES ) 31

    3.15. "T RANSACTION " S TYLE S UBPROTOCOLS 32

    3.15.1. SMB_COM_TRANSACTION2 Format 32

    3.15.2. SMB_COM_NT_TRANSACTION Formats 34

    3.15.3. Functional Description 35

    3.15.4. SMB_COM_TRANSACTION Operations 38

    3.15.4.1. Mail Slot Transaction Protocol 38

    3.15.4.2. Server Announcement Mailslot Transaction 38

    3.15.4.3. Named Pipe Transaction Protocol 40

    3.15.4.4. CallNamedPipe 41

    3.15.4.5. WaitNamedPipe 42

    3.15.4.6. PeekNamedPipe 42

    3.15.4.7. GetNamedPipeHandleState 42

    3.15.4.8. SetNamedPipeHandleState 43

    3.15.4.9. GetNamedPipeInfo 43

    3.15.4.10. TransactNamedPipe 44

    3.15.4.11. RawReadNamedPipe 44

    3.15.4.12. RawWriteNamedPipe 45

    3.16. V ALID SMB R EQUESTS BY N EGOTIATED D IALECT 45

  4. SMB REQUESTS 47

    4.1. S ESSION R EQUESTS 47

    4.1.1. NEGOTIATE: Negotiate Protocol 47

    4.1.1.1. Errors 50

    4.1.2. SESSION_SETUP_ANDX: Session Setup 51

    4.1.2.1. Pre NT LM 0.12 51

    4.1.2.2. NT LM 0.12 52

    4.1.2.3. Errors 55

    4.1.3. LOGOFF_ANDX: User Logoff 55

    4.1.3.1. Errors 55

    4.1.4. TREE_CONNECT_ANDX: Tree Connect 55

    4.1.4.1. Errors 57

    4.1.5. TREE_DISCONNECT: Tree Disconnect 57

    4.1.5.1. Errors 58

    4.1.6. TRANS2_QUERY_FS_INFORMATION: Get File System Information 58

    4.1.6.1. SMB_INFO_ALLOCATION 58

    4.1.6.2. SMB_INFO_VOLUME 59

    4.1.6.3. SMB_QUERY_FS_VOLUME_INFO 59

    4.1.6.4. SMB_QUERY_FS_SIZE_INFO 59

    4.1.6.5. SMB_QUERY_FS_DEVICE_INFO 59

    4.1.6.6. SMB_QUERY_FS_ATTRIBUTE_INFO 61

    4.1.6.7. SMB_QUERY_CIFS_UNIX_INFO 61

    4.1.6.8. SMB_QUERY_MAC_FS_INFO 62

    4.1.6.9. Errors 63

    4.1.7. ECHO: Ping the Server 63

    4.1.7.1. Errors 64

    4.1.8. NT_CANCEL: Cancel request 64

    4.2. F ILE R EQUESTS 64

    4.2.1. NT_CREATE_ANDX: Create or Open File 64

    4.2.1.1. Errors 67

    4.2.2. NT_TRANSACT_CREATE: Create or Open File with EAs or SD 67

    4.2.2.1. Errors 68

    4.2.3. CREATE_TEMPORARY: Create Temporary File 69

    4.2.3.1. Errors 69

    4.2.4. READ_ANDX: Read Bytes 70

    4.2.4.1. Errors 71

    4.2.5. WRITE_ANDX: Write Bytes to file or resource 71

    4.2.5.1. Errors 72

    4.2.6. LOCKING_ANDX: Lock or Unlock Byte Ranges 72

    4.2.6.1. Errors 74

    4.2.7. SEEK: Seek in File 75

    4.2.7.1. Errors 75

    4.2.8. FLUSH: Flush File 75

    4.2.8.1. Errors 76

    4.2.9. CLOSE: Close File 76

    4.2.9.1. Errors 76

    4.2.10. CLOSE_AND_TREE_DISCONNECT 76

    4.2.10.1. Errors 77

    4.2.11. DELETE: Delete File 77

    4.2.11.1. Errors 78

    4.2.12. RENAME: Rename File 78

    4.2.12.1. Errors 78

    4.2.13. NT_RENAME: 79

    4.2.13.1. Errors 79

    4.2.14. MOVE: Rename File 79

    4.2.14.1. Errors 80

    4.2.15. COPY: Copy File 81

    4.2.15.1. Errors 82

    4.2.16. TRANS2_QUERY_PATH_INFORMATION: Get File Attributes Given Path 82

    4.2.16.1. SMB_INFO_STANDARD & SMB_INFO_QUERY_EA_SIZE 83

    4.2.16.2. SMB_INFO_QUERY_EAS_FROM_LIST & SMB_INFO_QUERY_ALL_EAS 83

    4.2.16.3. SMB_INFO_IS_NAME_VALID 84

    4.2.16.4. SMB_QUERY_FILE_BASIC_INFO 84

    4.2.16.5. SMB_QUERY_FILE_STANDARD_INFO 85

    4.2.16.6. SMB_QUERY_FILE_EA_INFO 85

    4.2.16.7. SMB_QUERY_FILE_NAME_INFO 85

    4.2.16.8. SMB_QUERY_FILE_ALL_INFO 85

    4.2.16.9. SMB_QUERY_FILE_ALT_NAME_INFO 88

    4.2.16.10. SMB_QUERY_FILE_STREAM_INFO 88

    4.2.16.11. SMB_QUERY_FILE_COMPRESSION_INFO 88

    4.2.16.12. SMB_QUERY_FILE_UNIX_BASIC 89

    4.2.16.13. SMB_QUERY_FILE_UNIX_LINK 89

    4.2.16.14. SMB_MAC_DT_GET_APPL 89

    4.2.16.15. SMB_MAC_DT_GET_ICON 90

    4.2.16.16. SMB_MAC_DT_GET_ICON_INFO 90

    4.2.16.17. Errors 91

    4.2.17. TRANS2_QUERY_FILE_INFORMATION: Get File Attributes Given FID 91

    4.2.18. TRANS2_SET_PATH_INFORMATION: Set File Attributes given Path 91

    4.2.18.1. SMB_INFO_STANDARD & SMB_INFO_QUERY_EA_SIZE 92

    4.2.18.2. SMB_INFO_QUERY_ALL_EAS 92

    4.2.18.3. SMB_SET_FILE_UNIX_BASIC 93

    4.2.18.4. SMB_SET_FILE_UNIX_LINK 93

    4.2.18.5. SMB_SET_FILE_UNIX_HLINK 94

    4.2.18.6. SMB_MAC_SET_FINDER_INFO 94

    4.2.18.7. SMB_MAC_DT_ADD_APPL 94

    4.2.18.8. SMB_MAC_DT_REMOVE_APPL 95

    4.2.18.9. SMB_MAC_DT_ADD_ICON 95

    4.2.18.10. Errors 95

    4.2.19. TRANS2_SET_FILE_INFORMATION: Set File Attributes Given FID 96

    4.2.19.1. SMB_FILE_BASIC_INFO 96

    4.2.19.2. SMB_FILE_DISPOSITION_INFO 97

    4.2.19.3. SMB_FILE_ALLOCATION_INFO 97

    4.2.19.4. SMB_FILE_END_OF_FILE_INFO 97

    4.2.19.5. Errors 97

    4.3. D IRECTORY R EQUESTS 97

    4.3.1. TRANS2_CREATE_DIRECTORY: Create Directory (with optional EAs) 97

    4.3.1.1. Errors 98

    4.3.2. DELETE_DIRECTORY: Delete Directory 98

    4.3.2.1. Errors 98

    4.3.3. CHECK_DIRECTORY: Check Directory 99

    4.3.3.1. Errors 99

    4.3.4. TRANS2_FIND_FIRST2: Search Directory using Wildcards 99

    4.3.4.1. SMB_INFO_STANDARD 101

    4.3.4.2. SMB_INFO_QUERY_EA_SIZE 101

    4.3.4.3. SMB_INFO_QUERY_EAS_FROM_LIST 101

    4.3.4.4. SMB_FIND_FILE_DIRECTORY_INFO 101

    4.3.4.5. SMB_FIND_FILE_FULL_DIRECTORY_INFO 102

    4.3.4.6. SMB_FIND_FILE_BOTH_DIRECTORY_INFO 102

    4.3.4.7. SMB_FIND_FILE_NAMES_INFO 103

    4.3.4.8. SMB_FIND_FILE_UNIX 103

    4.3.4.9. SMB_FINDBOTH_MAC_HFS_INFO 104

    4.3.4.10. Errors 105

    4.3.5. TRANS2_FIND_NEXT2: Resume Directory Search Using Wildcards 105

    4.3.5.1. Errors 106

    4.3.6. FIND_CLOSE2: Close Directory Search 106

    4.3.6.1. Errors 106

    4.3.7. NT_TRANSACT_NOTIFY_CHANGE: Request Change Notification 106

    4.3.7.1. Errors 108

    4.4. DFS O PERATIONS 108

    4.4.1. TRANS2_GET_DFS_REFERRAL: Retrieve Distributed Filesystem Referral 108

    4.4.1.1. Errors 110

    4.4.2. TRANS2_REPORT_DFS_INCONSISTENCY: Inform a server about DFS Error 110

    4.4.2.1. Errors 111

    4.5. M ISCELLANEOUS O PERATIONS 111

    4.5.1. NT_TRANSACT_IOCTL 111

    4.5.1.1. Errors 111

    4.5.2. NT_TRANSACT_QUERY_SECURITY_DESC 112

    4.5.2.1. Errors 112

    4.5.3. NT_TRANSACT_SET_SECURITY_DESC 112

    4.5.3.1. Errors 113

  5. SMB SYMBOLIC CONSTANTS 114

    5.1. SMB C OMMAND C ODES 114

    5.2. SMB_COM_TRANSACTION2 S UBCOMMAND C ODES 115

    5.3. SMB_COM_NT_TRANSACTION S UBCOMMAND C ODES 116

    5.4. SMB P ROTOCOL D IALECT C ONSTANTS 116

  6. ERROR CODES AND CLASSES 118

  7. SECURITY CONSIDERATIONS 123

  8. REFERENCES 124

  9. APPENDIX A NETBIOS TRANSPORT OVER TCP 125

    9.1. C ONNECTION E STABLISHMENT 125

    9.2. C ONNECTING TO A SERVER USING THE N ET BIOS N AME 125

    9.3. C ONNECTING TO A SERVER USING A DNS NAME OR IP ADDRESS 125

    9.3.1. NetBIOS Adapter Status 125

    9.3.2. Generic Server Name 126

    9.3.3. - Parsing the DNS Name (guessing) 126

    9.4. N ET BIOS N AME CHARACTER SET 126

  10. APPENDIX B TCP TRANSPORT 127

  11. APPENDIX C SHARE LEVEL SERVER SECURITY 128

  12. APPENDIX D CIFS UNIX EXTENSION 129

    12.1. I NTRODUCTION 129

    12.2. P RINCIPLES 129

    12.3. CIFS P ROTOCOL M ODIFICATIONS 129

    12.4. M ODIFIED SMB S 130

    12.5. G UIDELINES FOR IMPLEMENTERS 130

  13. APPENDIX E CIFS MACINTOSH EXTENSION 132

    13.1. I NTRODUCTION 132

    13.2. P RINCIPLES 132

    13.3. CIFS P ROTOCOL M ODIFICATIONS 132

    13.4. M ODIFIED SMBS 133

    13.5. G UIDELINES FOR IMPLEMENTERS 133

  14. APPENDIX F API NUMBERS FOR TRANSACT BASED RAP CALLS 134

Common Internet File System (CIFS)



Implementing CIFS. The Common Internet File System
Implementing CIFS: The Common Internet File System
ISBN: 013047116X
EAN: 2147483647
Year: 2002
Pages: 210

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net