TCP 的可靠性

TCP提供了一种数据段错误恢复机制,如数据段毁坏、重复、接收次序错乱,因此TCP 被称为是可靠协议。

数据段的次序通过在数据段中打上“序列标签”,这种序列标签使得 TCP 能够检测出丢失的数据段;同时,TCP 在传输数据后,需要对方给出“确认信号”来确认收到。

一般通过 CRC 校验码来检测数据段的,CRC 校验算法中加入了时间戳,在TCP 的每次跳转后都要重新进行 CRC 的验算,不符合结果的数据段将被丢弃。

TCP 3次握手

TCP 协议通过3次握手机制来建立 TCP/IP连接,可用 SYN–SYN+ACK–ACK 来表示。3次握手机制目的是双方协商出TCP socket 连接的参数,用以通过 SSH 或 HTTP 来传输数据。

设计3次握手机制也是为了双方能够在同一个时间点对各自的多个TCP socket做初始化和协商,这保证了唯一的物理网络接口,如以太网卡,能够同时传输多个 TCP 数据流。

3次握手.png

3次握手中通过不断的发送请求同步信号和确认信号,来保证数据包接收成功和在组装数据时数据包的顺序正确。

注意:UDP 是无连接的,这意味着UDP 不会像 TCP 这样去通过3次握手建立连接,UDP称为不可靠协议。这不是说 UDP 不能传输数据,只是不会进行双方的协商建立连接过程,UDP 只是传输然后期待数据传输成功。