A set of agreed rules for exchanging messages and information within or between components of a system.