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

最近工作需要修改一套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
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值