Protocols are agreed upon formats for translating data between devices. Protocols determine many different aspects of the data including, error checking, compression types as well as indications of delivery and retrieval by devices. There are a variety of standard protocols from which programmers can choose. Each with its particular advantages and disadvantages; meaning that, some are simpler than others, some are more reliable, and some are faster. For the user, it is important that the device have the correct protocols in order to be able to communicate with other computers.