tcp_send_ack()函数是内核用来发送ACK的函数,该函数比较简单,就是先分配一个SKB包,然后简单的初始化(初始化操作中没有设置ip_summed)后,调用tcp_transmit_skb()来将SKB包传递到IP层。tcp_transmit_skb中先做一些操作后(仔细看过,到计算校验和之前,没有更改过ip_summed),会调用tcp_v4_send_check(语句是:icsk->icsk_af_ops->send_check(sk, skb->len, skb);)来计算校验和。
tcp_v4_send_check代码如下:
/* This routine computes an IPv4 TCP checksum. */
void tcp_v4_send_check(struct sock *sk, int len, struct sk_buff *skb)
{
struct inet_sock *inet = inet_sk(sk);
struct tcphdr *th = tcp_hdr(skb);
if (skb->ip_s