第十二章 建立连接的过程
分析服务器, 如何为数据块建立数据包, 并从底层向上层传递到服务程序的过程.
12.1 驱动程序接收并建立数据包
12.3 接收或转发IP数据包
12.4 TCP数据包的处理
......上一章
12.5 3次握手过程
do_softirq()-->net_rx_action()-->process_backlog()-->netif_receive_skb()-->deliver_skb()-->ip_rcv()-->ip_rcv_finish()-->dst_input()-->ip_local_deliver()-->ip_local_deliver_finish()-->tcp_v4_rcv()-->...
...-->tcp_v4_rcv()-->tcp_v4_do_rcv()-->tcp_v4_hnd_req()-->inet_csk_search_req()
-->tcp_check_req()-->tcp_v4_syn_recv_sock()-->tcp_create_openreq_child()
-->inet_csk_reqsk_queue_add()
-->inet_lookup_established()
-->tcp_rcv_state_process()
-->tcp_child_process()-->tcp_rcv_state_process()-->tcp_ack()
tcp_v4_hnd_req()查找或者创建客户端的sock结构
inet_csk_search_req()查找连接请求结构
tcp_check_req()创建代表客户端的sock结构, 将连接请求链入到这个sock结构的接收队列中
inet_lookup_established()在已经连接的sock队列中查找sock结构
tcp_rcv_state_process()根据服务器sock状态对数据包进行处理
tcp_v4_syn_recv_sock()复制服务器的sock结构用于客户端的连接操作
tcp_create_openreq_child()克隆服务器的sock结构, 创建客户端的sock
tcp_child_process()唤醒服务器进程处理连接请求.
tcp_rcv_state_process()根据客户端sock状态处理数据包
阅读(447) | 评论(0) | 转发(0) |