# NetWare Core Protocol

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.
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 Archived 2008-07-20 at the Wayback Machine 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.