0
点赞
收藏
分享

微信扫一扫

FebHost:什么是域名DNS服务器?

TCP特性

拥塞控制(可靠性机制)

  1. 慢启动: 刚开始进行通信时,会使用非常小的窗口,探探路.
  2. 指数增长: 在传输通畅的条件下,拥塞窗口会指数型增长.
  3. 线性增长: 当指数增长到一个阈值后,就会从指数增长转变为线性增长.
  4. 拥塞窗口回归小窗口: 在窗口增大的过程中,如果传输出现丢包,认为当前网络出现拥堵了,
    此时就会把窗口大小调整为最初的小窗口,继续进行指数增长->线性增长的过程,会根据刚才
    丢包的窗口大小,调整阈值.

在这里插入图片描述

延迟应答(效率机制)

也不是所有的包都会出发延迟应答:

  1. 滑动窗口(数量限制): 每隔N个包就应答一次.
  2. 非滑动窗口(时间限制): 超过最大延迟时间就应答一次.

捎带应答(效率机制)

这是没有捎带应答的方式:

在这里插入图片描述
这是带有捎带应答的方式:
在这里插入图片描述

面向字节流(粘包问题)

此时不是传输层的问题,而是站在应用层的角度解决这个问题:

  1. 应用层协议中,引入分隔符,区分包的边界.
    在这里插入图片描述
  1. 应用层协议中,引入包长度,区分包的边界.

在这里插入图片描述

TCP异常机制(心跳包)

  1. 进程崩溃:
    进程结束 -> PCB没了 -> 文件描述符表释放了 == socket.close().
    崩溃的一方会发出FIN -> 四次挥手 -> 连接正常释放了.
  2. 主机关机:
    正常关机后,会尝试终止所有进程,和进程崩溃时一样的处理结果.但是当接收方的FIN发过来是,请求方已经关机了,接收方收不到ACK就会重传FIN,连续尝试几次后都没有收到ACK,就单方面释放了.
  3. 拔掉电源:
  • 接收方正给发送方发消息:
    接收方收不到ACK就会重传FIN,连续尝试几次后都没有收到ACK,就单方面释放了.
  • 发送方正给接收方发消息:
    接收方在等待发送方的消息,至于等多久我们是不知道的,这里就涉及到心跳包.
    虽然是接收方,长时间收不到数据,也会周期性的给发送方发一个不带任何业务的TCP数据报,就是为了确认发送方是否正常工作/确认网络是否畅通.
  1. 网线断开:

小结

结合前面几篇博客,一共总结了TCP特性中的10个.

  1. 确认应答(可靠性核心机制)
  2. 超时重传(可靠性机制)
  3. 三次握手和四次挥手(可靠性机制)
  4. 滑动窗口(效率机制)
  5. 流量控制(可靠性机制)
  6. 拥塞控制(可靠性机制)
  7. 延迟应答(效率机制)
  8. 捎带应答(效率机制)
  9. 面向字节流(粘包问题)
  10. TCP异常情况(心跳包)

希望有收获的小伙伴多多支持!

举报

相关推荐

0 条评论