HTTP1 認識與總結

一、簡述HTTP協議主要特點

HTTP協議是基於客戶端/服務器模型的請求/響應協議,被用於在Web瀏覽器和網站服務器之間通信。簡單來說,就是通過某些方法,將你想讓服務器做的事情告訴它,然後服務器返回一些數據給你。HTTP協議有以下幾個主要特點:

1、純文本協議。HTTP協議是基於文本的,這意味着它使用ASCII編碼來傳輸數據。

2、請求/響應模式。在HTTP中,服務器通常等待客戶端請求,然後提供響應。

3、無狀態協議。對於HTTP而言,每個HTTP請求都是獨立的,無法知道之前是否有請求或響應。

4、可靠傳輸。HTTP協議保證了請求和響應的可靠傳輸,即使在網絡不穩定的情況下也可以保證數據的傳輸。

5、支持緩存。HTTP協議支持緩存機制,它允許瀏覽器或代理服務器存儲響應並重複使用它。

二、HTTP服務的tcp端口是1

HTTP服務默認使用80端口,這也是HTTP協議的標準端口號,但並不是唯一的端口號,其他一些端口也可以用於HTTP服務,只需要在請求中指定端口號即可。如果你想自定義端口號,可以使用一些不常用的非專用端口,比如:8080、8888等等。

三、HTTP1的相關內容

1、首行格式

    
    HTTP-Version (SP) Status-Code (SP) Reason-Phrase CRLF
    

HTTP1協議的請求報文的首行由三部分組成:協議版本、狀態碼、相關原因。例如:

    
    HTTP/1.1 200 OK
    

以上首行中的HTTP/1.1表示協議版本,200表示狀態碼,OK表示原因短語

2、HTTP1協議的請求方法

HTTP1協議定義了一些常見的請求方法,包括GET、POST、PUT、DELETE等等,它們用於告訴服務器需要執行哪種操作。以下是一些常見的HTTP1請求方法:

  • GET:用於獲取資源
  • POST:用於提交數據
  • PUT:用於更新數據
  • DELETE:用於刪除資源

3、HTTP1協議的請求報文的結構

    
    請求方法 URL 協議版本 CRLF
    Header1: value1 CRLF
    Header2: value2 CRLF
    ...
    HeaderN: valueN CRLF
    CRLF
    request body
    

HTTP1協議的請求報文由三部分組成:請求行、請求頭、請求正文。請求頭和請求正文之間必須有一個空行。以下是一個HTTP請求報文的示例:

    
    GET /index.html HTTP/1.1
    Host: www.example.com
    User-Agent: Mozilla/5.0
    Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
    Accept-Language: en-US,en;q=0.5
    Accept-Encoding: gzip, deflate, br
    Connection: keep-alive
    Upgrade-Insecure-Requests: 1

    

4、HTTP1協議的響應報文的結構

    
    HTTP-Version Status-Code Reason-Phrase CRLF
    Header1: value1 CRLF
    Header2: value2 CRLF
    ...
    HeaderN: valueN CRLF
    CRLF
    response body
    

HTTP1協議的響應報文由三部分組成:狀態行、響應頭、響應正文。響應頭和響應正文之間必須有一個空行。以下是一個HTTP響應報文的示例:

    
    HTTP/1.1 200 OK
    Server: nginx/1.14.0 (Ubuntu)
    Content-Type: text/html; charset=UTF-8
    Content-Length: 1234
    Connection: keep-alive

    
    
        
            Example Page
            
        
        
            

Hello, World!

This is an example page.

五、HTTP1協議的優缺點

1、優點

HTTP1協議是一個簡單的文本協議,易於理解和實現。它支持多種媒體類型,適合用於諸如圖像、視頻等文件的傳輸。HTTP1協議在處理小型請求方面非常高效,因為它不需要建立持久連接和繁重的連接管理。

2、缺點

HTTP1協議也有一些缺點。由於它是一個無狀態協議,每個請求都需要新建一個連接,這樣就會導致不必要的延遲。在面對高並發的請求時,HTTP1協議的效率會明顯變差,因為它不能同時執行多個請求,需要一個一個地處理,而且會有很多重複的請求頭數據。

六、代碼示例

以下是一個使用Node.js搭建的HTTP1服務器的示例:

    
    const http = require('http');

    const server = http.createServer((request, response) => {
        response.statusCode = 200;
        response.setHeader('Content-Type', 'text/plain');
        response.end('Hello, World!');
    });

    server.listen(8080, '127.0.0.1', () => {
        console.log('Server running at http://127.0.0.1:8080/');
    });
    

以上代碼創建了一個HTTP服務器,監聽8080端口,它將在127.0.0.1上監聽請求,並響應Hello, World!。

使用curl工具可以測試該服務器:

    
    curl http://127.0.0.1:8080/
    

以上命令應該返回以下結果:

    
    Hello, World!
    

七、小結

HTTP1協議是一種簡單的文本協議,它定義了客戶端和服務器之間通信的基本規則和格式。HTTP1協議在Web應用程序開發中得到了廣泛的應用,它已成為Web瀏覽器和服務器之間通信的標準方式。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/258104.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-15 12:48
下一篇 2024-12-15 12:48

相關推薦

  • 金額選擇性序列化

    本文將從多個方面對金額選擇性序列化進行詳細闡述,包括其定義、使用場景、實現方法等。 一、定義 金額選擇性序列化指根據傳入的金額值,選擇是否進行序列化,以達到減少數據傳輸的目的。在實…

    編程 2025-04-29
  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Idea新建文件夾沒有java class的解決方法

    如果你在Idea中新建了一個文件夾,卻沒有Java Class,應該如何解決呢?下面從多個方面來進行解答。 一、檢查Idea設置 首先,我們應該檢查Idea的設置是否正確。打開Id…

    編程 2025-04-29
  • Python官網中文版:解決你的編程問題

    Python是一種高級編程語言,它可以用於Web開發、科學計算、人工智能等領域。Python官網中文版提供了全面的資源和教程,可以幫助你入門學習和進一步提高編程技能。 一、Pyth…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • 英語年齡用連字符號(Hyphenation for English Age)

    英語年齡通常使用連字符號表示,比如 “five-year-old boy”。本文將從多個方面探討英語年齡的連字符使用問題。 一、英語年齡的表達方式 英語中表…

    編程 2025-04-29
  • java client.getacsresponse 編譯報錯解決方法

    java client.getacsresponse 編譯報錯是Java編程過程中常見的錯誤,常見的原因是代碼的語法錯誤、類庫依賴問題和編譯環境的配置問題。下面將從多個方面進行分析…

    編程 2025-04-29
  • Java JsonPath 效率優化指南

    本篇文章將深入探討Java JsonPath的效率問題,並提供一些優化方案。 一、JsonPath 簡介 JsonPath是一個可用於從JSON數據中獲取信息的庫。它提供了一種DS…

    編程 2025-04-29
  • at least one option must be selected

    問題解答:當我們需要用戶在一系列選項中選擇至少一項時,我們需要對用戶進行限制,即“at least one option must be selected”(至少選擇一項)。 一、…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29

發表回復

登錄後才能評論