I believe UE4 network architecture is roughly the same as in prior versions of Unreal Engine, perhaps with minor refinements, and goes back to the very first version of Unreal Engine.
This is a client-server system with very little difference between Unreal server and clients. They run the same game simulation code, potentially even the same executable with configuration deciding whether the instance will be client or server or both; however, a "headless" server, a game executable with rendering completely removed, is usually provided for convenience. It was customary in early games to have one player be the server and the rest clients; however, this became more difficult with NAT home router proliferation, and nowadays you may end up running the servers. Epic games certainly aren't going to run the server for you.
The clients and server run the same game logic. Some variables are designated as replicated, and will be sent by server to all clients, overriding every client's representation "in the past" based on the timestamp when the network packet was generated, and having the client predict the result forward to current frame. Not all state needs to be replicated, gameplay-irrelevant state is usually omitted if local prediction is good enough. There is also an RPC system that allows to call a function on an entity across all network nodes. Obviously the system must be two-way, all communication facilities that are present on the server must also be present on a client. However, to prevent the client from commanding everyone's state unfairly, there is an ownership system.
Having Unreal Engine 4 source at your disposal and a system which foresees rich and flexible network semantics, you can implement a different network architecture if you so desire. I can not assess the practical difficulty of doing so, however.