协议栈处理过程

Posted shenxiaodou

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了协议栈处理过程相关的知识,希望对你有一定的参考价值。

技术图片

#include<iostream>// 123
           
    发送数据的时候,先套接字,有套接字队列。                                   // socket module
然后调用套接字模块,将数据放到对应的套接字发送队列。tcp模块会为每一个tcp          // tcp module
链接建立tCB(传输控制块),用来控制tcp的发送队列,窗口,拥塞,当tcp模块收到     
来自套接字的消息时,就会根据相应的TCB信息,加头部信息,封装tcp报文,加入tcp
发送队列。然后是IP模块,收到TCP发送消息时,同样会添加IP头部,封装成IP数           // ip module      
据报,同时根据目的IP地址查询路由表找到下一跳IP地址和出口,并加入IP发送队列。      // ip module->Network interface layer write function
ip模块调用网络接口层的write()函数,来完成IP数据报的发送和接收。它将帧放入        
if发送队列,通过网卡输出程序将队列中的帧发送。 
    网卡收数据放到if队列,产生中断,操作系统开始工作,CPU执行中断处理程序,      //  if send queue
根据中断向量码执行收到数据后,软中断IP模块,开始自下而上传送,先ip,看ip address    // ip rout table //  if receive queue then,interrupt                              
find rout table 选择丢弃还是转发,收下后,中断tcp模块,然后到达网络接口层,最后       // tcp module->tcp queue
转移到应用程序。                

以上是关于协议栈处理过程的主要内容,如果未能解决你的问题,请参考以下文章

RDMA over TCP的协议栈工作过程浅析

linux内核网络收包过程—IP协议处理

趣谈协议基础篇:图解Linux网络包接收过程

linux内核网络收包过程—网络子系统与协议栈初始化

linux内核协议栈 UDP之数据报接收过程

Bluedroid协议栈HCI线程数据处理流程分析