HTTP深入浅出
一 TCP/IP协议
TCP/IP通信数据流
IP协议:IP协议的作用在于把各种数据包准确无误的传递给对方,其中两个重要的条件是IP地址,和MAC地址(Media Access Control Address)。由于IP地址是稀有资源,不可能每个人都拥有一个IP地址,所以我们通常的IP地址是路由器给我们生成的IP地址,路由器里面会记录我们的MAC地址。
(1)三次握手
TCP协议:如果说IP协议是找到对方的详细地址。那么TCP协议就是把安全的把东西带给对方。各有分工,互不冲突。
按层次分,TCP属于传输层,提供可靠的字节流服务。什么叫字节流服务呢?这个名字听起来让人不知所以然,下面听下我通俗的解释。所谓的字节流,其实就类似于信息切割。比如你是一个卖自行车的,你要去送货。安装好的自行车,太过庞大,又不稳定,容易损伤。不如直接把自行车拆开来,每个零件上都贴上收货人的姓名。最后送到后按照把属于同一个人的自行车再组装起来,这个拆解、运输、拼装的过程其实就是TCP字节流的过程。
所谓的字节流服务是指,为了方便传输,将大块数据分割成以报文为单位的数据包进行管理,而可靠的传输服务是指,能够把数据准确可靠的传给对方。一言以蔽之,TCP 协议为了更容易传送大数据才把数据分割,而且 TCP 协议能够确认数据最终是否送达到对方。
(2)四次挥手(关闭连接)
SYN表示建立连接,
FIN表示关闭连接,
ACK表示响应,
由于TCP连接时全双工的,因此每个方向都必须要单独关闭,这一原则是当一方完成数据发送任务后,发送一个FIN来终止这一方向的连接,收到FIN只是意味着这一方向上没有数据流动了,即不会再收到数据,但是在这个TCP连接上仍然能够发送数据,直到这一方向也发送了FIN。首先进行关闭的一方将执行主动关闭,而另一方则执行被动关闭,上图描述的即是如此。(1)第一次挥手:client发送一个FIN来关闭Client到Server的数据传送,客户端进入等待状态
(2)第二次挥手:Server收到FIN后,发送一个ACK给Client,确认序号为收到序号+1,Server进入Close_Wait
(3)第三次挥手:Server发送一个FIN,用来关闭Server到Client的数据传送,Server进入LAST_ACK状态。
(4)第四次挥手:Client收到FIN后,Client进入TIME_WAIT状态,接着发送一个ACK给Server,确认序号为收到序号+1,Server进入CLOSED状态,完成四次挥手。
HTTP
概要:是一种无状态协议(无记忆的)