SDP is older than WebRTC — it dates to RFC 4566 (2006) and was originally part of SIP and SAP for VoIP and multicast session announcement. WebRTC adopted SDP for its session negotiation: when a peer connection starts, the initiator generates an SDP "offer" listing its supported codecs, transport parameters, ICE candidates and security info; the recipient responds with an "answer" picking what they support; the two sides exchange them through a signalling channel (typically WebSocket) and then run ICE to establish the actual media flow.
SDP is plain text with line-oriented syntax (each line starts with a one-letter type code: v= for version, m= for media, a= for attribute). A modern WebRTC SDP for one video + one audio runs to 50–100 lines. The format is widely criticised for being verbose and prone to interop bugs (browser SDP parsers each have their quirks), but no successor has displaced it in WebRTC. WHIP and WHEP both use SDP for their HTTP POST payloads.
For developers, SDP is mostly hidden inside RTCPeerConnection.setLocalDescription() and setRemoteDescription(). It only surfaces when something goes wrong — codec negotiation fails because one side lacks a profile, ICE candidates don't trickle correctly, DTLS fingerprints mismatch. Inspecting SDP is a routine WebRTC debugging skill; tools like webrtc-internals in Chrome and rtcstats in Firefox dump it on demand.

