TCP是一个非常复杂的面向连接的协议,在很30多年来,各种优化变种争论和修改不断,所以我先从连接的建立和终止开始写TCP。后面应该还有几篇文章写TCP的另外几个特别重要的特性。
TCP最开始被我知道就先从很有特点的链接建立和终止—三次握手和四次挥手,基本上TCP协议的可靠性就是从保证连接的可靠性开始的。
TCP链接的建立—三次握手
对于三次握手,其实是TCP比较著名的东西了,在完全不了解这个TCP的时候就知道有这个东西了,但是开始的时候总有一点让我非常的疑惑:TCP为什么是三次握手,为什么不是两次或四次?
TCP 为什么是三次握手,为什么不是两次或四次?
要解释这个问题,首先明白TCP出现的价值和思路:是为了在不可靠的互联网络上提供一个可靠的端到端字节流而设计的
,并且一个TCP连接是全双工
。这是TCP很重要的一个设计理念:提供了一种可靠的
,面向连接的
字节流运输层服务,并且是双全工的。这里需要理解双全工的意思:就是两端之间进行通信,这两端既可以是数据的接收方,也可以是数据的发送方。
1、 可靠模型:但是为了数据的安全送达,就必须在发送数据前向另一个端口进行通信
数据发送端A:嘿,我想发送数据了,可以么。
数据接收端B:好的,这边允许接受。
然后数据的发送端就可以发送数据了,这里就基本保证你发的在接收方会正常的接受并不会发错。这是发送数据的基本可靠模型
。
2、 连接模型:在TCP的要求中,需要一种面向连接的通信:连接
在我理解中就是相当于有一根空水管,连接两个水池(为两个水池传输东西),在水管中传输东西的效率肯定会高于用桶去一桶桶的装,来的方便。