HTTP协议解析

2023-05-16

文章目录

  • 一、HTTP协议基础
    • 1、定义
    • 2、工作原理
    • 3、特点
    • 4、与Https的区别🐵
      • HTTPS简介:
      • 两者区别:
  • 二、HTTP请求协议
    • 1、HTTP请求结构:
    • 2、请求方法
    • 3、举例
    • 4、Post和Get的区别🌈
  • 三、HTTP响应协议
    • 1、组成
    • 2、响应头
    • 3、状态码
      • 常见状态码:🌷

一、HTTP协议基础

1、定义

  • HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写
  • 用于从万维网 (www:World Wide Web)服务器传输超文本到本地浏览器的传送协议
  • HTTP基于TCP/IP通信协议来传递数据 (HTML文件,图片文件,查询结果等)

2、工作原理

  • 工作在客户端 - 服务器架构上(c/s)
  • 浏览器作为HTTP客户端通过URL向HTTP服务器发送所有请求。(即WEB服务器,常用的web服务器有:Apache服务器、ISS服务器)
  • web服务器根据接收到的请求后,向客户端发送响应消息。

3、特点

(1)无连接的:请求和响应的双方可以不同时在线
(2)媒体独立的:传输过程中的数据和通信协议没有关系。(只要客户端和服务端能够识别数据,就能进行传输)
(3)无状态的:只要请求,就重新响应,不管之前响应了多少数据。

4、与Https的区别🐵

HTTPS简介:

  • HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲就是HTTP的安全版。
  • HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信进行加密。

两者区别:

  • Https协议需要到ca申请证书,一般免费证书很少,需要交费
  • http是超文本传输协议,信息是明文传输;https则是具有安全性的ssl加密传输协议
  • http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。
  • http的连接很简单,是无状态的。Https是有状态的,是由SSL+Http协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

无状态的意思是其数据包的发送传输接收都是相互独立的。
无连接的意思是指通信双方都不长久的维持对方的任何信息。

二、HTTP请求协议

请求是由客户端发送的。

1、HTTP请求结构:

一个HTTP请求报文由请求行(request line)请求头(header)空行请求数据四部分构成:在这里插入图片描述请求行由请求方法字段,URL字段和HTTP协议版本字段3个字段构成。

🌰:  GET /index.html HTTP/1.1

请求头部由关键字/值对组成,每行一对,关键字和值用英文冒号:分隔。请求头部通知服务器关于客户端请求的信息,典型的请求头有:

User-Agent:产生请求的浏览器类型
Accept: 客户端可识别的内容类型列表
Host: 请求的主机名,允许多个域名同处一个IP地址,即虚拟主机

③最后一个请求头之后是一个空行,发送回车符和换行符,通知服务器以下不再有请求头。
请求数据不在GET方法中使用,而是在POST方法中使用。POST方法适用于需要客户填写表单的场合。与请求数据相关的经常使用的请求头Content-Type和Content-Length。

2、请求方法

根据HTTP标准,HTTP请求可以使用多种请求方法。

 HTTP1.0定义了下图中前三种请求方法
 HTTP1.1新增了后五种请求方法

用的最多的是Get、Post
在这里插入图片描述

3、举例

在这里插入图片描述
在这里插入图片描述

4、Post和Get的区别🌈

使用方式
GET提交:请求的数据会附在URL之后(就是把数据放置在HTTP协议头<request-line>中),以?分割URL和传输数据,多个参数用&连接;
POST提交:把提交的数据放置在HTTP包的包体<request-body>中。
因此,GET提交的数据会在地址栏中显示出来,而POST提交,地址栏不会改变

2、传输数据的大小

首先声明,HTTP协议没有对传输的数据大小进行限制,HTTP协议规范也没有对URL长度进行限制。 而在实际开发中存在的限制主要有:

GET:特定浏览器和服务器对URL长度有限制,例如IE对URL长度的限制是2083字节(2K+35)。对于其他浏览器,理论上没有长度限制,其限制取决于操作系统的支持。因此对于GET提交时,传输数据就会受到URL长度的限制。
POST:由于不是通过URL传值,理论上数据不受限。但实际各个WEB服务器会规定对post提交数据大小进行限制.
3、安全性
POST的安全性要比GET的安全性高。

三、HTTP响应协议

响应是由服务器返回的。
请求是检测服务器能不能正确的处理信息;响应是服务器处理完信息之后能不能给出一个正确的结果

1、组成

http响应也由四部分构成,分别是状态行,响应头,空行,响应正文在这里插入图片描述

2、响应头

在这里插入图片描述
响应头中的Content-Type内容类型:
用于定义网络文件的类型和网页的编码,决定浏览器将以什么形式、什么编码读取这个文件在这里插入图片描述

3、状态码

状态行通过状态码来说明所请求的资源情况

状态码:浏览器接收并显示网页,此网页所在的服务器会返回一个包含HTTP状态码的信息头(server header)用以响应浏览器的请求
HTTP状态码(HTTP Status Code)。状态码由三位数字组成,第一个数字定义了响应的类别,且有五种可能取值:
1xx : 只是一个提示信息的作用 – 表示服务器收到了该请求,需要请求者继续执行操作才能完成本次请求
2xx : 成功 – 表示请求已被成功接收并处理
3xx : 重定向 – 要完成请求必须进行更进一步的操作
4xx : 客户端错误 – 请求中有语法错误或请求无法实现
5xx : 服务器端错误 – 服务器在处理请求的过程中发生了错误,未能实现合法的请求

常见状态码:🌷

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

HTTP协议解析 的相关文章

随机推荐

  • 13个能快速开发android的经典项目

    正文 一 okhttp一个让网络请求更简单的框架 项目地址 https github com jeasonlzy okhttp OkGo 二 TwinklingRefreshLayout 下拉刷新和上拉加载的RefreshLayout 自带
  • Linux 编译C++程序的四种方法

    1 使用G 43 43 编译 你有一个test cpp文件 在终端输入 g 43 43 helloSLAM cpp 然后就会得到一个a out 文件 在终端输入 a out 就可以执行 在Linux系统下编译并执行C 43 43 程序 Jo
  • 基于TCP的多线程双向通信

    基于TCP的多线程双向通信 今天我们来简单实现一下TCP的双向通信 1 服务器端的搭建流程 1 先获取套接字 xff08 socket xff09 2 绑定套接字 bind xff0c 公布自己的网路信息 xff08 IP地址 xff0c
  • Linux网络编程----http

    Linux网络编程 http 面经 xff1a 基础知识http的请求方法http的应答方法服务器代码 xff1a 一 HTTP1 HTTP的概念2 HTTP的操作过程3 HTTP存在的问题 二 HTTPS1 HTTPS的概念2 HTTPS
  • C++进阶之路---STL---vector

    vector 一 xff1a vector简介二 vector的初始化方式三 vector的常见问题1 size 和capacity 的区别2 元素的构建方式3 访问容器内部元素的方式方式一 xff1a 方式二 xff1a error 有可
  • albumentations数据增强学习

    albumentations数据增强学习 96 96 文章目录 albumentations数据增强学习原图 xff1a CLAHE xff08 限制对比度自适应直方图均衡化 xff09 数据增强RandomRotate90 xff08 随
  • C++:STL迭代器

    11 23 STL迭代器 STL迭代器 顺序迭代器 遍历型迭代器 iterator 正向迭代器 reverse iterator 反向迭代器 span class token macro property span class token
  • 约瑟夫环C语言链表实现

    约瑟夫环 xff1a 设编号分别为1 2 3 n的n个人围坐一圈 xff0c 提前约定编号为k 1 k n 的人从1开始计数 xff0c 数到m的那个人淘汰出局 xff0c 他的下一个人又从1开始计数 xff0c 数到m的人再淘汰出局 xf
  • 链表C语言实现--单向链表

    线性结构的链式存储也称为链表 xff0c 相比于顺序表 xff0c 链表能够解决顺序表中空间资源浪费问题以及空间不足的问题 链表的每一个结点包含数据域和指针域 xff0c 而每一个结点在内存中的地址是不连续的 xff0c 且能适应动态变化
  • 循环链表C语言实现

    本文介绍循环链表中的单向循环链表 xff0c 双向循环链表两种 第一种 xff1a 单向循环链表 xff0c 是在单向链表的基础上 xff0c 尾结点不再指向NULL xff0c 而是指向头结点从而构成循环 如下图 xff1a 所以相比单向
  • 那些只有程序员才能看懂的冷笑话,用餐时间请勿点开。。。

    0 客户被绑 xff0c 蒙眼 xff0c 惊问 xff1a 想干什么 xff1f 对方不语 xff0c 鞭笞之 xff0c 客户求饶 xff1a 别打 xff0c 要钱 xff1f 又一鞭 xff0c 十万够不 xff1f 又一鞭 xff
  • TCP服务器/客户端的Linux下的代码实现,单向通信、双向通信

    tcp流程 服务器 xff1a socket gt bind gt listen gt accept gt read write or recv send gt close 客户端 xff1a socket gt connect gt re
  • UNIX域套接字的网络编程实现

    UNIX域套接字 socket同样可以用于本地通信 xff0c 即主机内的进程间通信 创建套接字时使用本地协议AF UNIX 或AF LOCAL 关于socket函数接口的介绍可参考我的另一篇博客 xff1a 链接 Linux网络基础介绍和
  • 堆排序、堆的定义、代码实现

    一 堆排序的定义 堆排序 xff08 Heapsort xff09 是指利用堆这种数据结构所设计的一种排序算法 二 堆的一些概念 1 堆的定义 堆是计算机科学中一类特殊的数据结构的统称 堆的逻辑结构 采用树形结构 xff0c 一般当做完全二
  • C++基础学习笔记

    说明 xff1a 此版只是C 43 43 基础学习的笔记 xff0c 涵盖内容有限 xff0c 知识点细节上也有所欠缺 xff0c 并未深入探讨各类机制的实现原理 所以在学习到相关知识点时建议参考其他博主的专门介绍的文章来深入学习 xff0
  • Qt基础介绍部分

    Qt是挪威一个团队开发的多平台C 43 43 图像用户界面应用程序框架 Qt是面向对象的框架 xff0c 使用特殊的代码生成扩展 Qt Creator是一个用于Qt开发的轻量级跨平台集成开发环境 支持跨平台开发 1 QT的优势 xff1a
  • UART协议讲解

    UART协议讲解 一 什么是UART协议二 通信方式的分类1 串行通信 xff08 一 xff09 同步通信和异步通信 xff08 二 xff09 单工和半双工以及全双工 2 并行通信 三 UART协议具体介绍1 UART数据传输的格式2
  • 常用的get、post请求有哪些

    常见的get post请求有哪些呢 常见的get请求有 form标签中method 61 get 发起的是get请求 a标签发起的是get请求 link标签引入css发起的是get请求 Script标签引入js文件发起的是get请求 img
  • 串口通信整理:二、数据发送之多位数据发送

    本文基于前一篇串口模块基础版进一步对串口发送数据整理 xff0c 并通过仿真进行验证 xff0c 所有代码都可直接跑通 xff0c 注意各个模块名字 首先再次回顾一下通信协议UART 本质就是并行数据转串行数据 关键参数 xff1a 起始位
  • HTTP协议解析

    文章目录 一 HTTP协议基础1 定义2 工作原理3 特点4 与Https的区别 x1f435 HTTPS简介 xff1a 两者区别 xff1a 二 HTTP请求协议1 HTTP请求结构 xff1a 2 请求方法3 举例4 Post和Get