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