TCP输入 之 tcp_data_queue

tcp_data_queue作用为数据段的接收处理,其中分为多种情况:

(1) 无数据,释放skb,返回;

(2) 预期接收的数据段,a. 进行0窗口判断;b. 进程上下文,复制数据到用户空间;c. 不满足b或者b未完整拷贝此skb的数据段,则加入到接收队列;d. 更新下一个期望接收的序号;e. 若有fin标记,则处理fin;f. 乱序队列不为空,则处理乱序;g. 快速路径的检查和设置;h. 唤醒用户空间进程读取数据;

(3) 重传的数据段,进入快速ack模式,释放该skb;

(4) 窗口以外的数据段,进入快速ack模式,释放该skb;

(5) 数据段重叠,在进行0窗口判断之后,进行(2)中的加入接收队列,以及>=d的流程;

(6) 乱序的数据段,调用tcp_data_queue_ofo进行乱序数据段的接收处理;

 

本文链接:TCP输入 之 tcp_data_queue

转载声明:转载请注明来源:Linux TCP/IP Stack,谢谢!


发表评论

电子邮件地址不会被公开。 必填项已用*标注