I am not able to understand what is the difference between these two keywords in swift3?
If anyone has a link to a good article about this, please share.
There is no difference conceptually;
moduleprivate was just a possible alternate name for the same access level that didn't get accepted during discussions about access control modifier naming.
internal modifier is the only one of the two that actually exists in the Swift language, but the two names represent the same behavior.