1、TCP是一种面向连接的,为不同主机进程间提供可靠传输的协议。
2、TCP的可靠性的保证
(1)数据应答机制
(2)超时重传
3、TCP可靠性传输的实现
(1)一方面:在开始连接的三次握手。
由于需要对发送的数据进行编号,又要对接收端的数据进行应答,所以TCP协议的通信双方必须通过某种机制知道对方的初始序列号,只有在确切之后到对方的初始序号的情况下,才能从一开始对所接受的数据合法性进行判断。这就是连接是三次握手行为。
(2)另一方面:TCP的四次分手
简单的拆除连接可能会造成数据的丢失,所以TCP进行了四次分手的过程,1发出拆除请求,2接到请求并确认(这是是半连接状态1收到请求后不再发送数据但任然可以接收数据),2发出拆除请求,1收到请求并发出确认,到此拆除完成。
4、三次握手---》四次握手
四次分手----》三次分手
(1)从双方都需要必须得到对方的确认序列号和双方都要进行确认来说,从直接的角度上理解为四次握手
主机A向B发送其初始序列号
主机B确认主机A发送的初始序列号
主机B向主机A发出其初始序列号
主机A确认主机A发出的初始序列号
将2、3合并为一步,就变为三次握手
(2)将四次分手的第二三步合并为一步,即可以变成三次分手。但是一般不这样做,因为对方向你发出拆除连接时,代表对方没有数据发送给你了,但不代表你所有的数据发送完毕了。所以你可以未必马上关闭连接,可能再向对方发送一些数据之后再发送FIN请求,给对方说明现在可以关闭连接了,对方确认也就关闭了此次连接。所以这里的ACK报文和FIN报文一般是分开发送的。