如何修改TCP缓冲区才能兼顾并发数量与传输速度?

为什么要修改TCP的缓冲区?

image.png

为什么TCP传输速度不高?

image.png

image.png

数据的大小一定要小于MSS

image.png


并行的发送网络数据,接收方是否有强大的接受处理能力?


image.png

image.png

当接收方硬件不如发送方,或者系统繁忙、资源紧张时,是无法瞬间处理这么多报文的。于是,这些报文只能被丢掉,网络效率非常低。

怎么限制发送方的速度呢?


滑动窗口的由来

image.png

image.png

滑动窗口的大小决定了网速,所以想让网速快,得想办法让窗口大。


image.png

读取网络传来的数据需要进程用read()函数来读取数据。
但是网络的传输(处理)能力也是有限的,如果超过了承受范围,路由器会直接丢弃这些报文。

image.png


  • 带宽时延积
  • 丢包
  • 网络时延
  • 发送和接收缓冲区大小


    image.png

滑动窗口与缓冲区
缓冲区动态调节


image.png

发送缓冲区的大小可以根据待发送数据的大小来自动调节
那么接受缓冲区呢?——根据空闲内存的大小来决定。


image.png

TCP建立新连接的前提条件是内核会为TCP分配新内存
让TCP使用更多的系统内存,可以提高并发能力。(看来并发需要更大的内存)

image.png


小结

  • 高并发一定要基于大部分内存用于网络传输上
  • ACK的存在实现了可靠性
  • 滑动窗口的存在提升了网速,也提高了接收方的处理能力
  • 滑动窗口和丢包


    image.png

image.png

评论

  • 带宽时延积


    image.png
  • MSS和TCP,与,应用层


    image.png
  • 传输数据包的拆包工作是内核做的


    image.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容