當你在瀏覽器輸入網址發生了什麼

1.輸入網址 www.php.netphp

http 默認訪問的是80端口
https 默認訪問的是443端口css

2.DNShtml

1.在瀏覽器的緩存裏查找
2.若是沒有,就去查看hosts文件是否有對應的ip
3.若是hosts文件沒有,就去查詢本地DNS服務器html5

3.socketmysql

找到域名對應的ip地址,開始三次握手,創建鏈接nginx

4.瀏覽器發送請求web

GET / HTTP/1.1
Host: php.net
[其餘頭部]sql

5.web服務器監聽 端口(80或者其餘)數據庫

1.web服務器根據瀏覽器發送的Request Header 看出緩存時間還沒到 返回, 304 NOT Modified
2. 請求php-pfm,成功返回 200 okapache

6.CGI

cgi : common gateway interface 公共網關接口 ,是一個web server(nginx,apache)與腳本語言的一個通訊標準 ,是一個協議
fastcgi : 是cgi的升級版本,也是一個協議
php-cgi: 實現cgi的php腳本解析器,是一個程序
php-fpm: 是一個fastcig的進程管理器,是一個程序

https://segmentfault.com/q/1010000000256516

7.php-fpm啓動進程將請求的query,header,url,數據傳遞給php腳本,php腳本處理

8.若是須要數據,在請求mysql數據庫,再把結果返回給php腳本

9.fastcig進程將標準輸出和一些錯誤信息返回給web服務器

10.web服務器返回給瀏覽器,關閉socket鏈接

11.瀏覽器加載html->解析dom,css,js->渲染dom->繪製dom(繪製在瀏覽器上)

css ,解析css,產生規則樹
js ,腳本解析
https://www.html5rocks.com/zh/tutorials/internals/howbrowserswork/

12.用戶看到了瀏覽器繪製的結果。