摘要:響應狀態行,響應報頭,響應數據前面幾個是百度的自定義報頭文件。返回的內容的類型和編碼格式緩存的過期時間服務器信息設置分塊傳輸等更多的定義自行百度。
Http協議的認識
HTPP協議的定義:全稱 Hyper text transfer protocol (超文本傳輸協議),主要作用是客戶端和服務器端的交互,實現從WWW將文本傳輸到客戶端進行渲染顯示,就是我們常說的c/s,客戶端和服務器模式。而且是個問答模式,只有客戶端發送請求了,服務器端才會響應發送數據,是單向的。而現在webservice可以實現服務器端主動向客戶端發送數據。
HTTP的兩大特點:
1.無連接:http在傳輸之前是需要建立tcp/ip連接的,我的理解就是建立一條通道,建立一條客戶端到服務端的通道,然后http開始發送請求;之前的版本,每一次http請求和響應完成后,這條連接是自動關閉的,所以每一次請求都會頻繁的建立tcp/ip連接,從http1.1版本后,在報頭里面有個connection來控制這條連接;當connection:close時候,還是像以前一樣,響應完后關閉;如果設置為connection:keep-alive;都會在一定的時間內,監聽是否還有請求,沒有的話,則會去關閉它;這個時間是由timeout來控制的。
2.無狀態:每一次http事務,都是沒有聯系的。就是說同一個客戶端這次請求和上次請求在服務端是分辨不出來的,所以采用了cookie和session來解決無狀態協議;用來識別同一個用戶;
如何理解HTTP是應用層協議:換句話說就是軟件上的一種協議。
以下是ISO模型和TCP/IP模型的比較
我們所說的HTTP協議就是工作在頂層的協議,然后往下看,會到傳輸層,再到網絡層,也就是建立tcp/ip連接;最后通過我們的實際鏈路進行傳輸交互;
這里在擴展一個知識點:TCP和UDP的區別
TCP是必須先請求服務器端,詢問我這由數據是否可以開始傳送,當服務器端給出回復可以的話,就建立好了連接,然后客戶端開始發送請求數據了;
但是UDP是直接把數據發送過去,沒有征求你的同意,這樣的話由優點也有缺點
1.首先服務器端可能暫時沒辦法接收和處理數據,你硬塞給它的話,肯定會造成數據的丟包,這就是最大的漏洞;
2.UDP減少了詢問的時間,當然效率也就比較高了。
而我們通常都是用TCP,相對來說安全,不至于丟包,如果數據量小且不重要的倒是可以考慮UDP;個人見解;
HTTP工作流程:
http的每一次過程都被稱為一個事務,這個事務是沒有記憶能力的。
第一步:根據URL上的域名,在本地host中查找ip與端口號,若沒有,則到DHCP中進行查找;
第二步:根據ip和端口,訪問web服務器,請求建立連接,也就是TCP三次握手的第一步;
第三步:服務端接到請求做出反應,回復可以開始傳輸數據;TCP三次握手的第二步;
第四步:就是http發送請求數據,TCP三次握手的第三步;
第五步:服務器接受到http的請求數據,則進行響應,并返回一定的數據;
第六步:客戶端根據得到的數據繼續渲染顯示。
URL:uniform resource locator 統一資源定位符,其實就是描述資源的位置,好讓我們通過http協議去獲取到。
例子: http://www.baidu.com/admin/in...?name=maoxiaohai#
第一個:http 說明采用的是http協議;
第二個:www.baidu.com 會到域池里面也就是DHCP去獲取到對應的ip和端口,http的默認端口是80,https是采用了ssl的,默認端口是443
第三個就是 admin/ 就是文件夾路徑
第四個:index.php就是我們訪問的文件
第五個:?后面的name=maoxiaohai就是我們攜帶過去的參數
第六個:#是個錨,具體是什么沒去研究。民間高手可以留言下,互相請教;
接下來就是關于http請求和響應的格式了。
1.請求:請求行,請求報頭,請求數據
如上圖所示:
第一部分:請求行,包括請求方式,ur資源路徑,協議版本號。
第二部分:開始就是報頭,由報頭名: 報頭名 格式構成;
第三部分:就是請求數據;
請求方式主要有 get post 的方式。其他的比如head put delete之類的自行百度,我也不知道具體應用在哪里,有大神會的可以給我留言。
最難的理解就是在報頭那,其實報頭也就是相當傳輸了一些數據到服務器端;我們可以通過$_server 來獲取這些報頭信息,比如可以看瀏覽器信息,請求的主機名等
1.Host:就是我們請求的主機名,域名;
2.Connection:控制tcp/ip的連接關閉
3.Cach-Controll:緩存控制,其實就是控制緩存是否存儲到客戶端;
4.User-Agent:用戶代理,就是描述了瀏覽器的一些配置信息和系統配置信息,主要用處在服務器可以根據一定的規則判斷是手機訪問還是PC端。
5.Accept:接收什么樣的格式文件,通常都是text/html之類的文件
6.Accept-Encoding:可以接收的壓縮格式,大家也知道文件壓縮后傳輸速度快好多,http傳輸時候會先壓縮,然后傳輸過來,再解壓縮。這個就是給服務器說我可以接收哪些格式的壓縮文件,然后你可以用這個格式傳輸過來。
7.Accept-Language:接受的語言編碼
8.Cookie:傳送cookie過去。
2.響應:狀態行,響應報頭,響應數據
前面幾個是百度的自定義報頭文件。
Content-Type:返回的內容的類型和編碼格式
Expires:緩存的過期時間
Server:web服務器信息
Set-Cookie:設置cookie
Transfer-Encoding:分塊傳輸
等更多的定義自行百度。
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。互聯網+時代,時刻要保持學習,攜手千鋒PHP,Dream It Possible。
標簽: php, php培訓, 千鋒, php學習
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/22982.html
摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別 本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。裝逼失敗模式:99%的人對GET和POST的認識修煉低調模式:1...
摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別 本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。裝逼失敗模式:99%的人對GET和POST的認識修煉低調模式:1...
摘要:不會產生動作意味著和的請求不會在服務器上產生任何結果。對長度的限制是字節。起限制作用的是服務器的處理程序的處理能力。很可能受到中文名稱跨站請求偽造攻擊。而數據大小,則是因為瀏覽器的限制造成的。請開始你的表演參考文章的人都理解錯了中與的區別 本篇文章分兩部分,第一部分可以列為初為新人的裝逼失敗模式,第二部分列為修煉低調模式。裝逼失敗模式:99%的人對GET和POST的認識修煉低調模式:1...
摘要:而這個就是作為客戶端的唯一標識而存在的即使在同一臺電腦上,瀏覽器和瀏覽器對于服務器來說都是不同的客戶端。當然,這個名不是固定的,我們可以在文件中的項進行修改。文件的命名格式是的值。比如說,的值是,是一個長度為的字符串。 前言:在不久之前,本人去參加了某公司的實習面試,其中面試官問我關于 SESSION 實現的原理,當時我就懵逼了,因為在之前的開發中,我只知道 session 與 coo...
摘要:由包括確定語法和相關協議的方案所定義。統一資源名稱唯一標識一個實體的標識符,但是不能給出實體的位置。使用可以在不知道其網絡位置及訪問方式的情況下討論資源。 首先,介紹他們的相關定義: 1、URI(Uniform Resource Identifier)統一資源標識符,是用來標識某一互聯網資源名稱的字符串。 該種標識允許用戶對任何(包括本地和互聯網)的資源通過特定的協議進行交互操作。UR...
閱讀 1953·2021-09-30 09:46
閱讀 1366·2019-08-30 15:43
閱讀 1123·2019-08-29 13:28
閱讀 1922·2019-08-29 11:24
閱讀 1681·2019-08-26 13:22
閱讀 3892·2019-08-26 12:01
閱讀 1816·2019-08-26 11:33
閱讀 3242·2019-08-23 15:34