Haben Header und Footer bekannte Höhen? Dann kanst du beide absolut bzw. fixed positionieren und dem body oben und unten antsprechendes padding geben.
Oder, wenn du pures HTML5 verwenden willst/kannst css calc
mit calc kann man sich aber nicht auf ein anderes Element beziehen, oder:
z.B. 100%-height(Header)