最近接觸了不少次下載http網頁和文件的程式,突然對其原理很感興趣,又碰巧看到了http協議基於socket,這更是讓我激動不已。畢竟之前花了很長時間接觸socket這個實用的底層協議,做了小型聊天室來練習,然而卻不知道生活中有什麼具體的實例是由socket完成的。於是乎,查閱了各路筆記和文檔,再加... ...
最近接觸了不少次下載http網頁和文件的程式,突然對其原理很感興趣,又碰巧看到了http協議基於socket,這更是讓我激動不已。畢竟之前花了很長時間接觸socket這個實用的底層協議,做了小型聊天室來練習,然而卻不知道生活中有什麼具體的實例是由socket完成的。
於是乎,查閱了各路筆記和文檔,再加上敲代碼實驗,終於初步瞭解了這個協議的使用方式。
協議分為兩部分,一個是發給http伺服器的,稱為請求頭,一個是從那裡接收回來的,正式數據之前會有一串字元串,稱為響應頭。
這兩個各有自己的格式,具體的參數列表及解釋這裡就不寫了,這裡記下幾點遇到的有趣的事。
1. 請求頭“GET / \r\n”
這樣會直接獲得數據體,不會反饋響應頭。
2. 請求頭http1.0與1.1
按道理來說,1.1是要優於1.0協議的,但是在我的實際使用過程中,1.0反而得到反饋的速度更快,1.1則要等待數秒後才能得到反饋。註:測試環境相同。