
---------------------------------------------------------------
线程区域储存空间 (TLS)
多线程程序中的整体变量(以及任何被配置的内存)被程序中的所有线程共享。在一个函数中的局部静态变量也被使用函数的所有线程共享。一个函数中的局部动态变量是唯一于各个线程的,因为它们被储存在堆栈上,而每个线程有它自己的堆栈。
对各个线程唯一的持续性储存空间有存在的必要,这就叫做线程区域储存空间。
---------------------------------------------------------------
Thread Local Storage是一个实现Thread的全局数据的机制,并且这些数据仅仅在这
个Thread中可见,因为这些数据保存在该Thread的Thread DataBase中:在每一个Thread
DataBase中都定义了一个64元的DWORD数组用来保存这些数据。同时 *** 作系统也提供了相应
的函数来完成对这些数据的 *** 作,如:TlsAlloc,TlsFree,TlsSetValue,TlsGetValue。
在MFC中,也提供了TLS功能,为此MFC设计了一系列的类和程序来完成这个任务。具体
的程序在afxtls.cpp和afxtls_.h中。
涉及到的主要的类有:
class CTypedSimpleList : public CSimpleList
struct CThreadData : public CNoTrackObject
struct CSlotData
class CThreadSlotData
class CThreadLocal : public CThreadLocalObject
其中CThreadSlotData是封装TLS的最重要的类,CTypedSimpleList,CSlotData,CTh
readDAta都是为了封装TLS而设计的只具有辅助功能的类。CThreadLocal是更高层的封装。
ssl/tls 认证的工作流程简单概括如下,楼主看参考下:web服务器申请证书,吧csr文件提交给ca,ca签发证书给web服务器(证书包括中级证书和服务器证书/ 证书里包含公钥信息,web服务器的身份信息)
1 客户机申请链接,包含自己可以实现的算法列表,和其他信息,
2 服务器回应链接,回应中确定了这次通信所需要的算法,并发送自己的证书过去,证书中包含了自己的身份和公钥,
3 客户端在收到消息后会生成一个秘密消息clientkeyexchange--(此秘密消息进行处理后,将用做加密密钥(会话密钥)),并用web服务器的公钥加密,传过去
4 服务器在用私钥解密秘密消息clientkeyexchenge,并进行处理,生成加密密钥(会话密钥),会话密钥协商成功,
5 客户端和服务器端都知道了会话密钥,并用此会话密钥进行数据加密。
简单来说,就是用服务器证书的公司密钥对协商出一个对称密钥,然后用对称密钥进行加密。
ssl证书一般是用于对于网站安全要求性比较高的站点上的,国际上比较知名的ssl证书有verisign,geotrust,thawte,等证书品牌,据了解,这几种证书品牌的大陆官方代理商是北京天威诚信,楼主有需求的话,可以了解下。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)