HTTTP
英文全名 http(Hypertext transfer protocol)超文本传输协议,当客服端也就是浏览器(Browser)向服务器发送请求,http作为TCP/IP其中一个子集,有着区分客户端和服务端的作用。 想要了解http首先我们要知道TCP/IP,我们在从客户端到服务器获取web资源中,会有很多复杂的操作,有着想http一样的协议规范,而这些个协议规范就是称为TCP/IP,也有人说这是两个协议,那我们这里就把他当作一个集合。
TCP/IP中,为了方便管理,我们将它分层化,为的就是当一些部分更新,我们只需要替换掉它对应的部分接口,在这个集合中它有着四层接口
- 应用层(HTTP DNS FTP)
- 传输层(TCP UDP)
- 网络层(IP)
- 数据链路层(负责链接硬件路由)
应用层中的HTTP(超文本传输)
首先http是一种无状态的协议,也就是无法负责管理,这是优点也是缺点,随着互联网的发展,技术的更新,我们加入了管理cookie技术,就是说在购物网站,你店家添加,它能够连接你点击之后的页面。 在请求获取资源的过程中http每次都要连接tcp(传输控制协议),但是每次的连接都会断开,造成了更多资源的消耗,延迟了网页加载的速度,降低了工作的效率,于是我们加入了http keep-live的方法,这种方法会帮助减少HTTP与TCP之间的重复建立和断开,减轻了服务器的负载。
应用层中的DNS(域名解析)
在客户端到服务端之间的请求过程之前,我们需要在地址栏输入URL(统一资源标识符),这方便我们去记忆,如:Bing;而计算机也许是这样子:119666855544,而dns相当于一个翻译家,将我们输入的URL翻译成相对应的二进制;
传输层中的TCP(传输控制协议)
负责与HTTP连接的传输控制,HTTP依赖于TCP,但是并不是必须的,在其中TCP有着三次握手规则,TCP发送端将数据包发送出去之后不会不管不问,发送端和接收端之间的确认,例如当发送端发送一个带有SYN的数据包,接收端首先会给发送端表示确认假如ACK/SYN标志的数据包反送给发送端,发送端收之后,才是第三次进行发送,实际上就是两次假如ACK/SYN的标志之后进行发送。
网络层中的IP(网际协议)
实际上大部分人有很多误解,IP只是个协议,并不是直接指的是IP地址,在IP地址中有着IP地址和MAC地址,IP地址(节点被分配到的地址并且可变)依赖于MAC地址(网卡所属的地址,基本不变)IP地址和MAC地址会进行配对,在中转的过程中会使用MAC地址进行搜索下一个目标,在这之间还有ARP地址解析协议。
提到了DNS域名解析系统,我们是在地址栏中输入URL,而统一资源定位符是URI(统一资源标识符)中的一个子集 1.统一:统一的格式方便处理不同类型的资源,不用根据上下文来识别资源指定的位置。 2.资源:可标识的任何东西,例如文档图片,资源可以是任何形式的,也可以是大多数的集合。 3.标识符:可标识的对象 URI用字符串标识某一互联网资源,而URL标识资源的地点。 URI格式:协议方案名,登录信息认证,服务器地址,服务器端口号,带层次的文件路径,查询字符串,片段标识符。
HTTP报文
HTTP报文分为两个请求报文和响应报文; 请求报文:方法,URI,协议版本,请求首部字段,内容实体; 响应报文:协议版本 状态码 状态码的原因短语 响应首部字段 主体
HTTP是一种无状态的协议
HTTP协议不能对请求和响应之间的通信状态进行保存,也就是说协议对于发送过的请求不能做持久化处理 像浏览器这样的客户端发出的消息叫做requests,服务端发送的叫做responses; 为了更快的处理大量的事务,确保协议的可伸缩性,HTTP不保留之前请求的信息或是响应报文的信息。
- HTTP方法 get post put delete head options trade connect 获取资源 传输实体主体 传输文件 删除文件 获得报文首部 查询可用方法 追踪路径 用隧道协议连接代理。
- get用来访问已经被URI识别的资源。指定的资源服务器解析后返回响应的内容。
持久连接(http keep-live)
持久连接是http与tcp建立的一种连接 持久连接的特点就是只要有一方没有提出明确断开,就一直保持连接.持久连接的好处就是减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。另外也加快了web页面响应的速度
管线化
管线化就是不需要等到服务端接收到上一个请求就可以发送下一个请求,也就是能够同时接收到多个请求。
Cookie
http是一种无状态的协议,不对请求和响应之间进行管理,无法显示根据之前的状态进行本次的请求处理 http无状态减少了对cpu的内存资源消耗,正因为http简单能够处理大量的事务,有着伸缩延展性,才能被应用于各种场景; cookie来控制客户端的状态。这种技术会在从服务端发送的响应报文内的一个叫做set-cookie的首部字段信息,通知客户端保存cookie。
报文
报文是HTTP通信时候的基本单位,是由八位组字节流组成的。 实体:作为请求或响应的有效载负荷数据被传输,由实体首部和实体内容组成.
HTTP报文
HTTP协议交互的信息叫做HTTP报文,分为请求和响应。 请求和响应报文中都有着首部字段和主体.
- 请求报文首部:请求行,请求首部字段,通用首部字段,实体首部字段。
- 响应报文首部 状态行,响应首部字段,通用首部字段,实体首部字段. 请求行中包括:URI 方法 协议版本 状态行中包括:状态码 状态码的原因短语 协议版本 首部字段: 请求首部字段 通用首部字段 实体首部字段 响应首部字段。
编码传输
http传输数据可以以原始内容传输,也可以通过编码的方式传输,提升传输的速率,因为编码需要计算机操作,所以会大量消耗cpu.
内容编码
为了节省空间 内容编码是实体内容上的编码格式,保持原样子压缩,由客户端原装解码。
分割的分块传输编码
web页面在显示的时候一定要等到全面资源加载完毕后才显示,分块传输编码,通过数据分割成块,让能够让浏览器逐步显示页面。 分块传输编码会将实体主体分割成多个部分,每个部分是16进制标志块的大小,最后一块会用0表示。 使用分块传输编码的实体主体由负责接受的客户端进行解码,恢复到编码前的实体主体。
发送多种数据的对象集合
MIME(一种邮件扩展)能够包含不同类型数据的邮件扩展,在http报文中使用多部份对象集合需要在首部字段加上content-type,多部份对象集合在每个部分都可能有首部字段。