第一章 HTTP

目录

一、HTTP简介

[1.1. 概述](#1.1. 概述)

[1.2. HTTP与TCP的区别](#1.2. HTTP与TCP的区别)

二、HTTP迭代版本

三、HTTP请求头

四、HTTP响应

五、请求头中的请求方式


一、HTTP简介

1.1. 概述

超文本传输协议(HypertextTransfer Protocol,HTTP),用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源。其位于TCP/IP模型的应用层,依赖于TCP提供的可靠数据传输服务。是一个无状态的简单的请求-响应协议,每次请求和响应后不保留任何状态。HTTP定义了数据的格式,如客户端请求和服务端响应头、URL结构、编码格式等。

1.2. HTTP与TCP的区别

|------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------|
| | HTTP | TCP |
| 定义 | 以TCP为基础,用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源 | 负责在网络上可靠地传输数据。‌ |
| TCP/IP模型层次 | 应用层,定义Web通信的规则 | 传输层,提供底层的数据传输服务 |
| 连接方式 | 无状态的连接,每次请求和响应之后不保留任何状态。 | 有状态的长连接,面向连接的协议,通过三次握手建立连接 |
| 数据传输方式 | 定义了数据的格式,如请求和响应头、URL结构和编码方式等 | 提供字节流服务,保证数据传输的顺序和可靠型 |
| 应用场景 | 用于在客户端和服务端之间传输超文本文档(视频、图片、位置数据等)和其他资源 | 支持各种不同的应用,包括但不限于Web通信 |
| 备注 | Http协议是建立在TCP协议基础之上的。当浏览器需要从服务器 获取网页数据的时候,会发出一次http请求。Http通过TCP建立起一个到服务器的通道。 当一个网页完成之后,客户端和服务器端之间用于传输HTTP数据的TCP连接不会关闭,如果客户端再次访问这个页面时,会继续使用这一条已经建立的连接。Keep-Alive不会永久保持连接,它有一个保持时间,可以在不同的服务器软件中设定这个时间 | |

二、HTTP迭代版本

  • HTTP 0.9

  • 简单请求方法,仅限于文字传输的无序协议

  • HTTP 1.0

  • 支持0.9版本的简单请求方法和包含客户端HTTP版本的完整GET请求。面向事务的应用层协议,广泛应用于Web浏览器和服务器。

  • HTTP 1.1

  • 双方规定了连接方式和连接类型,但并没有过多考虑到通信连接的速率和效率。

  • HTTP 2.0

  • HTTP2.0的前身是HTTP1.0和HTTP1.1。虽然之前仅仅只有两个版本,但这两个版本所包含的协议规范十分庞大。网络协议新版本并不会马上取代旧版本。实际上,HTTP 1.0和HTTP1.1在之后很长的一段时间内一直并存,这是由于网络基础设施更新缓慢所决定的。

  • HTTP 3.0

  • 与之前依赖于成熟的TCP的版本不同,HTTP3.0使用QUIC,一种基于UDP的多路传输协议。HTTP3.0具有更低的延迟和更快的加载速度。

三、HTTP请求头

客户端------>请求------>服务端

HTTP协议的一部分,用于在客户端和服务端之间传递附加信息(包含了请求、客户端环境或请求的上下文等信息)

accept: application/json, text/javascript, */*; q=0.01 浏览器可接受的MIME类型

accept-encoding: gzip, deflate, br, zstd 浏览器能够进行解码的数据编码方式

accept-language: zh-CN,zh;q=0.9 浏览器希望的语言类型

cookie: PHPSESSID=bdq4ccqp17svf9dp87onjaov2n; 最重要的请求头之一

Request URL: https://blog.51cto.com/blog/user-stat?id=5342541 请求的资源地址

Request Method: GET 请求方法

Status Code: 200 OK 服务端响应请求的状态

Remote Address: 183.131.117.207:443 请求的服务IP地址

Referrer Policy: no-referrer-when-downgrade

四、HTTP响应

服务端------响应------客户端

指定了客户端请求服务端获得什么样的响应

cache-control: must-revalidate, no-cache, no-store 缓存控制

content-encoding: gzip 响应内容编码格式

content-type: application/json; charset=UTF-8 响应内容类型

date: Fri, 06 Sep 2024 05:45:38 GMT 响应时间

eo-cache-status: MISS

eo-log-uuid: 17962474739074623387

expires: Thu, 19 Nov 1981 08:52:00 GMT

load-balancing: blog

origin-agent-cluster: ?0

五、请求头中的请求方式

GET:请求指定的资源,多次执行相同的GET请求应该确保幂等/产生相同的结果。

POST:向指定的资源提交数据,以便根据所提供的数据创建/更新资源。POST请求不是幂等的,每次执行相同的POST请求可能会产生不同的结果。

PUT:此方法用于完整地更新指定的资源。由于PUT请求是幂等的,多次执行相同的PUT请求应该产生相同的结果。

DELETE:此方法用于删除指定的资源。

HEAD:此方法与GET方法类似,只是服务器在响应中只返回HTTP头部,而不返回实际的数据。这用于检查资源的元数据。

OPTIONS:此方法用于获取指定的资源所支持的通信选项。这可以用于CORS(跨源资源共享)检查。

PATCH:此方法用于对资源进行部分更新。

六、响应状态码

  1. 信息响应(100-199)
  2. 成功响应(200-299)
  3. 重定向(300-399)
  4. 客户端错误(400-499)
  5. 服务器错误(500-599)

|-----|-----------------------|--------------------------|
| 状态码 | 信息 | 具体描述 |
| 200 | OK | 请求已成功,并且返回了请求的资源。 |
| 204 | No Content | 请求已成功处理,但没有内容返回。 |
| 206 | Partial Content | 服务器已经完成了部分GET请求。 |
| 301 | Moved Permanently | 请求的资源已被永久移动到新的URL。 |
| 302 | Found | 请求的资源临时移动到新的URL。 |
| 304 | Not Modified | 自上次请求后,请求的资源未修改过。 |
| 400 | Bad Request | 服务器无法处理请求,因为客户端的请求语法错误。 |
| 401 | Unauthorized | 请求需要用户验证。 |
| 403 | Forbidden | 服务器拒绝请求。 |
| 404 | Not Found | 服务器无法找到请求的资源。 |
| 500 | Internal Server Error | 服务器遇到了意料之外的情况,导致它无法完成请求。 |
| 503 | Service Unavailable | 服务器暂时无法处理请求,可能是因为过载或维护。 |

相关推荐
无极92120 分钟前
访问控制类型及部分具体介绍
运维·服务器·网络·安全·网络安全·模型·访问控制
Kusunoki_D33 分钟前
传输层 IV(TCP协议——流量控制、拥塞控制)【★★★★】
网络·网络协议·tcp/ip·计算机网络
码农派大星。37 分钟前
网络原理 HTTP与HTTPS协议
网络·网络协议·http·https
chusheng184044 分钟前
Python 中的 Socket 编程入门
开发语言·网络·python
ZHOUPUYU1 小时前
最新Kali Linux超详细安装教程(附镜像包)
linux·运维·服务器·开发语言·网络
知本知至1 小时前
基于open-gpu-kernel-modules的p2p vram映射bar1提高通信效率
网络·网络协议·p2p
数据安全小盾1 小时前
2024年10款好用的图纸加密软件推荐|图纸加密用哪些加密软件?
大数据·运维·服务器·网络·web安全
bandaoyu2 小时前
【RDMA】mlxconfig修改和查询网卡(固件)配置--驱动工具
服务器·网络·数据库
limengshi1383922 小时前
通信工程学习:什么是NFVI网络功能虚拟化基础设施层
网络·学习·信息与通信
月临水2 小时前
JavaEE: 深入探索TCP网络编程的奇妙世界(二)
网络·tcp/ip·java-ee