作业:web服务器访问流程图,看图回答问题。


作业题目:(由于原图太大,将其重画了一下,大概是这样,有不对的地方还望指正)


问题:  1.DNS解析是什么,简述步骤1,2。

             2.简述如何与服务器建立TCP连接。

             3.简述客户端与服务器传送数据。

             4.Http协议与TCP之间的关系。

             5.简述Http get请求过程,并举例。

             6.简述Http post请求过程,并举例。

             7.nginx是什么?

             8.简述nginx的工作流程。

             9.简单的将图中内容填充。



解答:


问题一:DNS解析是什么,简述步骤1,2。

DNS(domain name server),见名知意,DNS解析是指域名解析,即将网站的域名解析成相应的ip地址。就像电话簿一样,当你给某个人打电话时,直接找到那个人的名字拨出去就可以了,而不用记住他那长长的号码。

具体过程:如在客户端输入域名www.yammer.com敲回车后,客户端向本地ARP发出请求,本地ARP在缓存寻找是否存在域名与ip的映射,若有,则返回ip,否则继续向上一级请求,直到顶级域名服务器,若仍找不到相应的ip,则解析出错。

步骤1是客户端向服务器发出dns请求

步骤2是服务器向客户端回送ip响应

问题二:简述如何与服务器建立TCP连接。

TCP是可靠传输,需经过三次握手才能建立连接,即,请求-->确认-->确认的确认。

问题三:简述客户端与服务器传送数据。

首先是客户端向服务器请求tcp连接,经过一个RTT后,客户端发出http请求报文,服务器在给客户端的响应报文中捎带着要浏览的数据。

问题四:Http协议与TCP之间的关系。

HTTP使用面向连接的TCP作为运输层协议,保证了数据的可靠传输,但http本身是无连接的,无状态的。

问题五:简述Http get请求过程,并举例。

get请求用于从服务器上获取资源,是默认的请求方法,(若你在浏览器的地址栏里键入了一个URL,或单击了一个链接,那么你的请求将作为一个GET请求发送给服务器)。当http向服务器发送请求时,服务器在响应时带回要访问的数据。


HTTP请求消息包括:请求行,请求首部,有时还有请求主体。


请求行以请求方法名开始,后面是资源标识符,以及浏览器所使用的协议版本。

如:GET/index.html   HTTP/1.1


请求首部提供了服务器在处理请求的过程中可能需要的附加信息。


如:一个有效的HTTP请求消息示例:

GET/index.html    HTTP/1.1  (请求行)

HOST(请求首部):www.gefionsoftware.com(附加消息)

User-Agent:MoZilla/4.5 [en] (winNT:(I)

Accept:image/gif,image/jpeg,image/pjpeg,image/png,*/*

Accep-Langeuage:en

Accept-Charset :iso-8859-1,*,UTF-8

(……请求主体)

问题六:简述Http post请求过程,并举例。

应用消息与请求消息很相似,是http向服务器发送请求时捎带上了数据。它也包括三个部分一:状态行,应答首部,还有可能出现的应答主体。

如:

HTTP/1.1  200 OK(状态行)

Last-Modified(应答首部) : Mon,20 Dec 2001 23 :26 :42 GMT

Date:Tue,11 Jan 2002 20:53:12 GMT

Status:200

Content-Type: Text/html

Servlet-Engine:

Content-Length:59


<html>(应答主体)

……

</html>

问题七:nginx是什么?

nginx是一款轻量级的web服务器/反向代理服务器及电子邮件服务器,特点:占有内存少,并发能力强。


Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,用于URL匹配),而在这个location中所配置的每个指令将会启动不同的模块去完成相应的工作。


Nginx的模块从结构上分为核心模块、基础模块和第三方模块:


核心模块:HTTP模块、EVENT模块和MAIL模块


基础模块:HTTP Access模块、HTTP FastCGI模块、HTTP Proxy模块和HTTP Rewrite模块,


第三方模块:HTTP Upstream Request Hash模块、Notice模块和HTTP Access Key模块。


用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强大。


Nginx的模块从功能上分为如下三类。


Handlers(处理器模块)。此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers处理器模块一般只能有一个。


Filters (过滤器模块)。此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。


Proxies (代理类模块)。此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如FastCGI等进行交互,实现服务代理和负载均衡等功能。

问题八:简述nginx的工作流程。

当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。


Nginx的模块直接被编译进Nginx,因此属于静态编译方式。启动Nginx后,Nginx的模块被自动加载,不像Apache,首先将模块编译为一个so文件,然后在配置文件中指定是否进行加载。在解析配置文件时,Nginx的每个模块都有可能去处理某个请求,但是同一个处理请求只能由一个模块来完成。

问题九:简单的将图中内容填充。

(域名)服务器

端口:(80)

nginx的工作原理图:



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。