拥塞窗口与发送窗口的关系?
发送窗口等于拥塞窗口,也有可能也小于拥塞窗口,实际发送的数据大小还要取决于
接收窗口的大小,拥塞窗口实际上限制发送方的
拥塞窗口的字节数是按照mss的指数级增长的,但是每次收到包又要给ack,才能发后续的字节,
但是mtu一般只有1500字节,但mss一般都有64k这么大,是不是拥塞窗口基本没用?
可能一次发送的数据并不只是一个mtu这么大,这个只是链路层的东西,不属于
传输层的概念,可以理解为传输层一次最多不可能只发mtu这么大,而且可以是
多个mtu大小包发送给一个ack
选择性重传具体如何工作?
sack可以在tcp头部中增加多个非连续的字节块的边界描述
所谓的tcp控制块是不是就是tcp_prot对象,它的发送队列上面的数据何时谁来取走?
用户空间<-----> socket层 <------>协议栈 这是交互层次,在调用了send后
数据拷贝到内核地址空间,挂到sock的缓冲区,也就是特定协议sock的缓冲区,
不是socket的缓冲区
然后才开始判定是否应该发送到网络层,此时就是从socket的send到
特定协议的sock对象的send的转换,
如果是tcp,就要使用之前提到的一些机制来确定是否应该发送,确认发送后,执行
ip_queue_xmit发送,ip层的数据包的发送再考虑分包的问题,它就负责将数据发送
出去
数据的发送的实际动作的触发时机可能包括
(1)用户层的send调用(主动触发)
(2)tcp内部的重传的定时器(被动触发)
(3)收到ack或者事件后的状态机驱动(被动触发)
数据包从传输层到ip层,到链路层的传递过程中,存在拷贝?
数据包的发送也类似接收要使用软中断机制?
阅读(787) | 评论(0) | 转发(0) |