# DCO-MAC: A Hybrid MAC Protocol for Data Collection in Underwater Acoustic Sensor Networks
## 2 Related Work  
The MAC protocols for the UASNs can be divided into three types, namely the contention-based MAC protocols, the scheduled-based MAC protocols, and the hybrid MAC protocols. In the contention-based MAC protocols, the sensor nodes with data packets to be transmitted first require exchanging the control packet with the receiver to reserve the channel. Multiple access collision avoidance (MACA) [5] is a typical contention-based MAC protocol. In MACA, the sender transmits a request-to-send (RTS) packet to inform the receiver to get ready to receive data packets. After receiving the RTS packet correctly, the receiver responds with a clear-to-send (CTS) packet to inform the sender of transmitting data packets. Other nodes receiving the RTS or CTS packets should be silent for some time, to avoid the packet transmission collisions. Because of the long propagation delay in the UASNs, it is time consuming to reserve a channel using the RTS/CTS packets. Moreover, only one sender is allowed to transmit the data packet(s) after a long-time channel reservation, and the throughput of the MACA protocol is poor in UASNs. In order to improve the throughput, several modified MAC protocols are proposed, based on the MACA protocol, such as bidirectional-concurrent MAC protocol (BIC-MAC) [8], adaptive propagation delay tolerant collision avoidance protocol (APCAP) [9], and multiple handshaking MAC protocol (MHM) [10]. In BIC-MAC, to achieve a higher throughput, once the sender reserves the channel successfully, the sender and receiver transmit data packets to each other in the same time slot first, and then turn into the receiving mode. Considering the long waiting time before receiving the CTS packets from the receiver, the APCAP allows the sender to perform other operations during the waiting time, so as to improve the throughput. In the MHM, the receiver can receive multiple RTS packets from several senders in the same time slot, and respond with a CTS packet to all of these senders in the next time slot. Meanwhile, the receiver schedules the transmission of the data packets to avoid the transmission collision caused by multiple senders, and to improve the network throughput. All of these modified MAC protocols achieve a higher throughput in some extent, compared with the MACA. However, with the increasing traffic load, the collision probability of the RTS packets increases, and the throughput of the contention-based MAC protocols therefore decreases rapidly. Some schedule-based MAC protocols are proposed for the UASNs with a high traffic load. In the path-oriented CDMA-based MAC (POCA-CDMA-MAC) protocol [11], the SN builds the data transmission paths for the sensor nodes in the network and assigns a different spreading sequence to each path. The nodes in the same path transmit in a round-robin manner, each node, except the first sender, has to receive the data packets from its previous node before sending the packets. The packets are encoded with a spreading sequence assigned to that path, so that the packets from multiple paths can be received by SN simultaneously without collision, which results in a higher throughput. However, the CDMA brings a high system complexity, and its near-far problem is hard to overcome. Handshake-based ordered scheduling MAC protocol (HOSM) [12] and receiver-initiated packet train MAC protocol (RIPT) [13] are both receiver-initiated MAC protocols for UASNs, the receiver schedules the transmission of the RTS packets in order to realize the handshaking with multiple senders concurrently. Then, the receiver schedules the data packet transmission of the senders, using the information of propagation delay, so that the data packets can be received in a packet train manner. The schedule-based MAC protocols avoid the collision of the control packets and achieve a higher throughput in the UASNs with a high traffic load. However, in a receiver-initiated MAC protocol,the receiver has no idea whether the sender having data packets needs to send or not.