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

概要:是一种无状态协议(无记忆的)