0. tcp 与 udp 的 异同特性
| TCP | UDP | |
| name | 传输控制协议 | 用户数据报协议 | 
| 面向连接? | 需要 
 | 不需要 | 
| 可靠的传输数据? | 可靠 有确认机制(三次握手) 
 保证数据可靠传输 
 | 不可靠 没有确认机制 
 可能会造成问题: 
 | 
| 传输的消息有状态? | 有状态 需要维持复杂的连接状态表 
 | 无状态 | 
| 数据传输的形式? | 面向连续的字节流 | 面向独立的报文 | 
| 协议首部开销? | 20~60 字节 | 8 字节 | 
| 服务形式or范围 | 仅支持 点对点通信 | 支持 一对一、 一对多、 多对一、多对多通信 | 
| 如何选择? | 一般用于传输准确性要求高场景 
 | 一般用于即时通信 
 | 
| 传输效率 | 由于TCP 在传输 的时候 ,多了连接、确认、重传等机制 相比TCP传输速率低许多 | |
1. Tcp
1.1 建立与断开连接
(1)tcp三次握手 —— 建立连接

(2)Tcp四次挥手——断开连接

1.2 传输的可靠性保证
tcp是一种面向连接的、可靠的、基于字节流的传输协议,通过一系列机制来保证数据的可靠传输,主要包括:
1. 超时重传
- 通过在每个数据包上标记一个序列号,并等待接收方的确认应答 
  - 如果一定时间内未收到应答,在设定的超时时间过后,再次发送
 
2. 流量控制
- 防止接受过多的数据,导致接收方无法处理 
  - 连接的双方都有固定大小的缓冲空间
- 接受方通过tcp窗口来告知发送方 还有多少缓存空间
- 使用到了流量控制协议,即 tcp通过滑动窗口来实现 
    - 提示发送方控制发送的数据量
 
 
3. 拥塞控制
- 防止发送过多的数据,导致网络拥塞 
  - 通过检测网络的拥塞状态(拥塞控制算法)来动态调整发送频率
 
4. 校验和
- 如果收到首部和数据的校验和 有差错,则丢弃此报文 
  - 端对端的校验和 可以检测到数据在传输过程中的变化
 













![[leetcode hot 150]第五十六题,合并区间](https://img-blog.csdnimg.cn/direct/a0b5bbedfefc4f6abd29eb76d6c55f24.png)





