瑞星 发表于 2024-6-15 00:28:55

【网络编程开发】7.TCP可靠传输的原理

7.TCP可靠传输的原理

TCP实现可靠传输的原理重要基于序列号和确认应答、超时重传、滑动窗口、连接管理机制以及拥塞控制等多重机制。
TCP(Transmission Control Protocol),即传输控制协议,是网络通信中的一种重要协议,它提供了面向连接的、可靠的、全双工的数据流传输服务。可靠性是TCP协议的核心目标之一,其确保数据能够在复杂的网络情况下无差错、不丢失、不重复且按序到达目的地。以下是对TCP实现可靠传输原理的详细剖析:
1.序列号和确认应答

https://img-blog.csdnimg.cn/direct/f9a5cc3ff5a64249b1d2e6a21db24c13.png


[*]序列号:TCP协议为每一个字节分配一个唯一的序列号,这对于跟踪数据的传输状态至关重要。发送方按照序列号将数据分割成多个报文段,通过网络进行传输。
[*]确认应答:吸收方在吸收到数据后,会向发送方返回一个确认应答(ACK),其中包含已乐成吸收的数据字节序列号。这告诉发送方哪些数据已被乐成吸收,而未被确认的数据将被重新发送。
2.超时重传

https://img-blog.csdnimg.cn/direct/2d04f791c2fc479ebc4bdc4ac5262478.png


[*]定时器:TCP在发送数据后会启动一个重传定时器,假如在规定时间内未收到吸收方简直认应答,发送方会假定数据丢失,并重新发送相应的数据。
[*]动态调整:超时重传的时间并非固定,而是根据网络的实际延迟和拥塞情况动态调整,以优化传输服从和减少不必要的重传。
3.滑动窗口

https://img-blog.csdnimg.cn/direct/0759d8fdf04547ce92fff0cc8fa3943b.png
https://img-blog.csdnimg.cn/direct/e16f8d0ef77d4df9946d6c36d88a6f3d.png


[*]窗口机制:滑动窗口机制允许发送方在未收到确认应答前发送多个数据报文段,提升了传输服从。吸收方通过窗口巨细控制发送方的发送速率,以制止超出其处置处罚本领。
[*]流量控制:通过滑动窗口的调整,TCP实现流量控制,确保吸收方不会被过多的数据淹没,同时发送方可以根据网络状况调治数据发送速率。
4.累积确认

https://img-blog.csdnimg.cn/direct/5a696235a2ad464693e7730168321430.png


[*]工作原理:当吸收方收到一个序列号为N的数据包时,它会使用确认号来告知发送方,它已经乐成吸收全部直到序列号N-1的数据包。这种方式减少了确认的次数,由于吸收方不需要为每个数据包发送单独简直认消息。
5.连接管理



[*]三次握手:TCP使用三次握手机制来建立连接,这一过程中双方交换序列号、窗口巨细等信息,确保数据传输的初始化状态是可靠的。
[*]四次挥手:连接的终止通过四次挥手来完成,确保了全部数据都能完备地传输到对方,同时优雅地关闭连接。
6.拥塞控制



[*]拥塞检测:TCP通过拥塞控制算法来监测网络状况,当检测到拥塞时,会适当降低发送数据的速率,制止加剧网络拥塞。
[*]拥塞制止:除了相应拥塞,TCP还采用一系列机制(如慢启动、快重传、快规复)来制止拥塞的发生,提高网络使用率。
7.TCP头部结构

https://img-blog.csdnimg.cn/direct/37b7329701344aca9195e992ee63fd25.png


[*]端口号:提供了源端口号和目的端口号,这确保了在网络层多工情况下,数据能够被精确地发送到目标应用。
[*]序列号:对于字节流中的每个字节都有唯一的序列号,这对于吸收方重组数据包、删除重复数据以及实现超时重传等至关重要。
[*]确认号:通过这个字段,发送方可以知道哪些数据已被对方乐成吸收,从而实现可靠的数据传输。
[*]头部长度:由于TCP头部可包含变长的选项字段,头部长度字段告诉吸收方实际的头部长度,这对于精确剖析TCP报文段非常重要。
[*]标记位:包罗URG、ACK、PSH、RST、SYN、FIN等,这些标记位控制了TCP连接的状态转换,如连接的建立、数据的紧急传输、连接的关闭等。
[*]窗口巨细:用于流量控制,告知发送方其吸收缓冲区还能容纳多少字节的数据,从而防止发送方向吸收方发送过多数据导致其缓冲区溢出。
[*]校验和:用于检测数据在传输过程中是否发生错误,增加了TCP传输的可靠性。
[*]紧急指针:当URG标记被设置时,此字段表示紧急数据的竣事位置,使得吸收方可以优先处置处罚某些数据。
8.标记位的作用

https://img-blog.csdnimg.cn/direct/8a3675de360c4cb58ca1e3f7b33d394e.png


[*]SYN:用于在TCP连接建立时的握手过程。客户端和服务端通过交换SYN报文来同步序列号,并协商连接参数。
[*]ACK:在全部数据传输过程中起着确认作用,确保了数据的可靠传输。每个ACK报文都包含了下一个期望吸收的数据序列号。
[*]FIN:用于有序地关闭TCP连接。当一端完成数据发送后,会发送一个FIN报文,表示不再有数据传输,但仍可吸收数据。
[*]RST:用于异常关闭连接。当检测到错误或需要取消一个已断开的连接时使用RST报文。
[*]PSH:提示吸收方应用程序尽快将数据从TCP缓冲区中读走,通常用在需要快速相应的场所。
[*]URG:当该位被设置时,紧急指针有效,指示紧急数据的竣事位置,以便吸收方优先处置处罚这部分数据。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 【网络编程开发】7.TCP可靠传输的原理