httpd简介



一、TCP及socket通信原理

1、Port number(IANA,互联网地址授权机构规定)

TCP:传输控制协议,面向连接的协议;通信前需要建立虚拟链路,结束后拆除链路。

UDP:User Datagran Protocol,无连接的协议。

0-1023:众所周知,永久的分配给固定的应用使用,特权端口(22/ssh,80/http)。

1024-41951:亦为注册端口,但要求并不是特别严格,分配给程序注册为某应用使用(11211/tcp,3306/tcp)

41952-65535:客户端程序随机使用的端口:动态端口,或私有端口;其范围的定义在文件中:(/proc/sys/net/ipv4/ip_local_port_range)。

2、Socker:IPC的一种实现,允许位于不同主机(甚至同一主机)上不同进程之间进行通信。

Socket API(封装了内核中的socket通信相关的系统调用)

(1)、根据传输层协议分类:

SOCK_STREAM:TCP套接字

SOCK_DGRAN:UDP套接字

SOCK_RAW:裸(raw)套接字

(2)、根据套接字所使用的地址格式,Socket Domain:

AF_INET:Address Family,IPv4的地址

AD_INET6:IPv6的地址

AF_UNIX:同一主机上不同进程之间通信时使用

(3)、套接字相关的系统调用:

Socket():创建一个套接字

bind():绑定

listen():监听

accept():接受请求

connect():请求连接建立

write():发送

read():接收

3、TCP协议的特性

建立连接:三次握手

将数据打包成段:校验和(CRC-32)

确认、重传以及超时

排序:逻辑序号

流量控制:滑动窗口算法

拥塞控制:慢启动和拥塞避免算法

4、TCP FSM:TCP Finite State Machine,有限状态机

CLOSED、LISTEN、SYN_SENT、SYN_RECV、ESTABLISHED、FIN_WAIT1、 CLOSE_WAIT、FIN_WAIT2、LAST_ACK

二、httpd协议及Web基本原理

1、http:hyper text transfer protocal,超文本传输协议

C/S架构:客户端-服务器,实现该协议的程序有httpd,nginx,lighttpd......

工作模式:一次httpd事务:请求<-->响应

http请求报文:http request

http响应报文:http response

2、http协议版本

1)HTTP/0.9:原型版本只能传输文本文件,仅有GET方法传输到客户端

2)HTTP/1.0:第一个广发使用的版本,支持MIME机制、cache支持、method(请求方法)

MIME:Multipurpose Internet Mail Extesion多用途互联网邮件扩展,支持非文本编码传输后再解码还原

3)HTTP/1.1:增强了缓存功能

4)HTTP/2.0:借鉴spdy对1.0多方面改进,大大提升性能

SPDY是Google开发的基于TCP的应用层协议,用以最小化网络延迟,提升网络速度,优化用户的网络使用体验。

SPDY对HTTP协议的增强。新协议的功能包括数据流的多路复用、请求优先级以及HTTP报头压缩。

3、Web资源:Web resources


1

2

3

4

5

6


静态资源(无需服务端做出额外处理):.jpg,.png,.gif,.html,txt,.js,.css,.mp3,avi

动态资源(服务端需要通过执行程序做出处理,发送给客户端的是程序的运行结果):.php,.jsp

注意:一个页面中展示的资源可能有多个;每个资源都需要单独请求;

资源的标识机制:URL,Uniform Resource Locator:用于描述服务器某特定资源的位置

Scheme://Server[:Port][/PATH/TO/SOME_RESOURCE]-->协议://服务[:端口]/资源路径

没有给资源路径打开的是默认页面,即主页,http默认端口为80

4、并发访问响应模型(Web I/O):


1

2

3

4

5

6


单进程I/0结构:启动一个进程处理用户请求,而且一次只处理一个;多个请求被串行响应;

多进程I/O结构:并行启动多个进程,每个进程响应一个请求;

复用I/O结构:一个进程响应N个请求:

多线程模型:一个进程生成N个线程,每个线程响应一个用户请求;

事件驱动:event-driven

复用的多进程I/0结构:启动多个(m)进程,每个进程响应n个请求;

5、一次完整的http请求处理过程


1

2

3

4

5

6

7

8

9

10

11


(1)、建立或处理连接:接收请求或拒绝请求;

(2)、接收请求:接收来自于网络的请求报文中对某资源的一次请求的过程;

(3)、处理请求:分析请求报文的http请求报文首部进行解析,获取客户端请求的资源及请求方法等相关信息

   请求报文首部的格式:

        <method><URL><VERSION>

        HEADERS:(name:value)

        <request body>

(4)、访问资源:获取请求报文中请求的资源,默认在/var/www/html路径下;

(5)、构建响应报文

(6)、发送响应报文

(7)、记录日志

三、httpd服务器程序

1、httpd:apache纯粹的静态服务器

版本:1.3、2.0、2.2、2.4。centos6默认使用2.2;centos7默认使用2.4

a patchy server(一个充满补丁的服务器)

ASF:apache software foundation(Apache软件基金会)最早的项目,官方站点:httpd.apache.com

2、httpd的特性

高度模块化:core + modules

DSO:Dynamic Shared Object

MPM:Multipath Processing Modules

profork:多进程模型,每个进程响应一个请求:

一个主线程:复制生成n个子进程,子进程也称为工作进程,每个子进程处理一个用户请求;即便没有用户请求,也会预先生成多个空闲进程,随时等待请求到达:最大不会超过1024个。

worker:事件驱动模型,每个线程响应n个请求;

一个主进程,生成m个子进程,每个子进程负责生成多个线程,每个线程响应一个请求;

m进程,n线程:m * n

event:事件驱动模型,每个线程响应n个请求;

一个主进程,生成m个子进程,每个子进程直接响应n个请求    m * n

3、httpd的功能特性


1

2

3

4

5

6

7


支持虚拟主机:IP、Port、FQDN

支持CGI:Common Gateway Interface,通用网关接口;

支持反向代理

支持负载均衡

支持路径别名

具有丰富的用户认证机制:basic基本认证、digest摘要认证

支持第三方模块

4、httpd的请求方法


1

2

3

4

5

6

7

8


GET:请求获取一个资源,需要服务器发送

HEAD:跟GET近似,但其不需要服务响应请求的资源,而返回响应头部

POST:基于HTML表单向服务器提交数据,服务器通常需要存储此数据(位置:通常为关系型数据库)

PUT:与GET相反,向服务器发送资源;服务器通常需要存储此资源(位置:通常为文件系统)

DELETE:删除URL指向的资源

OPTIONS:探测服务器端对请求的URL所支持使用的请求方法

TRACE:跟一次请求中间所经过的代理服务器、防火墙或网关等

#注意:方法严格区分大小写

5、http协议首部

1)、通用首部


1

2

3

4


Connection:定义C/S之间关于请求、响应的有关选项

Connection:keep-alive

Cache-Control:缓存控制

Via:显示了报文经过的中间节点

2)、请求首部


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16


Client-IP:客户端IP

Host:请求的主机

Referer:指明了请求当前资源原始资源的URL

User-Agent:用户代理

Accept首部:

Accept:指明服务器能发送的媒体类型

Accept-Charset:支持使用的字符集

Accept-Encoding:支持使用的编码方式

Accept-Language:支持使用语言

条件是请求:

Expect:告诉服务器能够发送哪些媒体类型

If-Modified-Since:是否在指定时间内修改过此资源

If-None-Match:如果提供的实体标记与当前文档的实体标记不符,就获取此文档

跟安全相关的请求:

Authorization:客户端提交给服务器的认证数据,如账号和密码

Cookie:客户端发送给服务器身份标识

3)、实体首部


1

2

3

4

5

6

7

8

9

10

11

12

13


Location: 资源的新位置

Allow: 允许对此资源使用的请求方法

内容相关的首部:

Content-Encoding: 支持编码

Content-Language:支持语言

Content-Length:文本长度

Content-Location:资源所在位置

Content-Type:主体对象类型

Content-Range:在整个资源中此实体表示的字节范围

缓存相关:

ETag: 实体标签

Expires: 过期期限

Last-Modified: 上次修改时间

4)、响应首部


1

2

3

4

5

6

7

8

9

10

11

12

13


Date:消息产生的时间

Age: 响应持续时间

Server: 向客户端说明自己的程序名称和版本

ETage:不透明验证者

Location:URL备用的位置

Content-Length:实体的长度

Content-Tyep:实体的媒体类型

协商首部:

ary: 首部列表,服务器会根据列表中的内容挑一个最适用的版本发送给客户端

Accept-Ranges: 对当前资源来讲,服务器所能够接受的范围类型

跟安全相关:

WWW-Authentication:质询,即要求客户提供帐号和密码

Set-Cookie:服务器端在某客户端第一次请求时发送令牌

6、http状态码


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17


1XX:信息性状态码

2XX:成功状态码

   200:OK,客户端请求成功

   201:CREATED,请求已被实现

3XX:重定向类的状态码

   301:Moved Permanently,永久重定向

   302:Found,临时重定向,会在响应报文中使用“Location:新位置”

   304:Not Modified,条件是请求中使用

4XX:客户端类错误

   403:Forbidden,请求被服务器拒绝

   404:Not Found,服务器无法找到请求的URL

   405:Method Not Allowed,不允许使用此方法请求相应的URL

5XX:服务器类错误

   500:Internal Server Error,服务器内部错误

   502:Bad Gateway,代理服务器从上游服务器收到一条伪响应

   503:Service Unavailbale,服务暂时不可用

   505:HTTP Version Not Supported,服务器不支持

时间: 2024-12-16 11:35:00

httpd简介的相关文章

Httpd简介和基本配置

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器软件,可以在大多数操作系统中运行,由于其跨平台和安全性.被广泛使用,是最流行的Web服务器软件之一. 官网:http://httpd.apache.org/ 一.httpd简介: 常见Web服务器: Web Server:Httpd(ASF),Nginx,Lighttpd,Gws(google): app server:tomcat(ASF),Jetty,Resin,Web Logic(o

web service :httpd简介

一.TCP及socket通信原理详解 二.http协议及web服务原理 三.http核心配置详解 四.http虚拟主机 一.TCP及socket通信原理 1.Port number(IANA,互联网地址授权机构规定)     TCP:传输控制协议,面向连接的协议:通信前需要建立虚拟链路,结束后拆除链路.     UDP:User Datagran Protocol,无连接的协议.     0-1023:众所周知,永久的分配给固定的应用使用,特权端口(22/ssh,80/http).     10

第十三章 httpd详解

13.1 httpd简介 httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行. 13.2 httpd版本 本文主要介绍httpd的两大版本,httpd-2.2和httpd-2.4. CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包,而CentOS7默认提供的是httpd-2.

Linux详细搭建httpd网站搭建服务(阿帕奇)

1.httpd简介当今主流的开源Web服务器软件有httpd(Apache),lighttpd,nginx,thttpd等,而httpd是迄今为止使用量多的web服务器,据统计目前httpd的全球占有量是47%左右,虽然有所下降但是使用两仍然是最多的,统计web服务器使用率的网站是:http://news.netcraft.com/httpd工作的原理:httpd是Apache超文本传输协议(HTTP)服务器的主程序,被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池.通常h

httpd安装与配置(编译安装)

httpd简介 httpd是Apache超文本传输协议(HTTP)服务器的主程序.被设计为一个独立运行的后台进程,它会建立一个处理请求的子进程或线程的池. 通常,httpd不应该被直接调用,而应该在类Unix系统中由apachectl调用,在Windows中作为服务运行. httpd版本 主要介绍httpd的两大版本,httpd-2.2和httpd-2.4. CentOS6系列的版本默认提供的是httpd-2.2版本的rpm包 CentOS7系列的版本默认提供的是httpd-2.4版本的rpm包

Linux源码安装httpd:Centos7

一.httpd 简介目前CENTOS7默认安装是HTTPD2.4,但是CENTOS6上默认是安装HTTPD2.2,CENTOS6如果要安装HTTPD2.4,需要通过编译安装实现,一般情况下,centOS7默认是安装httpd2.4,若自己编译特殊的模块,需要源码编译安装.httpd2.4源码在 http://httpd.apache.org 下载.源码编译的优势:1)自定义软件功能:2)优化编译参数,提高性能:3)解决不必要的软件间依赖:4)方便清理与卸载.二.httpd的版本httpd-1.3

AWStats 日志分析系统(含源码包)

前言 在上一篇文章中写了关于httpd的一些简介.配置.那么我们应该知道,HTTP服务器的访问量非常庞大,在它的访问日志文件access_log 中,记录了很多很多客户的访问信息,维护的管理人员会通过分析这些信息,可以及时的了解Web的访问情况,比如每天或特定时间段的访问IP数量.点击量大的页面.那么就是因为访问量太多,信息量太大,所以导致管理员不方便与管理,分析.AWStats日志分析系统就诞生,下面介绍一下AWStats分析系统 有兴趣的朋友可以看看上一篇的httpd简介与配置. AWSta

Nginx为什么比Apache Httpd高效:原理篇

一.进程.线程? 进程是具有一定独立功能的,在计算机中已经运行的程序的实体.在早期系统中(如linux 2.4以前),进程是基本运作单位,在支持线程的系统中(如windows,linux2.6)中,线程才是基本的运作单位,而进程只是线程的容器.程序 本身只是指令.数据及其组织形式的描述,进程才是程序(那些指令和数据)的真正运行实例.若干进程有可能与同一个程序相关系,且每个进程皆可以同步(循 序)或异步(平行)的方式独立运行.现代计算机系统可在同一段时间内以进程的形式将多个程序加载到存储器中,并借

由浅入深学习Apache httpd原理与配置

一.apache简介: Apache HTTPD又可以简称为httpd或者Apache,它是Internet使用最广泛的web服务器之一,使用Apache提供的web服务器是由守护进程httpd,通过http协议进行文本传输,默认使用80端口的明文传输方式,当然,后来,为了保证数据的安全和可靠性,又添加了443的加密传输的方式,Apache提供的服务器又被称为:补丁服务器,原因很简单,它是一款高度模块化的软件,想要给它添加相应的功能只需添加相应的模块,让其Apache主程序加载相应的模块,不需要