TCP和UDP工作在传输层,是用来对数据进行传输和通信
TCP和UDP有什么特点和区别?
TCP的主要特点:
-
面向连接 :TCP协议会将通信双方建立起连接
- 如何做链接管理的?通过TCP三次握手来建立连接、通过TCP四次挥手来断开连接
- 重传机制有哪些?
- 超时重传:发送数据时设定一个定时器,当超过指定的时间后,没有收到对方的ACK确认应答报文,就会重新发该数据。超时周期是动态变化的,会出现超时周期相对较长的情况。于是就出现了快速重传。
- 快速重传:当发送方收到三个相同的ACK报文时,会在定时器过期之前,重传丢失及丢失之后的所有数据包。会出现重传没有收到的数据还是重传没有收到数据之后的所有数据?
- SACK(选择确认性):在TCP的头部选项里添加一个SACK,让发送方知道哪些数据没有被成功收到,可以只重传没有收到的数据
- D-SACK:优化了SACK
- 可以让发送方知道是发送的包丢失了,还是接收方返回的ACK包丢失了
- 可以知道是不是发送方发送的包是不是被网络延迟了
- 可以知道网络中是不是把发送方的数据包给复制了
-
可靠的:TCP是一种可靠的传输协议,通过使用确认和重传机制来确保数据可靠性
-
面向字节流
-
怎么保证数据的有序性?给每个数据编上序列号,并且发送总数据长度及每个数据的长度,从而来确定数据是否有序,有便于传输后的确认及丢失后重传不会出现乱序。
-
粘包问题
粘包问题指服务端接收多个数据包时,无法区分这些数据包的边界,导致解析错误。
解决方法:一般通过固定消息的长度、用特殊字符作为边界、使用自定义消息结构三种方式来进行分包
-
2024年8月6日...大约 6 分钟