如何修改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

你可能感兴趣的:(如何修改TCP缓冲区才能兼顾并发数量与传输速度?)