Halo's Networking - how does it work?
Campaign/Co-op
Campaign networking uses a completely different model to Multiplayer. It uses what is known as the synchronous lockstep model. In short, this model means every player has to agree on things before the game proceeds.
Whilst this has the advantage that everyone sees the same things in-game (essential for AI), the downside is that if a player is lagging behind, the others have to wait for them to catch up; if they didn't do this, the player will almost always get further and further behind until they go out of sync completely and get dropped.
Because of this, a single lagging player in Campaign will usually make the game lag for everyone else, and it's also why players notice lag in Co-op or Firefight that they don't notice in Multiplayer.
Multiplayer
Multiplayer uses an asynchronous distributed networking model where games are hosted on players' consoles. In any one game, one console will be the host, and all others will be clients. The host authorises essentially every action that takes place in game, including the important things like damage, and the creation and destruction of objects. Client players run a simulated version of the world that is based on the host's version of events, and which is constantly being updated. The game uses several tricks to make this less obvious.
As a client, when you take any action, you send that information to the host who then accepts or rejects it according to various criteria. In Halo 3, there is a 'latency window' of approximately 300ms. Providing your latency is less than this, and there is no problem in getting the information to the host, the shot should count. There is one exception when shooting a player close to geometry, shots may sometimes be rejected by the host if you don't maintain line-of-sight; this is an intentional design on Bungie's part.
Key Differences
Proneness to lag
Probably the biggest difference players will notice between the two is how much lag you experience. This is for several reasons:
In Campaign, the game is only as strong as the weakest connection. Because every console has to agree on things, if a player loses any information, it needs to be sent again. In Multiplayer, the game continues regardless, and any lost information a client sends is ignored as if it never happened.
Whilst in Multiplayer, you have to send information to the host, the game will nevertheless perform many actions instantly. If you jump, or fire a weapon for example (except for rockets or grenades), they occur instantly. If they don't get to the host on time, you get teleported back or you get bullets refunded. In Campaign, everything has to be sent and acknowledged by the other players which is why you may see delays before you jump, or your weapon fires.