The NetWare Core Protocol (NCP) is a network protocol used in some products from Novell, Inc. It is usually associated with the client-server operating system Novell NetWare which originally supported primarily MS-DOS client stations, but later support for other platforms such as Microsoft Windows, the classic Mac OS, Linux, Windows NT, Mac OS X, and various flavors of Unix was added.
The NCP is used to access file, print, directory, clock synchronization, messaging, remote command execution and other network service functions. It originally took advantage of an easy network configuration and small memory footprint of the IPX/SPX protocol stack. Since 1991 the TCP/IP implementation is available., page 6
Novell eDirectory uses NCP for synchronizing data changes between the servers in a directory service tree.
Technical information
The original IPX/SPX server implementation was provided only for Novell NetWare platform and now is obsolete. The TCP/IP implementation uses TCP/UDP port 524 and relies on SLP for name resolution.
For NCP operation in IPX/SPX networks the bare IPX protocol was used with Packet Type field set to 17. On the workstation (client station) side the IPX socket number of 0x4003 was used, on the server side the socket number of 0x0451.
The NCP PDU has the following structure:
Octets Field 2 NCP type 1 Sequence Number 1 Connection Number, lower octet 1 Task Number 1 Connection Number, higher octet 1 Completion Code (only in Reply packet) 1 Connection Status (only in Reply packet) var Data
The NCP Type field determines the type of operation:
Value Meaning 0x1111 Create a Service Connection 0x2222 Service Request 0x3333 Service Reply 0x5555 Destroy Service Connection 0x7777 Burst Mode Transfer 0x9999 Request Being Processed (Server Busy)
Individual requests are identified by the Sequence Number (modulo 256). The Connection Number identifies an individual client station connection on the server. Novell Netware servers of version up to 2.x supported up to 255 connections and the Connection Number occupied only 1 octet. Later it was extended to 2 octets. Task number has value 3 in requests and 1 in replies. The Data field starts with NCP Function number octet which distinguishes individual services.
Number Function 0 Login User Object 1 Change User Password 2 Map User to Station Set 3 Map Object to Number 4 Map Number to Object 5 Get Station's Logged Information 8 Map Number to Group Name 9 Get Member Set M of Group G 10 Enter Login Area 12 Verify Network Serial Number 13 Log Network Message 14 Get Disk Utilization 15 Scan File Information 16 Set File Information 17 Get File Server Information 18 Get Network Serial Number 19 Get Internet Address 20 Login Object 21 Get Object Connection List 22 Get Station's Logged Information 23 Get Encryption Key 24 Login Object Encrypted 31 Get Connection List from Object 50 Create Bindery Object 51 Delete Bindery Object 52 Rename Object 53 Get Bindery Object Id 54 Get Bindery Object Name 55 Scan Bindery Object 56 Change Bindery Object Security 57 Create Property 58 Delete Property 59 Change Bindery Property Security 60 Scan Property 61 Read Property Value 62 Write Property Value 63 Verify Bindery Object Password 64 Change Bindery Object Password 65 Add Bindery Object to Set 66 Delete Bindery Object from Set 67 Is Bindery Object In Set? 68 Close Bindery 69 Open Bindery 70 Get Bindery Access Level 71 Sacn Bindery Object Trustee Paths 72 Get Bindery Object Access Level 73 Is Calling Station a Manager? 74 Verify Bindery Object Password Encrypted 75 Change Bindery Object Password Encrypted 76 List Relations of an Object 100 Create Queue 101 Destroy Queue 102 Read Queue Current Status 103 Set Queue Current Status 104 Create Queue Job and File 105 Close File and Start Queue Job 106 Remove Job from Queue 107 Get Queue Job List 108 Read Queue Job Entry 109 Change Queue Job Entry 110 Change Queue Job Position 111 Attach Queue Server to Queue 112 Detach Queue Server from Queue 113 Service Queue Job 114 Finish Servicing Queue Job 115 Abort Servicing Queue Job 116 Change to Client's Rights 117 Restore Queue Server Rights 118 Read Queue Server Current Status 119 Set Queue Server Current Status 120 Get Queue Job Size 150 Get Current Account Status 151 Submit Account Charge 152 Submit Account Hold 153 Submit Account Note 200 Check Console Privileges 201 Get File Server Description Strings 202 Set File Server Date and Time 203 Disable File Server Login 204 Enable File Server Login 205 Get File Server Login Status 206 Purge All Erased Files 207 Disable Transaction Tracking 208 Enable Transaction Tracking 209 Set Console Broadcast 210 Clear Connection Number 211 Down File Server 212 Get File System Statistics 213 TTS Get Statistics 214 Get Disk Cache Statistics 215 Get Drive Mapping Table 216 Get Physical Disk Statistics 217 Get Disk Channel Statistics 218 Get Connection's Task Information 219 Get Connection's Open Files 220 Get Connection's Using a File 221 Get Physical Record Locks by Connection and File 222 Get Physical Record Locks by File 223 Get Logical Records by Connection 224 Get Logical Record Information 225 Get Connection's Semaphores 226 Get Semaphore Information 227 Get LAN Driver's Configuration Information 229 Get Connection's Usage Statistics 230 Get Object's Remaining Disk Space 231 Get File Server LAN I/O Statistics 232 Get File Server Misc Information 233 Get Volume Information
The contents and the length of the rest of the Data field depends on the NCP Function.
Client-side implementations Novell Client for Windows Vista from Novell. Novell Client for Windows 2000/XP/2003 from Novell. Novell Client for Windows 95/98 from Novell. Novell Client for Linux from Novell. NetWare Clients for DOS from Novell - no longer supported. NetWare Client for Mac OS X from Prosoft Engineering. ncpfs, an open-source NCP client implementation for Linux. Client Service for NetWare from Microsoft.
References
External links NCP specification without description of underlying Netware RPC framework Wireshark (an open source protocol analyzer) Documentation - Fields of the NCP packet Making Mac OS X play nicely with Novell