Don't call ntohs on the data offset field - it's only one byte!