为什么要修改TCP的缓冲区?
为什么TCP传输速度不高?
数据的大小一定要小于MSS
。
并行的发送网络数据,接收方是否有强大的接受处理能力?
当接收方硬件不如发送方,或者系统繁忙、资源紧张时,是无法瞬间处理这么多报文的。于是,这些报文只能被丢掉,网络效率非常低。
怎么限制发送方的速度呢?
滑动窗口的由来
滑动窗口的大小决定了网速,所以想让网速快,得想办法让窗口大。
读取网络传来的数据需要进程用read()
函数来读取数据。
但是网络的传输(处理)能力也是有限的,如果超过了承受范围,路由器会直接丢弃这些报文。
- 带宽时延积
- 丢包
- 网络时延
-
发送和接收缓冲区大小
滑动窗口与缓冲区
缓冲区动态调节
发送缓冲区的大小可以根据待发送数据的大小来自动调节
那么接受缓冲区呢?——根据空闲内存的大小来决定。
TCP建立新连接的前提条件是内核会为TCP分配新内存
。
让TCP使用更多的系统内存,可以提高并发能力
。(看来并发需要更大的内存)
小结
- 高并发一定要基于大部分内存用于网络传输上
- ACK的存在实现了可靠性
- 滑动窗口的存在提升了网速,也提高了接收方的处理能力
-
滑动窗口和丢包
评论
-
带宽时延积
-
MSS和TCP,与,应用层
-
传输数据包的拆包工作是内核做的