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


wKioL1MMDN2yk27vAAE_1yVEN-0089.jpg

问题:  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.yammar.com域名,操作系统会先检查自己本地的hosts文件是否有这个网址映射,如果有,就先调用这个IP地址映射,完成域名解析。若没有 ,则查找本地DNS解析器缓存,是否有这个网址映射关系,如果有,直接返回,完成域名解析。 如果没有相应的网址映射关系,则会查找本地服务器,即TCP/ip参数中设置的首选DNS服务器。此服务器收到查询时,如果要查询的域名,包含在本地配置区域资源中,则返回解析结果给客户机,完成域名解析。 如果仍没找到,则根据本地DNS服务器的设置(是否设置转发器)进行查询,如果未用转发模式,本地DNS就把请求发至13台根DNS,根DNS服务器收到请求后会判断这个域名(.com)是谁来授权管理,并会返回一个负责该顶级域名服务器的一个IP。本地DNS服务器收到IP信息后,将会联系负责.com域的这台服务器。这台负责.com域的服务器收到请求后,如果自己无法解析,它就会找一个管理.com域的下一级DNS服务器地址(qq.com)给本地DNS服务器。当本地DNS服务器收到这个地址后,就会找qq.com域服务器,重复上面的动作,进行查询,直至找到www.yammar.com主机。如果用的是转发模式,此DNS服务器就会把请求转发至上一级DNS服务器,由上一级服务器进行解析,上一级服务器如果不能解析,或找根DNS或把转请求转至上上级,以此循环。不管怎样,最后都是把结果返回给本地DNS服务器,由此DNS服务器再返回给客户机。

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

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

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

TCP是可靠传输,需经过三次握手才能建立连接,即,客户端向服务器发送请求,服务器收到请求后给客户端回复一个确认,客户端收到确认后再给服务器一个确认的确认,到此完成三次握手,建立了TCP连接。

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

首先是客户端向服务器请求tcp连接,服务器给客户端回复确认后,客户端在给服务器确认的确认时捎带着http请求报文,服务器在给客户端的http响应报文中捎带着要浏览的数据。

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

HTTP协议是建立在TCP协议之上的一种应用。

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

get请求用于从服务器上获取资源,是默认的请求方法,(若你在浏览器的地址栏里键入了一个URL,或单击了一个链接,那么你的请求将作为一个GET请求发送给服务器)。当客户端向服务器发送http请求时可以捎带上要请求的数据,服务器在响应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:p_w_picpath/gif,p_w_picpath/jpeg,p_w_picpath/pjpeg,p_w_picpath/png,*/*

Accep-Langeuage:en

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

(……请求主体)

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

post消息与get消息很相似,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服务器,可运行在Linux、FreeBSD、Solaris、AIX、Mac OS、Windows等操作系统上。相比Apache等,占有内存少,并发能力强,安装简单,bugs少。

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

Nginx的模块从结构上分为核心模块、基础模块和第三方模块。用户根据自己的需要开发的模块都属于第三方模块。

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

启动Nginx后,Nginx的模块被自动加载,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个本地块中,在本地块中所配置的各个指令则会启动不同的模块去完成工作 。

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

(域名)服务器

端口:(80)

nginx的工作原理图:

wKioL1MMIRHxMd9VAAEH8GuOUxk800.jpg