分类: C/C++
2010-06-28 22:00:02
客户端与gtalk server建立会话的过程如下(默认中间没有错误发生):
1. ( C->S ) 连接到服务器, 发送'hello'信息. 2. ( S->C ) 服务器回应'hello'信息 3. ( S->C ) 服务器要求TLS, SASL 4. ( C->S ) 开始TLS 5. ( S->C ) 服务器允许继续TLS 6. ( C->S ) TLS握手 客户端向服务器发起TLS握手请求, 如果握手成功, 执行#7 (可以使用openssl实现TLS的握手功能) 7. ( C->S ) TLS握手结束后, 发送新的'hello'消息 8. ( S->C ) 服务器回应'hello'消息 9. ( S->C ) 服务器要求SASL 10. ( C->S ) 客户端执行SASL AHlzb25nLmxlZUBnbWFpbC5jb20AeXNvbmdAMTk4NA== auth的cdata的格式 '\0'+username+'\0'+password 的base64编码, username和password必须是经过认证的. 例如: '\0' + + '\0' + 123456 -> 经过base64编码处理后变为cdata 11. ( S->C ) SASL成功 12. ( C->S ) 客户端发送新的'hello'消息 13. ( S->C ) 服务器回应'hello'消息 14. ( S->C ) 服务器要求绑定资源和建立一个会话 15. ( C->S ) 客户端绑定申请一个资源 16. ( S->C ) 服务器返回绑定资源的结果 17. ( C->S ) 客户端申请建立会话 18. ( S->C ) 服务器返回建立会话成功 到此, Client和Gtalk server的一个会话已经建立, 可以根据jabber协议进行其它操作. 请求联系人列表, 发消息等. |