
网络编程
文章平均质量分 69
LceChan
这个作者很懒,什么都没留下…
展开
-
QPS、TPS、并发用户数、吞吐量之间有什么联系,存在什么关系?(转)
前言:QPS、TPS、并发用户数、吞吐量之间的关系你真的懂么?1、QPSQPS Queries Per Second 是每秒查询率 ,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准, 即每秒的响应请求数,也即是最大吞吐能力。2、TPSTPS Transactions Per Second 也就是事务数/秒。一个事务是指一个客户机向服务器发送请求然后服务器做出反应的过程。客户机在发送请求时开始计时,收到服务器响应后结束计时,以此来计算使用的时间和完成原创 2021-10-01 09:14:49 · 879 阅读 · 0 评论 -
HTTP 协议详解
引言 * 网络通信简介传输层及其以下的机制由内核提供,应用层由用户进程提供,应用程序对通讯数据的含义进行解释,而传输层及其以下处理通讯的细节,将数据从一台计算机通过一定的路径发送到另一台计算机。应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装(Encapsulation),如下图所示:假设现在应用层协议为h原创 2013-09-15 21:36:01 · 986 阅读 · 0 评论 -
Linux高性能集群 - 资源管理和系统管理
1 集群作业管理从用户角度看,集群系统就好像一台服务器或者PC。很多用户可以同时使用这个系统。但是当太多的用户使用集群系统时,系统性能会变得很差。资源管理就是管理用户提交的作业,合理给各个作业分配资源从而确保充分利用集群系统计算能力并尽可能快的得到运算结果。简单的说,集群资源由实现如下几个部分:资源管理器:为了确保分配给作业合适的资源,集群资源管理需要维护一个数据库。这个数据库原创 2013-10-01 17:03:52 · 2086 阅读 · 0 评论 -
关闭TCP连接的学问
从TCP协议角度来看,一个已建立的TCP连接有两种关闭方式,一种是正常关闭,即四次挥手关闭连接;还有一种则是异常关闭,我们通常称之为连接重置(RESET)。 首先说一下正常关闭时四次挥手的状态变迁,关闭连接的主动方状态变迁是FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT,而关闭连接的被动方的状态变迁是CLOSE_WAIT->LAST_ACK->TIME_W原创 2013-09-25 21:08:47 · 697 阅读 · 0 评论 -
Linux socket编程(字节处理)
1、 引言Linux的兴起可以说是Internet创造的一个奇迹。Linux作为一个完全开放其原代码的免费的自由软件,兼容了各种UNIX标准(如POSIX、UNIX System V 和 BSD UNIX 等)的多用户、多任务的具有复杂内核的操作系统。在中国,随着Internet的普及,一批主要以高等院校的学生和ISP的技术人员组成的Linux爱好者队伍已经蓬勃成长起来。越来越多的编程爱好者也原创 2013-08-23 22:42:11 · 929 阅读 · 0 评论 -
一个网络资深者发起的思考
陈硕 (giantchen AT gmail)blog.youkuaiyun.com/Solstice前几天我在新浪微博上出了两道有关 TCP 的思考题,引发了一场讨论 http://weibo.com/1701018393/eCuxDrta0Nn 。第一道初级题目是:有一台机器,它有一个 IP,上面运行了一个 TCP 服务程序,程序只侦听一个端口,问:从理论上讲(只考虑 TC转载 2013-09-25 21:12:00 · 731 阅读 · 0 评论 -
基于TCP协议的网络程序(基础学习)
下图是基于TCP协议的客户端/服务器程序的一般流程:图 37.2. TCP协议通讯流程服务器调用socket()、bind()、listen()完成初始化后,调用accept()阻塞等待,处于监听端口的状态,客户端调用socket()初始化后,调用connect()发出SYN段并阻塞等待服务器应答,服务器应答一个SYN-ACK段,客户端收到后从connect()返回转载 2013-09-25 21:21:58 · 720 阅读 · 0 评论 -
服务器进程为何通常fork()两次
转自:http://blog.youkuaiyun.com/chdhust/article/details/11872467首先,要了解什么叫僵尸进程,什么叫孤儿进程,以及服务器进程运行所需要的一些条件。两次fork()就是为了解决这些相关的问题而出现的一种编程方法。孤儿进程 孤儿进程是指父进程在子进程结束之前死亡(return 或exit)。如下图1所示:原创 2013-09-25 21:27:10 · 811 阅读 · 0 评论 -
Linux服务器集群系统(一)
转自:http://www.ibm.com/developerworks/cn/linux/cluster/lvs/part1/背景当今计算机技术已进入以网络为中心的计算时期。由于客户/服务器模型的简单性、易管理性和易维护性,客户/服务器计算模式在网上被大量采用。在九十年代中期,万维网(World Wide Web)的出现以其简单操作方式将图文并茂的网上信息带给普通大众,Web原创 2013-09-27 23:55:38 · 879 阅读 · 0 评论 -
TCP连接复用(TCP Connection Reuse)
转自:http://gaibianziji.blog.51cto.com/1082897/12119401. 负载均衡技术简介 现代企业信息化应用越来越多的采用B/S应用架构来承载企业的关键业务,因此,确保这些任务的可靠运行就变得日益重要。随着越来越多的企业实施数据集中,应用的扩展性、安全性和可靠性也越来越受到企业的重视。 负载均衡技术通过设置虚拟服务器IP(VIP),原创 2013-09-30 19:09:31 · 1324 阅读 · 0 评论 -
socket perror 为operation on non-socket 解决
出现问题,打log如 调用connect socket accept 函数出错,可以 perror("socket"); perror("connect"); printf("%s\n",strerror(errno));都能打出具体的错误select 函数再次强调:0: 正常返回,而且可以调用FDISSET函数去查fd; Socket operation on non-socke转载 2013-09-14 00:11:57 · 7000 阅读 · 0 评论 -
谈一谈网络编程学习经验(06-08更新)
转自:http://blog.youkuaiyun.com/solstice/article/details/6527585本文谈一谈我在学习网络编程方面的一些个人经验。“网络编程”这个术语的范围很广,本文指用Sockets API开发基于TCP/IP的网络应用程序,具体定义见“网络编程的各种任务角色”一节。受限于本人的经历和经验,这篇文章的适应范围是:· x86-64 Linux转载 2013-09-12 23:49:49 · 1450 阅读 · 0 评论 -
linux下socket编程(基础参考)
什么是Socket Socket接口是TCP/IP网络的API,Socket接口定义了许多函数或例程,程序员可以用它们来开发TCP/IP网络上的应用程序。要学Internet上的TCP/IP网络编程,必须理解Socket接口。 Socket接口设计者最先是将接口放在Unix操作系统里面的。如果了解Unix系统的输入和输出的话,就很容易了解Socket了。网络的Socket数据传输是原创 2013-08-23 22:40:35 · 636 阅读 · 0 评论 -
linux上的一些系统监测工具简介
在linux中提供了很多有用的工具,以方便开发人员调试和评测服务器程序。下面介绍几个常用的工具:tcpdump,nc,strace,lfos,netstat,vmstat,ifstat和mpstat。1. tcpdump tcpdump是一个网络抓包工具,它提供了大量的选项,用以过滤数据包或者定制输出格式。具体见:http://www.cnblogs.co转载 2013-08-27 23:41:04 · 778 阅读 · 0 评论 -
高性能网络编程(一)----accept建立连接
转自:http://blog.youkuaiyun.com/russell_tao/article/details/9111769最近在部门内做了个高性能网络编程的培训,近日整理了下PPT,欲写成一系列文章从应用角度谈谈它。编写服务器时,许多程序员习惯于使用高层次的组件、中间件(例如OO(面向对象)层层封装过的开源组件),相比于服务器的运行效率而言,他们更关注程序开发的效率,追求更快的完成项目原创 2013-08-27 23:46:00 · 800 阅读 · 0 评论 -
高性能网络编程3----TCP消息的接收
转自:http://blog.youkuaiyun.com/russell_tao/article/details/9950615这篇文章将试图说明应用程序如何接收网络上发送过来的TCP消息流,由于篇幅所限,暂时忽略ACK报文的回复和接收窗口的滑动。为了快速掌握本文所要表达的思想,我们可以带着以下问题阅读:1、应用程序调用read、recv等方法时,socket套接字可以设置为阻塞原创 2013-08-27 23:49:49 · 877 阅读 · 0 评论 -
高性能网络编程2----TCP消息的发送
转自:http://blog.youkuaiyun.com/russell_tao/article/details/9370109在上一篇中,我们已经建立好的TCP连接,对应着操作系统分配的1个套接字。操作TCP协议发送数据时,面对的是数据流。通常调用诸如send或者write方法来发送数据到另一台主机,那么,调用这样的方法时,在操作系统内核中发生了什么事情呢?我们带着以下3个问题来细细分析:发送原创 2013-08-27 23:47:41 · 641 阅读 · 0 评论 -
HTTP 返回状态值详解
转自:http://blog.youkuaiyun.com/ithomer/article/details/10240351当用户点击或搜索引擎向网站服务器发出浏览请求时,服务器将返回Http Header Http头信息状态码,常见几种如下:1、Http/1.1 200 OK 访问正常 表示成功访问,为网站可正常访问时的状态。2、Http原创 2013-09-07 11:30:32 · 1142 阅读 · 0 评论 -
秒杀linux下系统调用fork()面试题
秒杀linux下系统调用fork()面试题第一道题(在之前博客也写过这道题:http://blog.youkuaiyun.com/chdhust/article/details/8535915):题目:请问下面的程序一共输出多少个“-”?1234567891011121314#inc转载 2013-09-03 22:50:52 · 1006 阅读 · 0 评论 -
CDN(内容分发网络)技术原理
1. 前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因数的影响,响应速度慢还是经常抱怨和困扰。解决方案就是在网络传输上利用缓存技术使得Web服务数据流能就近访问,是优化网络数据传输非常有效的技术,从而获得高速的体验和品质保证。 网络原创 2013-09-03 23:32:30 · 1001 阅读 · 0 评论 -
Linux epoll详解
转自:http://blog.youkuaiyun.com/lingfengtengfei/article/details/12398299#commentsLinux epoll详解一、什么是epollepoll是什么?按照man手册的说法:是为处理大批量句柄而作了改进的poll。当然,这不是2.6内核才有的,它是在2.5.44内核中被引进的(epoll(4)原创 2013-10-13 12:55:41 · 779 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 3 部分: 提供安全服务 OpenSSL 提供必要的能力
转自:http://www.ibm.com/developerworks/cn/linux/l-openssl3.html本系列文章的前两部分讨论了使用 OpenSSL 来创建客户机端应用程序的内容。第 1 部分 讨论了使用 OpenSSL 创建基本安全客户机的问题,而 第 2 部分 则深入讨论了有关数字证书的问题。在阅读本文的读者给我发回很多 e-mail 和正面反馈之后,我非常原创 2013-10-14 23:54:52 · 1090 阅读 · 0 评论 -
UNIX网络编程——使用select函数编写客户端和服务器
首先看原先《UNIX网络编程——并发服务器(TCP)》的代码,服务器代码serv.c:[cpp] view plaincopyprint?#include #include #include #include #include #include #include #include #includ转载 2013-11-02 12:03:38 · 962 阅读 · 0 评论 -
Linux中select函数学习及实例笔记
转自:http://zyg0227.blog.51cto.com/1043164/554208Unix中的函数select和poll用来,支持Unix中I/O复用的功能,在Unix中I/O模型可以分为以一几种:(1)阻塞I/O(2)非阻塞I/O(3)I/O复用(select和poll)(4)信号驱动I/O(SIGIO)(5)异步I/O原创 2013-11-06 23:28:30 · 2116 阅读 · 0 评论 -
poll 和 select
使用非阻塞 I/O 的应用程序常常使用 poll, select, 和 epoll 系统调用. poll, select 和 epoll 本质上有相同的功能: 每个允许一个进程来决定它是否可读或者写一个或多个文件而不阻塞. 这些调用也可阻塞进程直到任何一个给定集合的文件描述符可用来读或写. 因此, 它们常常用在必须使用多输入输出流的应用程序, 而不必粘连在它们任何一个上. 相同的功能常常由多个函数翻译 2013-11-08 00:00:07 · 616 阅读 · 0 评论 -
linux-epoll研究
做linux网络编程的同学都清楚,2.6版本以前的linux内核大多都是用select作为非阻塞的事件触发模型,但是效率低,使用受限已经很明显的暴露了select(包括poll)的缺陷了,为了解决这些缺陷,epoll作为linux新的事件触发模型被创造出来。一、epoll相对于select的优点: 1.支持一个进程socket描述符(FD)的最大数目 select支转载 2013-11-12 01:57:36 · 706 阅读 · 0 评论 -
高性能网络编程5--IO复用与并发编程
对于服务器的并发处理能力,我们需要的是:每一毫秒服务器都能及时处理这一毫秒内收到的数百个不同TCP连接上的报文,与此同时,可能服务器上还有数以十万计的最近几秒没有收发任何报文的相对不活跃连接。同时处理多个并行发生事件的连接,简称为并发;同时处理万计、十万计的连接,则是高并发。服务器的并发编程所追求的就是处理的并发连接数目无限大,同时维持着高效率使用CPU等资源,直至物理资源首先耗尽。转载 2013-12-04 23:00:58 · 685 阅读 · 0 评论 -
高性能网络编程6--reactor反应堆与定时器管理
反应堆开发模型被绝大多数高性能服务器所选择,上一篇所介绍的IO多路复用是它的实现基础。定时触发功能通常是服务器必备组件,反应堆模型往往还不得不将定时器的管理囊括在内。本篇将介绍反应堆模型的特点和用法。首先我们要谈谈,网络编程界为什么需要反应堆?有了IO复用,有了epoll,我们已经可以使服务器并发几十万连接的同时,维持高TPS了,难道这还不够吗?我的答案是,技术层面足够了,但在软件转载 2013-12-29 00:04:19 · 748 阅读 · 0 评论 -
Google Protocol Buffer (PB)简明入门
写在最前:本文以在Windows下C++中使用Protocol Buffer(以下简称PB)为例展示如何安装和使用PB。其他语言和平台也可做为参考。一.什么是PBPB是Google开发的一种开源数据交换方式。特别适合于在RPC间交换对象及数据结构。与其相似的应用有XML、JSON、THRIFT等。二.为什么要用PB相对于其主要同类应用XML,PB的主要优势在于更小的转载 2014-01-14 22:12:03 · 1874 阅读 · 0 评论 -
高性能网络编程7--tcp连接的内存使用
当服务器的并发TCP连接数以十万计时,我们就会对一个TCP连接在操作系统内核上消耗的内存多少感兴趣。socket编程方法提供了SO_SNDBUF、SO_RCVBUF这样的接口来设置连接的读写缓存,linux上还提供了以下系统级的配置来整体设置服务器上的TCP内存使用,但这些配置看名字却有些互相冲突、概念模糊的感觉,如下(sysctl -a命令可以查看这些配置):[cpp转载 2014-01-25 23:50:43 · 953 阅读 · 0 评论 -
常见多线程与并发服务器设计方案举例
转自:http://blog.youkuaiyun.com/jnu_simba/article/details/14141245一、3点基础知识1、一个主机的端口号为所有进程所共享,但普通用户进程绑定不了一些特殊端口号如20、80等。 2、每个进程都有自己的文件描述符(包括file fd, socket fd, timer fd, event fd, signal fd),原创 2013-11-04 22:30:22 · 1059 阅读 · 0 评论 -
tcp回射程序
服务器端:#include #include #include #include #include #include #define LISTENQ 1024#define SERV_PORT 9877#define SA struct sockaddrint main(int argc, char** argv){ int listenfd, conn原创 2013-11-02 23:37:27 · 841 阅读 · 0 评论 -
僵尸进程和孤儿进程
僵尸进程:一个子进程在其父进程还没有调用wait()或waitpid()的情况下退出。这个子进程就是僵尸进程。孤儿进程:一个父进程退出,而它的一个或多个子进程还在运行,那么那些子进程将成为孤儿进程。孤儿进程将被init进程(进程号为1)所收养,并由init进程对它们完成状态收集工作。僵尸进程将会导致资源浪费,而孤儿则不会。每个进程结束的时候,系统都会扫描当前系统中所运行的所转载 2013-09-27 23:38:09 · 773 阅读 · 0 评论 -
用C语言实现Ping程序功能
转自:http://www.ibm.com/developerworks/cn/linux/network/ping/index.htmlping命令是用来查看网络上另一个主机系统的网络连接是否正常的一个工具。ping命令的工作原理是:向网络上的另一个主机系统发送ICMP报文,如果指定系统得到了报文,它将把报文一模一样地传回给发送者,这有点象潜水艇声纳系统中使用的发声装置。例如原创 2013-09-28 22:17:48 · 947 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程-创建基本的安全连接和非安全连接
转自:http://www.ibm.com/developerworks/cn/linux/l-openssl.htmlOpenSSL API 的文档有些含糊不清。因为还没有多少关于 OpenSSL 使用的教程,所以对初学者来说,在 应用程序中使用它可能会有一些困难。那么怎样才能使用 OpenSSL 实现一个基本的安全连接呢? 本教程将帮助您解决这个问题。学习如何实现 Open原创 2013-10-14 23:52:24 · 1223 阅读 · 0 评论 -
使用 OpenSSL API 进行安全编程,第 2 部分: 安全握手 防止中间人(MITM)攻击
转自:http://www.ibm.com/developerworks/cn/linux/l-openssl2.html不久之前,安全握手是双方的业务得以实现的一个标记。毕竟,握手是一次面对面的机会,可以对潜在的合作者进行评价。安全且可信的握手意味着事务的双方都相信它们正在做的事情对双方都是有益的。不安全的握手标记着只有一方会对事务有着正确的理解。握手的工作方式与在线事务相同原创 2013-10-14 23:53:25 · 1136 阅读 · 0 评论 -
C++ 用libcurl库进行http通讯网络编程
一、LibCurl基本编程框架libcurl是一个跨平台的网络协议库,支持http, https, ftp, gopher, telnet, dict, file, 和ldap 协议。libcurl同样支持HTTPS证书授权,HTTP POST, HTTP PUT, FTP 上传, HTTP基本表单上传,代理,cookies,和用户认证。想要知道更多关于libcurl的介绍,可以到官网 h原创 2013-10-28 22:39:24 · 1855 阅读 · 0 评论 -
高性能网络编程4--TCP连接的关闭
转自:http://blog.youkuaiyun.com/russell_tao/article/details/13092727TCP连接的关闭有两个方法close和shutdown,这篇文章将尽量精简的说明它们分别做了些什么。为方便阅读,我们可以带着以下5个问题来阅读本文:1、当socket被多进程或者多线程共享时,关闭连接时有何区别?2、关连接时,若连接上有来自对端原创 2013-10-28 22:56:46 · 763 阅读 · 0 评论 -
Linux Epoll介绍和程序实例
1. Epoll是何方神圣?Epoll可是当前在Linux下开发大规模并发网络程序的热门人选,Epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnecti转载 2013-10-28 22:41:10 · 512 阅读 · 0 评论 -
UNIX网络编程——shutdown 与 close 函数 的区别
假设server和client 已经建立了连接,server调用了close, 发送FIN 段给client(其实不一定会发送FIN段,后面再说),此时server不能再通过socket发送和接收数据,此时client调用read,如果接收到FIN 段会返回0,但client此时还是可以write 给server的,write调用只负责把数据交给TCP发送缓冲区就可以成功返回了,所以不会出错,而s转载 2013-11-02 12:04:40 · 869 阅读 · 0 评论