前言
这里简单记录下
tcp协议
总结
tcp协议
建立与终止
- 三次握手四次挥手
重传机制
滑动窗口
拥塞控制
拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况,由拥塞窗口实现
- 慢启动
- 拥塞避免
- 快速重传
- 快速恢复
流量控制
流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的,由滑动窗口实现
- 滑动窗口
tcp粘包
产生粘包的两种情况
- 当连续发送数据时,由于tcp的nagle算法,会将较小的内容拼接成大的内容,一次性打给服务端,因此造成粘包
- 当发送内容较大时,由于服务端的recv方法的中的buffer_size较小,不能一次性接收全部内容,在下一次请求到达时,接受的内容依然是上次没有接收完的内容,因此造成粘包
解决上述两种情况:
- 发送端将数据包封装成固定长度(不足部分通过补0填充),这样接收端就可以读取固定长度解包
- 发送端给数据包添加包头,包含数据包长度,接收端就可以根绝包头的长度解析数据包
- 设置特殊字符消息边界,根据边界字符分离数据包
tcp与udp
- tcp/udp都是传输层协议,但是二者具有不同的特性:
tcp udp 可靠性 可靠 不可靠 连接性 面向连接 无连接 报文 面向字节流 面向报文 效率 低 高 双工性 全双工 一对一、一对多、多对多 流量控制 滑动窗口 无 拥塞控制 慢开始、拥塞避免、快重传、快恢复 无 传输速度 慢 快 应用场景 对效率要求低,对准确性要求高或者要求有连接的场景 对效率要求高,对准确性要求低的场景