首页 > 编程语言 >JavaEE: 深入解析HTTP协议的奥秘(1)

JavaEE: 深入解析HTTP协议的奥秘(1)

时间:2024-10-11 21:46:58浏览次数:9  
标签:Body HTTP 请求 JavaEE 响应 fiddle 奥秘 抓包

文章目录


HTTP

HTTP 是什么

在这里插入图片描述

HTTP 全称为"超文本传输协议".
HTTP不仅仅能传输文本,还能传输图片,传输音频文件,传输其他的各种数据.

因此它广泛应用在日常开发的各种场景中.

在这里插入图片描述
HTTP 往往是基于传输层的 TCP 协议实现的.

  • HTTP1.0 , HTTP1.1 , HTTP2.0 均为 TCP.
  • HTTP3 基于 UDP 实现.

目前互联网上见到的 HTTP 协议,绝大部分都是 HTTP/1.1 版本.

因为 1.1 版本就足够好用了,升级到 2.0 成本比较高(浏览器/服务器的兼容性),带来的收益有限.
有点 IPv6 的感觉~

HTTP 协议,是一种典型的"一问一答"的协议.

  • 客户端发一个请求,服务器返回一个响应(一一对应)

HTTP 协议抓包

借助抓包工具,我们可以观察到 HTTP 请求/响应 的详细情况.

PS: TCP/UDP 也是可以抓包的.

抓包: 把通过网卡上的数据,获取到,并且解析出来.

在这里插入图片描述
代理 又分为正向代理和反向代理.

举个例子:
在这里插入图片描述

fiddle 用法

fiddle 用法.

只要启动 fiddle,此时,抓包工作就自动开始了~

fiddle 开启后,会多一层处理,就可能导致你打开其他网页比较慢~

  1. 左侧是抓到的 HTTP 数据报的列表.
    在这里插入图片描述

  2. 点击某一项,右侧就能看到请求和响应的详细情况.
    右上方是请求的详情.
    在这里插入图片描述

    右下方是相应的详情.
    在这里插入图片描述
    两排标签页:
    在这里插入图片描述
    在这里插入图片描述
    响应这里打开,看到的是二进制.(本身相应也是文本,此处的二进制,是压缩后的)
    在这里插入图片描述

    为啥要压缩呢?
    答: 体积小了,传输时消耗的带宽就低了,带宽是互联网中最贵的硬件资源,比 cpu,内存都要贵~

raw 标签页就是 HTTP 的原始数据.
发送 HTTP 请求就是往 TCP socket 中,按照上述格式,写入一段字符串.
收到 HTTP 响应,就是从 TCP socket 中,读出一段字符串再解析~

HTTP 请求响应基本格式

以下是一个HTTP请求/相应的抓包结果.

HTTP请求:
在这里插入图片描述

  • 首行: [方法] + [URL] + [版本]

    方法: 这次请求的"动作"是啥.
    URL: 访问的资源是啥.
    版本号: 在上图中是 HTTP/1.1

  • 请求头(Header): 从第二行开始的若干行,一直到空行结束. 表示请求的属性, :空格 分隔的键值对; 每组属性之间使用 \n 分割;
  • Body: 空行后面的内容都是 Body. Body 允许为空字符串.如果 Body 存在,则在 Header 中会有一个 Content-Length 属性来标识 Body 的长度.

    HTTP 一般来说,GET 往往是不带 Body. POST 往往是带 Body 的.

HTTP 响应:

在这里插入图片描述
HTTP 响应的基本格式也是四个部分~
在这里插入图片描述

  1. 首行: 在这里插入图片描述
    首行的三个部分,使用空格分隔.(请求也是如此)
  2. 响应头(Header) : 键值对.每行是一个键值对,不确定有几行,以 空行 结尾. 键 与 值 之间使用 :空格 分隔.
  3. 空行
  4. 正文
    对于相应来说,正文通常是 HTML/CSS/JS/JSON/图片/音频/字体…

下一篇文章: JavaEE: 深入解析HTTP协议的奥秘(2)

本文到这里就结束啦~

在这里插入图片描述

标签:Body,HTTP,请求,JavaEE,响应,fiddle,奥秘,抓包
From: https://blog.csdn.net/qrwitu142857/article/details/142738483

相关文章

  • HTTP协议
    虽然我们说,应用层协议是我们程序猿自己定的。但实际上,已经有大佬们定义了一些现成的,又非常好用的应用层协议,供我们直接参考使用.HTTP(超文本传输协议)就是其中之一,下面介绍HTTP协议认识URL域名:本质就是IP地址平时我们俗称的"网址"其实就是说的URL:统一资源定位......
  • com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:unknown was n
    com.alibaba.cloud:spring-cloud-starter-alibaba-nacos-discovery:jar:unknownwasnotfoundinhttp://maven.aliyun.com/nexus/content/repositories/central/duringapreviousattempt.Thisfailurewascachedinthelocalrepositoryandresolutionisnotreatte......
  • 修复HTTPS升级后出现 Mixed Content: The page at 'https://xxx' was loaded over HTT
    背景由于需要使用摄像头拍照,需要将原来的http升级到https,通过一顿捣鼓,升级成功。不过页面加载出现了问题,具体的提示是说:你的页面是在https环境,但是你访问了一个资源(我这里是iframe,也可能是stylesheet等其他资源),而这个资源是在http环境下的,浏览器不给你这样玩。https只能访问h......
  • 2024最新免费申请一年期HTTPS证书方法!
    2023年11月中旬,阿里云和华为云首先宣布不再提供一年期免费SSL证书,改为提供三个月有效期的证书。腾讯云也在2024年3月中旬跟进,取消了免费一年期SSL证书的供应。目前,虽然免费一年期SSL证书已经不多见,但还有一些平台如JoySSL提供无限制的免费一年期SSL证书申请,包括单域名证书、......
  • 宝塔开启ssl后https访问不了
    宝塔面板开启SSL后如果出现HTTPS访问不了的情况,可以按照以下步骤进行排查和解决:检查证书是否正确安装:确认SSL证书是否已经正确安装并配置到对应的站点上。检查证书文件(通常包括公钥证书.crt文件和私钥.key文件)是否完整且无误。检查域名解析:确保你的域名已经正确解析到......
  • 《探索木奇铃声网站的技术奥秘》
    #《探索木奇铃声网站的技术奥秘》网址:https://www.muqils.com/木奇铃声网站作为一个专注于铃声下载的平台,在技术的支撑下为用户提供了丰富的铃声资源和便捷的服务体验。以下将深入探讨该网站所运用的技术。###前端技术展现-**HTML构建基础架构**:网站利用HTML(超文本标记语......
  • 【JavaEE】——回显服务器的实现
     阿华代码,不是逆风,就是我疯你们的点赞收藏是我前进最大的动力!!希望本文内容能够帮助到你!!目录一:引入1:基本概念二:UDPsocketAPI使用1:socket文件2:DatagramSocket类(1)构造方法(2)方法3:DatagramPacket类三:回显服务器——服务器1:引入(必看)2:服务器响应代码(1)注释版本(2)......
  • git push 提示 401 Unauthorized while accessing https 的原因及解决方法
       问题报错:error:TherequestedURLreturnederror:401Unauthorizedwhileaccessinggit版本:1.7.1解决方法一:指定用户gitclonehttps://github.com/org/project.git换成gitclonehttps://[email protected]/org/project.git或者gitclonehttps://username:passw......
  • httpCLient请求工具类封装
    1、okhttp工具类依赖:<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><depe......
  • HTTP协议介绍&各个版本功能差异对比
    http协议简介        HTTP全称超文本传输协议(HyperTextTransferProtocol),是一种广泛用于互联网中浏览器与服务器之间的应用层传输协议。简单来说,浏览器向服务器发送HTTP请求,服务器向浏览器返回HTTP响应,两者之间通过这种方式进行“交流”,来使得我们的浏览器可以......