1. 程式人生 > >Python高階——多執行緒_09_Http協議

Python高階——多執行緒_09_Http協議

瀏覽器訪問伺服器過程

DNS解析-->建立連線-->發起請求-->回覆響應

url:

概念:網路資源地址

協議--域名--資源路徑  三部分組成

域名

本質是IP地址

DHCP伺服器(動態主機配置協議)

給區域網中計算機自動分配IP

DNS(domain name service)

用於返回域名對應的IP地址

Http協議

概念:瀏覽器和伺服器傳輸資料格式協議  基於TCP協議實現

作用:規定瀏覽器和伺服器之間資料通訊格式

TCP/IP:模型

應用層:    HTTP FTP

傳輸層        TCP   UDP

網路層        IP

網路介面

工作模式:request-請求 response-響應

通訊過程(檢視方式)

谷歌/火狐--f12-->Network-->

Request Headers[請求] 

Response Headers[響應狀態]

Response [響應體]

請求報文格式

請求行

    a)請求方法:GET 向獲取伺服器獲取資源  Post 向伺服器上傳資源

    b)資源路徑:

            \index.html  或者是 \  根據網址判斷

    c)協議部分:1.1通用版本

請求頭:Request Headers  形式: (名字:值)

    a)Host:主機身份

        標識本次請求的伺服器身份 或者是IP地址:[埠號]

    b)Connection:keep-alive

        長連線<keep-alive 保持存活>  端連線<close 關閉>

    c)User-Agent: 

        使用者代理 標識瀏覽器身份

        Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/69.0.3497.81 Safari/537.36

                1.爬蟲時,設定header=的值,可模擬瀏覽器讀取 2.開發多個版本網頁-適配

    d)Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8

        接收 檔案型別

    e)Accept-Encoding: gzip,default

        可接收的壓縮方式

        降低網路傳輸頻寬    -->    提供傳輸速度

        缺點:加重CPU使用率

    f)Accept-Language: zh-CN,zh;q=0.9

        可以接收的語言<編碼>

總結:

    請求行【方法    資源路徑    版本 \r\n】

    請求頭【名稱:值\r\n】    請求頭可以有多個

    \r\n 空行    

    請求體 【瀏覽器向伺服器上傳的資料】

    GET方法請求一般不帶請求體 POST可以帶請求體

響應報文格式

    響應報文<伺服器    回送給瀏覽器的資料>

    響應行:HTTP/1.1 200 OK

            1.版本

            2.狀態

                    2xx    成功  ok             200    

                    3xx    重定向                302/307

                    4xx    客戶端報錯          404    Not  Found

                    5xx    伺服器端報錯       503    服務不可用

    響應頭    頭名:值

    a)Connection:keep-alive

        長連線<keep-alive 保持存活>  端連線<close 關閉>

    b)Date:Ture 11 Sep 2018 03:46:26 GMT

        預設為格林威治時間    與北京時間相差8小時

    c)Expires:Ture 11 Sep 2018 02:46:26 GMT

        過期時間

    d)Sercver:  BWS/1.1

        伺服器後臺程式<應用程式>身份

        通用:Nginx web伺服器

    e)Conntent-Encoding: gzip

        內容-(實體 - 根據頭部報文決定標識 請求體/響應體 )壓縮方式

        瀏覽器接收頭部資料時,可以解壓響應體資料(當瀏覽器和伺服器的壓縮方式不同時,資料不壓縮)

    f)Conntent-type: txt/html

        實體檔案型別

        瀏覽器可以根據該頭部解析對應的響應體資料

    g)Conntent-Length:1207

        實體長度

        根據對應長度接收對應長度資料作為響應體

    h)Conntent-x

        實體頭部 可用在請求報文中

總結:

    響應行[版本    狀態碼    說明\r\n]

    響應頭[名稱:值\r\n]

    響應體[伺服器發給瀏覽器傳送的資料]

長連線與短連線

長:keep-alive

短:close

短--缺點:套接字需要大量建立和銷燬【使用者體驗差】    優點:管理簡單,所有連線都是有效存在

長--缺點:佔用資源大【可能導致伺服器崩潰】               優點:體驗感好,無需重複建立連線