UART is asynchronous -- unlike SPI or I2C there's no shared clock line at all. Both sides just have to agree on a baud rate up front, and each byte is framed with a start bit and one or more stop bits so the receiver can tell where it begins and ends. It's point-to-point: TX on one device wires to RX on the other and vice versa, not a shared bus multiple devices can sit on.
The DB9/DB25 pinout below is RS-232 -- the traditional PC-side connector and voltage-level standard for carrying UART signals over a cable. Microcontrollers almost never use RS-232's voltage levels directly; they expose bare TTL-level TX/RX pins instead, and something like an FTDI converter bridges that to USB.
The pin layout is viewed from the front and the solder points pointing away from you:


Most of the time only GND, TxD, and RxD is needed. The next level of handshake is RTS and CTS. Very rarely DTR and DSR is necessary. I never used DCD or RI.
| Signal | Origin | Pins | |||||
|---|---|---|---|---|---|---|---|
| Abbreviation | Name | Importance | DCE (in) | DTE (out) | DB 9 | DB 25 | |
GND |
Ground |
*** |
- |
- |
5 |
7 |
|
RxD |
Received Data |
*** |
x |
2 |
3 |
||
TxD |
Transmitted Data |
*** |
x |
3 |
2 |
||
CTS |
Clear To Send |
** |
x |
8 |
5 |
||
RTS |
Request To Send |
** |
x |
7 |
4 |
||
DSR |
Data Set Ready |
* |
x |
6 |
6 |
||
DTR |
Data Terminal Ready |
* |
x |
4 |
20 |
||
DCD |
Carrier Detect |
- |
x |
1 |
8 |
||
RI |
Ring Indicator |
- |
x |
9 |
22 |
||