关于我们

质量为本、客户为根、勇于拼搏、务实创新

< 返回新闻公共列表

网络服务器对超文本传输协议请求的处理

发布时间:2021-04-19 16:17:14

一.问题

解释网络服务器如何处理超文本传输协议事务




第二,网络服务器

网络服务器处理HTTP请求并提供响应。网络服务器请求的七个步骤:




1)接受客户端连接


2)接收请求消息


3)处理请求


4)资源映射和访问


5)建立回应


6)发送回复


7)记录日志




1.接受客户端连接




1)处理新连接


当客户端请求到网络服务器的TCP连接时,网络服务器将建立连接,确定哪个客户端是连接的另一端,并从TCP连接中解析IP地址。一旦新连接建立并被接受,服务器会将新连接添加到其现有的Web服务器连接列表中,并准备好监控连接上的数据传输。网络服务器可以随意拒绝或关闭任何连接。一些网络服务器关闭连接,因为客户端的IP地址或主机名未经验证,或者因为它是已知的恶意客户端。还可以使用其他技术来识别网络服务器。




2)客户端主机名识别


您可以将大多数网络服务器配置为“反向域名系统”,将客户端IP地址转换为客户端主机名。网络服务器可以使用客户端主机名进行详细的访问控制和日志记录。需要注意的是,主机名查找可能需要很长时间,这会降低Web事务的速度。许多大容量的网络服务器禁止主机名解析,或者只允许解析特定的内容。




您可以使用主机名称查找配置指令来启用Apache的主机查找功能。比如只开启HTML和CGI资源的主机名解析功能。


主机名查找关闭


主机名查找在




3)通过身份确定客户用户


服务器可以找到通过ident协议发起HTTP连接的用户名。该信息对于网络服务器日志记录特别有用。流行的通用日志格式的第二个字段包含每个HTTP请求的识别用户名。




1)客户端打开一个HTTP连接


2)服务器打开它自己到客户端识别服务的端口113的连接


3)服务器发送一个简单的请求,询问新连接对应的用户名,解析来自客户端的包含用户名的响应




Apache的身份检查指令告诉Apache网络服务器使用身份搜索功能。如果识别信息不可用,Apache将用连字符(-)填充识别日志字段。如果识别信息不可用,第二个字段通常是使用常规日志格式的日志文件中的连字符。




2.接收请求消息


当数据到达连接时,网络服务器将从网络连接中读取数据,并解析请求消息的内容。




1)解析请求消息时网络服务器的工作


1.解析请求行,找到用空格分隔的请求方法、指定的资源标识符(URI)和版本号,并将CRLF序列作为行尾;


2.阅读以CRLF结尾的邮件标题;


3.检测到以CRLF结尾并标记报头结尾的空行;


4.阅读请求正文




2)消息的内部表示




3.连接输入/输出处理结构


高性能Web服务器可以同时支持数千个连接,每个客户端都打开了一个或多个到服务器的连接。不同的网络服务器以不同的方式服务请求。




单线程Web服务器:单线程Web服务器一次只处理一个请求,直到完成。一个事务完成后,处理下一个连接。


多进程多线程Web服务器:多进程多线程Web服务器使用多个进程或更高效的线程同时处理请求。


用于多路复用I/O的服务器:在多路复用结构中,应该同时监控所有连接上的活动。当连接状态改变时,连接被处理。处理后,连接返回到打开的连接列表,等待下一次状态更改。只有当有事情要做时才会处理连接,等待空闲连接时线程和进程不会绑定。


复用多线程Web服务器:结合多线程和复用功能,利用计算机的多个CPU。多个线程(通常是一个物理处理器)中的每一个都在观察开放连接,并在每个连接(或开放连接的子集)上执行任务。




3.处理请求




当网络服务器收到请求时,它根据方法、资源、头和可选的正文来处理请求。




4.资源的映射和访问




1)docroot(文档根目录)




在网络服务器的文件系统中,有一个专用于存储网络内容的目录,称为文档根(document root,或docroot)。当一个Web服务器的根目录是/usr/local/httpd/files,并且有一个/special/s.gif的请求到达时,他的访问权限如下图所示




在Apache中,在配置文件httpd.conf中添加DocumentRoot行来设置文档的根目录


document root/usr/local/httpd/files



2)虚拟托管文档根




虚拟托管Web服务器在同一台Web服务器上提供多个网站,每个网站在服务器上都有自己的文档根目录。虚拟托管网络服务器根据URI或主机头的IP或主机名来标识要使用的正确文档根目录。这样,及时请求的URIs是相同的,并且托管在同一个网络服务器上的两个网站可以有完全不同的记忆。




当请求进来时,获取服务器的/doc/aaa/index.html


b当请求进来时,获取服务器的/doc/bbb/index.html




在Apache中,它可以配置如下:



服务器名www.aaa.com

DocumentRoot /doc/aaa

transfer log/logs/AAA . access _ log

ErrorLog /1ogs/aaa.error_log




服务器名www.bbb.com

DocumentRoot /doc/bbb

transfer log/logs/BBB . access _ log

ErrorLog /1ogs/bbb.error_log




3)用户的主目录docroot




当Docroot提供一个私有网站时,它通常以斜杠和波浪符号(/~)开头,例如




收到请求时,获取服务器的/home/mary/index.html


当请求进来时,获取服务器的/home/ken/index.html




5.建立回应


一旦网络服务器识别了资源,它就执行请求方法中描述的操作,并返回响应消息。响应消息包含状态代码、响应头和响应体(如果生成)。




1)响应主题


如果事务生成响应正文,内容将在响应消息中发回。如果有响应主题,响应消息通常包括:


1)描述响应主体的MIME类型的内容类型报头;


描述响应主体长度的内容长度报头;


c)实际消息的主题内容




2)MIME类型


网络服务器负责确定响应正文的MIME类型。




a)根据扩展名确定MIME类型


网络服务器可以使用文件扩展名来描述MIME类型。网络服务器扫描包含每个资源的所有扩展名的MIME类型文件,以确定MIME类型。网络服务器使用MIME类型文件来设置资源输出的内容类型头。




b)魔法分类


Apache Web服务器扫描每个资源的内容,并将其与已知的模式表(魔法文件)进行匹配,以确定每个文件的MIME类型。




c)显示分类


网络服务器被配置为强制特定文件或目录内容具有MIME类型,而不管文件扩展名和内容如何。




d)类型谈判


通过配置Web服务器,它可以通过与用户协商来决定使用哪种格式和相关的MIME类型。




3)重定向


网络服务器有时会返回重定向响应,而不是成功的消息。网络服务器可以将浏览器重定向到另一个地方来执行请求。重定向响应码是3XX系列。位置响应头包含新地址的网址或内容的首选地址。




a)永久删除的资源


资源可能已被移动到新位置或用新的网址重命名。网络服务器可以告诉客户端资源已经被重命名,这样客户端就可以在从新地址获取资源之前更新书签等信息。状态代码301永久移动用于这种重定向。




b)临时删除的资源


资源已被临时移动或重命名。服务器可能希望将客户端重定向到新位置。但是因为重命名是暂时的,所以服务器希望客户端以后可以返回使用旧的URL,不要更新书签。参见其他状态代码303和临时重定向状态代码307用于这种重定向。




C)URL增强


服务器通常用重定向来重写URL,重定向常用于嵌入上下文。当请求到达时,服务器将生成一个包含嵌入状态信息的新网址,并将用户重定向到这个新网址。客户端将遵循此重定向信息并重新发起请求,但此请求将包含一个具有增强状态的完整URL。参见其他状态代码303和临时重定向状态代码307用于这种重定向。


负载平衡


过载的服务器接收请求,服务器可以将客户端重定向到负载较小的服务器。参见其他状态代码303和临时重定向状态代码307用于这种重定向。


e)服务器关联


Web服务器上可能有一些用户的本地信息,服务器可以将客户端重定向到包含该客户端信息的服务器。参见其他状态代码303和临时重定向状态代码307用于这种重定向。


f)规范目录名


当客户端请求的URL是不带尾随斜杠的目录名时,大多数Web服务器会将客户端重定向到带斜杠的URL,这样相对链接才能正常工作。




6.发送回复


Web服务器通过连接发送数据。发送数据可能与接收数据一样,与客户端有多个连接。有些是空闲的,有些是向服务器发送数据,有些是向客户端发送响应数据。为了记录连接状态,服务器还需要特别注意持久连接的处理。对于非持久连接,服务器应该在发送完整个消息后关闭自己的连接。




7.记录日志


当事务结束时,网络服务器将在日志文件中添加一个条目来描述执行的事务。



/template/Home/Zkeys/PC/Static