TCP/IP协议—HTTP

devtools/2024/10/18 2:40:17/
http://www.w3.org/2000/svg" style="display: none;">

TCP/IP协议—HTTP

  • HTTP协议
    • HTTP通讯特点
    • HTTP通讯流程
  • HTTP请求报文
    • 请求方法
  • HTTP应答报文
    • 状态码

HTTP协议

超文本传输协议(Hypertext Transfer Protocol,HTTP)是一种请求-响应的协议,用户可以通过HTTP向服务器上传、下载数据。HTTP基于TCP协议,是web应用中最主要的应用层协议,比如浏览器上网就是使用HTTP协议。通讯端口默认为80。

超文本安全传输协议(Hypertext Transfer Protocol Secure,HTTPS)是加入安全加密的HTTP通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS的安全基础是SSL/TLS。通讯端口默认为443。

HTTP协议源文档

HTTP通讯特点

  • 可靠传输:HTTP基于TCP,需要先连接再传输数据,因此也集成了TCP可靠传输的特性。
  • 立即响应:HTTP是无状态的协议,即不存储业务处理状态,每个请求都是互相独立、毫无关联的,协议不要求客户端或服务器记录请求相关的信息。
  • 单向请求:HTTP基于客户端-服务器模式,HTTP只能从客户端向服务器发起请求,服务器不能主动向客户端发起请求。
  • 灵活传输:HTTP可以传输任意类型的数据。

HTTP通讯流程

  1. 客户端发起HTTP请求,与服务器建立TCP连接。
  2. 客户端向服务器发送HTTP报文。
  3. 服务器收到HTTP报文后进行业务处理,然后返回结果。

HTTPS会在建立连接时加入身份认证的流程,且在数据传输的过程中使用证书对数据进行加密。

HTTP请求报文

https://img-blog.csdnimg.cn/direct/9e80e677d4414310b0011df7fda2a7d3.png" alt="在这里插入图片描述" />

HTTP报文主要分为三部分:请求行、请求头部、请求数据。
需要注意的是,HTTP报文的每一行都需要换行符,请求头部与请求数据之间还需要一个空行。

  • 请求行:包含请求方法,URL,协议版本。其中协议版本目前广泛使用的还是HTTP/1.1。
  • 请求头部:使用键值对的数据格式(key: value),用于声明请求的属性参数。
  • 请求数据:具体的请求数据。发送不同的数据会有不同的格式。
  1. 文本数据,以访问OpenAI ChatGPT的请求为例
POST /v1/chat/completions HTTP/1.1   //post请求,具体访问URL为/v1/chat/completions,HTTP/1.1 协议
Host: api.openai.com                 //访问的服务器域名
Authorization: sk-xxxxxxxxxxxxxxxx   //服务器需要的认证头部
Content-Type: application/json       //请求数据的数据类型
Content-Length: 179                  //请求数据数据长度{                                   //请求数据"model":"gpt-3.5-turbo","max_tokens":1000,"temperature":0.8,"messages": [{"role": "user","content": "讲个小故事"}]
}
  1. 文件数据,以访问OpenAI transcriptions的请求为例
POST /v1/audio/transcriptions HTTP/1.1  //post请求,具体访问URL为/v1/chat/completions,HTTP/1.1 
Host: api.openai.com                    //访问的服务器域名
Authorization: sk-xxxxxxx               //服务器需要的认证头部
Content-Length: 360                     //请求数据数据长度
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW  //请求数据的数据类型,包括数据分隔符------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="/C:/Users/zou/Desktop/16k.wav" //传输的数据信息描述
Content-Type: audio/wav              //传输的数据类型。与数据要个一个空行(音频文件数据)
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name=modle  //传输的数据信息描述。与数据要个一个空行whisper-1
------WebKitFormBoundary7MA4YWxkTrZu0gW--   //最后的分隔符多了 -- 表示数据结尾

请求方法

请求方法作用
GET此方法用于请求指定资源的表示形式。GET请求通常用于数据检索,例如请求网页内容。GET请求的参数通常附加在URL后面。
POST此方法用于向指定资源提交数据以创建或更新资源。POST请求通常包含在请求体中的数据,适用于提交表单或上传文件。
HEAD与GET方法相似,但HEAD不返回响应体,仅返回状态行和标题部分。HEAD方法主要用于获取响应的元数据。
PUT此方法用于将数据发送到服务器以创建或更新资源。PUT方法用上传的内容替换目标资源中的所有当前内容。
DELETE此方法用于请求服务器删除指定的资源。DELETE请求会导致服务器删除URI指定的目标资源的所有当前内容。
OPTIONS此方法用于获取当前URL支持的方法列表。OPTIONS请求返回服务器支持的方法列表,对于查看API端点的可用操作非常有用。
TRACE此方法用于回显服务器收到的请求,主要用于测试或诊断网络路径上的问题。

HTTP应答报文

HTTP应答报文与HTTP请求报文格式类似,区别在与请求行。
以百度的应答报文为例

HTTP/1.1 200 OK
Connection: keep-alive
Content-Type: text/html; charset=utf-8
Date: Thu, 18 Apr 2024 02:21:36 GMT
X-Ua-Compatible: IE=Edge,chrome=1
X-Xss-Protection: 1;mode=block
Transfer-Encoding: chunked

请求行中没有请求方式以及URL,但是多了状态码

状态码

https://img-blog.csdnimg.cn/direct/4e0c2e1d98a5416dba6cf7d93ce00725.png" alt="在这里插入图片描述" />
常用的状态码如下

状态码返回消息状态码含义
100Continue表示服务器已经接收到一部分请求,客户可以继续发送
101Switching Protocols用于响应客户端的 Upgrade请求头发送的,指明服务器即将切换的协议
102Processing表示服务器已经接收到请求并且正在处理,但尚未完成处理
200OK请求成功并已正确处理返回
201Create请求成功,并因此创建了一个新的资源。这通常是在 POST 请求,或是某些 PUT 请求之后返回的响应
202OK表示请求已被接受,但处理尚未完成
204No Content表示请求成功处理,但没有返回内容
301Moved Permanently请求资源的 URL 永久移动到了一个不同的URL,在响应中给出了新的 URL
302Found请求资源的 URL 临时移动到了一个不同的URL,在响应中给出了新的 URL
400Bad Request错误请求,服务器无法或不会处理请求
401Unauthorized表示客户端的请求没有身份验证或者验证失败
403Forbidden客户端没有访问内容的权限
404Not Found服务器找不到请求的资源
415Unsupported Media Type服务器不支持请求数据的媒体格式
414URI Too Long客户端请求的 URI 长度超过服务器所接受的长度
429Too Many Requests客户端在给定的时间内发送了太多请求
431Request Header Fields Too Large客户端在给定的时间内发送了太多请求
500Internal Server Error服务器内部错误,当服务器在处理请求时遇到了意外错误或异常情况,无法完成请求
502Bad Gateway表示代理服务器无法正确地转发请求并获得有效的响应

学习笔记,有问题欢迎指出


http://www.ppmy.cn/devtools/7061.html

相关文章

安宝特方案 | AR工业解决方案系列-工厂督查

在工业4.0时代,增强现实(AR)技术正全面重塑传统工业生产,在工厂监督领域,其应用不仅大幅提升了生产效率、监测准确性和规范执行程度,而且为整体生产力带来了质的飞跃。 01 传统挑战与痛点 在制造业生产流程…

营业执照OCR接口在电商行业中的具体应用

在当今快速发展的电子商务时代,营业执照OCR接口技术的应用为电商行业带来了深远的影响。这项技术通过自动识别和提取营业执照图像中的文字信息,不仅极大提高了数据处理的速度和准确性,而且还为电商平台的风险管理和用户体验优化提供了强有力的…

说说Java 8 引入的Stream API

介绍背景 Stream API,这是一种高效、易于使用的数据处理方式,它可以极大提高程序员对集合数据操作的效率和便利性。 1. Stream的基本概念 Java Stream是一种数据流,它可以用于对集合、数组或者其他支持的数据源进行批量操作。它不是数据结…

基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.5版已发布

关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级、高度提炼,一套API优雅支持UDP 、TCP 、WebSocket 三种协议,支持iOS、Android、H5、小程序、Uniapp、标准Java平台,服务端基于Netty编写。 工…

从C到JAVA之学习JAVA的第一周笔记

文章目录 java语言概述JDK与JRE编写执行过程第一份java代码解读编写编译运行其他 注释三种注释方法 java API文档关键字标识符数据类型基本数据类型自动类型提升规则引用数据类型 string概述String与基本数据类型的变量间的运算 运算符键盘录入运行控制语句数组定义与静态初始化…

【架构-12】JWT和Token

什么是Token? Token的目的是为了减轻服务器的压力,减少频繁的查询数据库,使服务器更加健壮。 Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客…

Smart Link + Monitor Link 实现二层链路故障判断与主备自动切换

一、适用场景: 1、企业中有二层需要提高可靠性业务的主备链路;具备快速收敛性能,收敛速度可达到亚秒级,实现高效可靠。 2、运行的业务对可靠性有要求,对应的网络拓扑不适宜修改为三层链路,只能在原二层链路…

Dockerfile与docker-compose容器编排(Docker系列第3章,共3章)

温馨提示 不同的组件需要不同的docker配置(例如容器卷,端口,环境变量等),使用你懂得工具看hub.docker.com官方手册。不要死记硬背,因为这种东西不是天天要写,过段时间就忘了,很容易…