PHP基礎複習(九)——網絡協議

前言

本系列文章主要是根據實戰視頻《360大牛:全面解讀PHP面試》學習過程中記錄的學習筆記,期間也會加入查找資料和平時學習中學習到的知識。

 

HTTP協議狀態碼

五類響應

1xx   (臨時響應) 表示臨時響應並需要請求者繼續執行操作的狀態代碼。

2xx  (成功) 表示成功處理了請求的狀態代碼。

3xx  (重定向) 表示要完成請求,需要進一步操作。 通常,這些狀態代碼用來重定向。

4xx  (請求錯誤) 這些狀態代碼表示請求可能出錯,妨礙了服務器的處理。

5xx  (服務器錯誤) 這些狀態代碼表示服務器在嘗試處理請求時發生內部錯誤。 這些錯誤可能是服務器本身的錯誤,而不是請求出錯。

常見狀態碼

200   (成功) 服務器已成功處理了請求。 通常,這表示服務器提供了請求的網頁。

204   (無內容) 服務器成功處理了請求,但沒有返回任何內容。

206   (部分內容) 服務器成功處理了部分 GET 請求。

301   (永久重定向) 請求的網頁已永久移動到新位置。 服務器返回此響應(對 GET 或 HEAD 請求的響應)時,會自動將請求者轉到新位置。

302  (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

303  (查看其他位置) 請求者應當對不同的位置使用單獨的 GET 請求來檢索響應時,服務器返回此代碼。

304  (未修改) 自從上次請求後,請求的網頁未修改過。 服務器返回此響應時,不會返回網頁內容。

307  (臨時重定向) 服務器目前從不同位置的網頁響應請求,但請求者應繼續使用原有位置來進行以後的請求。

400 (錯誤請求) 服務器不理解請求的語法。

401  (未授權) 請求要求身份驗證。 對於需要登錄的網頁,服務器可能返回此響應。

403  (禁止) 服務器拒絕請求。

404  (未找到) 服務器找不到請求的網頁。

500  (服務器內部錯誤) 服務器遇到錯誤,無法完成請求。

503   (服務不可用) 服務器目前無法使用(由於超載或停機維護)。 通常,這只是暫時狀態。

504 (網關超時) 服務器作爲網關或代理,但是沒有及時從上游服務器收到請求。

 

OSI七層模型

物理層、數據鏈路層、網絡層、傳輸層、會話層、表示層、應用層

物理層    建立、維護、斷開物理連接

數據鏈路層    建立邏輯連接、進行硬件地址尋址、差錯校驗等功能

網絡層    進行邏輯地址尋址,實現不同網絡之間的路徑選擇。

傳輸層    定義傳輸數據的協議端口號,以及流控和差錯校驗。協議有:TCP UDP,數據包一旦離開網卡即進入網絡傳輸層。

會話層    建立、管理、終止會話

表示層    數據的表示、安全、壓縮

應用層    網絡服務與最終用戶的一個接口。協議有:HTTP FTP TFTP SMTP SNMP DNS TELNET HTTPS POP3 DHCP

 

HTTP協議的工作特點和工作原理

工作特點

1)基於B/S模式

2)通信開銷小、簡單快速、傳輸成本低

3)使用靈活、可使用超文本傳輸協議

4)節省傳輸時間

5)無狀態

 

工作原理

客戶端發送請求給服務器,創建一個TCP連接,指定端口號,默認80,連接到服務器,服務器監聽瀏覽器請求,一旦監聽到客戶端請求,分析請求類型後,服務器會向客戶端返回狀態信息和數據內容。

 

HTTP協議常見請求/響應頭

Content-Type  請求體的MIME類型 (用於POST和PUT請求中)。 Content-Type: application/x-www-form-urlencoded

Accept  可接受的響應內容類型(Content-Types)。Accept: text/plain

Origin  發起一個針對跨域資源共享的請求(該請求要求服務器在響應中加入一個Access-Control-Allow-Origin的消息頭,表示訪問控制所允許的來源)。Origin: http://www.itbilu.com

Cookie  由之前服務器通過Set-Cookie(見下文)設置的一個HTTP協議Cookie。Cookie: $Version=1; Skin=new;

Cache-Control  用來指定當前的請求/回覆中的,是否使用緩存機制。Cache-Control: no-cache 

User-Agent  瀏覽器的身份標識字符串。User-Agent: Mozilla/……

Referer  表示瀏覽器所訪問的前一個頁面,可以認爲是之前訪問頁面的鏈接將瀏覽器帶到了當前頁面。Referer其實是Referrer這個單詞,但RFC製作標準時給拼錯了,後來也就將錯就錯使用Referer了。Referer: http://itbilu.com/nodejs

X-Forwarded-For   用戶經過代理時,代理會增加這個字段,nginx可用內置變量$http_x_forwarded_for取到這個字段,沒有使用代理時,此字段爲空。X-Forwarded-For: client, proxy1, proxy2

Access-Control-Allow-Origin  指定哪些網站可以跨域源資源共享。Access-Control-Allow-Origin: *

Last-Modified  所請求的對象的最後修改日期(按照 RFC 7231 中定義的“超文本傳輸協議日期”格式來表示)。Last-Modified: Dec, 26 Dec 2015 17:30:00 GMT

 

HTTP協議的請求方法

GET

POST

HEAD

OPTIONS

PUT

DELETE

TRACE

 

HTTP協議的GET和POST請求方法的區別

通過 GET 方法從表單發送的信息對任何人都是可見的(所有變量名和值都顯示在 URL 中)。GET 對所發送信息的數量也有限制。限制在大約 2000 個字符。不過,由於變量顯示在 URL 中,把頁面添加到書籤中也更爲方便。

GET 可用於發送非敏感的數據。

註釋:絕不能使用 GET 來發送密碼或其他敏感信息!

通過 POST 方法從表單發送的信息對其他人是不可見的(所有名稱/值會被嵌入 HTTP 請求的主體中),並且對所發送信息的數量也無限制。

此外 POST 支持高階功能,比如在向服務器上傳文件時進行 multi-part 二進制輸入。

不過,由於變量未顯示在 URL 中,也就無法將頁面添加到書籤。

提示:開發者偏愛 POST 來發送表單數據。

 

HTTPS的工作原理

HTTPS是一種基於SSL/TLS的HTTP協議,所有的HTTP數據都是在SSL/TLS協議封裝之上傳輸的。

HTTPS協議在HTTP協議的基礎上,添加了SSL/TLS握手以及數據加密傳輸,也屬於應用層協議。

 

常見網絡協議含義及端口

FTP(21)  Telnet(23)  SMTP(25)   POP3(110)   HTTP(80)  DNS(53)

 

 

參考鏈接:

https://blog.csdn.net/qq_18145031/article/details/78688664

https://www.cnblogs.com/honghong87/articles/6941436.html 

https://www.cnblogs.com/yum777/p/6473165.html

http://www.w3school.com.cn/php/php_forms.asp

https://www.cnblogs.com/jtlgb/p/8805319.html

https://blog.csdn.net/yinni11/article/details/80062516

https://www.cnblogs.com/gotodsp/p/6366163.html

https://blog.csdn.net/u013451157/article/details/78917487

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章