主机之间相互通信时,先经过3次握手,建立连接

web请求资源的方法有几种,GETHEADPOSTPUTDELETTRACEOPTIONSCONNECTIONS

比如用telnet访问本机

先启动httpd服务


  1. service httpd start 

笔者试的时候,出现了下面的情况

Web服务器一点通

这是因为selinux没有授予其访问权限,查看一下:


  1. getenforce 

结果如下图:

Web服务器一点通


  1. setenforce 0 #暂时禁用selinux,模拟实现对安全要求不高,所以可行,真正服务器调试不建议这么做 

Web服务器一点通


  1. telnet www.magedu.com 80 
  2. GET / HTTP/1.0           #资源   URL  版本号 
  3. Host: www.magedu.com     #指定主机 
  4.                          #此行代表一个回车符 

如果输入了第一条命令,不再输入或者输入的命令不完整,就会弹出如下界面

Web服务器一点通

其界面如下:

Web服务器一点通

Web服务器工作模型:

这些模型并非WEB原有的功能,而是调用了操作系统的功能,他是系统库提供的。

单进程/单线程

多进程/多线程

  prefork(多进程)worker(多线程)模型中有一个参数maxclients用来定义最大用户数;

Web服务器一点通

可以通过此命令来查看httpd的每个进程占用内存的情况ps axo pid,comm.,rss | grep httpd

一个进程响应多个请求

  请求:每个请求都会有一个状态

监控状态:

   基于事件的机制event

多进程响应N个请求(CPU优化时会用到)

preforkworkerevent三者综合起来成为MPM(多道处理机制)

进程切换Context Switch(CS):上下文切换。

I/O多路复用模型:

   preforkselect()

   poll

   epoll 很先进

在内存中,位于用户空间的创建新进程的进程叫master,被创建的新进程叫worker

所谓一个服务处于监听状态就意味着,在服务进程启动时,到TCP/IP协议栈上去申请占用一个套接字,TCP/IP协议栈经检查若发现此套接字没有被占用,则把两者关联起来并标记此套接字被占用,如果被占用则回应说被占用。这个服务进程一般是主进程。

作为系统管理员,必须要有几种标准进行选择,去选择比较高效的方式处理这些WEB服务器的请求。如果不知道,就测试!

如果在请求的时候,直接在由磁盘à内核空间à客户端,就会省一部分时间(由内核空间à用户空间à内核空间)。这种方式可以经过编辑配置文件的一个选项EnableSendfile这个选项来实现。


  1. #vim /etc/httpd/conf/httpd.conf 
  2. #EnableSendfile on