「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」。
传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,在发送数据前,通信双方必须在彼此间建立一条连接。这里的连接指的是客户端和服务端保存的一份关于彼此的信息,例如ip地址、端口号等。
TCP协议通过三次握手建立一个链接,通过四次挥手来关闭一个连接。
三次握手
三次握手的过程
为什么是三次?
为了防止已失效的连接请求报文段(在某些网络结点长时间滞留了)又传送到服务端,服务端同意建立连接并一直等待客户端发来数据,服务端的许多资源就这样白白浪费了。
四次挥手
为什么是四次
tcp是全双工通信,服务端和客服端都能发送和接收数据。
tcp在断开连接时,需要服务端和客服端都确定对方将不再发送数据。
客户端在TIME_WAIT状态必须等待2MSL(最长报文段寿命,建议2分钟)时间呢?
- 为了保证客户端发送的最后一个ACK能够到达服务端,使服务端能够正常进入CLOSED状态。
- 防止“已失效的连接请求报文段”出现在本连接中
如果已经建立了连接,但是客户端突然出现故障了怎么办?
TCP设有一个保活计时器。服务器每收到一次客户端的数据后都会重新复位这个计时器,时间通常是设置为2小时,若两小时还没有收到客户端的任何数据,服务器就会发送一个探测报文段,以后每隔75秒钟发送一次。若一连发送10个探测报文仍然没反应,服务端就认为客户端出了故障,接着就关闭连接。