天天看點

進一步了解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

繼續閱讀