TCP被动打开 之 第二次握手-发送SYN+ACK
假定客户端执行主动打开,发送syn包到服务器,服务器执行完该包的第一次握手操作后,调用af_ops->send_synack向客户端发送syn+ack包,该回调实际调用tcp_v4_send_synack函数; 1 int tcp_conn_request(struct request_sock_ops *rsk_ops, 2 const struct tcp_request_sock_ops *af_ops, 3 struct sock *sk, struct sk_buff *skb) 4 { 5 /* 第一次握手的服务器处理 */ 6 7 /* 发送syn+ack */ 8 af_ops->send_synack(sk, dst, &fl, req, &foc, 9 !want_cookie ? TCP_SYNACK_NORMAL : 10 TCP_SYNACK_COOKIE); 11 return 0; 12 } tcp_v4_send_synack完成路由查找,构造syn+ack包,构造ip包,然后发送出去; 1 /* 2 * Send a SYN-ACK after having received a SYN. 3 * This still operates on a request_sock only, not on a big 4 * socket. 5 */ 6