JavaEE 要懂的小事:一、图解Http协议

简介:

一、技术基石及概述

问:什么是HTTP?
答:HTTP是一个客户端和服务器端请求和响应的标准TCP。其实建立在TCP之上的。

当我们打开百度网页时,是这样的:

https://www.baidu.com

多了个S,其实S表示TLS、SSL。在这里不做解释,因此HTTP的技术基石如图所示:

绘图1

那HTTP协议呢?HTTP协议(HyperText Transfer Protocol),即超文本传输协议是用于服务器传输到客户端浏览器的传输协议。Web上,服务器和客户端利用HTTP协议进行通信会话。有OOP思想 的得出结论:其会话的结构是一个简单的请求/响应序列,即浏览器发出请求和服务器做出响应。

绘图1

 

二、深入理解技术基石和工作流程

既然HTTP是基于传输层的TCP协议,而TCP协议是面向连接的端到端的协议。因此,使用HTTP协议传输前,首先建立TCP连接,就是因此在谈的TCP链接过程的“三次握手”。如图

绘图1

在Web上,HTTP协议使用TCP协议而不是UDP协议的原因在于一个网页必须传送很多数据,而且保证其完整性。TCP协议提供传输控制,按顺序组织数据和错误纠正的一系列功能。

 

一次HTTP操作称为一个事务,其工作过程可分为四步:

1、客户端与服务器需要建立连接。(比如某个超级链接,HTTP就开始了。)

2、建立连接后,发送请求。

3、服务器接到请求后,响应其响应信息。

4、客户端接收服务器所返回的信息通过浏览器显示在用户的显示屏上,然后客户机与服务器断开连接。

建立连接,其实建立在TCP连接基础之上。图解核心工作过程(即省去连接过程)如下:

绘图1

 

三、详解工作过程的HTTP报文

HTTP报文由从客户机到服务器的请求和从服务器到客户机的响应构成。

一、请求报文格式如下:

请求行

通用信息头

请求头

实体头

(空行)

报文主体

如图,请求我博客一篇文章时发送的报文内容:

image

对于其中请求报文详解:

1、请求行

    方法字段 + URL + Http协议版本

2、通用信息头

    Cache-Control头域:指定请求和响应遵循的缓存机制。

    keep-alive 是其连接持续有效【在下面百度的例子,会得到验证】

3、请求头

    Host头域,脑补吧

    Referer头域:允许客户端指定请求URL的资源地址。

    User-Agent头域:请求用户信息。【可以看出一些客户端浏览器的内核信息】

 

4、报文主体

如图中的 “ p=278 ”一般来说,请求主体少不了请求参数。

二、应答报文格式如下:

状态行

通用信息头

响应头

实体头

(空行)

报文主体

如图,就是这篇博客响应的内容:

image

对其中响应报文详解:

1、状态行

    HTTP协议版本 + 状态码 + 状态代码的文本描述

    【比如这里,200 代表请求成功】

2、通用信息头

    keep-alive 是其连接持续有效【在下面百度的例子,会得到验证】

    Date头域:时间描述

3、响应头

    Server头:处理请求的原始服务器的软件信息。

4、实体头

    Content-Type头:便是接收方实体的介质类型。(这也表示了你的报文主体是什么。)

(空行)

5、报文主体

    这里就是HTML响应页面了,在截图tab页中的response中可查看。

一次简单的请求/响应就完成了。

 

三、HTTP协议知识补充

请求报文相关:

请求行-请求方法

GET            请求获取Request-URI所标识的资源
POST          在Request-URI所标识的资源后附加新的数据
HEAD         请求获取由Request-URI所标识的资源的响应消息报头
PUT            请求服务器存储一个资源,并用Request-URI作为其标识
DELETE       请求服务器删除Request-URI所标识的资源
TRACE        请求服务器回送收到的请求信息,主要用于测试或诊断
CONNECT  保留将来使用
OPTIONS   请求查询服务器的性能,或者查询与资源相关的选项和需求

 

 

响应报文相关:

响应行-状态码

1xx:指示信息–表示请求已接收,继续处理
2xx:成功–表示请求已被成功接收、理解、接受
3xx:重定向–要完成请求必须进行更进一步的操作
4xx:客户端错误–请求有语法错误或请求无法实现
5xx:服务器端错误–服务器未能实现合法的请求

常见的状态码

200 OK

请求成功(其后是对GET和POST请求的应答文档。)

 

304 Not Modified

未按预期修改文档。客户端有缓冲的文档并发出了一个条件性的请求(一般是提供If-Modified-Since头表示客户只想比指定日期更新的文档)。服务器告诉客户,原来缓冲的文档还可以继续使用。

 

404 Not Found

服务器无法找到被请求的页面。

 

500 Internal Server Error

请求未完成。服务器遇到不可预知的情况。

 

比如304,在浏览器第一次打开百度时,如图所示:

3AD)@_I2E8DMDH]35GHV1DL

刷新一下:

image

这上面的304就证明了

1、304状态码:有些图片和js文件在本地客户端缓存,再次请求后,缓存的文件可以使用。

2、以上所以HTTP请求,只靠一个TCP连接,这就是所谓的持久连接。

四、关于HTTP协议的Web应用框架或者规范

JavaEE的人会知道Servlet规范。其中Web应用容器都实现了HTTP协议中的对象,即请求和响应对象。比如 javax.servlet.http.HttpServletResponse 对象中肯定有对状态码描述,如图

image

至于如何使用它们,坐等系列文章吧。

 

五、总结

回顾全文,HTTP协议其实就是我们对话一样,语言就是其中的协议。所以掌握HTTP协议明白以下几点就好:

1、用什么通过HTTP协议通信

2、怎么通过HTTP协议通信

 

相关文章
|
数据安全/隐私保护 计算机视觉
2024年2月国内如何快速注册OnlyFans最新小白教学
onlyfans软件是一个创立于2016年的订阅式社交媒体平台,创作者可以在自己的账号发布原创的照片或视频,并需要注意的是,网络上可能存在非法或不道德的应用将其设置成付费模式,若用户想查看则需要每月交费订阅。程序,建议你在使用互联网时保持警惕,并遵循相关法律法规。(现在p站没了,大家晚上懂得都懂啊)
2024年2月国内如何快速注册OnlyFans最新小白教学
|
人工智能 监控 算法
【AI 现况分析】AI 应用导致的隐私问题分析
【1月更文挑战第27天】【AI 现况分析】AI 应用导致的隐私问题分析
|
AI芯片
AIGC视频生成/编辑技术调研报告
随着图像生成领域的研究飞速发展,基于diffusion的生成式模型取得效果上的大突破。在图像生成/编辑产品大爆发的今天,视频生成/编辑技术也引起了学术界和产业界的高度关注。该分享主要介绍视频生成/编辑的研究现状,包括不同技术路线的优劣势,以及该领域当下面临的核心问题与挑战。
1933 2
AIGC视频生成/编辑技术调研报告
|
9月前
|
人工智能 物联网 大数据
申报开启|2024年阿里云协同育人第二批项目申报指南
2024年阿里云协同育人第二批项目申报正式开启。为落实国家教育规划,深化产教融合,阿里云设立教学内容和课程体系改革、实践条件和实践基地建设等项目,支持高校创新人才培养。申报截止日期为2024年11月15日,立项公示于11月29日前完成。欢迎各高校积极申报,共育创新人才。
|
机器学习/深度学习 人工智能 自然语言处理
AI与法律行业:智能法律咨询
在科技飞速发展的今天,人工智能(AI)正逐渐渗透到法律行业,特别是在智能法律咨询领域。本文探讨了AI在智能法律咨询中的应用现状、优势及挑战,并展望了其未来发展前景。AI技术通过大数据、自然语言处理等手段,提供高效、便捷、低成本且个性化的法律服务,但同时也面临数据隐私、法律伦理等问题。未来,AI将在技术升级、政策推动和融合创新中,为用户提供更加优质、便捷的法律服务。
|
11月前
|
监控 数据可视化 项目管理
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
在快节奏的现代工作环境中,高效的时间管理和任务协作工具成为提升生产力的关键。2024年,随着工作模式的变化,企业及个人愈发依赖这些工具来优化时间管理、任务分配和团队协作。本文精选了几款高效工具,如板栗看板、ClickUp、Notion、Wrike、Todoist和Evernote,它们各自具备独特优势,适用于不同行业和规模的团队,帮助用户在繁忙的工作中保持高效和有序。
1660 6
高效时间管理工具如何帮助优化日常任务管理?2024年6款最优秀软件
|
运维 Cloud Native Devops
云原生时代的运维转型:挑战与机遇
随着云计算技术的飞速发展,云原生已成为现代企业数字化转型的必由之路。本文将探讨在云原生时代下,传统运维面临的挑战、转型的必要性以及如何通过采纳DevOps文化、容器化技术和微服务架构等策略实现高效运维。文章还将分析数据驱动的运维决策和人工智能在自动化运维中的应用前景,为企业运维团队提供一条明晰的转型路径。
285 0
|
关系型数据库 MySQL OLAP
数据传输DTS是什么?
【8月更文挑战第30天】数据传输DTS是什么?
1287 3
|
机器学习/深度学习 运维 监控
|
自然语言处理 资源调度 机器人
10G显存,使用Unsloth微调Qwen2并使用Ollama推理
本文主要使用Unsloth基于Qwen2基础模型微调对话机器人以及在Ollama上运行。