A full node is a node that maintains a complete blockchain containing all the transaction information. More precisely, such a node should be referred to as a full blockchain node". In the early days of Bitcoin, all nodes were full nodes; the current Bitcoin Core client is also a full blockchain node. However, in the last two years many new types of clients have emerged that do not need to maintain a full blockchain, but instead operate as lightweight clients. We describe these lightweight clients in more detail in the following sections.
A full blockchain node maintains a complete, up-to-date copy of the Bitcoin blockchain containing all transaction information, and such a node can independently build and verify the blockchain from the first block (the genesis block) all the way to the latest block in the network. A full blockchain node can independently and autonomously verify any transaction information without the help of any other node or other source of information. The full block node obtains a new block update containing transaction information through the Bitcoin network and merges this update into a local copy of the blockchain after verifying that it is correct.
Running a full blockchain node gives you a pure bitcoin experience: you can independently verify all transaction information without having to rely on or trust other systems. It's easy to tell if you're running a full node: just check to see if your permanent storage device (e.g., hard drive) has more than 20GB of space available for storing a full blockchain. If you need a lot of disk space and it takes 2 to 3 days to sync your bitcoin network, then you are using a full node. This is the price you pay for complete independence from centralized management.
While a number of other full blockchain clients exist that use different programming languages and software architectures, the most commonly used is the Bitcoin Core client, also known as the "Satoshi client". Over 90% of the nodes in the Bitcoin network run various versions of the Bitcoin Core client. As mentioned earlier, it can be identified by the version messages sent between nodes or by the subversion string "Satoshi" obtained from the getpeerinfo command, e.g. /Satoshi: 0.8.6/.