0
点赞
收藏
分享

微信扫一扫

HTTP/2的三大改进:头部压缩、多路复用和服务器推送

Android开发指南 03-14 19:00 阅读 2

目录

一、认识URL

1.认识URL

2.urlencode和urldecode

二、HTTP协议格式

1.快速构建http请求和相应的报文格式

三、http demo

1.GET和POST

2.HTTP的状态码

3.http的特征

4.HTTP常见Header


应用层:就是程序员基于socket接口之上编写的具体逻辑,做的很多工作,都是和文本处理有关的!——协议分析与处理

所以http协议,一定会具有大量的文本分析和协议处理!

一、认识URL

1.认识URL

平时我们俗称的 "网址" 其实就是说的 URL

我们平时上网无非就是我们想获取或者上传资源

一张图片、一这段视频,这些资源在没有被拿到的时候是在对应的Linux服务器上,在一个服务器上可能存在很多的文件资源,当我们请求资源拿到本的的时候,服务器会打开你要访问的文件,读取该文件通过网络发送到客户端

所以我们要打开这个文件先要找到它,这时候就用到路径来标识!

所有的资源:全球范围内,只要找到它的url就能访问到该资源,也成为www,万维网

2.urlencode和urldecode

像 / ? : 等这样的字符, 已经被url当做特殊意义理解了. 因此这些字符不能随意出现. 比如, 某个参数中需要带有这些特殊字符, 就必须先对特殊字符进行转义。

 转义的规则如下: 将需要转码的字符转为16进制,然后从右到左,取4位(不足4位直接处理),每2位做一位,前面加上%,编码成%XY格式

例如:

二、HTTP协议格式

在双方通信之前已经进行了三次握手的过程

1.快速构建http请求和相应的报文格式

单纯在报文的角度,http可以是基于行的文本协议!

如何看待:在三次握手之后,这不就是客户端在给服务器发送大量的字节流吗?

所以我们可以看成是线性结构

如何看待,也是看成线性结构!

其中请求行中的协议版本是客户端告诉服务端,客户端用的http版本,而响应行中的协议版本是服务端告诉客户端,服务端用的http版本

http是如何区分报头和有效载荷的呢?

有效载荷:正文部分的内容

答案很简单,是通过空行\r\n的方式来区分的

也就是说我们一定能把报头读完,所以接下来读的就是正文,那么我们如何得知正文的大小呢?

其中报头当中就包含了一种属性Cotent-Length,后面跟的就是正文的长度

三、http demo

1.GET和POST

我们平时上网行为分为两种,从服务器拿资源,以及上传资源

其中拿资源一般GET,上传资源两者都可

GET:是通过URL向服务端传参的,会回显用户的私密信息,不够私密

POST:是通过http的正文部分提交参数的,不会回显,在私密性方面是有保证的

注意:私密性不是安全性

2.HTTP的状态码

永久重定向301和临时重定向302、307

永久重定向:影响用户后续的请求策略如看付费电影,买一次直接就可以看了

临时重定向:不影响用户后续的请求策略

也就是说,客户端发送了一个请求,服务端返回错误码302原因是found,并且会告诉一个新的地址,客户端在向新的地址发送请求

3.http的特征

1.简单快速

2.无连接:虽然底层是TCP但是连接时TCP的事情和我http有什么关系

3.无状态:协议是不会记录你的访问记录之类的,但是登录网站会记录,这是因为因为业务逻辑来管的

4.HTTP常见Header

  • Content-Type: 数据类型(text/html等)
  • Content-Length: Body的长度
  • Host: 客户端告知服务器, 所请求的资源是在哪个主机的哪个端口上;
  • User-Agent: 声明用户的操作系统和浏览器版本信息;
  • referer: 当前页面是从哪个页面跳转过来的;
  • location: 搭配3xx状态码使用, 告诉客户端接下来要去哪里访问;
  • Cookie: 用于在客户端存储少量信息. 通常用于实现会话(session)的功能;

Cookie简单来说就是用来保存用户的私密信息的

但是这种不安全,有风险,所以现如今我们在登陆或者注册的时候生成一个session id,在服务端保存了私密信息,这样客户端发送这个id就可以自动登录了

Set-cookie是写在代码中的,设置之后就可以在http的属性中看到cookie的内容

5.短链接与长连接

短链接就是指一次只传输一个文件如一张图片,长连接则是一次性传输多个文件

举报

相关推荐

0 条评论