【JavaEE网络】HTTP/HTTPS协议的工作原理与格式详解

目录


HTTP/HTTPS

HTTP是什么

应用层,一方面是需要自定义协议,一方面也会用到一些现成的协议

HTTP及HTTPS是应用层重点协议

使用浏览器,打开网站,这个过程都是 HTTP 来支持的

使用手机 app,加载数据,这个过程大概率也是 HTTP 来支持的

HTTP => 超文本传输协议

文本:字符串

超文本:除了字符串还有图片、字体、视频、音频......

我们平时打开一个网站,就是通过 HTTP 协议来传输数据的.

当我们在浏览器中输入一个 搜狗搜索的 "网址" (URL) 时,浏览器就给搜狗的服务器发送了一个 HTTP 请求,搜狗的服务器返回了一个 HTTP 响应.

这个响应结果被浏览器解析之后,就展示成我们看到的页面内容。(这个过程中浏览器可能会给服务器发送多个 HTTP 请求,服务器会对应返回多个响应,这些响应里就包含了页面 HTML,CSS,JavaScript,图片,字体等信息).

理解"应用层协议"

我们已经学过 TCP/IP ,已经知道目前数据能从客户端进程经过路径选择跨网络传送到服务器端进程 IP+Port .

可是,仅仅把数据从A点传送到B点就完了吗?

这就好比,在淘宝上买了一部手机,卖家 客户端 把手机通过顺丰 传送+路径选择 送到买家 服务器 手里就完了吗?

当然不是,买家还要使用这款产品,还要在使用之后,给卖家打分评论。

所以,我们把数据从A端传送到B端, TCP/IP 解决的是顺丰的功能,而两端还要对数据进行加工处理或者使用,所以我们还需要一层协议,不关心通信细节,关心应用细节!

这层协议叫做应用层协议。而应用是有不同的场景的,所以应用层协议是有不同种类的,其中经典协议之一的HTTP就是其中的佼佼者.

再回到我们刚刚说的买手机的例子,顺丰相当于 TCP/IP 的功能,那么买回来的手机都附带了说明书【产品介绍,使用介绍,注意事项等】,而该说明书指导用户该如何使用手机【虽然我们都不看,但是父母辈有部分是有看说明书的习惯的:)】,此时的说明书可以理解为用户层协议

理解HTTP协议的工作过程

当我们在浏览器中输入一个 "网址", 此时浏览器就会给对应的服务器发送一个 HTTP 请求 . 对方服务器收到这个请求之后, 经过计算处理, 就会返回一个 HTTP 响应.

事实上, 当我们访问一个网站的时候, 可能涉及不止一次的 HTTP 请求/响应 的交互过程

注意: 当前 搜狗主页 是通过 https 来进行通信的。https 是在 http 基础之上做了一个加密解密的工作,后面再介绍。

HTTP协议格式

学习HTTP需要学习协议格式,就要用到抓包工具(本质上是个代理)

代理客户端的是正向代理,代理服务器的是反向代理

HTTP是文本协议,相比之下IP、TCP、UDP是二进制协议,而HTTPS加密之后就变成了二进制协议了

打开一个浏览器,涉及到多次浏览器和服务器之间的交互

学习HTTP协议格式,也就是了解这里的各个属性及其含义

  1. 请求
  1. 响应

思考问题: 为什么 HTTP 报文中要存在 "空行"?

因为 HTTP 协议并没有规定报头部分的键值对有多少个。空行就相当于是 "报头的结束标记",或者是 "报头和正文之间的分隔符"。

HTTP 在传输层依赖 TCP 协议,TCP 是面向字节流的。如果没有这个空行,就会出现 "粘包问题".

相关推荐
上海安当技术7 小时前
固件签名与Secure Boot:安当CAS如何构建汽车固件信任链
网络·汽车·信任链·boot·secure·固件签名·安当cas
上海安当技术8 小时前
诊断接入认证:安当CAS如何堵住汽车网络安全的物理后门
网络·web安全·汽车·access·secure·安当cas·诊断接入认证
ze^08 小时前
【软考信息安全】第2章 网络攻击原理与常用方法
网络·web安全·网络安全
这个DBA有点耶9 小时前
数据库一体机架构演进:从硬件堆叠到软硬深度耦合
服务器·网络·数据库·硬件架构·运维开发·database·数据库架构
arbboter9 小时前
【网络工具】NetProxy网络代理用户手册
开发语言·网络·c#·网络代理·网络异常·代理工具
消失的旧时光-194311 小时前
第一篇:Ktor Client 到底是什么?从 Retrofit 迁移理解 Ktor 网络请求架构
网络·架构·retrofit·ktor·dsl
数据知道11 小时前
反序列化漏洞:Java、PHP、Python 三条线各讲透
java·网络·python·安全·网络安全·php
江畔柳前堤11 小时前
Function Calling 与 Tool Calling:从认知到工程的全景深度解析
开发语言·网络·人工智能·深度学习·算法·机器学习·php
LabVIEW开发11 小时前
LabVIEW 通过以太网控制 Yokogawa WT3000 功率分析仪:tmctl.dll 与原始套接字方案
网络·labview·labview知识·labview功能·labview程序
xiaoxiangsiyan12 小时前
企业日常运维高频应用服务全解
运维·网络·云原生·容器·dns