Linux高性能服务器编程
文章平均质量分 96
从网络协议、服务器编程核心要素、原理机制、工具框架等多角度全面阐释编写高性能Linux服务器应用的方法、技巧和思想。
TCP/IP协议详解,三次握手,四次挥手
阻塞与非阻塞,同步与异步,以及几种常见的服务器模型
CHENG Jian
天将降大任于是人也,必先苦其心志,劳其筋骨,饿其体肤,空乏其身,行拂乱其所为,所以动心忍性,曾益其所不能。
展开
-
Linux下套接字详解(补充)--OSI七层与TCP/IP五层网络架构详解
OSI七层模型OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI是Open System Interconnect的缩写,意为开放式系统互联。OSI七层参考模型的各个层次的划分遵循下列原则:同一层中的各网络节点都有相同的层次结构,具有同样的功能。同一节点内相邻层之间通过接口(可以是逻辑接口)进行通信。七层结构中的每一层使用下一层提供的服务,并且向其上层提原创 2016-03-11 21:42:33 · 4200 阅读 · 2 评论 -
Linux下套接字详解(补充)---- TCP协议中的三次握手和四次挥手(图解)
转载自 TCP协议中的三次握手和四次挥手(图解) 其他写的比较好的 简析TCP的三次握手与四次分手 TCP的三次握手(建立连接)和四次挥手(关闭连接) TCP协议三次握手过程分析 TCP三次握手详解及释放连接过程 TCP/IP 相关知识点与面试题集 TCP/IP详解学习笔记(13)– TCP连接的建立与终止序号:Seq序号,占3转载 2016-03-08 15:56:45 · 4264 阅读 · 0 评论 -
Linux下套接字详解(十)---epoll模式下的IO多路复用服务器
epoll模型简介epoll可是当前在Linux下开发大规模并发网络程序的热门人选,epoll 在Linux2.6内核中正式引入,和select相似,其实都I/O多路复用技术而已,并没有什么神秘的。其实在Linux下设计并发网络程序,向来不缺少方法,比如典型的Apache模型(Process Per Connection,简称PPC),TPC(Thread PerConnection)模型,以及se原创 2016-03-25 15:10:54 · 7658 阅读 · 3 评论 -
Linux下套接字详解(九)---poll模式下的IO多路复用服务器
参照 poll调用深入解析-从poll的实现来讲poll多路复用模型,很有深度poll多路复用poll的机制与select类似,与select在本质上没有多大差别,管理多个描述符也是进行轮询,根据描述符的状态进行处理,但是poll没有最大文件描述符数量的限制。poll和select同样存在一个缺点就是,包含大量文件描述符的数组被整体复制于用户态和内核的地址空间之间,而不论这些文件描述原创 2016-03-25 13:41:37 · 5617 阅读 · 0 评论 -
Linux下套接字详解(八)----select模式下服务器(非阻塞,单进程+多进程+多线程)
前言首先让我们回顾一下子我们之前都讲了那些最开始我们将了一下子Linux下套接字详解(一)—-TCP/UDP的区别与联系其中简要提到了三次握手与四次挥手,但是不是很详尽,于是我转载了一篇 Linux下套接字详解(补充)—- TCP协议中的三次握手和四次挥手(图解)然后在第一篇博文中,我们讲解了socket的API接口,详情请见Linux下套接字详解(二)—-套接字Socket好了现在我们有了基础了,原创 2016-03-08 21:51:07 · 4623 阅读 · 0 评论 -
Linux下套接字详解(七)----线程池accept处理高并发connect
前言服务器在调用listen和accept后,就会阻塞在accept函数上,accpet函数返回后循环调用accept函数等待客户的TCP连接。 我们知道服务器段listen套接字能处理的连接数与监听队列的大小有关,如果这时候又大量的用户并发发起connec连接,那么在listen有队列上限(最大可接受TCP的连接数)的情况下,有多少个connect会成功了。试验证明,当连接数远远高于listen原创 2016-03-08 18:15:18 · 8795 阅读 · 1 评论 -
Linux下套接字详解(六)----基于pthread的多线程的TCP套接字(阻塞/同步/并发)
上节我们实现了一个简单的多进程的服务器程序,这节,我们服务器的框架不做修改,只是将其修改为一个多线程的服务器程序。直接上代码server#include <stdio.h>#include <stdlib.h>#include <string.h>#include <strings.h>#include <errno.h>#include <netinet/in.h>#include原创 2016-03-03 21:41:27 · 4366 阅读 · 0 评论 -
Linux下套接字详解(五)----基于fork多进程的TCP套接字(阻塞/同步/并发)
简介一个简单的改进方案是在服务器端使用多线程(或多进程)。多线程(或多进程)的目的是让每个连接都拥有独立的线程(或进程),这样任何一个连接的阻塞都不会影响其他的连接。具体使用多进程还是多线程,并没有一个特定的模式。传统意义上,进程的开销要远远大于线程,所以如果需要同时为较多的客户机提供服务,则不推荐使用多进程;如果单个服务执行体需要消耗较多的CPU资源,譬如需要进行大规模或长时间的数据运算或文件访问原创 2016-01-31 16:44:17 · 5219 阅读 · 0 评论 -
Linux下套接字详解(四)----简单的TCP套接字应用(迭代型)
前面我们已经将了TCP/UDP的基本知识,还说了并发服务器与迭代服务器的区别,我们大致了解大多数TCP服务器是并发的,大多数UDP服务器是迭代的 ,即我们在进行数据传送的时候,往往使用服务器与客户但之间无连接的UDP报文,但是在用户需要上传下载文件时,就会在客户端和服务器之间建立一条TCP连接,进行文件的传送 那么我们下面就来实现一个简单的TCP服务器。TCP套接字编程模型图我们首先看一下TCP客原创 2015-06-07 21:21:31 · 5554 阅读 · 4 评论 -
Linux下套接字详解(三)----几种套接字I/O模型
参考: 网络编程–IO模型示例 几种服务器端IO模型的简单介绍及实现 网络编程–IO模型示例背景知识阻塞和非阻塞对于一个套接字的 I/O通信,它会涉及到两个系统对象,一个是调用这个IO的进程或者线程,另一个就是系统内核。比如当一个读操作发生时,它会经历两个阶段: ①等待数据准备 (Waiting for the data to be ready) ②将数据从内核拷贝到原创 2016-01-31 16:30:30 · 9898 阅读 · 1 评论 -
Linux下套接字详解(二)----套接字Socket
在前面我们讲了TCP/IP、TCP和UDP的一些基本知识,但是协议只有一套,而我们系统多个TCP连接或多个应用程序进程必须通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字(Socket)的接口。套接口可以说是网络编程中一个非常重要的概念,linux以文件的形式实现套接口,与套接口相应的文件属于sockfs特殊文件原创 2015-06-02 19:59:23 · 21473 阅读 · 0 评论 -
Linux下套接字详解(一)----TCP/UDP的区别与联系
TCP/IP简介TCP/IP协议叫做传输控制/网际协议,又叫网络通信协议TCP/IP虽然叫传输控制协议(TCP)和网际协议(IP),但是实际上是一组协议,包含ICMP, RIP, TELENET, FTP, SMTP, ARP, TFTP等。从协议分层模型方面来讲,TCP/IP协议集包括应用层,传输层,网络层,网络访问层。 其中应用层包括: 协议 名称 描述 HTTP 超文本传输原创 2015-05-29 21:22:45 · 7983 阅读 · 1 评论