网络编程
杨白开水
这个作者很懒,什么都没留下…
展开
-
struct linger 用法
http://www.cnblogs.com/caosiyang/archive/2012/03/29/2422956.htmlLinux下tcp连接断开的时候调用close()函数,有优雅断开和强制断开两种方式。那么如何设置断开连接的方式呢?是通过设置socket描述符一个linger结构体属性。linger结构体数据结构如下: #include转载 2015-11-09 20:54:27 · 6183 阅读 · 0 评论 -
Linux下利用nc命令来监控检测服务器的端口使用情况
http://huangrs.blog.51cto.com/2677571/967512最近碰到一个项目,前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理。批量的系统监控比较好的是用nagios软件来实现,这样小项目专门装转载 2013-07-05 11:36:43 · 790 阅读 · 0 评论 -
memcached 原子性操作 CAS模式
http://zhengjunwei2007.blog.163.com/blog/static/3529794220117325112464/应用场景分析: 如原来MEMCACHED中的KES的内容为A,客户端C1和客户端C2都把A取了出来,C1往准备往其中加B,C2准备往其中加C,这就会造成C1和C2执行后的CACHE KEYS要么是AB要么是AC,而转载 2013-07-19 19:36:56 · 17295 阅读 · 0 评论 -
memcached网络层操作详解
http://blog.sina.com.cn/s/blog_7530db6f0100onv2.htmlmemcached的网络层处理大概如下:(1) main函数创建一个侦听服务端的socket, 然后添加到libevent中, 然后当有客户端连接时就会触发libevent事件, 并且调用drive_machine()函数, 就像上面图一样.(2转载 2013-07-18 16:10:56 · 1042 阅读 · 0 评论 -
memcached采用的网络模型
http://www.cppblog.com/converse/archive/2010/03/11/109449.htmlmemcached采用的网络模型是早前提到的半同步半异步的网络模型.简单的说,大致流程就是:主线程负责接收新的连接,接收到新的连接之后,选择一个worker副线程,将该新连接push到副线程的连接队列中.主副线程之间通过管道进行通讯,因此主线程将新的连转载 2013-07-18 10:47:17 · 814 阅读 · 0 评论 -
网络上关于memecached与redis的汇总
http://xiaofancn.iteye.com/blog/16918981、Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制。Redis除key/value之外,还支持list,set,sor转载 2013-07-18 15:32:01 · 1429 阅读 · 0 评论 -
Notes on UNPv1 ch.6
http://www.cnblogs.com/cenhao/archive/2011/09/08.htmlUnix下有5种I/O模型: 阻塞型I/O, 非阻塞型I/O, I/O多路复用, 信号驱动I/O, 异步I/O. (Page.154)阻塞型I/O是最普遍的I/O模型, 并且是socket的默认模式. 此模式下I/O会阻塞至数据准备完毕并切拷贝到进程内存转载 2013-06-25 14:51:51 · 784 阅读 · 0 评论 -
libevent的多线程信号注意点
http://blog.csdn.net/sparkliang/article/details/5306809前面讲到了 libevent 实现多线程的方法,然而在多线程的环境中注册信号事件,还是有一些情况需要小心处理,那就是不能在多个 libevent 实例上注册信号事件。依然冠名追加到 libevent 系列。 以 2 个线程为例,做简单的场景分析。1 首先是创转载 2013-07-09 17:38:36 · 1079 阅读 · 0 评论 -
nginx 作为反向代理实现负载均衡的例子
http://www.jb51.net/article/25643.htmnginx 这个轻量级、高性能的 web server 主要可以干两件事情: 〉直接作为http server(代替apache,对PHP需要FastCGI处理器支持); 〉另外一个功能就是作为反向代理服务器实现负载均衡 以下我们就来举例说明如何使用 nginx 实现负载均衡。因为ngin转载 2013-07-08 19:44:08 · 811 阅读 · 0 评论 -
nginx中proxy_set_header Host $host的作用
http://4856809.blog.51cto.com/4846809/1188931nginx为了实现反向代理的需求而增加了一个ngx_http_proxy_module模块。其中proxy_set_header指令就是该模块需要读取的配置文件。在这里,所有设置的值的含义和http请求同中的含义完全相同,除了Host外还有X-Forward-For。Host的含义是表明请转载 2013-07-08 19:34:56 · 28853 阅读 · 0 评论 -
Memcached源码分析(线程模型)
http://www.iteye.com/topic/344172目前网上关于memcached的分析主要是内存管理部分,下面对memcached的线程模型做下简单分析 有不对的地方还请大家指正,对memcahced和libevent不熟悉的请先google之 先看下memcahced启动时线程处理的流程 memcached的多线程主要是通过实例化多个li转载 2013-07-04 17:47:16 · 653 阅读 · 0 评论 -
tcp四种定时器
http://network.51cto.com/art/201307/405259.htm定时器在TCP可靠传输的过程中起着举足轻重的作用。TCP在建立连接之后可能(保活keep-alive定时器是可选的)会 启动四个定时器。TCP使用四种定时器(Timer,也称为“计时器”):重传计时器:Retransmission Timer坚持计时器:Per转载 2013-07-29 18:00:26 · 738 阅读 · 0 评论 -
Socket选项概览
http://www.cnblogs.com/ggjucheng/archive/2012/02/17/2355874.html前言socket选项主要是由setsockopt和getsockopt函数完成的,这里主要是记录我自己常用的一些socket选项。函数原型int getsockopt(int sockfd, int level, int opt转载 2015-11-06 16:35:23 · 4914 阅读 · 0 评论 -
getaddrinfo()详解
http://www.cppblog.com/sleepwom/archive/2010/07/02/119136.aspxIPv4中使用gethostbyname()函数完成主机名到地址解析,但是该API不允许调用者指定 所需地址类型的任何信息,返回的结构只包含了用于存储IPv4地址的空间。为了解决该问题,IPv6中引入了getaddrinfo()的新API,它是 协议无转载 2015-10-20 15:55:51 · 4183 阅读 · 0 评论 -
基本的TCP编程
http://www.cnblogs.com/xing901022/p/3523910.htmlint socket(int family,int type,int protocol);family:AF_INET ipv4协议AF_INET6 ipv6协议AF_LOCAL unix域协议AF_ROUTE 路由套接口转载 2015-09-29 17:45:53 · 4261 阅读 · 0 评论 -
memcached面试题集锦
这里收集了经常被问到的关于memcached的问题 * memcached是怎么工作的? * memcached最大的优势是什么? * memcached和MySQL的query cache相比,有什么优缺点? * memcached和服务器的local cache(比如PHP的APC、mmap文件等)相比,有什么优缺点? * memcached的cache机制是怎样的?转载 2015-08-21 17:51:02 · 6963 阅读 · 0 评论 -
Boost::asio io_service 实现分析
http://www.cnblogs.com/zhiranok/archive/2011/09/04/boost_asio_io_service_CPP.htmlBoost::asio io_service 实现分析io_service的作用io_servie 实现了一个任务队列,这里的任务就是void(void)的函数。Io_servie最常用的两个接口是po转载 2014-10-27 16:54:40 · 4180 阅读 · 0 评论 -
Redis大冒险:如何跳出SQL这个坑
摘要:随着数据体积的激增,MySQL+memcache已经满足不了大型互联网类应用的需求,许多机构也纷纷选择Redis作为其架构上的补充,然而Redis的使用门槛并不低,比如不支持SQL等,这里为大家分享Redis的使用全攻略。转载 2014-04-24 13:43:46 · 1093 阅读 · 0 评论 -
Memcached 集群架构问题归纳
http://www.lampblog.net/2010/09/memcached-%E9%9B%86%E7%BE%A4%E6%9E%B6%E6%9E%84%E9%97%AE%E9%A2%98%E5%BD%92%E7%BA%B3/集群架构方面的问题o memcached是怎么工作的?o memcached最大的优势是什么?o memcached和MySQL的qu转载 2013-08-20 16:35:17 · 699 阅读 · 0 评论 -
C语言之libevent和socket示例
http://blog.linuxphp.org/archives/1482/源码和注释:#include #include #include #include #include #include #include #include #include #include //内部函数,只能被本文件中的函数调用static short Lis转载 2013-06-20 21:10:43 · 4626 阅读 · 0 评论 -
Redis使用总结之与Memcached异同
http://ceecyj.blog.51cto.com/1640670/1262267Redis是什么?两句话可以做下概括:1. 是一个完全开源免费的key-value内存数据库2. 通常被认为是一个数据结构服务器,主要是因为其有着丰富的数据结构 strings、map、 list、sets、 sorted setsRedis不是什么?同样从两转载 2013-08-05 16:14:06 · 577 阅读 · 0 评论 -
Tokyo Tyrant 与 Redis 的一些简单比较
http://www.zavakid.com/2011/11/17/tokyo-tyrant-vs-redis/之前简单的看了一下 Tokyo Tyrant(包括 Tokyo Cabint) 在 hash 存储上的一些实现,最近 Redis 又比较火热,因此,自己也尝试性的去了解了一下 Redis,并且结合 Tokyo Tyrant(以下简称 tt server),说说转载 2013-06-22 12:39:25 · 689 阅读 · 0 评论 -
libevent 测试代码
libevent 的基准测试代码在:libevent/libevent-1.4.14b-stable/test/bench.c编译方法:gcc -g -Wall -I/home/piate/bin/libevent/include -o bench bench.c -L/home/pirate/bin/libevent/lib -levent原创 2013-06-19 18:58:42 · 1422 阅读 · 1 评论 -
SYN Cookie原理及其在Linux内核中的实现
http://www.ibm.com/developerworks/cn/linux/l-syncookie/?ca=dwcn-newsletter-linux概述在目前以IPv4为支撑的网络协议上搭建的网络环境中,SYN Flood是一种非常危险而常见的DoS攻击方式。到目前为止,能够有效防范SYN Flood攻击的手段并不多,而SYN Cookie就是其中最著名的一种。转载 2013-06-17 19:27:35 · 914 阅读 · 0 评论 -
ASIO学习
http://sites.google.com/site/polarisnotme/boost/asio/xue-xi-1boost::asio::Io_service构造函数构造函数的主要动作就是调用CreateIoCompletionPort创建了一个初始iocp。Dispatch和post的区别Post一定是PostQueuedCompleti转载 2013-03-05 16:46:38 · 719 阅读 · 0 评论 -
boost.asio系列——buffer
http://www.cnblogs.com/TianFang/archive/2013/02/03/2890983.html创建buffer在io操作中,对数据的读写大都是在一个缓冲区上进行的,在asio框架中,可以通过asio::buffer函数创建一个缓冲区来提供数据的读写。buffer函数本身并不申请内存,只是提供了一个对现有内存的封装。 char转载 2013-03-05 18:33:45 · 803 阅读 · 0 评论 -
boost.circular_buffer简介
http://www.cnblogs.com/TianFang/archive/2013/02/05/2892503.html很多时候,我们需要在内存中记录最近一段时间的数据,如操作记录等。由于这部分数据记录在内存中,因此并不能无限递增,一般有容量限制,超过后就将最开始的数据移除掉。在stl中并没有这样的数据结构,一般需要我们自己构造,常用方法如下:用list构转载 2013-03-05 19:20:42 · 870 阅读 · 0 评论 -
boost.asio系列——Timer
http://www.cnblogs.com/TianFang/archive/2013/02/02/2890325.html同步Timerasio中提供的timer名为deadline_timer,它提供了超时计时的功能。首先以一个最简单的同步Timer为例来演示如何使用它。 #include #include int转载 2013-03-05 18:48:53 · 1001 阅读 · 1 评论 -
asio相关记录
1、编译boost_1_52_0Chapter 2. InstallationTo install Boost.Build from an official release or a nightly build, as available on the official web site, follow these steps:Unpack the release. On th原创 2012-11-21 19:21:23 · 552 阅读 · 0 评论 -
信号驱动式io小结
对于udp套接字的SIGIO信号,SIGIO信号产生在以下事件时产生:1、数据报到达套接字2、套接字上发生异步错误因此,对于udp来说,发生SIGIO时调用recvfrom可以读入数据报,或者发生异步错误。对于tcp来说,信号驱动式io 对于tcp套接字几乎无用,很多情况都能导致tcp套接字产生SIGIO信号:1、监听套接字上某个连接请求已经完成2、某个断连请求已经原创 2012-11-21 23:19:42 · 1721 阅读 · 0 评论 -
http://xmuzyq.iteye.com/blog/783218
http://xmuzyq.iteye.com/blog/783218在高性能的I/O设计中,有两个比较著名的模式Reactor和Proactor模式,其中Reactor模式用于同步I/O,而Proactor运用于异步I/O操作。 在比较这两个模式之前,我们首先的搞明白几个概念,什么是阻塞和非阻塞,什么是同步和异步,同步和异步是针对应用程序和内核转载 2012-11-20 00:05:19 · 581 阅读 · 0 评论 -
UNIX SOCKET编程简介
http://www.cnitblog.com/tarius.wu/articles/434.html1 . Layered Model of NetworkingSocket 编程的层次模型如下图所示, 最上面是应用层,应用层下面的是 SOCKET API 层,再下面是传输层和网络层…… 实际上, Sockets API 层并不是一个真正定义的网络层次,但转载 2012-11-20 09:10:47 · 393 阅读 · 0 评论 -
关于几种多线程模型的探讨
a.半同步/半异步模型,这个模型使用太广泛,即一个线程处理所有网络事件,多个逻辑线程处理业务逻辑,通过排队层进行消息交换。b.领导者/追随者模型,线程既是领导者又可追随者,忙线程和空闲线程进行切换,典型如ACE_TP_Reactor/boost::asio(多线程执行io_service::run)。c.级联方式,一个线程一个epoll,每个线程管理自己的fd集合,选择策略(比如轮询)转载 2012-11-02 11:52:37 · 1184 阅读 · 0 评论 -
Boost Asio在Windows下设计及实现解析
http://blog.csdn.net/chenyu2202863/article/details/5818927研究了许久ASIO,很不错!好话就不多讲,但是我认为作者为了跨平台,把代码弄得很拐弯抹角,但这也是不得已而为之。而这次的分析,只考虑Windows平台上的实现。我会陆陆续续的把整个设计思想和实现的关键代码给做出解析,然后判断其优劣,把认为可以去掉的就去掉,简化转载 2013-03-07 17:34:25 · 648 阅读 · 0 评论 -
libevent源码浅析: 主要的结构体
http://godorz.info/2011/02/the-annotated-libevent-sources-about-structures/Aboutlibevent是一个开源的跨平台网络库,属于事件驱动机制,支持多种I/O多路复用技术,从其主页http://www.monkey.org/~provos/libevent/ 可以看到libevent使用转载 2013-03-11 17:34:55 · 896 阅读 · 0 评论 -
linux下epoll如何实现高效处理百万句柄的
http://www.cnblogs.com/linmzh/archive/2013/01/16/2863119.html开发高性能网络程序时,windows开发者们言必称iocp,linux开发者们则言必称epoll。大家都明白epoll是一种IO多路复用技术,可以非常高效的处理数以百万计的socket句柄,比起以前的select和poll效率高大发了。我们用起epoll转载 2013-06-08 18:33:00 · 644 阅读 · 0 评论 -
分布式文件系统FastDFS架构剖析
http://www.oschina.net/question/12_13316FastDFS是一款类Google FS的开源分布式文件系统,它用纯C语言实现,支持Linux、FreeBSD、AIX等UNIX系统。它只 能通过专有API对文件进行存取访问,不支持POSIX接口方式,不能mount使用。准确地讲,Google FS以及FastDFS、 mogileFS、HDF转载 2013-05-09 13:35:53 · 807 阅读 · 0 评论 -
HTTP协议
http://developer.51cto.com/art/201305/392756.htmHTTP协议HTTP协议是浏览器和服务器双方共同遵循的规范.是一种基于TCP/IP(传输层协议,相对应的有UDP)的"应用层协议"PS:TCP/UDP是广泛使用的网络通信协议,UDP协议具有不可靠性和不安全性,相对来说TCP协议是基于连接和三次握手的(相对可靠与安转载 2013-05-08 18:29:51 · 576 阅读 · 0 评论 -
TCP Split Handshake Attack
http://lenky.info/2012/09/01/tcp-split-handshake-attack/TCP Split Handshake Attack,翻译过来为TCP分离握手攻击,虽然有“分离”两字,但这并不是指“TCP四次挥手”过程,而仍然是指在TCP三次握手过程中的漏洞攻击。我们知道,根据RFC 793中的描述,TCP三次握手过程可以描述为:转载 2013-04-19 14:22:08 · 1659 阅读 · 0 评论 -
Simultaneous TCP open(同时开放TCP连接)
http://hi.baidu.com/totty/item/f905eee5201aee3b4ddcafb4这里有一种方法能够在某种情况下建立一个穿透NAT的端对端TCP直连。我们知道,绝大多数的TCP会话的建立,都是通过一端先发送一个SYN包开始,另一方则回发一个SYN-ACK包的过程。然而,这里确实存在另外一种情况,就是P2P的双方各自同时地发出一个SYN包到对方的公网地址上转载 2013-04-19 14:27:08 · 1390 阅读 · 0 评论