HTTP----初次見面,慢慢來(二)

一、BS、CS是兩隻什麼神獸呢?

BS[Browser Server]:通過瀏覽器訪問服務器;
CS[Client Server]:通過客戶端(PC裝的一些軟件、手機APP)訪問服務器;

二、下面看一下 BS 通訊的整體過程

瀏覽器發送請求—>服務器—->接收請求,並響應—->返回請求內容給瀏覽器
這裏寫圖片描述

  • Web 內容都存儲在 Web 服務器上;
  • Web 服務器用的是 HTTP 協議,也會被稱爲 HTTP 服務器;
  • 客戶端向服務器發送 HTTP 請求;
  • 服務器在 HTTP 響應中返回請求的數據;

三、資源

  • Web 服務器是資源的宿主;
  • 服務器最簡單的資源就是靜態文件;
  • 靜態資源可以包括任意內容:資源包括圖片,文本文件,HTML文件,AVI視頻,JPEG圖片,Word文件等;
  • 資源不一定是靜態的,也可以是生成內容的軟件程序。這些動態資源可以根據特定的參數來生成內容;

思考一個問題:從性能角度講,靜態頁面多有利還是動態的多有利?

靜態的頁面好!
因爲靜態頁面內容可以緩存在內存(RAM)裏面,訪問速度快;

四、媒體類型

這裏寫圖片描述

Content-Type:傳輸文件的類型,格式爲:MIMI類型/具體格式【響應頭信息中】
例如:
jpeg格式圖片:image/jpeg
png格式圖片:image/png
HTML格式文本文檔:text/html
普通的ASCII文本文檔:text/plain
Apple的QuickTime電影爲:video/quicktime類型
微軟的PPT演示文稿:application/vnd.ms-powerpoint類型

五、URI(包括URL和URN)

URL:統一資源定位符(Uniform Resource Locator)
URL 拆解如下:
這裏寫圖片描述

第一部分:通常是HTTP協議(http://)
第二部分:服務器地址(www.joes-hardware.com)
第三部分:web 服務器上某個資源地址(/specials/saw-blade.gif)

六、事務 = 請求 + 響應,的一個完整事件

這裏寫圖片描述

七、方法

  • 常見的 HTTP 方法:Get、Post
  • 簡單說一下Get/Post的區別:
    Get:
  • 讓服務器發送資源(從服務器請求資源);
  • 通過URL傳輸數據(明文的,用戶可見,不安全),以(字段)= value 的形式,置於URL末端,並用 “?” 連接,多個請求數據間用 “&” 連接,如:http://127.0.0.1/Test/login.action?name=ajin&password=123456
  • 請求長度會受到限制;
  • get方式只能支持ASCII字符,向服務器傳的中文字符可能會亂碼;
    Post:
  • 將客戶端數據提交給服務器網關程序(向服務器發送數據);
  • 通過消息體傳輸數據(相對安全,用戶不可見,但是也會被攔截,且沒有加密),如:{‘name’:’ajin’,’password’:’123456’}
  • 請求長度沒有受限制,傳文件的時候只能用post;
  • post支持標準字符集,可以正確傳遞中文字符;

八、狀態碼

200:OK,通訊正常
301:資源重定向(永久重定向,資源被永遠的移動到另外一個地方)
302:資源重定向(臨時重定向,資源被暫時移動到另外一個地方)
400:請求報文語法有誤,服務器無法識別
401:沒有權限
404:找不到資源(URL錯了,或者文件沒有了)
500:服務器內部錯誤
502:網關錯誤,表現在WEB瀏覽器中給出的頁面反饋
503:服務器正忙

  • 關於502報錯,通俗解釋一下:
    1.什麼是502 bad gateway 報錯
    簡單來說 502 是報錯類型代碼 bad gateway 錯誤的網關。
    2.產生錯誤的原因
    連接超時,我們向服務器發送請求,由於服務器當前鏈接太多,導致服務器方面無法給於正常的響應,產生此類報錯;
    3.解救的辦法
    最好的解決辦法當然還是在服務器上做,對大家來說不太可能;
    那麼我們有什麼解救的方法呢?
    說白了,很簡單,就是——刷新(不是一般的刷新哦)
    刷新的原理:很多人可能不知道 刷新也是有兩種的。
    所謂刷新其實就是從服務器下載數據到本地的內存或硬盤緩衝區中,
    再從本地內存或硬盤中讀取數據到瀏覽器顯示給我們看。
    ①基本刷新:就是點擊刷新或者使用F5快捷鍵
    基本刷新有可能只是從本地的硬盤重新拿取數據到瀏覽器,並不一定重新向服務器發出請求。
    大部分用戶很多時候都是這樣刷新的,遇到502報錯的就沒有任何效果。
    ②從服務器刷新: 如果你重新直接點擊你想要瀏覽的網頁鏈接,你會發現顯示”502 bad gateway”錯誤信息的頁面在點擊鏈接後又可以正常瀏覽。
    明白道理了吧?當你點擊你想要瀏覽的網頁鏈接的時候,是會從服務器重新下載數據的。
    解決方法就是從服務器上刷新:快捷鍵 ctrl+F5,這樣就是重新向服務器發送請求了。
    如果服務器能正常給予你響應你就可以看到頁面了。

思考一個問題:瀏覽器獲取多個資源的時候,是單線程還是多線程的?

是多線程;(對於客戶端來講是多線程的好呀,因爲快呀!!)
但是對於服務器來講,就不一定是一件好事。對於服務器來講是有限制的,因爲線程開的太多會給服務器帶來壓力,有可能把服務器搞死,所以服務器對線程的訪問個數是有限制;
例如IE:同一個域名,支持2個線程;

九、報文

這裏寫圖片描述
這裏寫圖片描述
這裏寫圖片描述

上圖中這個響應主體就是我們看到的 html 網頁;

十、常見HTTP首部字段

  • 通用首部字段(請求報文與響應報文都會使用的首部字段)

    Date:創建報文時間
    Connection:連接的管理
    Cache-Control:緩存的控制
    Transfer-Encoding:報文主體的傳輸編碼方式

  • 請求首部字段(請求報文會使用的首部字段)

    Host:請求資源所在服務器
    Accept:可處理的媒體類型
    Accept-Charset:可接收的字符集
    Accept-Encoding:可接受的內容編碼
    Accept-Language:可接受的自然語言

  • 響應首部字段(響應報文會使用的首部字段)

    Accept-Ranges:可接受的字節範圍
    Location:令客戶端重新定向到的URI
    Server:HTTP服務器的安裝信息

  • 實體首部字段(請求報文與響應報文的的實體部分使用的首部字段)

    Allow:資源可支持的HTTP方法
    Content-Type:實體主類的類型
    Content-Encoding:實體主體適用的編碼方式
    Content-Language:實體主體的自然語言
    Content-Length:實體主體的的字節數
    Content-Range:實體主體的位置範圍,一般用於發出部分請求時使用

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