CoAP is a web transfer protocol for constrained devices and networks. It uses a request/response model over UDP and has low overhead, making it suitable for IoT applications. CoAP supports confirmable and non-confirmable messages, acknowledges, and resets. It operates at two layers - a messages layer dealing with UDP datagrams and a request/response layer managing interactions. CoAP endpoints identify resources using URIs and exchange representations of resources using content types.