超文本传输协议(HTTP)

本文详细介绍了HTTP协议的基本概念,包括客户端如何发起请求、服务器如何响应,以及请求和响应的具体构成。同时,文中还列举了常见的HTTP请求方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、简介

        HTTP 是一种协议,允许 web 服务器和浏览器通过互联网进行来发送和接受数据。它是一种请求和响应协议。客户端请求一个文件而服务器响应请求。 HTTP 使用可靠的 TCP 连接–TCP 默认使用 80 端口。在 HTTP 中,始终都是客户端通过建立连接和发送一个 HTTP 请求从而开启一个事务。 web 服务器不需要联系客户端或者对客户端做一个回调连接。无论是客户端或者服务器都可以提前终止连接。举例来说,当你正在使用一个 web 浏览器的时候,可以通过点击浏览器上的停止按钮来停止一个文件的下载进程,从而有效的关闭与 web 服务器的 HTTP 连接。

2、HTTP 请求

       一个 HTTP 请求包括三个组成部分:

  • 方法—统一资源标识符(URI)—协议/版本
  • 请求的头部
  • 主体内容

    下面是一个 HTTP 请求的例子:

POST /examples/default.jsp HTTP/1.1
Accept: text/plain; text/html
Accept-Language: en-gb
Connection: Keep-Alive
Host: localhost
User-Agent: Mozilla/4.0 (compatible; MSIE 4.01; Windows 98)
Content-Length: 33
Content-Type: application/x-www-form-urlencoded
Accept-Encoding: gzip, deflate
lastName=Franks&firstName=Michael

    方法—统一资源标识符(URI)—协议/版本出现在请求的第一行:POST /examples/default.jsp HTTP/1.1。这里 POST 是请求方法, /examples/default.jsp 是 URI,而 HTTP/1.1 是协议/版本部分。HTTP 1.1 支持 7 种类型的请求: GET, POST,HEAD, OPTIONS, PUT, DELETE 和 TRACE。 GET 和 POST 在互联网应用里边最普遍使用的。URI 完全指明了一个互联网资源。 URI 通常是相对服务器的根目录解释的。因此,始终以斜线/开头。

  请求的头部包含了关于客户端环境和请求的主体内容的有用信息。例如它可能包括浏览器设置的语言,主体内容的长度等等。每个头部通过一个回车换行符(CRLF)来分隔的。

  在前面一个 HTTP 请求中,主体内容只不过是下面一行:lastName=Franks&firstName =Michael。实体内容在一个典型的 HTTP 请求中可以很容易的变得更长。

3、HTTP 响应

  类似于 HTTP 请求,一个 HTTP 响应也包括三个组成部分:

  • 方法—统一资源标识符(URI)—协议/版本
  • 响应的头部
  • 主体内容

  下面是一个 HTTP 响应的例子:

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Date: Mon, 5 Jan 2004 13:13:33 GMT
Content-Type: text/html
Last-Modified: Mon, 5 Jan 2004 13:13:12 GMT
Content-Length: 112
<html>
<head>
<title>HTTP Response Example</title>
</head>
<body>
Welcome to Brainy Software
</body>
</html>

 响应头部的第一行类似于请求头部的第一行。第一行告诉你该协议使用 HTTP 1.1,请求成功(200=成功),表示一切都运行良好。
 响应头部和请求头部类似,也包括很多有用的信息。
 响应的主体内容是响应本身的 HTML 内容。头部和主体内容通过 CRLF 分隔开来。

超文本传输协议 HTTP 是一种在 Web 上进行数据通信的协议。它基于客户端-服务端模式,客户端向服务端发送请求,服务端向客户端发送响应HTTP 协议的主要特点包括: - 简单快速:客户端向服务端请求时使用的方法(method)动词通常只有 GET 和 POST,请求报文和响应报文都是简单的结构体,因此通信快速。 - 灵活:HTTP 允许使用任意的 MIME 类型传输任何类型的数据对象。 - 无连接:HTTP 协议每次请求都会建立一次连接,请求结束后立即断开连接,这种方式会导致在处理多个请求时浪费时间和资源。为了解决这个问题,HTTP/1.1 引入了持久连接(Keep-Alive),可以在一个连接上处理多个请求。 - 无状态:HTTP 协议是一种无状态的协议,也就是说,它不会保留连接的状态信息。这意味着每次请求都是独立的,不能根据前一次请求的结果判断下一次请求的处理方式。 HTTP 还有一些其他的特点,例如: - 支持代理、缓存等功能。 - 报文编码方式灵活,支持文本、多媒体、程序文件等多种数据类型。 - 请求响应报文支持多种编码方式,如日期编码、压缩编码等。 引用:注:协议 HTTP 不仅传送完成超文本跳转所必需的信息,而且也传送任何可从互联网上得到的信息,如文本、超文本、声音和图像等。 [^1]。引用:(3)HTTP/1.1的请求响应报文是面向文本的(text-oriented)。当客户连续发送请求并受到响应时,在 TCP连接上传送的 HTTP 报文首部成为不小的开销。在这些首部中有很多段是重复的。为此,HTTP/2 把所有的报文都划分为许多较小的二进制编码的帧,并采用新的压缩算法,不发送重复的首部字段,大大减小了首部的开销,提高了传输效率。 。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值