CIFS - jak to działa
Negocjacja protokołu SMB
Uwierzytelnienie
Podłączenie pod zasób
typedef unsigned char UCHAR; // 8
unsigned bits
typedef unsigned short USHORT; // 16
unsigned bits
typedef unsigned long ULONG; // 32
unsigned bits
typedef struct {
ULONG LowPart;
LONG
HighPart; }
LARGE_INTEGER; // 64 bits of
data
typedef struct {
UCHAR Protocol[4]; //
Contains 0xFF,'SMB' UCHAR
Command; // Command
code
union {
struct { UCHAR ErrorClass; // Error class
UCHAR Reserved; // Reserved for future use
USHORT Error; // Error code
} DosError;
ULONG Status; // 32-bit error code
} Status;
UCHAR Flags; //
Flags
USHORT Flags2; // More
flags
union {
USHORT Pad[6]; // Ensure section is 12 bytes long
struct { USHORT PidHigh; // High part of PID
UCHAR SecuritySignature[8]; // reserved for security
}
Extra;
};
USHORT Tid; // Tree
identifier
USHORT Pid; // Caller's
process id
USHORT Uid; //
Unauthenticated user id
USHORT Mid; //
multiplex id
UCHAR WordCount; //
Count of parameter words
USHORT ParameterWords[
WordCount ]; // The parameter words
USHORT ByteCount; //
Count of bytes
UCHAR Buffer[ ByteCount
]; // The bytes
} SMB_HEADER;
Cachowanie i lokowanie
Level II oplock - wiele procesów korzysta, ale żaden jeszcze nie zmodyfikował - więc można czytać (plik i atrybuty) | |
Exclusive oplock - Mamy pewność, że możemy działać na pliku jak chcemy - potem update servera) | |
Batch oplock - j.w. i można nawet zamykać i oktwierać |