This could be one of the concepts that will easily get confused, especially for those ones just get started on network programming.
The Major Difference
First thing: blocking operation does NOT equal to synchronous, also non-blocking operation does NOT equal to asynchronous. Actually, they don't have direct relevant with each