I want to know the source of traffic which is directing people and bots to a page that does not exist on the site. As a result they are being getting to a 404 page. How can I find this info using Google Analytics?
This could work if your 404 page has a specific title (like 'error' or 'Page not found'):
In Analytics: Go to Behavior > Site Content > All Pages As primary dimension choose 'Page Title' and filter on the title of your 404 page - this will list all traffic to you 404 page. Then choose 'Full Referrer' as secondary dimension - which will give you the url's linking to 404 pages. Disadvantage is that you don't know the page which is generating the 404.
Another alternative: create a custom report (under Customization tab)
Select Type: Flat Table
Dimensions: Page + Page Title
Filters: Page Title - Regex: (title of your 404 page)
=> Save (and run) - this generates a report with url / page title / referrer.
Alternatives: check the search console - it lists which pages are linking to your 404 pages. The method above will only work for humans - most bot traffic will not be measured by analytics