apache服務器本質


apache服務器本質上說是一個TCP socket服務,socket模型如下:

 

下面以worker MPM來說明apache代碼中相應處理的位置在哪里:

(以apache httpd 2.2.23版本的代碼為基礎)

1) 在第一次啟動時驗證配置沒有異常時,創建了socket。

 

 

2) open_logs 掛鈎調用了 ap_setup_listeners() ,最終在listen.c的make_socket方法執行了apr_socket_bind/apr_socket_listen,進入通信的環節。

 

 

3) worker.c的監聽線程中負責接受請求,然后利用ap_queue_push把相應的請求放入隊列中。下面是接受請求accept_func的調用棧。

 

4)請求/響應的處理。

請求的處理是通過handler來實現,如果是讀取服務器上的靜態頁面,則由default_handler來處理。同時響應的內容需要通過filter修改之后,最終發送header和body。下面是發送header的調用棧。

 

暫時寫到這里,以后再繼續分析。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM