目录
前言:
我们知道OSI模型上层分为应用层、会话层和表示层,我们接下来要讲的是主流的应用层协议HTTP,为什么需要这个协议呢,因为在应用层由于操作系统的不同、开发人员使用的语言类型不同,当我们在传输结构化数据时,会导致端到端之间有差异。为了抹去这种差异,我们需要对用户、开发人员使用的应用层进行协议的定制……
在讲HTTP协议之前,我们知道“协议”是一种约定,“协议”是客户端、服务器定制的一种标准,“协议”的本质是一种结构化数据。那么HTTP协议本质上也是一种结构化数据,是客户端、服务器的一种对于多种场景的通用标准!!!
该博客相关代码可以看:Linux_code: 存放Linux中的代码 - Gitee.com
1.初识HTTP协议
1.1.浅谈URL
如图:为最基本的http协议网址(URL)
而当我在写这篇博客时的https协议网址为:
我们在之前的学习中知道访问服务器需要ip地址和端口号才能正确的访问,而在如图的协议中我们并没有看到对应服务器的位置和开放的端口号。
在http协议中服务器网址可以通过DNS协议转化为ip地址,而http方案名默认对应端口号80,https默认对应端口号443.![]()
在解决了进行客户端、服务器访问的定位问题,我们知道当前主流的网络通信是基于socket套接字的,而socket本质上就是客户端进程和服务器进程进行通信。
即---通信的行为本质上就是进程间进行IO:
- 获取资源(从服务器获取图片、视频、音频、文段等资源)
- 上传数据(客户端向服务器上传数据)
结合生活也是很容易被接受的,比如我们刷视频时,这些视频加载到我们手机是通过我们手机的客户端向服务器发送请求,服务器接收请求,发送回应。
具体来说:今天我在抖音上刷到一个小姐姐,主观上你打开的抖音APP,这时就是你的抖音APP客户端向服务器发送获取视频的请求,服务端接收到请求时,会在服务器地址下的文件系统中给你载入视频文件,并作为回应发送给你,这时你就开开心心地刷着小姐姐视频了。
讲到这里我们也可以理解为什么http协议中会出现“带层次的文件路径”,因为资源的获取本质就是客户端发送请求,服务器在自己的文件系统中找到对应资源传输给客户端。
1.2.UrlEncode和UrlDecode
在我们之前协议的学习时,我们会定制一些特殊字符来对协议有效载荷进行分割,在http协议中诸如:?\.,/=+-这类特殊字符都需要被进行URL重新编码。
在该图中我们我们分别进行三次搜索&#x