tcp连接三次握手过程中的,tcp协议栈中的函数调用关系
2012-09-26 23:02
351 查看
最近工作需要修改一套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协议栈部分函数调用关系的描述,由于整理的比较匆忙,可能会存在一些问题
在这里简单的说一下关于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协议栈部分函数调用关系的描述,由于整理的比较匆忙,可能会存在一些问题
相关文章推荐
- linux内核中,tcp连接三次握手过程中的,tcp协议栈中的函数调用关系
- TCP运输连接管理解析(三次握手过程解析)
- tcp 三次握手和四次断连深入分析:连接状态和socket API的关系
- SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
- TCP建立连接的三次握手过程
- SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
- SOCKET API和TCP STATE的对应关系_三次握手(listen,accept,connect)_四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUICK
- 2MSL TCP三次握手连接与四次握手关闭过程
- TCP连接建立过程中为什么需要“三次握手”
- TCP连接建立过程中为什么需要“三次握手”
- TCP建立连接的三次握手过程
- 话说,那是一次完整的连接建立过程【C/S, tcp三次握手,发包,关闭连接】
- SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
- TCP连接建立过程中为什么需要“三次握手”
- TCP连接建立过程中为什么需要“三次握手”
- TCP 接通连接需要进行三次握手过程
- SOCKET API和TCP STATE的对应关系_三次握手(listen,accept,connect)_四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUICK
- SOCKET API和TCP STATE的对应关系__三次握手(listen,accept,connect)__四次挥手close及TCP延迟确认(调用一次setsockopt函数,设置TCP_QUI
- TCP连接建立过程中为什么需要“三次握手”
- TCP连接的建立与终止,三次握手和四次握手,以及在socket系列函数中的体现