TCP
1. TCP概述
-
面向虚连接的传输层协议,每条TCP连接只能有两个端点。
-
可靠、有序、无丢失、不重复
-
支持全双工通讯,即数据可以双向传输。
-
TCP是面向字节流的,而不是面向报文的。
-
发送缓存
-
应用程序发送给发送方TCP准备发送的数据
-
TCP已发送但是尚未收到确认的数据
-
-
接收缓存
-
按序到达但尚未被应用程序处理的数据
-
乱序到达的数据
-
-
2. TCP报文段结构
TCP报文段包含了多个字段,其中一些重要的字段包括:
-
确认位ACK:当ACK=1时,确认序列号字段有意义。在TCP连接建立后,所有传输的报文段都必须将ACK置为1。
-
同步位SYN:代表连接请求
-
终止位FIN:表明此报文段发送方数据已全部发送完毕,要求释放连接。
-
复位RST:表明TCP连接出现严重错误,必须释放连接,并重新建立新的传输连接。
-
紧急位URG:当URG=1时,表明此报文中存在紧急处理的数据,是高优先级数据,应尽快交付应用程序处理。与紧急指针配合使用。
-
推送位PSH:接收方应尽快交付接收应用进程,不再等待缓冲区填满在向上交付。
3. TCP的可靠性机制
TCP通过排序机制、确认机制和重传机制来保证数据的可靠性:
-
排序机制:确保数据按序传输。
-
确认机制:接收方发送确认报文,通知发送方已接收到的数据。
-
重传机制:根据超时或接收到的冗余ACK进行数据的重传,以确保数据的完整性和可靠性。
-
RTT:往返时间,指的是发送方将数据发出后,到他接收到对端反馈的确认报文的完整时间段。
-
RTO:超时重传时间;略大于RTT时间。
-
-
TCP流量控制机制
5. TCP连接管理
TCP连接的建立和释放是通过三次握手和四次挥手来实现的,确保数据传输的可靠性和稳定性。
-
连接建立:通过三次握手来建立连接,包括参数协商和资源分配。
-
连接释放:通过四次挥手来释放连接,确保数据传输完毕并释放资源。
-
TCP存在一个保活计时器,该计时器2小时时间。若该计时器时间内没有收到任何客户端的数据,服务端会发送一个探测报文段,并每隔75秒发送一次。若连续发送10个探测报文仍没有反应,则服务器认为客户端出现故障,关闭连接。
。