TCP/IP协议—HTTP

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请求报文

在这里插入图片描述

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,但是多了状态码

状态码

在这里插入图片描述
常用的状态码如下

状态码返回消息状态码含义
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表示代理服务器无法正确地转发请求并获得有效的响应

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/561957.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ESP32嵌入式物联网开发实战笔记-C编程基础知识点【doc.yotill.com】

乐鑫ESP32入门到精通项目开发参考百例下载: 链接:百度网盘 请输入提取码 5.1 C 语言基础知识复习 本节我们给大家介绍一下 C 语言基础知识,对于 C 语言比较熟练的开发者,可以跳过此节,对于基础比较薄弱的开发者&…

JVM概述

JVM概述 1、一些性能上的问题 我好好运行的线上系统突然间卡死了,系统无法访问,当然这个原因非常多;想解决线上的JVM GC问题却无从下手;新的项目上线了,对于各种JVM参数的设置一脸茫然,全部直接默认&…

从头开始构建自己的 GPT 大型语言模型

图片来源: Tatev Aslanyan 一、说明 我们将使用 PyTorch 从头开始构建生成式 AI、大型语言模型——包括嵌入、位置编码、多头自注意、残差连接、层归一化,Baby GPT 是一个探索性项目,旨在逐步构建类似 GPT 的语言模型。在这个项目中&#xff…

Unity HDRP Water Surface 水系统 基础教程

Unity HDRP Water Surface 水系统 基础教程 Unity Water SurfaceUnity 项目创建Unity Water Surface:Ocean(海洋)简介Ocean:Transform、GeneralOcean:Simulation(仿真模拟)Ocean:Sim…

pnpm - Failed to resolve loader: cache-loader. You may need to install it.

起因 工作原因需要研究 vue-grid-layout 的源码,于是下载到本地。因为我习惯使用 pnpm,所以直接用 pnpm i 安装依赖,npm run serve 启动失败。折腾了一番没成功。 看到源码里有 yarn.lock,于是重新用 yarn install 安装依赖&…

多模态大语言模型综述

节前,我们星球组织了一场算法岗技术&面试讨论会,邀请了一些互联网大厂朋友、参加社招和校招面试的同学,针对算法岗技术趋势、大模型落地项目经验分享、新手如何入门算法岗、该如何准备、面试常考点分享等热门话题进行了深入的讨论。 汇总…

车控操作系统

车控操作系统 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看…

贪吃蛇游戏实现(VS编译环境)

贪吃蛇游戏 🥕个人主页:开敲🍉 🔥所属专栏:C语言🍓 🌼文章目录🌼 0. 前言 1. 游戏背景 2. 实现后游戏画面展示 3. 技术要求 4. Win32 API介绍 4.1 Win32 API 4.2 控制台程序 4.…

使用脚本启动和关闭微服务

使用脚本启动和关闭微服务 一、前言二、启动1、处理每个服务2、编写启动脚本3、其他启动脚本(无效,有兴趣可以看看)4、启动 三、关闭1、测试拿服务进程id的命令是否正确2、编写关闭脚本3、关闭 一、前言 假如在服务器中部署微服务不使用 doc…

【C++类和对象】const成员函数及流插入提取

💞💞 前言 hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹 💥个人主页&#x…

地图图源#ESRI ArcGIS XYZ Tiles系列(TMS)

目录 1、前言 2、地图图源网址 2.1、Satellite 卫星图源 2.2、Terrain 地形图源 2.3、Street 路网/标注图源 2.4、Specifity 特色设计图源 3、专业推荐”穿搭“ 4、图源配置下载及使用 图源名称图层类别特别注意谷歌 Google①地形 ②影像 ③矢量及标注 ④特色图源国内大…

Nessus【部署 03】Docker部署漏洞扫描工具Nessus详细过程分享(下载+安装+注册+激活)文末福利

Docker部署漏洞扫描工具Nessus 1.安装2.配置2.1 添加用户2.2 获取Challenge code2.3 获取插件和许可证2.4 注册 3.使用4.进阶 整体流程: 1.安装 # 1.查询镜像 docker search nessus# 2.拉取镜像 docker pull tenableofficial/nessus# 3.启动镜像【挂载目录用于放置…

【Java框架】Spring框架(一)——Spring基本核心(IOC/DI)

目录 Java企业级框架企业级系统EJB概念解析EJB与Spring的恩怨情仇 Spring系统架构1. Data Access/Integration(数据访问/集成)2. Web 模块3. Core Container(Spring 的核心容器)4. AOP、Aspects、Instrumentation 和 M…

冰达ROS机器人快速使用指南

欢迎来到《冰达ROS机器人极简使用指南》 Q:这份教程适合谁? A:适合完全0基础新手,需要快速跑起来机器人的基本功能。也适合技术大佬需要快速的了解冰达ROS机器人的使用方法。 Q:这份教程内容很少,是不是…

迅雷下载不了的资源怎么下载?

我想下载Boost库,但是下载不下来 用迅雷下载是一直卡在0k 后来尝试在centos上用wget进行下载,竟然可以 wget https://boostorg.jfrog.io/artifactory/main/release/1.85.0/source/boost_1_85_0.tar.gz

信息打点--语言框架

指纹识别 后端 CMS:一般php开发居多源码程序,其他语言也存在,但不易识别(利用源码程序名去搜漏洞情况,源码下载进行后期的代码审计) 前端 js框架(爬取更多的js从里面筛选URL或敏感泄露key)等…

docker-compose 安装MongoDB续:创建用户及赋权

文章目录 1. 问题描述2. 分析2.1 admin2.2 config2.3 local 3. 如何连接3.解决 1. 问题描述 在这一篇使用docker-compose创建MongoDB环境的笔记里,我们创建了数据库,但是似乎没有办法使用如Robo 3T这样的工具去连接数据库。连接的时候会返回这样的错误&…

C++参考手册使用说明

C参考手册使用说明 文章目录 C参考手册使用说明1 为什么要使用C参考手册2 网站3 C参考手册离线格式4 C参考手册使用说明1.1 离线C参考手册下载1.2 html离线C参考手册1.3 chm离线C参考手册1.4 linux安装包C参考手册(只有英文版本)1.5 qch离线C参考手册 更…

2 逻辑斯蒂回归(分类)

目录 1 理论 逻辑回归假设数据服从伯努利分布(二分类),通过极大化似然函数的方法,运用梯度下降来求解参数,来达到将数据二分类的目的。 逻辑斯蒂回归(Logistic Regression)是一种用于解决分类问题的…

MySQL下载与安装

文章目录 1:MySQL下载与安装2:配置环境变量3:验证是否安装成功 1:MySQL下载与安装 打开MySQL官网,MySQL 下载链接选择合适的版本和操作系统,页面跳转之后选择No thanks, just start my download.等待下载即…