TCP协议发送SKB时ip_summed成员的设置

本文详细分析了TCP协议在发送ACK时,如何处理`ip_summed`成员。通过跟踪`tcp_send_ack`、`tcp_transmit_skb`和`tcp_v4_send_check`等函数,探讨了`ip_summed`的初始化和其在计算校验和过程中的作用。在`alloc_skb`函数中,`ip_summed`被初始化为0,代表`CHECKSUM_NONE`。当目的路由网络设备支持`NETIF_F_ALL_CSUM`时,`ip_summed`会被设置为`CHECKSUM_PARTIAL`。
摘要由CSDN通过智能技术生成
 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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值