GUID is the "Global Unique Identifier". Also called UUID (Universal Unique Identifier).
This is basically a 128-bit number that is generated in some way (see RFC 4112 http://www.ietf.org/rfc/rfc4122.txt ), which makes duplication almost impossible to be generated. That way, I can generate GUIDs without any third party organization that needs to provide them to me so that they are unique.
One widespread use of GUIDs is identifiers for COM objects on Windows (classes, typelibs, interfaces, etc.). Using a GUID, developers can create their own COM components without contacting Microsoft to get a unique identifier. Although the identification of COM objects is the main use of GUIDs, they are used for many things that need unique identifiers. Some developers will generate GUIDs for records in the database to provide them with an identifier that can be used even if they must be unique in many different databases.
Typically, you can think of a GUID as a serial number that can be generated by anyone at any time, and they will know that the serial number will be unique.
Other methods for obtaining unique identifiers include obtaining a domain name. To ensure that domain names are unique, you must obtain them from an organization (ultimately managed by ICANN).
Because GUIDs can be cumbersome (from a human readable point of view, this is a string of hexadecimal numbers, usually grouped like this: aaaaaaaa-bbbb-cccc-dddd-ffffffffffff), some namespaces that need unique names in different organizations have a different scheme (often based on domain names Internet).
Thus, the namespace for Java packages by convention begins with the domain name orgnaization (reverse), followed by names that are defined in a specific organizational way. For example, a Java package might be called:
com.example.jpackage
This means that liability for name collisions becomes the responsibility of each organization.
XML namespaces also become unique in a similar way - by convention, someone creating an XML namespace must make it "under" a registered domain name under their control. For example:
xmlns="http://www.w3.org/1999/xhtml"
Another way to manage unique identifiers is through the Ethernet MAC address. The company that makes the Ethernet cards should get a block of addresses assigned to them by IEEE (I think this is IEEE). In this case, the scheme works very well, and even if the manufacturer screws up and issues cards with duplicate MAC addresses, everything will work fine until these cards are on the same subnet, since only the IP address is used to route packets outside the subnet. Although there are some other uses of MAC addresses that may be affected - one of the GUID generation algorithms uses the MAC address as one parameter. This method of generating GUIDs is not so widely used because it is considered a privacy risk.
One example of a unique identifier scheme that didn’t work very well was the Microsoft ID provided for VxD drivers in Windows 9x. Third-party VxD driver developers should have asked Microsoft to provide a set of identifiers for any drivers that a third-party developer wrote. In this way, Microsoft can guarantee that duplicate identifiers are not duplicated. Unfortunately, many driver authors never bothered and simply used any identifier in the VxD example that they used as a starting point. I’m not sure how many problems this caused - I don’t think the uniqueness of the VxD ID was absolutely necessary, but it probably affected some functions in some APIs.