天天看点

进一步了解nginx工作原理

进一步了解nginx工作原理

问题:

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

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

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

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

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

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

7.nginx是什么?

8.简述nginx的工作流程。

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

解答:

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

进一步了解nginx工作原理

         DNS(Domain Name System,域名系统),因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过主机名,最终得到该主机名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。

         域名是为了方便记忆而专门建立的一套地址转换系统,要访问一台互联网上的服务器,最终还必须通过IP地址来实现,域名解析就是将域名重新转换为IP地址的过程。一个域名对应一个IP地址,一个IP地址可以对应多个域名;所以多个域名可以同时被解析到一个IP地址。域名解析需要由专门的域名解析服务器(DNS)来完成。

        解析过程,比如,一个域名为:***.com,如果要访问网站,就要进行解析,首先在域名注册商那里通过专门的DNS服务器解析到一个WEB服务器的一个固定IP上:211.214.1.***,然后,通过WEB服务器来接收这个域名,把***.com这个域名映射到这台服务器上。那么,输入***.com这个域名就可以实现访问网站内容了.即实现了域名解析的全过程;

        人们习惯记忆域名,但机器间互相只认IP地址,域名与IP地址之间是对应的,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,整个过程是自动进行的。

        域名解析协议(DNS)用来把便于人们记忆的主机域名和电子邮件地址映射为计算机易于识别的IP地址。DNS是一种c/s的结构,客户机就是用户用于查找一个名字对应的地址,而服务器通常用于为别人提供查询服务。

        步骤1是客户端向服务器发出DNS请求。步骤2是服务器向客户端回送IP响应。

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

进一步了解nginx工作原理

        TCP连接建立需要经过“三次握手”的过程:

        1)最初的客户端TCP进程处于“CLOSE”(关闭)状态。当客户端准备发起一次TCP连接,进入“SYN-SEND”状态时,它首先向处于“LISTEN”(收听)状态的服务器端TCP进程发送第一个“SYN”报文(控制位SYN=1).“SYN”报文包括源端口号和目的端口号,目的端口号表示客户端打算连接的服务器进程号,以及一些连接参数。

        2)服务器端在受到“SYN”报文之后,如果同意建立连接,则向客户端发送第二个“SYN+ACK”报文(控制位SYN=1,ACK=1).该报文表示对第一个“SYN”报文请求的确认,同时也给出了“端口”大小,这时服务器进入“SYN-RCVD”状态。

        3)在接收到"SYN+ACK"报文之后,客户端发送第三个“ACK”报文,表示对“SYN+ACK”报文的确认。这时客户端进入“ESTABLISHED”(已建立连接)状态。服务器端在接收到“ACK”报文之后也进入“ESTABLISHED”(已建立连接)状态。

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

        在建立连接最后一次“握手”时,客户端发送的数据捎带着http请求报文,服务器在给客户端的http响应报文中捎带着要浏览的数据。

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

         TCP协议是传输层协议,主要解决数据如何在网络中传输。而HTTP是应用层协议,主要解决如何包装数据。HTTP建立在TCP的基础上。

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

        当浏览器要从服务器中读取文档时使用get方法。get方法要求服务器将URL定位的资源放在应答报文的正文中,回送给浏览器。

        使用get方法读取路径为/usr/bin/imagel的图像。请求行给出了方法GET,URL,与HTTP协议版本号。报文头部有2行,给出了浏览器可以接受GIF与JPEG格式的图像。请求报文中没有正文。应答报文包括状态码和4行的报头。报头标识了日期,服务器,MIME版本号和文档长度:

请求:

        GET/usr/bin/image1  HTTP/1.1

         Accept:  image/gif

         Accept:  image/jpeg

应答:

        HTTP/1.1  200  ok

        Date: San,1-Feb-09  8:30:10  GMT

        Server:  nankai

        MIME-version:  1.0

        Content-length: 2048

             (文档内容)

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

         当浏览器要给服务器提供某些信息时可以使用POST方法。   

         使用POST方法向服务器发送数据。请求行给出了方法POST,URL与HTTP协议版本号。报文头部有4行。请求报文中给出了输入数据。应答报文包括状态码和4行的报头。被创建的CGI文档在应答报文的正文位置:

请求:

        POST/cgi-bin/doc.pl  HTTP/1.1

        Accept: */*

        Accept: image/gif

        Accept: image/jpeg

        Content-length:64

应答:

       HTTP/1.1  200  ok

       Data: San,1-Feb-09  8:30:10  GMT

       Server:nankai

        MIME-version: 1.0

        Content-length: 1048

                (文档的正文)

7.nginx是什么?

        Nginx(发音同engine x)是一款由俄罗斯程序员Igor Sysoev所开发轻量级的网页服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。起初是供俄国大型的门户网站及搜索引擎Rambler(俄语:Рамблер)使用。此软件BSD-like协议下发行,可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等操作系统中运行。

        是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。与旧版本(<=2.2)的Apache不同,nginx不采用每客户机一线程的设计模型,而是充分使用异步逻辑,削减了上下文调度开销,所以并发服务能力更强。整体采用模块化设计,有丰富的模块库和第三方模块库,配置灵活。 在Linux操作系统下,nginx使用epoll事件模型,得益于此,nginx在Linux操作系统下效率相当高。同时Nginx在OpenBSD或FreeBSD操作系统上采用类似于epoll的高效事件模型kqueue。

8.简述nginx的工作流程。

         当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。

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

        1):DNS解析

        2):端口:80

      3):nginx的工作原理图:

进一步了解nginx工作原理

参考:

深入理解Nginx:http://book.51cto.com/art/201303/386555.htm

继续阅读