tcp_v4_rcv函数位于net/ipv4/tcp_ipv4.c文件中,是处理TCP数据包的入口函数。当一个TCP数据包到达网卡后,经过网络层和传输层的处理后,最终会到达tcp_v4_rcv函数进行处理。该函数主要完成对TCP数据包的解析、数据包校验以及与已经建立的TCP连接进行匹配等操作。 在tcp_v4_rcv函数中,首先会进行数据包的基本校验,比...
tcp_v4_rcv函数为TCP的总入口,数据包从IP层传递上来,进入该函数;其协议操作函数结构如下所示,其中handler即为IP层向TCP传递数据包的回调函数,设置为tcp_v4_rcv; 1staticstructnet_protocol tcp_protocol ={2.early_demux =tcp_v4_early_demux,3.early_demux_handler =tcp_v4_early_demux,4.handler =tcp_v4_...
tcp协议的注册: 如下图第1点所示, 网络子系统初始化的时候inet_init()函数内部通过inet_add_protocol(&tcp_protocol, IPPROTO_TCP)注册到网络层协议的全局变量inet_protos[MAX_INET_PROTOS]中, 即inet_protos[IPPROTO_TCP].handler =tcp_v4_rcv, udp或者其他4层协议也都是通过这种方式注册 接收数据包 在网卡驱...
}if(tcp_checksum_complete(skb))gotocsum_err;if(sk->sk_state == TCP_LISTEN) {//说明收到的是三次握手第一步SYN或者第三步ACK,这里是服务器端的情况structsock *nsk =tcp_v4_cookie_check(sk, skb);//syncookie检查,因为没有syn包没有ack选项,因此忽略, 如果syncookie验证通过则创建新的if(!nsk)g...