第十二章 建立连接的过程
分析服务器, 如何为数据块建立数据包, 并从底层向上层传递到服务程序的过程.
12.1 驱动程序接收并建立数据包
12.3 接收或转发IP数据包
......上一章
12.4 TCP数据包的处理
struct net_protocol {
......
};
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()-->pskb_may_pull()
-->__inet_lookup()-->__inet_lookup_established()
-->__inet_lookup_listener()
-->tcp_prequeue()
ip_local_deliver_finish()将数据包(直接收到的或重组后的)交给传输层处理.
tcp_v4_rcv()传输层tcp函数表的处理函数
pskb_may_pull()检查调整数据饭T险CP头部
__inet_lookup()查找用来接收数据包的sock
__inet_lookup_established()查找已经处于连接状态的sock结构
__inet_lookup_listener()查找处于监听状态的sock结构
tcp_prequeue()将数据包链入tcp_sock结构的预处理队列
12.5 3次握手过程
阅读(646) | 评论(0) | 转发(0) |