Can you elaborate what goes behind the scene when we create DirectoryEntry instance?

Code snippet:

```
var dirEntry = new DirectoryEntry("LDAP://CN=jsmith,DC=fabrikam,DC=Com", userName, password);

```

I mean, how authentication works? Who talks with whom? Assume the code above is in a console application.