HTTP历史
HTTP:超文本传输协议
1990年,HTTP问世,被称为HTTP/0.9。
1996年5月,HTTP正式作为标准被公布,版本命名为HTTP/1.0。
1997年1月,公布HTTP/1.1,是目前主流的HTTP协议版本。当初标准是RFC2068,之后发布的RFC2616就是当前的最新版。
作为web文档传输协议的HTTP,版本几乎没有更新。
TCP/IP协议
TCP/IP协议族
计算机与网络设备想要相互通信,双方就必须基于相同的方法。比如由那一端发起的,使用的那种语言进行通讯…等等,所有这一切都需要一个规则。我们把这个规则叫做协议
把互联网相关联的协议集合起来称为TCP/IP(IEEE802.3,FDDI,ICMP,TCP,HTTP,IP,FTP,DNS,SNMP,PPPoE,UDP
);
TCP/IP分层管理
TCP/IP协议族里最重要的一点就是分层。 TCP/IP协议按照层次分为 四层:
- 1)应用层:
应用层决定了向用户提供应用服务时通信的活动。 TCP/IP协议族内预存了各类通用的应用服务:FTP(文件传输协议), DNS(域名系统)等等… HTTP协议也处于应用层 - 2)传输层
传输层对上层应用层,提供处于网络连接中的两台计算机之间的数据传输。 此层的协议有:TCP(传输控制协议)和 UDP(用户数据协议) - 3)网络层
网络层用来处理在网络上流动的数据包。数据包是网络传输的最小数据单位。 - 4)数据链路层
用来处理连接网络的硬件部分。包括控制操作系统,硬件的设备驱动,NIC(网络适配器,【网卡】),及光纤等物理可见部分。
利用tcp/ip协议族进行网络通信的时候,会通过分层顺序与对方进行通信。 发送端从应用层往下走(套娃似的),接收端从链路层往上走(拆套娃)。
举列子: 客户端:
- 1,作为发送端 发送一个HTTP请求(应用层)
- 2,为了方便传输,在传输层(TCP协议)把从应用层收到的数据(HTTP报文)进行切分,并在个个报文上打上标记号以及端口号后发送给网络层
- 3,在网络层(IP协议),增加作为通信地址的MAC地址转发给链路层。这样,发往网络的的通讯请求就准备齐全了 通过路由直到找到接收端, 接收端再一层一层的向上解析,合并报文…
- 4,当传输到应用层,才算真正接收到由发送端发来的HTTP请求
发送端在层与层之间传输数据时,每经过一层时都会被打上该层所属的首部信息,接收端反之。
把这种数据信息包装起来的做法称之为封装
IP协议 ~
作用:
IP协议的作用是把各种数据包传输给对方。而要保证确实传输到对方那里,则需要满足各种条件,其中两个重要的条件为IP地址和MAC地址
IP地址指明了节点被分配到的地址,MAC地址是指网卡所属的固定地址。IP地址可以与MAC地址进行配对。IP地址可变换,而MAC地址基本上不更换
。
使用ARP协议凭借MAC地址进行通信:
什么是ARP协议:
ARP协议为解析地址的协议,根据通信方的IP地址就可以反查出对应的MAC地址。
IP间的通信依赖MAC地址。在网络上,通讯的双方在同一个局域网的情况很少,通常是经过多台计算机和网络设备中转才能连接到对方。而在进行中转时,会利用下一站中转设备的MAC地址来搜索下一个中转目标。
这时候就会采用ARP协议
在到达通信目标之前的中转过程,那些计算机和路由器等网络设备只能获取到很粗略的传输路线。
这种机制称为路由选择
,就像是寄快递的过程,你将快递交给快递公司,比如寄往*** 省*** 市*** 县 ** 小区,他会先送到省份的集散中心,再送到市的,再送到县城的,然后会由小哥派发到你手上…
TCP协议 ~
TCP协议的作用:
将数据切分方便传输,确保数据能到达目标(三次握手
)
TCP协议提供可靠的字节流服务:
字节流服务指将大块的数据分割成以报文为单位的数据包进行管理
TCP协议三次握手:
TCP把数据包发送出去后,不会对传输后的情况置之不)理,它一定会向对方确认是否成功送达。握手过程使用了TCP的标志(flag
)——SYN(synchronize)和ACK(acknowledgement);
···························
三次握手-过程:
- 1.发送端首先发送一个带有
SYN
标志的数据包给接收端; - 2.接收端收到数据后,向发送端返回一个带有
SYN/ACK
标志的数据包, 以示收到消息; - 3.发送端再回传给接收端一个带有
ACK
标识的数据包,代表’握手‘结束 ;
DNS协议 ~
DNS协议的作用:
提供域名到IP地址之间的解析服务
为啥要用域名?因为IP地址一堆数字属实不好记,记域名多好记,比如www.csdn.net…
因为计算机擅长处理一长串数字,所以,让计算机去理解名称,就有些困难了,所以DNS协议出现,
DNS协议提供通过域名查找IP地址,或逆向从IP地址反查域名的服务
各个协议工作图 ~
HTTP/1.1
HTTP规定,请求从客户端发出,最后服务器端响应该请求并返回。服务器端在没有接收到请求之前不会返回任何东西~
下面发送模拟发送个请求,看看客户端和服务端的表现:
请求报文的构成
响应报文的构成
HTTP是无状态协议
HTTP是一种不保存状态的(无状态)协议:
HTTP协议自身不会对请求和响应之间的通信状态进行保存,不做持久化,发过就忘了~
常用的HTTP请求方式
常用的HTTP请求为GET和POST,GET 和 POST:
两者的功能非常相似,但是post请求的主要目的不是为了获取响应的主体内容。
GET:获取资源:
GET方法用来请求已被URI标识的资源。指定的资源经服务器解析后返回响应给客户端内容。意思就是,如果请求的是文本,那就保持原样返回给客户端。
POST传输实体主体
:POST方法用来传输实体的主体,虽然用GET方法也可以传输实体的主体,但一般不用GET方式进行传输,POST的主要目的并不是获取响应的主体内容。
其他请求方式
方法 | 说明 | 支持的HTTP |
---|---|---|
GET | 获取资源 | 1.0,1.1 |
POST | 传输实体主体 | 1.0,1.1 |
PUT | 传输文件 | 1.0,1.1 |
HEAD | 获得报文首部 | 1.0,1.1 |
DELETE | 删除文件 | 1.0,1.1 |
OPTIONS | 询问支持的方法 | 1.1 |
TRACE | 追踪路径 | 1.1 |
CONNECT | 要求用隧道协议连接代理 | 1.1 |
在此,我就不一一说明了解GET和POST就差不多了~ |
持久连接节省通讯量
HTTP协议的初始版本中,每进行一次HTTP通信就要断开一次TCP连接。
老版本:
前些年因为都是很小的文本传输,所以即使这种情况也没什么大问题,可随着时间的推移,现在的页面是越来越花里胡哨,整的炫酷的一b,文档中包含大量图片的情况也越来越多。因此,每次都来握手挥手,就增加了通信的开销:
1,持久连接
- 为解决上述TCP连接问题,提出了持久连接的方法。
- 持久连接的特点是,只要任意一端没有明确提出断开连接,则保持TCP连接状态。
意为,建立一次TCP请求后进行多次请求和响应的交互
:
持久连接是一个请求 一个响应,等一个请求收到响应后,才能进行下一个请求,需要等待哦~
2,管线化
持久连接让管线化方式成为可能,不用等待响应亦可以直接发送下一个请求,这样子就不需要一个个等待响应了
比如,当请求一个包含10张图片的页面时,与挨个连接相比,用持久连接可以让请求更快结束。而管线化技术则比持久连接速度还要快。请求数量越多,时间差就越明显