Hello World

行走即是圆梦,回望亦是前行。

0%

tcp协议

前言

这里简单记录下tcp协议总结

tcp协议

建立与终止

  • 三次握手四次挥手

重传机制

滑动窗口

拥塞控制

拥塞控制是作用于网络的,它是防止过多的数据注入到网络中,避免出现网络负载过大的情况,由拥塞窗口实现

  • 慢启动
  • 拥塞避免
  • 快速重传
  • 快速恢复

流量控制

流量控制是作用于接收者的,它是控制发送者的发送速度从而使接收者来得及接收,防止分组丢失的,由滑动窗口实现

  • 滑动窗口

tcp粘包

  • 产生粘包的两种情况

    1. 当连续发送数据时,由于tcp的nagle算法,会将较小的内容拼接成大的内容,一次性打给服务端,因此造成粘包
    2. 当发送内容较大时,由于服务端的recv方法的中的buffer_size较小,不能一次性接收全部内容,在下一次请求到达时,接受的内容依然是上次没有接收完的内容,因此造成粘包
  • 解决上述两种情况:

    1. 发送端将数据包封装成固定长度(不足部分通过补0填充),这样接收端就可以读取固定长度解包
    2. 发送端给数据包添加包头,包含数据包长度,接收端就可以根绝包头的长度解析数据包
    3. 设置特殊字符消息边界,根据边界字符分离数据包

tcp与udp

  • tcp/udp都是传输层协议,但是二者具有不同的特性:
    tcpudp
    可靠性可靠不可靠
    连接性面向连接无连接
    报文面向字节流面向报文
    效率
    双工性全双工一对一、一对多、多对多
    流量控制滑动窗口
    拥塞控制慢开始、拥塞避免、快重传、快恢复
    传输速度
    应用场景对效率要求低,对准确性要求高或者要求有连接的场景对效率要求高,对准确性要求低的场景