首頁  >  文章  >  web前端  >  前端,HTT,電腦與網絡

前端,HTT,電腦與網絡

php中世界最好的语言
php中世界最好的语言原創
2018-05-25 11:52:212494瀏覽

這次帶給大家前端,HTT,電腦與網絡,前端,HTT,電腦與網路的注意事項有哪些,以下就是實戰案例,一起來看一下。

全端工程師需知道的電腦網路知識

一、網路篇—http報文詳解

#1. 分類

  1. 請求封包

  2. 回應封包

#2.封包結構

(一)、請求封包

一個HTTP請求訊息由請求行(request line)、請求頭部(header)、空白行和請求資料4個部分組成;
  1. 請求行

  • #由請求方法欄位、URL欄位和HTTP協定欄位3個欄位組成,它們由空格分隔;

  • 例如,GET /index.html HTTP/1.1。

  • HTTP協定的請求方法有GET、POST、HEAD、PUT、DELETE、OPTIONS、TRACE、CONNECT。

  1. 請求頭部

  • #要求頭部由關鍵字/值對組成,每行一對,關鍵字和值用英文冒號“:”分隔。

  • 請求頭部通知伺服器有關於客戶端請求的資訊;

  • 常用的請求頭:

  1. #Accept 設定接受的內容類型Accept: text/plain;

  2. Accept-Charset 設定接受的字符編碼:Accept-Charset: utf-8;

  3. Accept-Encoding 設定接受的編碼格式:Accept-Encoding: gzip, deflate# ;

  4. Accept-Language 設定接受的語言:Accept-Language: en-US;

  5. Cache-Control設定請求回應鏈上所有的快取機制必須遵守的指令:Cache-Control: no-cache;

  6. Connection 設定目前連線和hop-by-hop協定請求欄位清單的控制選項:Connection: keep-alive;

  7. #Content-Length 設定請求體的位元組長度:Content-Length: 348;

  8. Content-Type 設定請求體的MIME型別(適用POST和PUT請求):Content-Type: application/x-www-form-urlencoded ;

  9. Cookie 設定伺服器使用Set-Cookie傳送的http cookie:Cookie: $Version=1; Skin=new;;

  10. #Host 設定伺服器網域名稱和TCP連接埠號,如果使用的是服務請求標準連接埠號,連接埠號碼可以省略:Host: en.wikipedia.org:8080;

  11. Origin 標識跨網域資源請求(請求服務端設定Access-Control-Allow-Origin回應欄位):Origin: http://www.example-social-network.com ;

  12. Expires 設定反應體的過期時間:Expires: Thu, 01 Dec 1994 16:00:00 GMT;

  13. #ETag 特定版本資源的標識符,通常是訊息摘要:ETag: "737060cd8c284d8af7ad3082f209582d";

  14. Last-Modified 設定請求物件最後一次的修改日期:Last-Modified: Tue, 15 Nov 1994 12:45:26 GMT;

  1. #空行

  • 最後一個請求頭之後是一個空白行,發送回車符和換行符,通知伺服器以下不再有請求頭。

  1. 請求主體(資料)

  • 請求資料不在GET方法中使用,而是在POST方法中使用。 POST方法適用於需要客戶填寫表單的場合。與請求資料相關的最常使用的請求頭是Content-Type和Content-Length。

(二)、回應封包

HTTP回應也由四個部分組成,分別是:狀態列、訊息標頭、空白行、回應正文。
  1. 在回應中唯一真正的區別在於第一行中用狀態資訊取代了請求資訊。狀態列(status line)透過提供一個狀態碼來說明所請求的資源狀況。

  2. 狀態列

  • #格式:伺服器HTTP協定的版本回應狀態碼狀態碼的文字描述;

  • 狀態代碼由三位數字組成,第一個數字定義了回應的類別,有五種可能取值:

    • #1xx:指示訊息--表示請求已接收,繼續處理。

    • 2xx:成功--表示請求已被成功接收、理解、接受。

    • 3xx:重定向--要完成請求必須更進一步的操作。

    • 4xx:客戶端錯誤--請求有語法錯誤或請求無法實現。

    • 5xx:伺服器端錯誤--伺服器未能實現合法的請求。

  • 常見狀態碼:

    • 200 OK :表示請求成功一切正常

    • 301 Moved Permanently:重定向,客戶請求的文檔在其他地方,新的URL在Location頭中給出,瀏覽器應該自動地存取新的URL

    • 302 Found:暫時重定向,類似於301,但新的URL應該被視為暫時性的替代,而不是永久性的。

    • 304 Not Modified:客戶端有緩衝的文件並發出了一個條件性的請求。伺服器告訴客戶,原來緩衝的文件還可以繼續使用。

    • 400 Bad Request:請求出現語法錯誤。

    • 403 Forbidden:資源不可用。

    • 404 Not Found:無法找到指定位置的資源。

    • 405 Method Not Allowed:請求方法(GET、POST、HEAD、Delete、PUT、TRACE等)對指定的資源不適用。

    • 500 Internal Server Error:伺服器遇到了意料不到的情況,不能完成客戶的請求。

    • 501 Not Implemented:伺服器不支援實作請求所需的功能

(三)、關於請求post和get的區別

  1. GET提交,請求的資料會附在URL之後(就是把資料放置在HTTP協定頭<request-line>中);

  2. #POST提交:把提交的資料放在是HTTP包的包體<request-body>中;

  3. 傳輸資料的大小:

  • HTTP協定沒有對傳輸的資料大小進行限制,HTTP協定規格也沒有對URL長度進行限制。

  • 而在實際開發中存在的限制主要有:

    • #GET:特定瀏覽器和伺服器對URL長度有限制,例如IE對URL長度的限制是2083位元組(2K 35)。對於其他瀏覽器,如Netscape、FireFox等,理論上沒有長度限制,其限制取決於作業系統的支援。因此對於GET提交時,傳輸資料就會受到URL長度的限制。

    • POST:由於不是透過URL傳值,理論上資料不受限。但實際各WEB伺服器會規定對post提交資料大小進行限制,Apache、IIS6都有各自的設定。

4.安全性:

  • POST的安全性要比GET的安全性高。

  • 透過GET提交數據,使用者名稱和密碼將明文出現在URL上,因為

  • (1)登入頁面有可能被瀏覽器緩存,

  • (2)其他人查看瀏覽器的歷史紀錄,那麼別人就可以拿到你的帳號和密碼了

(四)、http和https

1. HTTP和HTTPS

  • #HTTP協定通常承載於TCP協定之上,在HTTP和TCP之間加入一個安全協定層(SSL或TSL),這個時候,就成了我們常說的HTTPS

  • 預設HTTP的連接埠號碼為80,HTTPS的連接埠號碼為443

2. 為什麼HTTPS安全性

  • #因為網路要求需要中間有很多的伺服器路由器的轉送。中間的節點都可能竄改訊息,而如果使用HTTPS,金鑰在你和終點站才有。 https之所以比http安全,是因為他利用ssl/tls協定傳輸。它包含證書,卸載,流量轉發,負載平衡,頁面適配,瀏覽器適配,refer傳遞等。保障了傳輸過程的安全性

3. 關於Http 2.0

  • ##HTTP/2引進了「服務端推(server push)」的概念,它允許服務端在客戶端需要資料之前就主動地將資料傳送到客戶端快取中,從而提高效能。

  • HTTP/2提供更多的加密支援

  • #HTTP/2使用多路技術,允許多個訊息在一個連線上同時交差。

  • 它增加了頭壓縮(header compression),因此即使非常小的請求,其請求和回應的header都只會佔用很小比例的頻寬

4. http缺點:

  • 通訊使用明文不加密,內容可能被竊取;

  • 不驗證通訊方身份,可能遭到偽裝;

  • 無法驗證封包完整性,可能被竄改。

https是加上加密處理(一般是SSL安全通訊線路) 認證完整性保護

5. HTTP/2 與HTTP/1.x的關鍵區別

  • 二進位協定取代文字協議,更簡潔高效

  • 針對每個網域只使用一個多路復用的連線

  • 壓縮頭部資訊減少開銷

  • #允許伺服器主動推送應答到客戶端的快取中

(五)、http狀態碼

 简单版
    [
        100  Continue   继续,一般在发送post请求时,已发送了http header之后服务端将返回此信息,表示确认,之后发送具体参数信息
        200  OK         正常返回信息
        201  Created    请求成功并且服务器创建了新的资源
        202  Accepted   服务器已接受请求,但尚未处理
        301  Moved Permanently  请求的网页已永久移动到新位置。
        302 Found       临时性重定向。
        303 See Other   临时性重定向,且总是使用 GET 请求新的 URI。
        304  Not Modified 自从上次请求后,请求的网页未修改过。

        400 Bad Request  服务器无法理解请求的格式,客户端不应当尝试再次使用相同的内容发起请求。
        401 Unauthorized 请求未授权。
        403 Forbidden   禁止访问。
        404 Not Found   找不到如何与 URI 相匹配的资源。

        500 Internal Server Error  最常见的服务器端错误。
        503 Service Unavailable 服务器端暂时无法处理请求(可能是过载或维护)。
    ]

二、網路-其他

1. 一個頁面從輸入URL 到頁面載入顯示完成,這個過程中都發生了什麼事? (流程說的越詳細越好)
一個頁面從輸入URL 到頁面加載顯示完成,這個過程中都發生了什麼

2. 說說網絡分層裡七層模型是哪七層

  • 應用層:應用層、表示層、會話層(從上往下)(HTTP、FTP、SMTP、DNS)

  • 傳輸層(TCP和UDP)

  • 網路層(IP)

  • 實體與資料鏈路層(乙太網路)

  • 每一層的作用如下:

  • 物理層:透過媒介傳送位元,決定機械及電氣規範(比特Bit)資料鏈結層:將位元組裝成幀和點到點的傳遞(幀Frame)

    • #網路層:負責資料包從來源到宿的傳遞與網際互連(包PackeT)

    • 傳輸層:提供端對端的可靠封包傳遞與錯誤復原(段Segment)

    • 會話層:建立、管理和終止會話(會話協定資料單元SPDU)

    • 表示層:將資料翻譯、加密和壓縮(表示協定資料單元PPDU)

    • 應用程式層:允許存取OSI環境的手段(應用協定資料單元APDU)

#3.304快取的原則

  • 伺服器首先產生ETag,伺服器可在稍後使用它來判斷頁面是否已被修改。本質上,客戶端透過將該記號傳回伺服器要求伺服器驗證其(客戶端)快取

  • 304是HTTP狀態碼,伺服器用來標識這個檔案沒修改,不回傳內容,瀏覽器接收到個狀態碼後,會使用瀏覽器已快取的檔案

  • #客戶端要求一個頁面(A)。伺服器返回頁面A,並在給A加上一個ETag。客戶端展現該頁面,並將頁面連同ETag一起快取。客戶再次請求頁面A,並將上次請求時伺服器傳回的ETag一起傳遞給伺服器。伺服器檢查該ETag,並判斷該頁面自上次客戶端請求之後還未被修改,直接回傳回應304(未修改-Not Modified)和一個空的回應體

  • 認識更多--瀏覽器快取篇

相信看了本文案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!

推薦閱讀:

Oday提權批次拿取商城伺服器root權限步奏詳解

在HTML中使用JS方法總結

以上是前端,HTT,電腦與網絡的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn