进一步了解nginx工作原理

转载 2015年11月21日 15:32:42


问题:
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。

         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连接。


        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协议下发行,可以在UNIXGNU/LinuxBSDMac OS XSolaris,以及Microsoft Windows等操作系统中运行。

        是一款面向性能设计的HTTP服务器,相较于Apachelighttpd具有占有内存少,稳定性高等优势。与旧版本(<=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的工作原理图:

相关文章推荐

基于libuv的TCP设计

本人一直在寻找一个跨平台的网络库,boost与ACE比较庞大,不考虑。对比了libevent,libev,libuv后,最终选择了libuv.可libuv文档少,例子也简单,对于tcp只有个echo-...

nginx+tomcat绑定域名配置记录

记录一下用nginx做反向代理,tomcat为web容器的域名绑定过程。 首先,当然是需要在域名管理器中配置域名指向自己的服务器IP(当然,域名都没有的还说个毛!) 然后就是配置nginx了, n...

Nginx源码分析:3张图看懂启动及进程工作原理

图一:nginx 启动及内存申请过程分析 任何程序都离不开启动和配置解析。ngx 的代码离不开 ngx_cycle_s 和 ngx_pool_s 这两个核心数据结构,所以我们在启动之前先来分析下...

Nginx工作原理和优化、漏洞

http://blog.csdn.net/hguisu/article/details/8930668  转自  NGINX以高性能的负载均衡器,缓存,和web服务器闻名,驱动了全球超过 4...

Nginx工作原理和优化

1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(...

Nginx工作原理和优化、漏洞。

1.  Nginx的模块与工作原理 Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(loc...
  • hguisu
  • hguisu
  • 2013年05月16日 11:04
  • 116955

Nginx的模块与工作原理

Nginx由内核和模块组成,其中,内核的设计非常微小和简洁,完成的工作也非常简单,仅仅通过查找配置文件将客户端请求映射到一个location block(location是Nginx配置中的一个指令,...

Nginx之(四)工作原理

众所周知,nginx性能高,而nginx的高性能与其架构是分不开的4.1 进程模型Nginx在启动后,会有一个master进程和多个worker进程。master进程主要用来管理worker进程,包含...

Nginx学习笔记3—FastCGI与CGI解释器的区别,及其工作原理

一、FastCGI是什么:是一个可伸缩、高速的在web server和脚本语言间通迅的接口   CGI工作原理:每当客户请求CGI的时候,WEB服务器就请求操作系统生成一个新的CGI解释器进程(如p...

Nginx Proxy buffer 工作原理

一直没有proxy buffer参数设置的权威解读,大多数都是自己的猜测,这次花了一天多时间仔细读了nginx的相关源码,也泡了泡Nginx的论坛,总算彻底搞明白了这个问题,写成此文,可以说是网上能找...
  • ikmb
  • ikmb
  • 2011年12月23日 14:09
  • 19191
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:进一步了解nginx工作原理
举报原因:
原因补充:

(最多只允许输入30个字)