Http协议

一、什么是Http协议

http协议指的是超文本传输协议,是java中一种非常重要的协议,它不仅仅能传输文字数据,还能传输图片,音频等。在Http3.0版本前,依赖的主要是TCP协议,但是因为这个协议他会有阻塞,导致发送效率大打折扣,所以自这里之后,后续就变成了UDP为主

二、常见的场景

像我们web开发中,网页前端和后端之间的通信,移动端和后端之间的通信都用到这个http传输

三、Http工作过程

它这个传输过程是一个典型的一问一答的模型,就像下面这个图

四、抓包

这个指的是在http传输过程,通过某个软件进行,获取请求和响应信息,关系如下图

我们后期会通过这种方法来确定bug是来自后端还是前端的,这里我们使用的抓包工具是Fiddler

当我们打开之后,Fiddler就会开始抓包,其中,左边的是代表抓取到的数据,而右边则是请求和响应的数据的详情

这个是请求的格式,在请求行下面的请求报头是以键值对的格式来显示的,当空行过后,下面的就是正文,但正文不一定会有,像登录时就有可能会有正文。响应的格式也是如此,我这里就省略了

五、URL

这个是就是我们俗称的网址,它用来标识一个网络上的资源位置,下图是一个完整的url,接下来,我以这个为例进行讲解

首先,登录信息这个现在基本上见不到了,因为我们一般都以短信,微信的方式进行替代了,服务器地址这里是ip地址,更常见的是域名。在这里后面,我们会加上服务器的端口号,以冒号隔开,不过你可能会发现,有些url没有端口号为什么也可以的,那是因为浏览器给http一个默认的端口号80,https默认端口号443,所以便可以省略。而带层次的文件路径可以理解为服务器里面的目录结构,就像电脑里文件的目录结构,例如:"C:\Users\lenovo\.m2"。问号后面则是查询字符串,它的格式是键值对,通过&进行分割开来。片段标识符则是用来区分在同一个页面,不同的部分

值得注意的是,当你的queryString里面包含特殊符号,他会进行转义成ASCLL码

,防止浏览器无法解析

六、认识方法Method

以下都是方法的请求,它表示这个请求要做什么动作,一般我们用的最多是post,get,put和delete

GET

先说get,我们一般80%的情况都是用这个,他表示从服务器获取某个资源

POST

其次是post,这个表示的是对服务器进行上传某个资源

PUT

这个类似post,也是上传某个资源到服务器

DELETE

这个是删除服务器的某个资源

不过,话说回来,这个其实并没有硬性规定,所以也就是说,实际开发中可以不遵循这个规则。

七、认识报头

host

这个表示的是服务器主机和端口

Content-Length

这个是body中数据的长度,单位为是字节

Content-Type

这个是表示请求body中数据格式,这个和上面的Cintent-Length是要搭配着body同时出现的。并且他们可能会同时出现,出现在响应或请求中

他常见的格式是text/html,text/css,application/JavaScript,application/json等

User-Agent

表示浏览器/操作系统的属性. 形如:

复制代码
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/146.0.0.0 Safari/537.36 Edg/146.0.0.0

其中Mozilla这个对应着的是Firefox这个浏览器,后面的window这表示我当前电脑的属性,再后面的Chrome那表示的是浏览器的版本

refer

这个表示这个页面是从哪个页面跳转过来的,在日常中可以用于广告系统,像某网站内含有一个广告,当用户点进这个广告时,refer则能显示是从哪个网站点入,从而让哪个网站获得对应的收入。但是http中的refer是能被劫持,修改的

这是浏览器这端本地存储数据的一种机制,简单的讲就是你的电脑会给你的浏览器在你的硬盘上创建一个存储数据的地方(因为网页js不能直接访问硬盘),然后cookie就是存到这个地方。然后,cookie是按照键值对的格式进行构造,并且如何构造取决于程序员

并且它会根据每个域名维度进行划分,每个域名下都有自己的cookie。

如果还是不太懂得话可以看看下图的流图进行理解

相关推荐
菜鸡养成中...17 分钟前
卫星通信协议笔记1-协议栈
网络
hzxpaipai40 分钟前
杭州企业官网怎么建设?从策划到上线的5步建站方法
运维·服务器·前端·网络
smartpi_ai1 小时前
通用脱机烧录器为什么烧不进 CI-03?下载协议的门槛、免唤醒 10 条的建议值属性
服务器·网络·ci/cd
ITxiaobing20232 小时前
自研 IP 库与 AppsFlyer 判定不一致的排查实践
网络·网络协议·tcp/ip
天天喝旺仔2 小时前
gRPC 底层原理:HTTP/2 多路复用、Protobuf 序列化与四种流模式
分布式·http·微服务·rpc
2501_937860942 小时前
中篇:TCP 为什么可靠又高效?滑动窗口、流量控制、拥塞控制与粘包全解析
服务器·网络·tcp/ip
刚及格的陆拾伍3 小时前
Wi-Fi核心知识精要:从频段到帧结构全解析
网络·物联网·网络协议·信息与通信·iot
xiaoye-duck3 小时前
《Linux 网络编程》深入理解 IO 多路复用:select 函数详解与 Echo 服务实战
linux·网络
xfan_me4 小时前
SSL 证书落地应用与网站安全加固
网络协议·安全·ssl
SDWAN_Cheap4 小时前
TCP滑动窗口与拥塞控制是什么?从流量控制到网络稳定性的完整解析
网络·tcp/ip·php