HTTP协议介绍与TCP协议的区别

news2025/1/11 23:03:22

1、HTTP介绍

         HTTP(超文本传输协议,Hypertext Transfer Protocol)是一种用于从网络传输超文本到本地浏览器的传输协议。它定义了客户端与服务器之间请求和响应的格式。HTTP 是基于TCP/IP 进行数据的通信,通常使用端口 80/8080。HTTP可以传输多种数据类型,如html文件、图片、视频等数据。传输的数据类型是多种类型的,如:text/html; charset=UTF-8application/json等。

(HTTPS(超文本传输安全协议,Hypertext Transfer Protocol Secure)是 HTTP 的安全版本,它在 HTTP 下增加了 SSL/TLS 协议,提供了数据加密、完整性校验和身份验证。HTTPS 通常使用端口 443。)

2、HTTP消息结构

HTTP 是基于客户端/服务端(C/S)的架构模型,通过一个可靠的链接来交换信息,是一个无状态的请求/响应协议。HTTP消息分为两种类型:请求消息和响应消息。

一个 HTTP 客户端是一个应用程序(Web 浏览器或其他任何客户端),通过连接到服务器达到向服务器发送一个或多个 HTTP 的请求的目的。

客户端请求的报文格式如下

1.请求行 

        (1)请求方法:

上述的 GET, POST 和 HEAD 方法属于HTTP 1.0的版本,其他的方法数据HTTP1.1新增的方法。

        (2) 请求 URI(统一资源标识符):请求的资源路径,通常包括主机名、端口号(如果非默认)、路径和查询字符串。

        (3)HTTP 版本:如 HTTP/1.1 或 HTTP/2。

        请求行的格式示例:

GET /index.html HTTP/1.1

2.请求头

        包含了客户端环境信息、请求体的大小(如果有)、客户端支持的压缩类型等。常见的请求头如下:

3.空行

        请求头和请求体之间的分隔符,表示请求头的结束。

4.请求体(可选)

        在某些类型的HTTP请求(如 POST 和 PUT)中,请求体包含要发送给服务器的数据。

        

服务端的响应消息格式

1.状态行 

       (1) HTTP 版本:与请求消息中的版本相匹配。

       (2)状态码:三位数,表示请求的处理结果,如 200 表示成功,404 表示未找到资源。

        常用的状态码如下:

1xx信息,服务器收到请求,需要请求者继续执行操作
2xx成功,操作被成功接收并处理
3xx重定向,需要进一步的操作以完成请求
4xx客户端错误,请求包含语法错误或无法完成请求
5xx服务器错误,服务器在处理请求的过程中发生了错误

        (3)状态信息:状态码的简短描述。

        状态行的格式示例:

HTTP/1.1 200 OK

2.响应头

        包含了服务器环境信息、响应体的大小、服务器支持的压缩类型等。常见的响应头信息如下:

Date响应生成的日期和时间。例如:Wed, 18 Apr 2024 12:00:00 GMT
Server服务器软件的名称和版本。例如:Apache/2.4.1 (Unix)
Content-Type响应体的媒体类型(MIME类型),如text/html; charset=UTF-8application/json等。
Content-Length响应体的大小,单位是字节。例如:3145
Content-Encoding响应体的压缩编码,如 gzipdeflate等。
Content-Language响应体的语言。例如:zh-CN
Cache-Control控制响应的缓存行为, 如 no-cache 表示必须重新请求。
Connection管理连接的选项,如keep-aliveclose,keep-alive 表示连接不会在传输后关闭。。
Set-Cookie设置客户端的 cookie。例如:sessionId=abc123; Path=/; Secure
Expires响应体的过期日期和时间。例如:Thu, 18 Apr 2024 12:00:00 GMT

HTTP1.0中默认使用的是短链接,HTTP1.1中默认使用的是长链接。短链接的Connection值设置为close;长链接的Connection值设置为keep-alive。短链接是指每次的HTTP请求都需要重新链接,长链接是指HTTP的请求可以复用上次请求已连接的socket套接字进行通信。

 3.空行

        响应头和响应体之间的分隔符,表示响应头的结束。

4.响应体(可选)

        包含服务器返回的数据,如请求的网页内容、图片、JSON数据等。

消息响应举例如下:

3、HTTP和TCP的区别

HTTP(Hypertext Transfer Protocol)和TCP(Transmission Control Protocol)在网络协议栈中处于不同的层次,它们各自有不同的职责和特性。以下是HTTP和TCP之间的主要区别:

  1. 协议层次
    • TCP是传输层协议,它负责在源端和目的端之间建立、管理和终止连接,确保数据的可靠传输。
    • HTTP是应用层协议,它使用TCP作为传输层协议来发送和接收数据。HTTP定义了如何格式化请求和响应消息,以及如何在Web上实现超文本链接、缓存等功能。
  2. 职责和特性
    • TCP:
      • 提供面向连接的、可靠的、基于字节流的服务。
      • 使用序列号、确认和重传机制确保数据的顺序和完整。
      • 支持全双工通信,允许在建立连接后,双方同时发送和接收数据。
      • 提供了流量控制、拥塞控制等机制,以优化网络性能。
    • HTTP:
      • 定义了客户端和服务器之间交换消息的格式和规则。
      • 提供了请求/响应模型,客户端发送请求,服务器返回响应。
      • 支持多种请求方法(如GET、POST、PUT、DELETE等)和状态码(如200 OK、404 Not Found等)。
      • 支持持久连接(HTTP/1.1),允许在一个TCP连接上发送多个请求和响应,减少建立和关闭连接的开销。
  3. 通信过程
    • 当使用HTTP进行通信时,首先需要在客户端和服务器之间建立一个TCP连接(HTTP/1.0或更早版本中通常是每次请求建立一次连接,HTTP/1.1和更高版本支持持久连接)。
    • 建立连接后,客户端发送HTTP请求消息给服务器,服务器收到请求后处理并返回HTTP响应消息给客户端。
    • 通信完成后,TCP连接可以被关闭或保持打开状态以支持后续的请求。
  4. 安全性和加密
    • TCP本身不提供加密或身份验证功能,它只负责数据的可靠传输。
    • HTTP可以通过使用HTTPS(HTTP Secure)来提供加密和身份验证功能。HTTPS在HTTP的基础上增加了TLS/SSL协议,用于加密传输的数据,保护通信的机密性和完整性。
  5. 用途和场景
    • TCP可以用于各种需要可靠传输的场景,如文件传输、邮件发送、数据库连接等。
    • HTTP主要用于Web通信,是互联网上的主要协议之一,用于浏览网页、传输文件、执行Web服务等。

HTTP和TCP在网络协议栈中处于不同的层次,各自负责不同的任务。HTTP使用TCP作为传输层协议来确保数据的可靠传输,并在其上定义了如何格式化请求和响应消息以及如何在Web上实现各种功能。

上述文章部分内容参考于:

 HTTP/HTTPS 简介 | 菜鸟教程 (runoob.com)

 HTTP请求、响应报文格式_http 响应包的格式-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

项目纪实 | 版本升级操作get!GreatDB分布式升级过程详解

某客户项目现场,因其业务系统要用到数据库新版本中的功能特性,因此考虑升级现有数据库版本。在升级之前,万里数据库项目团队帮助客户在本地测试环境构造了相同的基础版本,导入部分生产数据,尽量复刻生产环境进行升级&a…

机器学习笔记(1):sklearn是个啥?

sklearn 简介 Sklearn是一个基于Python语言的开源机器学习库。全称Scikit-Learn,是建立在诸如NumPy、SciPy和matplotlib等其他Python库之上,为用户提供了一系列高质量的机器学习算法,其典型特点有: 简单有效的工具进行预测数据分…

GEYA格亚GRT8-S1S2间歇性双时间循环继电器时间可调交流220V 24v

品牌 GEYA 型号 GRT8-S2 AC/DC12-240V 产地 中国大陆 颜色分类 GRT8-S1 A220,GRT8-S1 AC/DC12-240V,GRT8-S2 A220,GRT8-S2 AC/DC12-240V GRT8-S,循环延时,时间继电器:LED指示灯,触头容量大,电压超宽&#xff0…

构建树结构的几种方式

表结构 CREATE TABLE sys_dept (dept_id bigint(20) NOT NULL AUTO_INCREMENT COMMENT ID,pid bigint(20) DEFAULT NULL COMMENT 上级部门,sub_count int(5) DEFAULT 0 COMMENT 子部门数目,name varchar(255) NOT NULL COMMENT 名称,dept_sort int(5) DEFAULT 999 COMMENT 排…

【C#】类和对象的区别

1.区别概述 结构体和类的最大区别是在存储空间上,前者是值类型,后者是引用类型,它们在赋值上有很大的区别,在类中指向同一块空间的两个类的值会随一个类的改变而改变另一个,请看如下代码所示: namespace …

020.有效的括号,用栈来解决的 Java 版 LeetCode 刷题笔记

题意 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有效。 有效字符串需满足: 左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。每个右括号都有一个对应的相同类型…

FreeRTOS【12】队列集使用

1.开发背景 基于以上的章节,了解了 FreeRTOS 多线程间的信号量、队列的使用,已经满足了日常使用场景。这个篇章要介绍的是队列集,实际上队列的升级版,存储信号量和队列等的触发事件。 队列集在实际的开发项目中应用相对比较少&…

linux同步搭建多台服务器

前言: 如果在安装服务器的过程中,需要安装多台服务器,同样的配置,同样的步骤就可以使用此方法,搭建集群同步安装 1.配置网卡 想要两台机器进行同步的话,必须网段是同样的,保持在同一网段并且能…

科技智慧园区解决方案

随着科技创新的推动和城市化进程的加速,城市面临着诸多挑战和机遇。如何提升城市的竞争力和可持续性,是一个亟待解决的问题。在这个背景下,科技智慧园区作为一种新型的城市发展模式,引起了越来越多的关注和探索。 什么是科技智慧园…

Jmeter的线程组之间传递参数

使用jemter做接口测试,有时候需要会遇到不同线程组之间调用相同变量的情况,最多见的就是token的传递,网上有很多处理方法,这里只记录setProperty的办法,一招鲜走遍天! 首先我有两个线程组: 线程…

Servlet搭建博客系统

现在我们可以使用Servlet来搭建一个动态(前后端可以交互)的博客系统了(使用Hexo只能实现一个纯静态的网页,即只能在后台自己上传博客)。有一种"多年媳妇熬成婆"的感觉。 一、准备工作 首先创建好项目,引入相关依赖。具体过程在"Servlet的创建"中介绍了。…

WiFi蓝牙模块促进传统零售数字化转型:智能零售体验再升级

随着科技的不断发展,数字化转型已经成为了各行各业的必然趋势。在传统零售业中,WiFi蓝牙模块的应用正逐渐推动着行业的数字化转型,为消费者带来更加智能化、便捷化的零售体验。本文MesoonRF美迅物联网将从以下几个方面阐述WiFi蓝牙模块在传统…

Claude 3可使用第三方API,实现业务流程自动化

5月31日,著名大模型平台Anthropic宣布,Claude3模型可以使用第三方API和工具。 这也就是说,用户通过文本提问的方式就能让Claude自动执行多种任务,例如,从发票中自动提取姓名、日期、金额等,该功能对于开发…

GCN 代码解析(一) for pytorch

Graph Convolutional Networks 代码详解 前言一、数据集介绍二、文件整体架构三、GCN代码详解3.1 utils 模块3.2 layers 模块3.3 models 模块3.4 模型的训练代码 总结 前言 在前文中,已经对图卷积神经网络(Graph Convolutional Neural Networks, GCN&am…

linux nohup命令详解:持久运行命令,无视终端退出

nohup (全称为 “no hang up”),用于运行一个命令,使其在你退出 shell 或终端会话后继续运行。 基本语法 nohup command [arg1 ...] [&> output_file] &command 是你想要运行的命令。[arg1 ...] 是该命令的参数。&am…

STM32-14-FSMC_LCD

STM32-01-认识单片机 STM32-02-基础知识 STM32-03-HAL库 STM32-04-时钟树 STM32-05-SYSTEM文件夹 STM32-06-GPIO STM32-07-外部中断 STM32-08-串口 STM32-09-IWDG和WWDG STM32-10-定时器 STM32-11-电容触摸按键 STM32-12-OLED模块 STM32-13-MPU 文章目录 1. 显示器分类2. LCD简…

【稳定检索/投稿优惠】2024年语言、文化与艺术发展国际会议(LCAD 2024)

2024 International Conference on Language, Culture, and Art Development 2024年语言、文化与艺术发展国际会议 【会议信息】 会议简称:LCAD 2024大会时间:2024-08-10截稿时间:2024-07-27(以官网为准)大会地点:中国…

【数学不建模】赛程安排

你所在的年级有5个班,每班一支球队在同一块场地上进行单循环赛, 共要进行10场比赛. 如何安排赛程使对各队来说都尽量公平呢. 下面是随便安排的一个赛程: 记5支球队为A, B, C, D, E,在下表左半部分的右上三角的10个空格中, 随手填上1,2,10, 就得到一个赛程…

新书推荐:9.5堆栈图解析生命周期

本节必须掌握的知识点: 掌握局部变量、全局变量存放在哪 熟练画堆栈图 掌握每个函数从哪开始被调用的,从哪结束的 开始看本节前,请读者思考如下几问题: 局部变量存放在哪里?全局变量存放在哪里?编译器是怎…

FPGA新起点V1开发板(七-语法篇)——程序框架+高级语法(选择性做笔记)

文章目录 一、模块结构二、赋值三、条件语句 一、模块结构 默认是wire类型&#xff0c;assign是定义功能。 上面这两个always都是并行 例化 二、赋值 有两种赋值“”和“<” “”是阻塞赋值&#xff0c;也就是从上到下&#xff0c;依次完成 “”是非阻塞赋值&#xff0c;…