1.什么是TCP?
TCP是一种面向连接的、可靠的、基于字节流的传输层通信协议,有IETF(互联网工程任务组)的RFC_793(tcp传输控制协议)定义。TCP旨在适应多网络应用的分层协议层子结构,能够在互联网络中提供可靠的端到端通信服务
2.TCP的基本概念和特性
- 面向连接:TCP在数据传输前需要建立连接,这确保了数据传输的可靠性。
- 可靠传输:TCP通过确认机制和重传机制确保数据包的正确传输,防止数据丢失或乱序。
- 流量控制:TCP能够根据接收方的处理能力动态调整发送速率,防止数据溢出。
- 全双工通信:TCP支持双向数据流,允许数据在两个方向上同时传输。
3.TCP 的应用场景
TCP广泛应用于需要可靠数据传输的场景,如文件传输、电子邮件、远程登录等。由于其可靠性和流量控制机制,TCP特别适合那些对数据完整性要求较高的应用。
4.TCP的优点:
可靠性:TCP通过序号、确认号、重传机制、校验和等手段,确保数据在传输过程中不会丢失、重复、乱序或出现错误,从而提供可靠的数据传输服务。
流量控制:TCP支持流量控制,通过滑动窗口机制来控制发送数据的速率,避免过多数据造成网络拥塞,从而提高网络的整体效率和稳定性。
拥塞控制:TCP支持拥塞控制,通过调整发送数据的速率来适应网络状况的变化,避免网络拥塞,进一步提高了网络的稳定性和可靠性。
有序性:TCP保证数据传输的有序性,数据传输的顺序和发送的顺序一致,确保接收方能够按照正确的顺序重组数据。
全双工通信:TCP允许通信双方同时发送和接收数据,实现了双向数据传输,提高了通信效率。
广泛的应用场景:由于上述优点,TCP广泛应用于Web应用程序、文件传输、邮件传输等需要可靠传输的领域。
5.TCP的缺点
较高的延迟:由于TCP的连接建立、重传和拥塞控制机制,它的传输延迟较高。
较大的开销:TCP的头部较大,包含序列号、确认号、窗口大小等字段,增加了传输开销。
6.TCP的工作原理
TCP通过端口号标识应用程序,并在发送方和接收方之间建立虚拟连接。发送方将数据分割成多个数据包,每个数据包都带有序号和确认号。接收方收到数据包后,会发送确认信号,如果发现数据包丢失或错误,会要求重传。当所有数据包都正确接收后,TCP会将它们重新组装成原始数据流。
7.TCP的工作机制
(1)TCP的三次握手
-
第一次握手:客户端发送一个请求(syn包),告诉服务器:“我想和你建立连接”。服务器收到后,会回复一个确认(ack包),并告诉客户端:“我收到了你的请求,我也同意建立连接”。
-
第二次握手:服务器在回复确认的同时,也会发送一个请求(syn+ack包),告诉客户端:“我也同意建立连接,这是我的请求”。这样,双方都表达了建立连接的意愿。
-
第三次握手:客户端收到服务器的syn+ack包后,会发送一个确认(ack包),告诉服务器:“我也同意建立连接”。至此,双方都确认了连接建立,进入ESTABLISHED状态,连接正式建立。
-
为什么要进行三次握手:
-
确保双方都同意建立连接:通过三次握手,可以确保客户端和服务器都同意建立连接,防止单方面的错误连接请求。
- 防止失效的连接请求报文:如果只进行两次握手,可能会收到之前失效的连接请求报文,导致错误的连接建立。三次握手可以确保所有的连接请求都是最新的、有效的。
(2)四次挥手
-
第一次挥手:客户端发送一个带有FIN标志的数据包,表示它已经完成了数据的发送,想要关闭连接。此时,客户端进入FIN-WAIT-1状态
-
第二次挥手:服务器收到这个FIN包后,会发送一个ACK确认包给客户端,表示收到了关闭请求。服务器可以继续发送数据,直到数据发送完毕。服务器进入CLOSE-WAIT状态
-
第三次挥手:当服务器完成数据发送后,也会发送一个带有FIN标志的数据包给客户端,表示服务器也完成了数据的发送,想要关闭连接。服务器进入LAST-ACK状态,等待客户端的确认
-
第四次挥手:客户端收到服务器的FIN包后,会发送一个ACK确认包给服务器,表示收到了关闭请求。客户端进入TIME-WAIT状态,等待一段时间以确保所有数据都正确传输。在这个状态下等待一段时间后,客户端关闭连接
-
TCP四次挥手的目的和重要性:
TCP四次挥手的主要目的是确保双方都能确认连接的关闭,并且防止旧的数据包干扰新的连接。通过四次挥手,双方都能确保对方已经收到了关闭请求,并且所有的数据都已经正确传输。
8.重传机制
TCP的重传机制确保丢失的数据包能够被重新发送。发送方在发送数据后,会启动一个定时器。如果在定时器超时前没有收到确认包,TCP会重新发送数据包。
9.滑动窗口机制
TCP的滑动窗口机制用于控制数据流的传输速度。发送方根据接收方的窗口大小调整发送的数据量,确保接收方能够处理接收到的数据。
10.堵塞控制算法
TCP采用了多种拥塞控制算法,以避免网络拥塞:
-
慢启动:在连接建立初期,TCP以指数速度增加发送速率,直到检测到网络拥塞。
-
拥塞避免:当网络拥塞迹象出现时,TCP减少发送速率,避免进一步拥塞。
-
快速重传与快速恢复:当TCP检测到数据包丢失时,立即重传数据包,并通过调整拥塞窗口大小恢复传输速度。
TCP与其他协议的关系
在OSI模型(开放系统互联参考模型)中,TCP位于传输层,其下层是IP,上层是应用程序。IP负责将数据包从源地址传递到目的地址,而TCP则负责确保数据的可靠传输和错误处理。
针对的是TCP,注意:
* 一个Socket一次只能连接以太主机
* Socket关闭后无法再次使用
* 每隔Socket对象只能一台远程主机连接,如果你想连接到多台主机远程主机,你必须创建多个Socket对象