In reply to bhaskar_tzp:
Dave has already given a basic idea about it.
I would like to add one more dimension to it.
Functional coverage "definition" and "implementation" can both be distinguished as black box and white box.
Dave's definition is more towards the definition. Basically functional coverage focused on requirements specifications is black box. Functional coverage focused on the micro-architecture or implementation level details is white box.
However please note in terms of functional coverage implementation that is "what to sample" and "when to sample" the black box coverage items can also be implemented in a white box way. For example in a communication protocol whether all the types of packets are transmitted can be covered either using some signals from DUT or test bench callbacks/ports.