linux内核中,tcp连接三次握手过程中的,tcp协议栈中的函数调用关系 _VMware, Unix及操作系统讨论区_Weblogic技术|Tuxedo技术|中间件技术|Oracle论坛|JAVA论坛|Linux/Unix技术|hadoop论坛_联动北方技术论坛  
网站首页 | 关于我们 | 服务中心 | 经验交流 | 公司荣誉 | 成功案例 | 合作伙伴 | 联系我们 |
联动北方-国内领先的云技术服务提供商
»  游客             当前位置:  论坛首页 »  自由讨论区 »  VMware, Unix及操作系统讨论区 »
总帖数
1
每页帖数
101/1页1
返回列表
0
发起投票  发起投票 发新帖子
查看: 3324 | 回复: 0   主题:  linux内核中,tcp连接三次握手过程中的,tcp协议栈中的函数调用关系         上一篇   下一篇 
WilliamLOg
注册用户
等级:新兵
经验:66
发帖:1
精华:0
注册:2014-6-29
状态:离线
发送短消息息给WilliamLOg 加好友    发送短消息息给WilliamLOg 发消息
发表于: IP:您无权察看 2015-12-16 15:10:47 | [全部帖] [楼主帖] 楼主

最近工作需要修改一套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协议栈部分函数调用关系的描述,由于整理的比较匆忙,可能会存在一些问题











赞(0)    操作        顶端 
总帖数
1
每页帖数
101/1页1
返回列表
发新帖子
请输入验证码: 点击刷新验证码
您需要登录后才可以回帖 登录 | 注册
技术讨论