一,UDP 和 TCP 的特点
1.1 UDP
- 面向无连接
- 可以一对一,一对多,多对一,多对多
- 不可靠
1.1 TCP
- 面向连接,三次握手与四次挥手
- 只能一对一
- 可靠,有拥塞控制,超时重传,滑动窗口
二,首部格式
三,TCP的可靠性
1.1 连接建立
1.2 超时重传
如果一个已经发送的报文段在超时时间内没有收到确认,那么就重传这个报文段。
一个报文段从发送再到接收到确认所经过的时间称为往返时间 RTT。
1.3 滑动窗口
类似于缓存,服务器和客户端都有,用来暂时存放字节流。用一个窗口来存储客户端要发送的数据,当服务器端返回已经收到了某些数据,这个然后窗口就会向右滑动。
1.4 流量控制
控制发送方发送速率,保证接收方来得及接收。接收方(服务器端)发送的确认报文中的窗口字段可以用来控制发送方窗口大小,从而影响发送方的发送速率。设为0就不能发了。
1.5 拥塞控制
慢开始、拥塞避免、快重传、快恢复。
1.5.1 慢开始和拥塞避免
慢开始也就是从1开始发送,下面的每次都是2倍,当到达阈值时,会变为线性,也就是+1。线性的时候叫拥塞避免。等超时了之后,将阈值设为超时的1/2。
1.5.1 快重传和快恢复
当服务器端返回了三个同样的确认时,也就是说这个确认之后的数据没有收到,这个时候需要快速重新传确认之后的那个数据,然后令阈值为现在的1/2,但是由于不是超时引起的,因此直接快速恢复到拥塞避免的阶段而不是从1再开始传。