Networking is one of the most important things a computer can do, since it's no so useful on its own.
Networking under Linux is powerful, but managed by a set of wildly different tools, with different capabilities and with very different interfaces.
At the time of writing, networkd(8) is intended to be a replacement for static network config in the form of the Debian-derived interfaces(5) file, or the Red Hat-derived ifcfg(5), rather than the dynamic network config managed by NetworkManager or connman.
However, you can do some form of dynamic network configuration by
putting files in
/etc/systemd/network and restarting networkd(8)
systemctl restart systemd-networkd.service.
This is normally the domain of the system administrator, but systemd ships a few default rules to make networking with containers launched with [systemd-networkd(1)] work better.
systemd ships a rule for containers to use DHCP on network
hostN, to get their IP address. And ships a rule
such that the other end of these host-only interfaces provide a DHCP
server, and use NAT to allow containers to speak to the internet.
resolved(8) provides per-interface DNS hostname resolution. This is an improtant improvement over the current state of Linux networking, because network interfaces are a lot more dynamic than they used to be.
It is not unusual to be connected to multiple networks, especially if you need to use a VPN to talk to machines that are not allowed to connect to the internet.
If name resolution is not handled per-interface, then you need to flush the DNS cache to avoid having entries that are only relevant to networks you are no longer connected to.
However, if this is not reliable, then the name servers can be configured per-interface in a systemd.network(5) file, or system-wide in the [resolved.conf(5)] configuration file.