应用层协议http
http是超文本传输协议
定义了客户端与服务器的通信
客户端通过http协议向服务器发送请求
在网络中请求的资源本质就是文件
公网ip地址本质就是Linux下的路径结构
网络通信,不是我把数据给别人,就是别人把数据给我
本质上就是IO,我们上网的所有行为,都是在做IO
图片,视频,音频等,都是资源
获取资源前,要先确认我要的资源在哪一个服务器上(网络,ip),在什么路径下(系统,路径)
URL/ 不一定是根目录,其实是叫做web根目录,这两者不一定相等
URL没有体现端口号,因为不需要端口号
成熟的应用层协议,往往和端口号是强关联的
像/?这样的字符,在url中已经被当作特殊意义理解了,这些字符不能随意出现
如果某个参数需要带这些特殊字符,就必须对特殊字符转义
规则:字符转为16进制,从右到左,取四位,不足四位就直接处理,没两位做一位,前面加%
写成%xy格式
http协议的宏观格式
对于http任何请求都要有应答
http在进行信息交换时,也会交换版本信息,因为可能存在两者的版本不同的问题
这是对客户端版本进行良好保护的方式
http的属性:
一张网页不是简单的html文件,而可能是html文件和各种图片的集合
浏览器收到的内容可能包括:html,图片,视频,可执行程序等
客户端向自己的http服务器发起请求,http服务器会给出反应
但是你要发起的请求并不在我的服务器上
此时自己收到请求上,不对请求做任何处理
而是会将自己作为另一个http服务器的客户端
将请求转给另一个http服务器的客户端
然后再将从另一个http服务器的客户端收到的数据相应会发出请求的客户端
此时我们的客户端就成了代理服务器
我们的服务器可以维护一张服务器清单,存储http服务器集群的端口
随后就可以访问各种服务器
代理服务器是一种使用策略,动态选择后端的服务器
http的状态码
重定向:
我在首次请求时,我的服务器会返回一个http的应答
发现302found和location
此时浏览器会自动发起二次请求,自动访问目标服务器
http301表明请求的资源已经永久移动到其他位置
http302表明请求的资源被临时移动到其他的位置
永久重定向对搜索引擎影响最大
如果网站更换了域名,搜索引擎在更新网站链接时需要永久重定向为新域名,才能够跳转到网站
get通常用于获取网页,get传参通过url
post通常用于上传数据,post传参通过body
get通常用于传不太私密的数据,因为get的数据会被看到
post用于传输私密数据,如密码等
post传参比get传参更私密,但是不能说post比get更安全
因为不管是get还是post,都会被抓包
安全问题一定要对请求和相应进行加密
cookie
二次请求httpservice时,浏览器会自动携带曾经写入的消息,就是cookie
每访问一个页面,都要进行一次身份认证
session
服务器存储session_id,登录认证session对象,登录时,客户端浏览器需要对session_id进行认证
我们避免不了cookie信息被盗取,但是使用服务器存储session信息,就不会造成用户信息的泄漏了,客户端就可以设计各种策略,来防止黑客进行恶意操作
session + cookie就是会话保持的常见做法
