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/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

发表回复

登录后才能评论