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。

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

相关推荐
Eloudy3 小时前
全文 - IMEX 第01节 -IMEX overview
运维·服务器·网络
物联网软硬件开发-轨物科技4 小时前
【技术白皮书】光伏清检一体化机器人系统解决方案技术白皮书
大数据·运维·网络·人工智能·机器人
Escalating_xu4 小时前
【Linux 网络编程】TCP 跨平台实战:用 Windows 客户端访问 Linux 服务器
linux·服务器·网络
是真的小外套5 小时前
2024年软考中级信息安全工程师|选择题考点+案例分析真题解析(含答案)
android·网络
小天源7 小时前
让访问数据可解释:IP 地球大屏、地区库更新与运行维护设计
网络·网络协议·tcp/ip
老李IT笔记8 小时前
连不上不一定是网不好:新系统不认的服务端配置卡在哪一档
运维·服务器·网络
小此方8 小时前
Linux网络(二十八):从NAT转换到正反向代理:图解内网通信、NAPT端口映射
linux·运维·网络
万年咸鱼8 小时前
WebSocket、Socket 与 HTTP 的区别详解
websocket·网络协议·http
9527出列9 小时前
基于oss的断点续传实现
http·性能优化
万年咸鱼9 小时前
HTTPS 是如何保证传输安全的?
网络协议·安全·https