1、HTTP协议特性
1、HTTP协议(超文本传输协议):定义了客户端(如浏览器)与服务器之间的通信方式,以交换或传输超文本(超文本:视频、音频、文字等)
2、HTTP协议是客户端与服务器通信基础:客户端通过HTTP协议向服务器发送请求,服务器处理后返回响应。
3、HTTP协议是无连接、无状态的协议(每次请求,都要建立新的连接,不会保持旧连接-即无连接) ---> 因为HTTP底层协议是TCP,而TCP是要建立连接的,所以HTTP也是要建立连接的。
2、URL - Uniform Resource Locator(统一资源定位地址)
2.1、什么是URL
平时我们口中所说的网址,就是URL
http://user:pass@www.example.jp:80/dir/index.html?uid=1#ch1
其中:
http:协议方案名(如https)
user:pass:登陆信息(认证)
www.example.jp:服务器地址(DNS技术,会自动将域名转换成IP地址)
80:服务器端口号
/dir/index.html:带层次的文件路径(一般index.html指该网页的首页)
uid=1:查询字符串参数
ch1=片段标识符
其中像/ ? # 这样的字符,已经被url当作特殊字符理解了(需要转义)
为什么我们平时所见的网址没有这么详细呢?比如百度的首页网址:
https://www.baidu.con/index.html
1、登陆信息(认证):不一定需要认证,并且登陆信息被浏览器记录即可。
2、为什么没有端口号呢:知名协议的端口号是强关联的,对于HTTP协议,服务器一旦启动,就是绑定80端口。所以可以忽略端口号。
3、第一个/:不一定是根目录,而是web根目录(即当前网页资源的根目录,不是系统根目录)。
4、后面的字符参数,不是每个页面都有,在特定需要输入信息(参数)的页面,才会出现。
2.2、再谈资源--URL中的资源路径
在HTTP这里,资源,统一可以认为是超文本资源。
在没有获取到资源前,这些资源都在服务器端。
我们通过HTTP协议,发起请求,服务器将资源放入响应中返回,我们便获取到资源。
而大部分服务器的底层都是Linux系统 -- Linux下,一切皆文件。
因此,获取资源,就是打开某个文件,获取文件数据。
想要打开文件,就得找到文件:
URL中:服务器地址(域名) + 默认端口 -> 确定唯一主机上的唯一进程。
带层次的资源路径:确定该主机上的唯一文件。
2.3、特殊字符转义--urlencode/urldecode
像/ ? 这样的特殊字符,已经被url当作特殊意义理解了,因此不能随意出现。
想要在参数中带有这些字符,就必须进行转义。
转义的规则如下:
将需要转义的字符转为16进制
从右到左,取4位(不足四位直接处理)
每2位做1位,前面加上%,编码成%XY的格式
例如: