上次對Ldap做了簡單的介紹,以及實現(xiàn)一個JNDI Ldap service provider需要做哪些事情,這次來說說Ldap協(xié)議。
這里的協(xié)議主要是指網(wǎng)絡(luò)傳輸協(xié)議,消息的編碼格式以及client和server的交互方式。
先說交互方式,Ldap明確指出:協(xié)議雙方交互信息必須封裝為LDAPMessage進(jìn)行。也就是說client向server發(fā)的是LDAPMessage,
server向client發(fā)的也是LDAPMessage。這樣server和client只需要收發(fā)LDAPMessage就可以了,何等簡單。
協(xié)議本身是基于request-response方式進(jìn)行的,就是問答方式了:client發(fā)出請求,server接收到后處理,最后將結(jié)果返回給client,
當(dāng)然也有個別request沒有response,如abandon,而search有多個response。消息到達(dá)的順序可以是任意的,也就是說client可以使勁的
發(fā)request,然后再去接收response,接收到的response并不保證和request的順序一致,request和response的對應(yīng)通過MessageID保證。
這部分要完全實現(xiàn)還是有點小麻煩的,目前我們的實現(xiàn)都是發(fā)一個收一個,避免這種情況的產(chǎn)生,如果有時間的話還是希望能實現(xiàn)一下,
蠻有挑戰(zhàn)的。
關(guān)于LDAPMessage的編碼解碼下次寫,玩游戲去了:-)