一、TCP/IP協議
TCP/IP 是不同的通信協議的大集合。
1、TCP - 傳輸控制協議
TCP 用於從應用程序到網絡的數據傳輸控制。
TCP 負責在數據傳送之前將它們分割為 IP 包,然后在它們到達的時候將它們重組。
2、IP - 網際協議
IP 負責計算機之間的通信。
IP 負責在因特網上發送和接收數據包。
3、HTTP - 超文本傳輸協議
HTTP 負責 web 服務器與 web 瀏覽器之間的通信。
HTTP 用於從 web 客戶端(瀏覽器)向 web 服務器發送請求,並從 web 服務器向 web 客戶端返回內容(網頁)。
4、HTTPS - 安全的 HTTP
HTTPS 負責在 web 服務器和 web 瀏覽器之間的安全通信。
作為有代表性的應用,HTTPS 會用於處理信用卡交易和其他的敏感數據。
HTTPS等於SSL協議加上HTTP協議。
SSL協議是為客戶端和服務器端HTTP數據傳輸網絡通道的數據加密。SSL協議更像是一個密碼庫。里面提供海量的加密和解密算法。
二、HTTP和HTTPS協議
1、HTTP請求方式
GET |
向Web服務器請求一個文件 |
POST |
向Web服務器發送數據讓Web服務器進行處理 |
PUT |
向Web服務器發送數據並存儲在Web服務器內部 |
HEAD |
檢查一個對象是否存在 |
DELETE |
從Web服務器上刪除一個文件 |
CONNECT |
對通道提供支持 |
TRACE |
跟蹤到服務器的路徑 |
OPTIONS |
查詢Web服務器的性能 |
我們主要用的兩種是POST和GET
GET 動作一般用於客戶端從服務器端獲取文件或數據。
POST 動作一般用於客戶端向服務器提交數據,並且,由服務器處理后存儲。
HOST:
請求的web服務器域名地址
User-Agent:
HTTP客戶端運行的瀏覽器類型的詳細信息。通過該頭部信息,web服務器可以判斷到當前HTTP請求的客戶端瀏覽器類別。
實例:
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.1.11) Gecko/20071127 Firefox/2.0.0.11
Accept:
指定客戶端能夠接收的內容類型,內容類型中的先后次序表示客戶端接收的先后次序。
例如:
Accept:text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language:
指定HTTP客戶端瀏覽器用來展示返回信息所優先選擇的語言。
實例:
Accept-Language: zh-cn,zh;q=0.5
這里默認為中文
Accept-Encoding:
指定客戶端瀏覽器可以支持的web服務器返回內容壓縮編碼類型。表示允許服務器在將輸出內容發送到客戶端以前進行壓縮,以節約帶寬。而這里設置的就是客戶端瀏覽器所能夠支持的返回壓縮格式。
實例:
Accept-Encoding: gzip,deflate
備注:
其實在百度很多產品線中,apache在給客戶端返回頁面數據之前,將數據以gzip格式進行壓縮。
Accept-Charset:
瀏覽器可以接受的字符編碼集。
實例:
Accept-Charset: gb2312,utf-8;q=0.7,*;q=0.7
Content-Type:
顯示此HTTP請求提交的內容類型。一般只有post提交時才需要設置該屬性。
實例:
Content-type: application/x-www-form-urlencoded;charset:UTF-8
有關Content-Type屬性值可以如下兩種編碼類型:
(1)“application/x-www-form-urlencoded”: 表單數據向服務器提交時所采用的編碼類型,默認的缺省值就是“application/x-www-form-urlencoded”。 然而,在向服務器發送大量的文本、包含非ASCII字符的文本或二進制數據時這種編碼方式效率很低。
(2)“multipart/form-data”: 在文件上載時,所使用的編碼類型應當是“multipart/form-data”,它既可以發送文本數據,也支持二進制數據上載。
當提交為單單數據時,可以使用“application/x-www-form-urlencoded”;當提交的是文件時,就需要使用“multipart/form-data”編碼類型。
(3)在PHP中的只讀流(php:\\input)和只寫流(php:\\output)中的只讀流中,“application/x-www-form-urlencoded”的數據編碼格式,可以從其獲取。 而“multipart/form-data”則不可以讀取。
Connection:
表示是否需要持久連接。如果web服務器端看到這里的值為“Keep-Alive”,或者看到請求使用的是HTTP 1.1(HTTP 1.1默認進行持久連接),它就可以利用持久連接的優點,當頁面包含多個元素時(例如Applet,圖片),顯著地減少下載所需要的時間。要實現這一點, web服務器需要在返回給客戶端HTTP頭信息中發送一個Content-Length(返回信息正文的長度)頭,最簡單的實現方法是:先把內容寫入ByteArrayOutputStream,然 后在正式寫出內容之前計算它的大小。
實例:
Connection: keep-alive
Keep-Alive:
顯示此HTTP連接的Keep-Alive時間。使客戶端到服務器端的連接持續有效,當出現對服務器的后繼請求時,Keep-Alive功能避免了建立或者重新建立連接。
以前HTTP請求是一站式連接,從HTTP/1.1協議之后,就有了長連接,即在規定的Keep-Alive時間內,連接是不會斷開的。
實例:
Keep-Alive: timeout=5,max=100
參考文獻:https://blog.csdn.net/weixin_42339460/article/details/80650199
https://www.cnblogs.com/widget90/p/7650890.html
http://www.w3school.com.cn/tcpip/tcpip_protocols.asp