Tcp协议的特点:1)面向连接 2)可靠传输:数据保证能发生过去,而且数据准确 3)流式服务
Tcp连接过程(三次握手:客户端发起)
注:标识符 SYN:建立联机 ACK:确认机制 FIN:结束 RST(reset重置) URG(urgent紧急)
问题:1)为什么TCP协议能保证可靠传输?
因为TCP协议有超时重传机制:如果客户端没有回复ACK服务器会连续不断的一直发送,保证了数据的可靠性。
2)为什么TCP链接的过程是三次挥手不是两次或者四次?
如果是两次:两次之后完成的链接不安全。SYN可能没有发生过去就断网了。
如果是四次:ACK只确认SYN,确认有效数据(客户端和服务器同时发生链接请求,有可能发生四次挥手)
3)为什么TCP断开连接的过程是四次不是三次?
断开的过程如果是三次:因为连接过程中,当客户端给服务器发送SYN后,服务器可以将ACK+SYN一起发生,ACK是用来应答的,SYN是用来同步的。
断开连接的过程中,客户端给服务器发送FIN之后,服务器很可能不会立即关闭,先回复ACK给客户端,告诉客户端FIN我收到了,等我所有的报文处理完了,
我就发送FIN给你。
4)TIME_WAIT存在的意义?
a 可靠的终止TCP链接,要确保最后一个ACK发送出去。
b 保证迟来的数据能被识别并且丢弃掉。