In WebRTC, DataChannel API is used to send non-media data (sending arbitrary application data). To send the data between the peers, DataChannel uses SCTP (Stream Control Transmission Protocol) which runs over established DTLS tunnel over UDP. Multiple independent SCTP streams (incoming and outgoing) with the same application dependent identifier are carried in a single SCTP association. Each SCTP stream has a unique identifier.
Note: SCTP is a transport protocol (like TCP and UDP) and it can work directly over IP protocol. In WebRTC it works over DTLS tunnel over UDP. SCTP combines the best of TCP and UDP.
So to open a data channel between two peers, mainly we need these libraries :SCTP (for congestion, flow control,…), ICE (for NATing), DTLS (for security), and the datachannel itself.