应用层
应用层负责应用程序之间的数据沟通。
http协议
应用层的协议都是自定制协议,当某些协议用的场景多了,就成了知名协议,如http
http底层用的是tcp协议,用的是请求响应机制
http也需要向上交付
http的请求分为三或四部分:前三部分都是按行陈列。
- 第一行:请求行(首行);由空格作为分割符,分为了三个部分 [方法] + [url] + [版本]
- 第二行到空行之前:请求报头(头部),报头格式以一个个的键值对组成
name : value
,每一个键值对之间以\r\n间隔
载荷的长度由报头的content-Length属性的值显示。
Content-Type: 数据类型(text/html等)
Referer表示当前请求是由那个页面发起的,能够进行流量统计。
Accept-Encoding表示可接受的压缩格式。
Cookie表示用户登陆信息的保存
location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问
User-Agent: 声明用户的操作系统和浏览器版本信息
- 第三部分是空行:\r\n
- 第四部分是请求的正文。
http的请求方法有get方法,get没有正文,提交的数据在URL中,获取资源安全性低。
post方法放在正文,提交的是表单数据,安全性也更高,传参长度无限制。
请求方法有:GET POST HEAD OPTIONS DELETE等
因此http是以空行分离报头和载荷的。
http的响应分为四部分:
- 第一部分:第一行为状态行,用空格作为分割符,分为了三部分: [版本号] + [状态码] + [状态码解释]
- 第二部分:第二行到空行之前叫做响应报头,由一个个的键值对组成
Transfer-Encoding:chunked表示传输的方式是不指定长度
- 第三部分:空行
- 第四部分:有效载荷/响应正文
http特点:CS模型的,无连接,无状态,简单快速,可处理各种数据类型。
认识URL
我们俗称的网址,专业名词为同一资源定位符的组成是:协议方案://登陆用户名:密码@服务器地址:服务器端口号/带层次的文件路径?查询字符串#片段标识符
查询字符串中不能出现特殊字符,若包含特殊字符会利用urlencode/urldecode进行转义。将一个字节的前四位和后4位转换为16进制数据,然后合并一起显示,使再用%标识是经过url编码的字符
http协议绑定的端口号为:80 ,一般在url中是隐藏的,默认是就80
https绑定的端口号是:443
mysql绑定的端口号是:3306
http是一个明文传输,传输层使用tcp协议。
hhtps:在网络中发送http请求时,都会对报文进行加密,在传输层和应用层之间有加密层,目前我们应用的加密是SSL。因此只有发送方的应用层,传输方的应用层能够看到原始数据。
http状态码
- 1XXX:信息性状态码:接收的请求正在处理
- 2XX:成功状态码:请求正常处理完毕;典型状态码:200
- 3XX:重定向状态码:需要进行附加操作以完成请求
- 4XX:客户端错误状态码:服务器无法处理请求;典型状态码:404
- 5XX:服务器错误状态吗:服务器处理请求出错