HTTP协议深入解析

Linux下的HTTP协议深入解析及编程实践 在本章中,我们将深入探讨如何从零开始构建一个HTTP协议解析器。理解HTTP协议是构建解析器的第一步,这在前三章中已有详尽介绍。本章将结合实际代码示例,展示如何实现一个具有高度可扩展性和良好维护性的HTTP协议解析器。 阅读详情

大家都知道HTTP是超文本传输协议,我们通过HTTP可以浏览到网页,获取很多的知道,但是可能很多人不知道更深层的一些知识,今天我就跟大家分享一下HTTP协议的深入解析。

HTTP流程 

客户端                                                  服务器

=============================》》

通过URL查找到服务器

《《=====================》》

建立TCP连接

========================》》

发送HTTP报文请求

《《=====================

返回报文

《《======================》》

释放TCP链接

通过流程图我们可以知道HTTP是建立于TCP协议的基础之上的,HTTP是比TCP高级的协议。

HTTP本身是没有状态的,我们平时可以登录账号密码,保持登录状态是借用了其他机制,可以看我的其他博客,介绍cookie和session的。

HTTP协议的发展

HTTP1.0

HTTP本身是没有协议的,双方保持连接是靠TCP连接,所以每次传输文件的时候,TCP都是要保持连接的,当文件传输完的时候,TCP协议释放,浏览器和服务器就没有连接了,彼此独立,服务器就可以释放内存。


我们可以看到,在客户端与服务器连接的过程中,其实发送了两个请求,占用了两个请求时间。

在HTTP1.0中,客户端收到文档后,TCP协议就会立刻停止。

问题来了,

如果我们在index.html引入本地的图片,那么按照1.0的协议,我们会先返回index.html这个文档,断开TCP,然后重新去连接TCP协议,重新请求图片资源,然后再断开TCP资源,如果我们一个首页有很多图片,这样就浪费了很多TCP连接建立的时间。于是1.1协议来了。


HTTP1.1


在HTTP1.1中,引入了长连接的概念,也就是说,我们建立了TCP协议后,我们先请求了index.html之后,我们不着急断开连接,直接发送HTTP报文请求,请求返回a.jpg的图片,直到同一台服务器的所有资源全部返回了,然后才断开TCP连接。这样就可以减少很多TCP连接的时间。

注:如果index文件加入了

<link href="www.baidu.com/1.jpg">

这种其他服务器上的资源,依然会建立多个TCP连接,TCP的长连接仅仅针对于同一台服务器。

大家如果非常有兴趣的话,可以用wireshark之类的抓包软件,抓取HTTP的包,查看一下连接的过程。


HTTP报文格式

HTTP报文有两种
1请求报文
2响应报文

请求报文
方法 空格 URL 空格 版本 回车
首部字段名空格值回车
``````(许多个首部)
回车
实体主体


响应报文
版本空格状态吗空格短语回车
首部字段名空格:值 回车
(多个首部行)回车
回车
实体主体

举例:
请求报文:
GET http://www.baidu.com HTTP/1.1
相应报文:
HTTP/1.1 202 Accepted




谷粒商城 - 个人笔记(集群部署篇一) 电商后台管理系统+电商系统,掌握微服务的全套方案。该系统有商品服务、仓储服务、订单服务、购物车服务、检索服务、认证中心服务、网关服务、用户服务、秒杀服务、第三方服务。使用SpringBoot+SpringCloud并配套SpringCloud Alibaba系列,引入全套微服务治理方案:Nacos注册中心/配置中心、Feign远程调用、Gateway网关、Redisson缓存、基于ElasticSearch7全文检索、异步编排与线程池、RabbitMQ柔性事务方案、Redisson分布式锁、分布式信号量等。 阅读详情

相关推荐

Freemarker整合poi导出带有图片的Excel教程

Freemarker整合poi导出带有图片的Excel教程 https://blog.csdn.net/x541211190/article/details/105675771根据此人博客可完成此功能,但原文中有一处错误需要纠正,当单元格合并时,计算起始单元格有错误。 源代码: /** * 构造合并单元格集合 * * @param createRowIndex: * @param cellRangeAddresses: * @param startIndex: * @param c

weixin_39403349的博客 998

HTTP协议分析(完整版)

HTTP协议一、http协议简介二、http工作原理1、客户端连接到Web服务器2、发送HTTP请求3、服务器接受请求并返回HTTP响应4、释放连接TCP连接5、客户端浏览器解析HTML内容三、http请求方法四、http状态码1、状态码格式2、常见状态码3、响应状态码有5类五、http请求格式六、http响应格式七、URI与URL与URN1、URI(uniform resource identifier)统一资源标识符,用来唯一的标识一个资源。2、URL(uniform resource locator)

佩奇的博客 1万+

springcloud教程 -- 1.快速搭建入门级demo,看这一篇就够了

废话不多讲,跟紧我,开启你的SpringCloud初体验 首先回顾微服务的基本组成: [图片 here] 生产者:提供服务 消费者:消费服务 服务注册/发现中心:服务注册,发现,监控 所以,首先明白springcloud微服务的架构基础:生产者(client),消费者(client),服务注册/发现中心(server)

叶巨岩的博客 8万+

计算机网络——HTTP协议原理

计算机网路模型 TCP/IP模型 HTTP和TCP UDP 只是一种的连接的协议。而不是的数据的传输的协议。

庄小焱 8577

SMIC Memory配置与Library Compiler实战:从lib到db的高效转换

本文详细介绍了SMIC Memory Compiler的配置要点与使用Library Compiler将.lib文件高效转换为.db文件的完整流程。文章深入解析了关键配置参数对性能和面积的影响,并提供了从交互式操作到自动化脚本的实战指南,帮助数字芯片设计工程师顺利完成存储器模型的生成与集成,确保Design Compiler能正确调用。

weixin_28314575的博客 329

HFSS/ADS仿真实操:手把手调优一个2.4GHz SAW滤波器的IDT结构

本文详细介绍了使用HFSS和ADS仿真工具优化2.4GHz表面声波滤波器(SAW)的IDT结构。从材料参数设置到IDT建模,再到参数化扫描与频率调谐,提供了实用的操作步骤和优化技巧,帮助工程师快速掌握SAW滤波器的设计方案与性能调优方法。

weixin_29197835的博客 524

Http协议详解

引入 超文本传输协议(HTTP,HyperText Transfer Protocol)是互联网上应用最为广泛的一种网络协议。所有的WWW文件都必须遵守这个标准。设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法。1960年美国人Ted Nelson构思了一种通过计算机处理文本信息的方法,并称之为超文本(hypertext),这成为了HTTP超文本传输协议标准架构的发展根基。Ted ...

qq_42573271的博客 2396

面试题-手撕NMS(非极大值抑制)

非极大值抑制(Non-Maximum Suppression,NMS)是一种常用于目标检测和计算机视觉中的算法,用于去除重叠的边界框,保留最可能是真实目标的边界框。其核心就是对一组检测框,找出其中属于同一个类别且分数最高的那个框,然后把和这个框的IOU值大于阈值的那些框都删掉。

zhaoyqcsdn的博客 1102

HTTP 协议详解

HTTP 协议全称为 Hypertext Transfer Protocol,即超文本传输协议,是互联网上应用最为广泛的一种网络传输协议。HTTP 协议定义了客户端(Browser)与服务器之间的通信规范,以实现对各种资源(如 HTML 页面、图像、音频、视频等)的传输和访问。本文将全面详细的描述 HTTP 协议的相关内容,包括协议的基本概念、请求响应流程、报文结构、状态码、安全性等方面。

兴趣是最好的老师,勤能补拙 1万+

用AG9311芯片DIY一个多功能Type-C扩展坞:从原理图到PCB布局的保姆级指南

本文详细介绍了如何利用AG9311芯片DIY多功能Type-C扩展坞,涵盖从原理图设计到PCB布局的全过程。AG9311芯片作为高性价比的Type-C控制器,支持HDMI 2.0、USB 3.0、PD快充和千兆网口,适合硬件爱好者打造个性化扩展坞。文章还提供了调试技巧和进阶优化建议,帮助读者轻松完成项目。

weixin_42520909的博客 400

56、宇宙微波背景辐射(CMB)望远镜及光学系统解析

本文详细解析了宇宙微波背景辐射(CMB)望远镜及其光学系统,重点介绍了交叉德拉贡系统的结构特点、偏振测量误差及其控制、以及大型地面望远镜如ACT和SPT的设计与对比。同时,总结了不同光学系统和探测器阵列的优劣势,并展望了未来发展方向,旨在为CMB研究提供更高效的工具和技术支持。

f9g0h的博客 239

nodejs学习之旅--异步终极解决方案async和await--Ajax--浏览器访问网站的基本过程以及http详解

一、异步终极方案 async+await 1.1、async+await基本结构 之前我么写过类似一下的代码: function func(a, b) { return a + b } let ret = func(10, 30); let ret1 = func(50, 320); let ret2 = func(1560, 30); let ret3 = func(10, 3560); console.log(ret + ret1 + ret2 + ret3); 如果Promise对象也能有

听雨少年的博客 1040

11、iOS设备逻辑数据分析全解析

本文深入解析iOS设备中的逻辑数据,涵盖图像相关数据库(Photos.sqlite和PhotosAux.sqlite)、录音文件、iPhoto照片存储结构、多媒体文件、第三方应用程序、社交网络应用(如Twitter、Skype、Facebook等)以及苹果相关应用(如Google Mobile、Bing)的数据存储结构和取证方法。此外,还介绍了文档类应用(如Pages、Numbers、Documents To Go)的文件存储结构及恢复方法。适用于iOS取证、数据挖掘和数字调查领域。

rain6的博客 220

php 解析http协议,PHP解析Http协议

本文使用PHP解析Http协议HTTP协议如下,包含两部分:请求头和请求体,我们主要是解析请求头,获取cookie,get,post等信息。HTTP/1.1 200 OKDate: Sun, 25 Oct 2015 15:43:47 GMTServer: ApacheSet-Cookie: PHPSESSID=4v2actjf96v614r2kh36380kq6; path=/Expires: T...

weixin_33844346的博客 710

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

php 解析http,PHP解析Http协议&协议复习

PHP解析Http协议&协议复习最近在整理自己的知识体系,发现很多基础已经忘得差不多了,所以重新学习一次。Http协议HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。请求报文示例 GET /public/api/index?id=1 HTTP/1.1Accept: text/html,application/xhtml+xml,app...

weixin_29306011的博客 548

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

http详解,用java解析HTTP协议包

HTTP协议 包 JAVA解析 一、超文本传输协议及HTTP包     HTTP协议用于在Internet上发送和接收消息。HTTP协议是一种请求-应答式的协议——客户端发送一个请求,服务器返回该请求的应答,所有的请求与应答都是HTTP包。HTTP协议使用可靠的TCP连接,默认端口是80。HTTP的第一个版本是HTTP/0.9,后来发展到了HTTP/1.0,现在最新的版本是HTTP/1.1

zs4419的专栏 2176

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

HTTP协议报文解析

HTML协议报文解析 HTTP(HyperText Transfer Protocol,超文本传输协议) HTTP是一个应用层协议,虽然在2015年已推出HTTP/2版本,并被主要的web浏览器和web服务器支持。但目前使用最广泛的还是HTTP/1.1版本。 它的主要特点可概括如下: 支持客户/服务器模式。 简单快速:客户向服务器请求服务时,只需传送请求方法和路径。由于HTTP协议简单,使得HTT...

yutiab69的博客 2万+

HTTP协议解析

HTTP(HyperText Transfer Protocol,超文本传输协议)是互联网上应用最为广泛的一种网络协议。它是客户端和服务器之间进行请求和响应的标准协议。理解HTTP协议的解析过程对于开发WEB应用至关重要,因为它定义了客户端和服务器如何进行通信。通过以上讲解和示例,希望你能对HTTP协议的解析过程有一个全面的理解。HTTP协议解析是WEB开发的基础,掌握它对于开发高效的WEB应用至关重要。以下是一个使用Python的。

xycxycooo的博客 651

HTTP协议工作的全过程及HTTP报文解析

所以,有的网站响应头里要么没有这个字段,要么就给出一个完全无关的描述信息。GET”是请求方法,“/”是请求目标,“HTTP/1.1”是版本号,把这三部分连起来,意思就是“服务器你好,我想获取网站根目录下的默认文件,我用的协议版本号是 1.1,请不要用 1.0 或者 2.0 回复我。对应到 Wireshark 里,就是最开始的三个抓包,浏览器使用的端口是 52085,服务器使用的端口是 80,经过 SYN、SYN/ACK、ACK 的三个包之后,浏览器与服务器的 TCP 连接就建立起来了。

2301_81948543的博客 1194

简易HTTP协议解析

TCP协议为操作系统底层协议,能够保证应用层获取到完整的、顺序一直的包序列。但TCP不提供具体的分包,需要上层协议自己解决。TCP发送给上层协议的数据是一个没有意义的字符串序列。如何解释这段序列,需要应用层定义,也就是应用层协议规范的内容。 应用层协议按格式一般可以分为文本协议和二进制协议。文本协议最常见的就是HTTP,二进制协议如websocket。无论是哪种协议,都需要对格式严格定义,以方便程序对字符串序列进行分包、拆包。

始终不够 1万+

PHP解析Http协议

本文使用PHP解析Http协议 HTTP协议如下,包含两部分:请求头和请求体,我们主要是解析请求头,获取cookie,get,post等信息。 HTTP/1.1 200 OK Date: Sun, 25 Oct 2015 15:43:47 GMT Server: Apache Set-Cookie: PHPSESSID=4v2actjf96v614r2kh363...

dianhe2770的博客 236

很全面的http协议解析

转自:https://blog.csdn.net/MrQkeil/article/details/79577195 http协议学习系列1. 基础概念篇1.1 介绍  HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和Internet工作小组IETF(...

qq_32534441的博客 657

HttpServerCodec和HttpObjectAggregator如何解析Http协议

1、首先开始看HttpServerCodec 可以看到他继承了ChannelHandlerAppender,并且创建了一个HttpRequestDecode和一个HttpResponseEncoder。 Appender内部有一个Entry的list按顺序存放这两个编码解码器 ps:在initchannelhandler时,添加的是HttpServerCode,查看addLast方法...

woshizw27的专栏 9392

nodejs解析http协议源码解析

上篇文章讲到nodejs创建一个服务并且建立tcp连接的过程。接下来分析一下,在建立tcp连接后,nodejs是如何解析http协议的。我们首先看一下nodejs在建立tcp连接时执行net.js层的回调时做了什么操作。下面是核心代码。 // clientHandle代表一个和客户端建立tcp连接的实体 function onconnection(err, clientHandle) { va...

标子 的专栏 1593

HTTP协议的解析

今天完成了所有的开发工作,很高兴,我的服务器软件中支持断点续传,流媒体播放,CGI网关编程接口,虚拟目录设置,GET和POST请求.   回头想想这近两个月的开发过程很有意思.应该总结一下,以便以后再用.   Http又叫超文本传输协议,是我们目前应用最为广范的应用层协议.它结构合理,不保持连接状态.   http的会话方式为客户机/服务器模式,客户机首先与服务器建立连接,这是一条TC

my2005lb的专栏 1911
上一篇: 入门Laravel
下一篇: PHP设计模式专题(一)抽象工厂
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值