In finite difference theory, you learn, that you have to use upwinding for equations with high convection, like Burgers' equation. What does the finite volume equivalent look like? What if the convection is nonlinear like in Burgers' equation?
You need to solve a Riemann problem, perhaps approximately. For a linear system of equations, the solution to the Riemann problem is just upwinding applied to the characteristics. An "exact" Riemann solver for nonlinear problems resolves the full wave structure (consisting of shocks, rarefactions, and possibly linearly degenerate contact discontinuities). An approximate Riemann solver does not resolve all waves, which implies (some) excess diffusion, but can be much simpler to implement. Details are discussed in any book on finite volume methods, or in Toro's book on Riemann Solvers.