TCP/IP协议头
- TCP/IP族是一组网络通信协议的集合,一个分层、多协议的通信体系,它是互联网的基础通信协议。这个协议族定义了电子设备如何连入互联网,以及数据如何在它们之间传输。
- TCP/IP 协议族通常被分为四层,从下到上分别是数据链路层、网络层、传输层和应用层。
- 每层完成不同的功能 上层可以使用下层协议提供的服务
- 几乎所有的互联网应用,如网页浏览、文件传输、电子邮件、即时通讯等都依赖 TCP/IP 协议族来实现数据的传输。
- 负责将数据包从源头传输到目的地
ACK机制
- ACK机制是一种确认机制,用于确认接收方是否已经正确接收了发送方发送的数据。以保证数据的可靠传输,防止数据的丢失或重复传输。
基本原理
- 发送方发送数据后,接收方会向发送方发送一个 ACK 回执,告知发送方数据已成功接收。
- 一定时间内没有接收到正确的 ACK,就会重新发送数据,直到接收到 ACK 为止。
- 通常接收方返回的 ACK 中会包含一些信息,比如发送方发送数据的序号加一,以便发送方知道接下来要发送的数据序号。这样可以确保数据按顺序传输
应用场景
- TCP协议中的ACK机制 :在 TCP 通信中,ACK 机制是保证数据可靠传输的核心,如果发送方在指定时间内没有收到 ACK,就会触发重传机制。
- 服务端会接收seq返回ACK告诉客户端他接收到了
超时重传机制
- 一种在数据通信中保证数据可靠传输的重要手段。当发送方发送数据后,会启动一个定时器。如果在定时器超时之前没有收到接收方的确认(ACK)信息,发送方就会认为数据可能丢失或者损坏,进而重新发送数据。
- 数据丢失 数据重传
重传流程
- 定时器的设置
- 在 TCP 协议中,最初的超时时间通常是根据经验值或者网络环境的估计来设定的,并且在后续的传输过程中会根据网络的实际往返时间动态调整。往返时间是指发送方发送一个数据段到接收方,接收方返回确认信息给发送方所经历的时间。
- 超时判断
- 当定时器超时后,发送方会重新发送之前未被确认的数据。
- 重传操作
- 如果在传输一个大文件的过程中某个数据块超时未被确认,发送方会重新发送这个数据块,同时可能会稍微放慢后续数据块的发送速度,等待网络状况改善或者确认信息返回。
配合使用
- 和流量控制机制配合 :
- 流量控制主要是为了避免接收方的接收缓冲区溢出。超时重传机制在进行重传时,需要考虑流量控制的限制。
- 和拥塞控制机制配合 :
- 拥塞控制是为了防止网络出现拥塞。当超时重传发生时,发送方可能会认为网络出现了拥塞情况。在 TCP 中,拥塞控制机制如慢启动、拥塞避免等会根据超时重传的情况来调整发送窗口大小,降低发送速率,以缓解网络拥塞。例如,在慢启动阶段,如果发生了超时重传,发送方会减小发送窗口大小,重新进入慢启动过程,谨慎地增加发送速率。
建立连接 三次握手
- 三次握手 就是TCP传输协议 是一种面向连接、可靠的数据传输协议 ,它是为了在不可靠的互联网上提供可靠的端到端字节流而专门设计的一个传输协议。
第一次握手
- 动作发起方:客户端
- 第一次握手: 客户端向服务器端发送报文 证明客户端的发送能力正常
- 一开始 客户端和服务端处于close状态 先使服务端主动监听 某个端口 主要LISTEN状态
- 然后客户端主动发起SYN 之后处于 SYN-SEND
第二次握手
- 动作发起方:服务器
- 第二次握手:服务器端接收到报文并向客户端发送报文证明服务器端的接收能力发送能力正常
- 客户端收到服务端发送的SYN和ACK之后 发送ACK的ACK 之后一直处于ESTABLISHED 状态 它发收成功了
第三次握手
- 动作发起方:客户端
- 第三次握手:客户端向服务器发送报文 证明客户端的接收能力正常
- 服务端接收到ACK发送ACK之后 处于ESTABLISHED状态 因为它也一收一发了
三次握手原因
- 为了保证客户端和服务器端的可靠连接,TCP建立连接时必须要进行三次会话
- TCP三次握手,进行三次握手的目的是为了确认双方的接收能力和发送能力是否正常。