您的位置:首页 > 理论基础 > 计算机网络

linux内核中,tcp连接三次握手过程中的,tcp协议栈中的函数调用关系

2017-04-01 17:21 295 查看
http://blog.chinaunix.net/uid-20540275-id-1649827.html

    最近工作需要修改一套tcp协议栈,简单的看了一下内核tcp协议栈的函数调用过程,只是一个大致的流程,并没有做详细的调查,准备修改的时候在仔细的看.还有就是仅仅看了tcp部分,下面的ip以下的都没有查看.

    在这里简单的说一下关于tcp连接开始的三次握手的函数调用关系:

    客户端:(发起连接请求)

    tcp_v4_connect -> tcp_connect_init

                   -> tcp_transmit_skb -> icsk->icsk_af_ops->send_check

                                           (tcp_v4_send_check)

                                       -> icsk->icsk_af_ops->queue_xmit

                                           (ip_queue_xmit)

                                          向外发送syn包

                   -> inet_csk_reset_xmit_timer

                      设置从新发送的定时器

    如果过一段时间没有接到应答:

    tcp_retransmit_timer -> tcp_retransmit_skb -> tcp_transmit_skb

    其余操作就跟上面的相同了.

    服务器端:(接收syn,并返回syn/ack)

    tcp_v4_rcv -> tcp_v4_do_rcv

                      -> tcp_v4_hnd_req

                      -> tcp_rcv_state_process

                          -> icsk->icsk_af_ops->conn_request 

                             (tcp_v4_conn_request) ->

                                  -> tcp_v4_init_sequence

                                  -> tcp_v4_send_synack

                                        -> ip_build_and_send_pkt

    这个写的并不是很全面,只是匆匆忙忙的整理出来的.

    客户端:(接收syn/ack,并返回ack)

    tcp_v4_rcv -> tcp_v4_do_rcv

                    -> tcp_rcv_state_process

                            -> tcp_rcv_synsent_state_process

                                  -> tcp_ack

                                  -> tcp_store_ts_recent

                                  -> tcp_initialize_rcv_mss

                                  -> tcp_send_ack

                                        ->tcp_transmit_skb

                            -> tcp_urg

                            -> tcp_data_snd_check

    服务器端:(接收ack)

    tcp_v4_do_rcv

        -> tcp_v4_hnd_req

                -> tcp_check_req

                        ->inet_sk(sk)->icsk_af_ops->syn_recv_sock

       -> tcp_rcv_state_process

                ->  tcp_sequence

     上面是三次握手的tcp协议栈部分函数调用关系的描述,由于整理的比较匆忙,可能会存在一些问题
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐