There are actually two things you need to do, best done separately (IMHO), although you can get both through the same source.
First, you need to get the domain name. I went through
Network Solutions, but that was 10 years ago, and there are many more options now. I believe I paid $79 for five years, the last time I renewed.
Then you need someone's DNS (Domain Name Server) to host your DNS records (the pointers that link your name to your IP address). If you have a fixed (static) IP address, then almost any ISP will provide DNS for free with internet access. I use Verizon with a static IP.
If you have a dynamic IP address, then you need a dynamic-dns service. I don't know much about them, but many people here use them.
Getting the name and the DNS separately is protection against an internet provider preventing you from switching by holding your name hostage. Many companies will sell you a domain name cheap, but will actually register it in THEIR name, to prevent you from going elsewhere.