1.三次握手四次挥手
2.TCP与UDP的区别
UDP | TCP | |
---|---|---|
是否连接 | 无连接 | 面向连接 |
是否可靠 | 不可靠 | 可靠传输,使用流量控制和拥塞控制 |
传输方式 | 面向报文 | 面向字节流 |
首部开销 | 首部开销小,仅8字节 | 首部最小20字节,最大60字节 |
通信方式 | 全双工 | |
支持单播、多播和广播 | 仅支持单播 |
3.TCP的流量控制和拥塞控制
流量控制
流量控制:防止发送方发的太快,耗尽接收方的资源,从而使接受方来不及处理。
利用滑动窗口实现流量控制:
- 接受端将自己可以接受的缓冲区大小放入TCP首部中的“窗口大小”字段,通过ACK来通知发送端
- 窗口大小字段越大说明网络吞吐量越高
- 窗口大小指的是无需等待确认应答而可以继续发送数据的最大值
- 操作系统内核为了维护滑动窗口,需要开辟发送缓冲区,来记录当前还有那些数据没有应答,只有确认应答过的数据,才能从缓冲区删掉。
- 接受端一旦发现自己的缓冲区快满了,就会将窗口大小设置成一个更小的值通知给发送端,发送端收到这个值后,就会减慢自己的发送速度。
- 如果接受端发现自己的缓冲区满了,就会将窗口的大小设置为0,此时发送端不再发送数据,但是需要定期发送一个窗口探测数据段,使接受端把窗口大小告诉发送端。
拥塞控制
工作过程:
(1)初始化:设置拥塞窗口cwnd为1。
注:cwnd=1,“1”代表一个报文段,长度是一个最大报文段长度MSS。
(2)慢开始阶段:拥塞窗口cwnd以指数增长(前提是收到确认发送应答),直到遇到慢开始门限(ssthresh)。
(3)拥塞避免阶段:拥塞窗口按线性规律增长,直到发生网络拥塞。
(4)拥塞调整阶段:发生网络拥塞后,将慢开始门限ssthresh设置为发生网络拥塞时拥塞窗口的一半,并将拥塞窗口重新初始为1,进入慢开始阶段…循环往复。
快重传
收到3个重复的确认应答,执行快重传算法
快恢复
网络中出现拥塞,即出现快重传的时候,执行快恢复算法。
快恢复算法:拥塞窗口cwnd初始为新慢开始门限,然后直接进入拥塞避免阶段。