关闭

[置顶] 图文详解 -- HTTPS站点的SSL证书 ,扩展SSL证书,密钥交换和身份验证机制汇

在客户端(这里指浏览器,下同)与 facebook 网站服务器进行 SSL 握手的过程中(现在称为TLS 握手,进行TLS握手前的TCP 三次握手必不可少,这里描述的场景假设已经完成了 TCP 三次握手): 首先两者协商使用什么协议连接: 第一次“往”:由客户端在一个类型为 Client Hello 的 TLS 握手包中携带客户端运行的TLS 协...
阅读(513) 评论(0)

[置顶] CentOS6.5下openssl加密解密及CA自签颁发证书详解

前言    openSSL是一款功能强大的加密工具、我们当中许多人已经在使用openSSL、用于创建RSA私钥或证书签名请求、不过、你可知道可以使用openSSL来测试计算机速度?或者还可以用它来对文件或消息进行加密。 正文    openssl是一个开源程序的套件、这个套件有三个部分组成、一是libcryto、这是一个具有通用功能的加密库、里面实现了众多的加密库、二是libssl、这个...
阅读(1136) 评论(0)

Thrift结构分析及增加取客户端IP功能实现

1.       前言 分析Thrift的结构动机是为了实现服务端能取到客户端的IP,因此需要对它的结构、调用流程有些了解。另外,请注意本文针对的是TNonblockingServer,不包含TThreadPoolServer、TThreadedServer和TSimpleServer。 2.       示例Service service EchoService...
阅读(6) 评论(0)

ECDSA签名+验签

ECDSA签名每次结果不同。      原因:ECDSA签名过程中混入随机值,生成签名结果不同。     公钥证书验签没问题。 1. 签名过程     假设要签名的消息是一个字符串:“Hello World!”。DSA签名的第一个步骤是对待签名的消息生成一个消息摘要。不同的签名算法使用不同的消息摘要算法。比如,DSS使用SHA1来生成160比特的摘要,而ECDSA256使用SHA256...
阅读(97) 评论(0)

Superfish事件:自签名SSL证书惹的祸 分析

个人看法,联想 使用了Superfish 自签名的根证书,,更夸张的是,根证书私钥是个简单字符串,而且存在客户端也就是说,root.crt + root.key 在用户电脑上,实现https劫持,工作原理应该类似与 Fiddler  在本机把自己的跟证书嵌入系统可信区域。     可是根证书私钥使用了较简单内容,导致一旦被破解发现,黑客会使用联想发布的根证书+私钥,签发自己的黑客证书。...
阅读(67) 评论(0)

nginx双证书配置

user  root; worker_processes 2; error_log  logs/error.log debug;    # 日志级别 #pid        logs/nginx.pid; events {     use epoll;     worker_connections  1024; } http {     include       mim...
阅读(128) 评论(0)

OpenSSL 1.1.0f 25 May 2017 OpenSSL 1.0.1e-fips 11 Feb 2013性能比较

[root@localhost nginx]# openssl speed  aes rsa ecdh  Doing aes-128 cbc for 3s on 16 size blocks: 16679878 aes-128 cbc's in 3.00s Doing aes-128 cbc for 3s on 64 size blocks: 4601182 aes-128 cbc's in ...
阅读(120) 评论(0)

nginx-1.12.1 + openssl-1.1.0f 静态编译

目录 ---                  nginx-1.12.1                 openssl-1.1.0f                 zlib-1.2.11                 pcre-8.40 cd ./nginx-1.12.1 静态编译安装nginx+openssl命令 ./configure --prefix=/usr/local...
阅读(190) 评论(0)

windows下使用thrift编译+示例+详解解决坑

thrift 在windows下使用略坑! 首先 坚决不要用...
阅读(152) 评论(0)

linux 定时器

在开发高性能服务器中,定时器总是不可或缺的。 常见的定时器实现三种,分别是:排序链表,最小堆,时间轮。 之前用的定时器是基于最小堆的,在定时器数量不多时可以使用, 目前公司用的框架中的定时器是基于简单时间轮的,但是为了支持大范围的时间,每个齿轮的所维护的链表为有序链表,每次插入时先mod出spoke,再从头遍历链表以便将定时器插入到合适位置, 所以本质上还是基于有序链表的。时间复杂度并未减少。...
阅读(75) 评论(0)

Muduo网络编程 时间轮 Timing wheel 踢掉空闲连接

通过boost::circular_buffer + boost::unordered_set来模拟轮盘。     typedef boost::unordered_set Bucket;     typedef boost::circular_buffer WeakConnectionList;     WeakConnectionList connectionBuckets_...
阅读(130) 评论(0)

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制

基于漏桶(Leaky bucket)与令牌桶(Token bucket)算法的流量控制 常用的流控算法 漏桶(Leaky bucket) 再看看令牌桶(Token bucket) Guava官方文档-RateLimiter类 漏桶(Leaky bucket)与令牌桶(Token bucket)算法有什么区别...
阅读(72) 评论(0)

muduo网络库定时器的实现

一:函数介绍 常见的与时间相关的函数有:sleep,alarm,usleep,nanosleep,clock_nanosleep,gettimer/settitimer,timer_create/timer_settime/timer_gettime/timer_delete,还有muduo使用的timerfd_create/timerfd_gettime/timerfd_settime函数...
阅读(66) 评论(0)

muduo源码分析--我对muduo的理解

分为几个模块 EventLoop、TcpServer、Acceptor、TcpConnection、Channel等 对于EventLoop来说: 他只关注里面的主驱动力,EventLoop中只关注poll,这类系统调用使得其成为Reactor模式,EventLoop中有属于这个loop的所有Channel,这个loop属于哪一个Server.   几个类存在的意义: ...
阅读(99) 评论(0)

Muduo网络库源码分析(二) 定时器TimeQueue,Timer,TimerId

首先,我们先要明白为什么需要设计这样一个定时器类? 在开发Linux网络程序时,通常需要维护多个定时器,如维护客户端心跳时间、检查多个数据包的超时重传等。如果采用linux的SIGALARM信号实现,则会带来较大的系统开销,且不便于管理。 Muduo 的 TimerQueue 采用了最简单的实现(链表)来管理定时器,它的效率比不上常见的 binary heap 的做法,如果程序...
阅读(75) 评论(0)

Muduo网络库源码分析(四)EventLoopThread和EventLoopThreadPool的封装

muduo的并发模型为one loop per thread+ threadpool。为了方便使用,muduo封装了EventLoop和Thread为EventLoopThread,为了方便使用线程池,又把EventLoopThread封装为EventLoopThreadPool。所以这篇博文并没有涉及到新鲜的技术,但是也有一些封装和逻辑方面的注意点需要我们去分析和理解。 EventLoop...
阅读(90) 评论(0)

Muduo网络库源码分析(六)TcpConnection 的生存期管理

TcpConnection是使用shared_ptr来管理的类,因为它的生命周期模糊。TcpConnection表示已经建立或正在建立的连接,建立连接后,用户只需要在上层类如TcpServer中设置连接到来和消息到来的处理函数,继而回调TcpConnection中的 setConnectionCallback和setMessageCallback函数,实现对事件的处理。用户需要关心的事件是有限的,...
阅读(69) 评论(0)

Muduo网络库源码分析(三)线程间使用eventfd通信和EventLoop::runInLoop系列函数

先说第一点,线程(进程)间通信有很多种方式(pipe,socketpair),为什么这里选择eventfd? eventfd 是一个比 pipe 更高效的线程间事件通知机制,一方面它比 pipe 少用一个 file descripor,节省了资源;另一方面,eventfd 的缓冲区管理也简单得多,全部“buffer” 只有定长8 bytes,不像 pipe 那样可能有不定长的真正...
阅读(132) 评论(0)

muduo网络库源码阅读Step by Step

一般写服务端程序都需要有一个称手的网络库来帮我们处理琐碎的网络通信细节,比如连接的建立、关闭,读取数据,发送数据,接收、发送缓冲区的管理等,常用的C/C++网络库有libevent,asio,libev,我们项目组使用的是muduo网络库。muduo是陈硕写的,基于非阻塞IO和事件驱动的现代C++网络库,原生支持one loop per thread模型(即reactor模型),它适合开发Li...
阅读(143) 评论(0)

Muduo 网络库源码分析 之 关键技术点总结

最近又把muduo网络库仔细研究了一遍,收获良多。本文将对muduo中的设计思想以及关键的技术细节进行总结和分析,当然由于篇幅的原因这里更多的是对关键技术的简略提及,具体细节还需要读者自己去查找学习资料。 muduo/base Date类  日期类的封装,使用Julian(儒略日)可以方便的计算日期差。具体公式和思想见 儒略日的计算 Exception类  异常类...
阅读(90) 评论(0)

muduo网络库脉络分析(1)

1.如何入手muduo库 其实在这之前也没有尝试去分析一个网络库的总脉络,更没有去尝试把它以博文的形式总结下来。那么我们该如何尝试去分析这样一个网络库的整体脉络呢?其实我有想过将muduo/net中的每一个功能类详细的一一介绍,但是后来我感觉没必要,这样只会让初学者更加找不着北。基于此种情况,我打算从muduo库提供给用户最外层的TcpServer类入手,然后由外到内的道出其整体脉络 ...
阅读(71) 评论(0)

Muduo网络库源码分析(一) EventLoop事件循环(Poller和Channel)

转自:http://blog.csdn.net/nk_test/article/details/51052539 (一)TCP网络编程的本质:三个半事件 1. 连接的建立,包括服务端接受(accept) 新连接和客户端成功发起(connect) 连接。TCP 连接一旦建立,客户端和服务端是平等的,可以各自收发数据。 2. 连接的断开,包括主动断开(close 或shu...
阅读(66) 评论(0)
152条 共8页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:87370次
    • 积分:1246
    • 等级:
    • 排名:千里之外
    • 原创:9篇
    • 转载:142篇
    • 译文:0篇
    • 评论:10条
    最新评论