服务器框架设计学习
Try1024
曾经沧海难为水
展开
-
(1) nginx整体结构、进程模型
一:nginx的整体结构(1.1)master进程和worker进程概览(父子关系)//启动nginx,看到了一个master进程,一个worker进程//ps -ef命令//第一列:UID,进程所属的用户id//第二列:进程ID(PID),用来唯一的标识一个进程//第三列:父进程ID(PPID)。 fork(),worker进程是被master进程通过fork...原创 2019-03-10 03:53:35 · 154 阅读 · 0 评论 -
(4.1)C/S, TCP/IP协议
一:客户端与服务器 //客户端:client,一般字母c表示 //服务器:server,一般字母s表示 ,所以c/s一般就是 :客户端/服务器 //客户端:就是一个程序, //服务器:也是 一个程序; //(1.1)解析一个浏览器访问网页的过程 //(1.2)客户端服务器角色规律总结//a)数据通讯总在两端进行,其中一端叫客户...原创 2019-03-11 00:01:49 · 491 阅读 · 0 评论 -
(4.2)TCP三次握手详析、telnet,wireshark示范
一:TCP连接的三次握手//tcp:可靠的,面向连接的协议//udp:不可靠的,无连接的协议//大家必须要懂的TCP的三次握手,只有TCP有三次握手【UDP没有】//(1.1)最大传输单元MTU//MTU(Maximum Transfer Unit):最大传输单元;//MTU:每个数据包包含的数据最多可以有多少个字节;1.5K...原创 2019-03-11 00:01:55 · 1002 阅读 · 0 评论 -
(4.3)TCP状态转换,TIME_WAIT详解,SO_REUSEADDR
一:TCP状态转换//同一个IP(INADDR_ANY),同一个端口SERV_PORT,只能被成功的bind()一次, //若再次bind()就会失败,并且显示:Address already in use//就好像一个班级里不能有两个人叫张三;//结论:相同IP地址的相同端口,只能被bind一次;第二次bind会失败;//介绍命令netstat:...原创 2019-03-11 00:02:02 · 332 阅读 · 0 评论 -
(4.4)listen()队列剖析、阻塞非阻塞、同步异步
一:listen()队列剖析 //listen():监听端口,用在 TCP连接中的服务器端 角色; //listen()函数调用格式: //int listen(int sockfd, int backlog); //要理解好backlog这个参数,我们需要先谈一谈 “监听套接字 队列”的话题;//(1.1)监听套接字的队列 //对...原创 2019-03-11 00:02:07 · 1973 阅读 · 1 评论 -
(4.5)监听端口实战、epoll介绍及原理详析
一:监听端口(1.1)开启监听端口二:epoll技术简介//(2.1)epoll概述 //(1)I/O多路复用:epoll就是一种典型的I/O多路复用技术:epoll技术的最大特点是支持高并发; //传统多路复用技术select,poll,在并发量达到1000-2000,性能就会明显下降; //epoll,kquene(freebsd)...原创 2019-03-12 14:20:28 · 1261 阅读 · 0 评论 -
(3.5)守护进程及信号处理实战
一:守护进程功能的实现//(1)拦截掉SIGHUP,那么终端窗口关闭,进程就不会跟着关闭//(2)守护进程,三章七节,一运行就在后台,不会占着终端。//创建守护进程ngx_daemon();//调用ngx_daemon()的时机: worker()子进程创建之前;//ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cm...原创 2019-03-11 00:01:42 · 310 阅读 · 0 评论 -
(3.4)信号,子进程实战,文件IO详谈
一:信号功能实战//signal():注册信号处理程序的函数;//商业软件中,不用signal(),而要用sigaction();二:nginx中创建worker子进程 //官方nginx ,一个master进程,创建了多个worker子进程; // master process ./nginx // worker process //(i)ngx_m...原创 2019-03-11 00:01:37 · 91 阅读 · 0 评论 -
(3.3)读日志打印实战,优化main函数调用顺序
一:基础设施之日志打印实战代码一//日志的重要性:供日后运行维护人员去查看、定位和解决问题;//新文件:ngx_printf.cxx以及ngx_log.cxx。//ngx_printf.cxx:放和打印格式相关的函数;//ngx_log.cxx:放和日志相关的函数;//ngx_log_stderr() :三个特殊文件描述符【三章七...原创 2019-03-11 00:01:29 · 194 阅读 · 0 评论 -
(2.1)终端和进程的关系
(1.1)终端与bash进程 //ps -ef | grep bash //pts(虚拟终端),每连接一个虚拟终端到乌班图linux操作系统, //就会出现 一个bash进程(shell[壳]),黑窗口,用于解释用户输入的命令 //bash = shell = 命令行解释器 //whereis bash(1.2)终端上的开启进程 //ps -...原创 2019-03-10 04:20:28 · 855 阅读 · 0 评论 -
(2.2)信号的概念,认识,处理动作
一:信号的基本概念 //进程之间的常用通信手段:发送信号,kill 第二章第二节讲过; //上节课讨论过 SIGHUP //信号 :通知(事情通知),用来通知某个进程发生了某一个事情; //事情,信号都是突发事件, 信号是异步发生的,信号也被称呼为“软件中断” //信号如何产生: //a)某个进程发送给另外一个进程或者发送给自己; //b)由内核(操作系统)发送给某个进程...原创 2019-03-10 05:03:43 · 248 阅读 · 0 评论 -
(2.3)Unix/Linux操作系统体系结构,信号编程初步
一:Unix/Linux操作系统体系结构//类Unix操作系统体系结构分为两个状态 (1)用户态,(2)内核态//a)操作系统/内核:用来控制计算机硬件资源,提供应用程序运行的环境//我们写的程序,他要么运行在用户态,要么运行在内核态。一般来讲运行在用户态; //当程序要执行 一些特殊代码的时候,程序就可能切换到内核态,这种切换由操作系统控制,不需要人为介入...原创 2019-03-10 05:12:24 · 267 阅读 · 0 评论 -
(2.4)信号编程进阶、sigprocmask范例
一:信号集//一个进程,必须能够记住 这个进程 当前阻塞了哪些信号//000000000000000000000//我们需要 “信号集 ”的这么一种数据类型(结构),能够把这60多个信号都表示下(都装下)。//0000000000,0000000000,0000000000,00,0000000000,0000000000,0000000000,0...原创 2019-03-10 05:21:11 · 308 阅读 · 0 评论 -
(2.5)fork函数详解、范例演示
一:fork()函数简单认识//创建进程;//进程的概念:一个可执行程序,执行起来就是一个进程,再执行起来一次,它就又是一个进程(多个进程可以共享同一个 可执行文件) //文雅说法:进程 定义为程序执行的一个实例;//在一个进程(程序)中,可以用fork()创建一个子进程,当该子进程创建时, //它从fork()指令的下一条(或者说...原创 2019-03-10 05:32:32 · 375 阅读 · 0 评论 -
(2.6)守护进程详解、范例演示
一:普通进程运行观察//ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'//a)进程有对应的终端,如果终端退出,那么对应的进程也就消失了;它的父进程是一个bash//b)终端被占住了,你输入各种命令这个终端都没有反应;二:守护进程基本概念//守护进程 一种长期运行的进程:这种...原创 2019-03-11 00:00:02 · 231 阅读 · 0 评论 -
(3.1)信号高级认识范例,服务器架构初步
一:信号高级认识范例//ps -eo pid,ppid,sid,tty,pgrp,comm,stat,cmd | grep -E 'bash|PID|nginx'//用kill 发送 USR1信号给进程//(1)执行信号处理函数被卡住了10秒,这个时候因为流程回不到main(),所以main中的语句无法得到执行;//(2)在触发SIGUSR1信号并因此sleep了...原创 2019-03-11 00:00:10 · 175 阅读 · 0 评论 -
(3.2)读配置文件、查泄漏、设置标题实战
一:基础设施之配置文件读取 //(1.1)前提内容和修改//使用配置文件,使我们的服务器程序有了极大的灵活性,是我们作为服务器程序开发者,必须要首先搞定的问题;//配置文件:文本文件,里边除了注释行之外不要用中文,只在配置文件中使用字母,数字下划线 //以#号开头的行作为注释行(注释行可以有中文)//我们这个框架(项目),第一个要解...原创 2019-03-11 00:00:18 · 187 阅读 · 0 评论