• 《网络编程实战》笔记 | 13 小数据包的应对之策:理解 TCP协议中的动态数据传输


    0 前言

    果然还是要写笔记才能记得牢靠,虽然是会慢好多,总是比过了就忘的差不多好。
    这一节其实是讲 TCP 的流量控制、拥塞控制,说的比较通俗易懂。

    1 流量控制的生产者-消费者模型

    接收端限于缓存大小和处理速度,不能让发送端没有限制的一直发送数据,当接收端来不及处理的时候,就需要告知发送端慢下来,甚至停下来,这就是流量控制。发送端相当于生产者,接收端相当于消费者,生产的物品用不完可不得停下来,不然等着发霉?
    在 TCP 中,流量控制是通过发送窗口和接收窗口大小来进行的。接收窗口就是接收缓存还能存入的字节数,发送窗口表示允许发送的字节数,报文中携带的窗口值是发送方的接收窗口大小,对端通过该值进行发送窗口大小设置。缓存与窗口关系如下图所示:

    1. 发送窗口用来控制发送和接收端的流量;阻塞窗口用来控制多条链接公平使用有限带宽;
    2. 小数据包加剧了网络带宽的浪费,针对糊涂窗口综合征,引入Nagle算法和延时ACK机制;
    3. 程序设计层面,不要多次频繁地发送,使用writev批量发送;
    #include <sys/uio.h>
    ssize_t readv(int fd, const struct iovec *iov, int iovcnt);
    ssize_t writev(int fd, const struct iovec *iov, int iovcnt);
    
  • 相关阅读:
    第十四周总结
    第十三周总结
    第十一周学习总结
    《软件需求》 阅读笔记
    第十周总结
    Echarts基础
    HTML中form表单text填写内容时的约束
    代码整洁之道 阅读笔记五
    pandas中的None和NaN
    pandas中的replace用法
  • 原文地址:https://www.cnblogs.com/1million/p/14344172.html
Copyright © 2020-2023  润新知