HTTP-----HyperText Transfer Protocol超文本传输协议

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HTTP-----HyperText Transfer Protocol超文本传输协议相关的知识,希望对你有一定的参考价值。

HTTP-----HyperText Transfer Protocol超文本传输协议


http/0.9:仅纯文本(超链接),ASCII

html:HyperText Mark Language

URI:Uniform Resource Idetnifier,统一资源标识符

统一:路径格式上的统一


URL:Uniform Resource Locator   统一资源定位符

protocol://Host:Port/path/to/file


HTTP方法:获取web资源/对象的方法

http/0.9: GET 

http/1.0: PUT, POST, DELETE, HEAD

http/1.0引入MIME机制


MIME:Multipurpose Internet Mail Extension,多用途互联网邮件扩展

将非文本数据在传输前重新编码为文本格式再传输,接收方能够用相反的方式将其还原成以前的格式,还能够调用相应的程序打开此文件

缓存机制

动态网页:

服务器端存储的文档非HTML格式,而是编程语言开发的脚本,脚本在接受参数后在服务器运行一次,运行完成后会生成HTML文档,把生成的文档发给客户端

包含静态内容(图片等)和动态内容

动态内容才需要运行


HTTP报文:请求报文、响应报文



HTTP请求报文语法:

<method><request-URL><version>

<headers>


<entity-body>


HTTP响应报文语法:

<version><status><reason-phrase>

<headers>


<entity-body>


状态代码:

1xx:纯信息

2xx:成功类信息

3xx:重写向类信息

301:永久重定向

302:临时重定向

304:not-modified,使用缓存的内容响应客户端

4xx:客户端错误类信息

5xx:服务器端错误类信息


请求报文:

GET / HTTP/1.1

Host: www.bj.com

Connection: keep-alive



响应报文:

HTTP/1.1  200  OK

X-Powerd=By: php/5.2.17

Vary: Accept-Encoding,Cookie,User-Agent

Cache-Control: max-age=3,must-revalidate

Content-Encoding: gzip

Content-Length: 6931


上面两个报文的第一行通常称为报文的"起始行(start line)";后面的标签格式称为报文首部域(Header field),每个首部域都由名称(name)和值(value)组成,中间用逗号分隔。另外,响应报文通常还有一个称作Body的信息主体,即响应给客户端的内容


web服务器的主要操作:

1、建立连接----接受或拒绝客户端连接请求

2、接收请求----通过网络读取HTTP请求报文

3、处理请求----解析请求报文并做出相应的动作

4、访问资源----访问请求报文中所请求的资源

5、构建响应----使用正确的商务部生成HTTP响应报文 

6、发送响应----向客户端发送生成的响应报文

7、记录日志----当已经完成的HTTP事务记录进日志文件


HTTP/1.1

增强了缓存机制的管理

长连接机制

超时时间

每个长连接请求文件个数的限制

web服务器响应多个请求的方式:


1、单进程/单线程机制

依次处理每个请求

2、多进程/多线程机制

每个请求生成子进程响应

3、一个进程响应多个请求

事件驱动机制

通知机制

4、多进程响应多个请求


软件介绍


客户端代理软件

IE, firefox, chroome, opera, safari

服务器端软件

httpd, nginx, lighttpd, IIS, thttpd, tengine

应用程序服务器

IIS, Tomcat(JSP,open source), Websphere(IBM,JSP,commodity), Weblogic(Oracle,JSP,commodity)

JBoss(redhat,JSP)

httpd安装及配置


ASF:Apache Software Foundation

web: httpd 

Tomcat

Hadoop

 

httpd:

Web Server, Open Source

2.4, 2.2, 2.0 

httpd特性:

事先创建进程

按需维持适当的进程

模块化设计,核心较小,各种功能都能通过模块添加;模块可以在运行时启用

支持运行配置,支持单独编译模块

支持多种虚拟主机的配置

基于IP的虚拟主机

基于端口的虚拟主机

基于域名的虚拟主机 

支持https协议(mod_ssl)

支持用户认证

支持基于IP或主机名的访问控制机制

支持每目录的访问控制

支持URL重写

RedHat(httpd):

rpm软件

源码编译

httpd:

/usr/sbin/httpd

Master process: httpd, root root 

Worker process: httpd, apache apache

/etc/init.d/httpd(script)

Port: 80/tcp, 443/tcp 

Workdir: /etc/httpd 

/etc/httpd/conf:配置文件目录 

主配置文件:httpd.conf

/etc/httpd/conf.d/*.conf 

/etc/httpd/modules:模块目录

/etc/httpd/logs---> /var/log/httpd: 日志目录

访问日志access_log, 错误日志error_log

/var/www/

html:静态页面路径

cgi-bin:提供动态内容的路径 

CGI:Common Gateway Interface 通用网关接口

让web服务器启动某应用程序解析动态页面的机制

开发动态网页的语言:

perl, python, java(Servlet JSP), php

FastCGI:

事先启动解析动态页面的进程(由一个单独的master process管理),当客户端请求动态页面时,由web process将请求交给一个空间的动态解析进程完成页面解析

此种方式静态页面的响应、动态页面的请求可以分别运行在不同的服务器

httpd安装及启动


# yum install -y httpd 

# /etc/init.d/httpd start

# netstat -tnlp | grep :80

tcp        0      0 :::80                       :::*                        LISTEN      2716/httpd   

       

# ps aux | grep httpd

root      2716  0.0  0.3  11676  3424 ?        Ss   23:47   0:00 /usr/sbin/httpd

apache    2719  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2720  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2721  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2722  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2723  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2724  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2725  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

apache    2726  0.0  0.2  11676  2124 ?        S    23:47   0:00 /usr/sbin/httpd

httpd配置文件:


# grep -i "section" /etc/httpd/conf/httpd.conf


### Section 1: Global Environment

### Section 2: ‘Main‘ server configuration

### Section 3: Virtual Hosts


directive value

指令不区分大小写

value区分大小写


1、显示系统版本、IP、软件版本相关信息

ServerTokens Prod


2、服务器根目录

ServerRoot "/etc/httpd"


3、PID文件

PidFile run/httpd.pid


4、TCP 3次握手第二次连接的超时时间

Timeout 60


5、长连接相关配置

KeepAlive Off

MaxKeepAliveRequests 100

KeepAliveTimeout 15



MPM: Multi Path Module 多处理模块

定义httpd响应多个用户请求的工作模型

mpm_winnt

prefork

多进程/多线程机制,预先生成进程

一个请求用一个进程响应

httpd 2.2,默认

worker

一个进程响应多个请求,一个进程使用多个线程响应多个请求

一个请求用一个线程响应

web服务启动多个进程,每个进程生成多个线程响应多个用户请求

event

一个进程同时处理多个请求

基于事件驱动模型

httpd 2.4,默认



显示httpd支持的模块 

# httpd -l

Compiled in modules:

  core.c

  prefork.c

  http_core.c

  mod_so.c



配置httpd使用worker模型

# vim /etc/sysconfig/httpd

 HTTPD=/usr/sbin/httpd.worker



6、prefork模型相关属性配置


<IfModule prefork.c>

StartServers       8             //启动8个空闲进程

MinSpareServers    5 //最少空闲进程,保证最少有5个空闲进程

MaxSpareServers   20 //最大空闲进程

ServerLimit      256 //为MaxClients指定上限值, 关闭httpd服务调整

MaxClients       256 //最多同时允许256个请求连接

MaxRequestsPerChild  4000 //每个子进程最多响应4000个请求

</IfModule>



7、worker模型相关属性配置


<IfModule worker.c>

StartServers         4 //默认启动4个进程

MaxClients         300

MinSpareThreads     25 //最少空闲线程

MaxSpareThreads     75 //最大空闲线程

ThreadsPerChild     25 //每个进程可生成25个线程

MaxRequestsPerChild  0

</IfModule>


8、指定监听地址及端口

Listen 80


9、装载模块

LoadModule proxy_balancer_module modules/mod_proxy_balancer.so


10、httpd子配置文件路径及名称

Include conf.d/*.conf


11、指定运行worker process进程的用户及用户组

User apache

Group apache







本文出自 “江湖笑笑生” 博客,请务必保留此出处http://hashlinux.blog.51cto.com/9647696/1760552

以上是关于HTTP-----HyperText Transfer Protocol超文本传输协议的主要内容,如果未能解决你的问题,请参考以下文章

http协议

初步了解HTTP

Http协议简介

HTTP协议的简单介绍

读《图解HTTP》总结--第一章

互联网通信