欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Nginx是如何處理網絡事件的

本篇內容介紹了“Nginx是如何處理網絡事件的”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

創(chuàng)新互聯(lián)是一家集網站建設,臺前企業(yè)網站建設,臺前品牌網站建設,網站定制,臺前網站建設報價,網絡營銷,網絡優(yōu)化,臺前網站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網站。

在深入了解 Nginx 各種原理及在極端場景下的一些錯誤場景處理時,需要首先理解什么是網絡事件。

Nginx 是一個事件驅動的框架,所謂事件主要指的是網絡事件,Nginx 每個網絡連接會對應兩個網絡事件,一個讀事件一個寫事件。在深入了解 Nginx 各種原理及在極端場景下的一些錯誤場景處理時,需要首先理解什么是網絡事件。

網絡傳輸

Nginx是如何處理網絡事件的
接下來看上面這張圖,比如主機 A 就是一臺家里的筆記本電腦,那么主機 B 就是一臺服務器,上面跑著 Nginx 服務。從主機 A 發(fā)送一個 HTTP 的 GET 請求到主機 B,這樣的一個過程中主要經歷了哪些事件?通過上圖數據流部分可以看出:

應用層里發(fā)送了一個 GET 請求 -> 到了傳輸層,這一步主要在做一件事,就是瀏覽器打開了一個端口,在 windows 的任務管理器中可以看到這一點,他會把這個端口記下來以及把 Nginx 打開的端口比如 80 或者 443 也記到傳輸層 -> 然后在網絡層會記下我們主機所在的 IP 和目標主機,也就是 Nginx 所在服務器公網 IP -> 到鏈路層以后 -> 經過以太網 -> 到達家里的路由器(網絡層),家中的路由器會記錄下所在運營商的一些下一段的 IP -> 通過廣域網 -> 跳轉到主機 B 所在的機器中 -> 報文會經過鏈路層 -> 網絡層 -> 到傳輸層,在傳輸層操作系統(tǒng)就知道是給那個打開了 80 或者 443 的進程,這個進程自然就是 Nginx -> 那么 Nginx 在他的 HTTP 狀態(tài)處理機里面(應用層)就會處理這個請求。

在上述過程中網絡報文扮演了一個怎樣的角色呢?

TCP流與報文

Nginx是如何處理網絡事件的
數據鏈路層會在數據的前面 Header 部分和 Footer 部分添加上源 MAC 地址和源目的地址 -> 到了網絡層則是 Nginx 的公網地址(目的 IP 地址)和瀏覽器的公網地址(源 IP 地址)-> 到了 TCP 層(傳輸層),指定了 Nginx 打開的端口(目的端口)和瀏覽器打開的端口(源端口)-> 然后應用層就是 HTTP 協(xié)議了。

這就是一個報文,也就是說我們發(fā)送的 HTTP 協(xié)議會被切割成很多小的報文,在網絡層會切割叫 MTU,以太網的每個 MTU 是 1500 字節(jié);在 TCP 層(傳輸層)呢會考慮中間每個環(huán)節(jié)中最大的一個 MTU 值,這個時候往往每個報文只有幾百字節(jié),這個報文大小我們稱為叫 MSS ,所以每收到一個 MSS 小于這么大小的一個報文時其實就是一個網絡事件。

這個時候,我們來看下 TCP 協(xié)議中許多事件是怎樣和我們日常調用的一些接口(比如Accept、Read、Write、Close)是怎樣關聯(lián)在一起的?

TCP 協(xié)議與非阻塞接口

Nginx是如何處理網絡事件的
請求建立 TCP 連接事件實際上是發(fā)送了一個 TCP 報文,通過上面第二部分講解的那樣的一個流程到達了 Nginx,對應的是讀事件。因為對于 Nginx 來說,我讀取到了一個報文,所以就是 Accept 建立鏈接事件。

如果是 TCP 連接可讀事件,就是發(fā)送了一個消息,對于 Nginx 也是一個讀事件,就是 Read 讀消息。

如果是對端(也就是瀏覽器)主動地關掉了,相當于 windows 操作系統(tǒng)會去發(fā)送一個要求關閉鏈接的一個事件,對于 Nginx 來說還是一個讀事件,因為他只是去讀取一個報文。

那什么是寫事件呢?當我們的瀏覽器需要向瀏覽器發(fā)送響應的時候,需要把消息寫到操作系統(tǒng)中,要求操作系統(tǒng)發(fā)送到網絡中,這就是一個寫事件。

像這樣的一些網絡讀寫事件,通常在 Nginx 中或者任何一個異步事件的處理框架中,他會有個東西叫事件收集、分發(fā)器。會定義每類事件處理的消費者,也就是說事件是一個生產者,是通過網絡中自動的生產到我們的 Nginx 中的,我們要對每種事件建立一個消費者。比如連接建立事件消費者,就是對 Accept 調用,HTTP 模塊就會去建立一個新的連接。還有很多讀消息或者寫消息,在 HTTP 狀態(tài)機中不同的時間段會調用不同的方法也就是每個消費者處理。

以上就是一個事件分發(fā)、消費器,包括 AIO 像異步讀寫磁盤事件,還有定時器事件,比如是否超時(worker_shutdown_timeout)。

Nginx 網絡事件實例

上面介紹了網絡報文的發(fā)送以及對應的 Nginx 中的網絡事件,比如 Accept 建立一條新連接其實是收到一條讀事件,接下來我們通過抓包來分析建立三次握手時時怎么樣讓 Nginx 收到讀事件,使用的抓包工具是 Wireshark。
Nginx是如何處理網絡事件的
首先我們安裝 Wireshark 軟件,并對 Nginx 所在 IP 和端口進行抓包,然后訪問頁面,在 TCP 層主要說兩件事情:

?瀏覽器首先會打開這個頁面,本地打開了一個 1875 端口,而 Nginx 啟動的是 8080 端口。

?TCP 層主要做的是進程與進程之間通訊這件事。
Nginx是如何處理網絡事件的
IP 層主要解決機器與機器之間怎樣互相找到的問題。
Nginx是如何處理網絡事件的
三次握手也就是 windows 先向 Nginx 發(fā)送了一次 [SYN],那么相反的 Nginx 所在的服務器也會向 windows 發(fā)送一個 [SYN],這個時候 Nginx 是沒有感知到的,因為這個連接還是處于半打開的狀態(tài)。直到這臺 windows 服務器再次發(fā)送 [ACK] 到 Nginx 所在的服務器之上時,Nginx 所在的操作系統(tǒng)才會去通知 Nginx 我們收到了一個讀事件,這個讀事件對應是建立一個新連接,所以此時 Nginx 應該調用 Accept 方法去建立一個新的連接。

“Nginx是如何處理網絡事件的”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注創(chuàng)新互聯(lián)網站,小編將為大家輸出更多高質量的實用文章!

本文標題:Nginx是如何處理網絡事件的
路徑分享:http://aaarwkj.com/article18/godsgp.html

成都網站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網站建設、網站策劃標簽優(yōu)化、定制網站App設計、用戶體驗

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都app開發(fā)公司
亚洲一区二区三区无人区| 日韩av一区二区免费在线观看| 亚洲欧美精品成人一区| 国产剧情av在线播放| 在线高清中文字幕三区| 国产一区二区麻豆视频| 少妇视频资源一区二区三区| 久草福利视频免费播放| 激情小说婷婷亚洲综合| 亚洲精品乱码精品乱码不卡| 国内精品人妻中文字幕| 看夫妻性生活免费视频| 麻豆国产国语精品三级在线观看| 91手机精品在线视频| 顶级少妇做爰片高潮丸| 国产成人免费高清av| 999热这里只有精品视频| 久久熟妇少妇亚洲精品| 亚洲国产精品久久久久久99| 国产91一区二区三区在线精品| 国产精品国产三级专区| 国产精品三级久久久| av第一福利大全导航| 久久综合热这里只有精品| 亚洲熟女乱妇爽到高潮| av天堂在线观看网站| 亚洲婷婷综合精品五月天| 中文字幕变态另类一区二区| 日韩精品熟女一区二区三区| 人妻少妇精品一区毛二区| 成人性生交免大片免费| 日本不卡高清视频在线播放| 夫妻性生活黄色录像视频| 免费看国产一级黄色大片| 麻豆国产传媒片在线观看| 亚洲精品尤物福利视频| 免费观看日本成人午夜大片| 日本在线观看高清区一区二| 欧美日韩性视频播放器| 国产精品黄色自拍合集| 日韩不卡永久免费视频观看|