1、:
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,它提供了可靠有序和无差错的数据传输服务,广泛应用于互联网中的各类应用,如网页浏览、电子邮件发送和接收、文件传输等。
2、主要特点:
面向连接:在数据传输前,通信双方需通过三次握手建立连接,确保双方都已准备好并能够进行数据交换,传输完毕后,还需经过四次挥手来终止连接。
可靠性:通过序号和确认机制保证数据的可靠传输,发送方为每个发送的字节流片段分配序号,接收方接收后会发送确认消息,若发送方未收到确认,则会重传数据。
流量控制:采用滑动窗口协议进行流量控制,确保发送方不会发送过多数据导致接收方无法处理。
拥塞控制:具有网络拥塞时避免加剧拥塞的能力,通过调整发送窗口大小等方式来适应网络状况。
乱序处理:能够对到达的数据包进行正确排序,即使数据包在传输过程中出现乱序,也能按正确顺序交付给应用层。
3、首部格式:
源端口和目的端口:各占16位,用于标识通信双方的应用进程。
序号:占32位,表示字节流中的数据顺序。
确认号:也是32位,用于确认已接收的数据。
数据偏移:占4位,指出TCP首部中数据的起始位置。
保留字段:同样4位,供未来使用。
控制位(标志位):包括URG(紧急指针标志)、ACK(确认序号标志)、PSH(push标志)、RST(重置连接标志)、SYN(同步序号标志)和FIN(结束标志)等。
窗口大小:占16位,指明接收缓冲区的大小。
校验和:16位,用于检测数据在传输过程中是否出错。
紧急指针:当URG标志置位时有效,指出紧急数据的末尾位置。
4、核心机制:
三次握手:客户端发送SYN报文,服务器返回SYN+ACK报文,客户端再发送ACK报文,完成连接建立。
四次挥手:任何一方发起关闭请求后,双方需经过四次交互才能完全关闭连接。
序列号和确认号:用于确保数据的可靠传输和正确排序。
5、应用场景:
由于其可靠性和广泛的适用性,TCP被应用于多种场景,如网页浏览(HTTP/HTTPS协议基于TCP)、电子邮件发送和接收(SMTP、POP3、IMAP等协议基于TCP)、文件传输(FTP协议基于TCP)、远程登录(Telnet和SSH协议基于TCP)等。
1、为什么TCP要进行三次握手而UDP不需要?
TCP是面向连接的协议,需要确保通信双方都已准备好并能够进行数据交换,因此通过三次握手来建立连接,而UDP是无连接的协议,不需要预先建立连接即可发送数据,所以没有三次握手的过程。
2、TCP如何保证数据的可靠传输?
TCP通过序号和确认机制、超时重传、错误校验和、流量控制以及拥塞控制等多种方式来保证数据的可靠传输,发送方为每个数据包分配序号,并等待接收方的确认;如果未收到确认,则重传数据包;通过滑动窗口协议进行流量控制,避免发送过多数据导致接收方无法处理;在网络拥塞时,通过调整发送窗口大小等方式来适应网络状况。