zoukankan      html  css  js  c++  java
  • 关于 linux中TCP数据包(SKB)序列号的小笔记

    关于  SKB序列号的小笔记

    为了修改TCP协议,现在遇到了要改动tcp分组的序列号,但是只是在tcp_sendmsg函数中找到了SKB的end_seq  一直没有找到seq

           不清楚在那里初始化了,就跟踪了分配SKB的函数 sk_stream_alloc_skb()还是没有找到,最后在函数skb_entail中找到:


    static inline void skb_entail(struct sock *sk, struct sk_buff *skb)

    {
    struct tcp_sock *tp = tcp_sk(sk);
    struct tcp_skb_cb *tcb = TCP_SKB_CB(skb);


    skb->csum    = 0;
    tcb->seq     = tcb->end_seq = tp->write_seq;
    tcb->flags   = TCPHDR_ACK;
    tcb->sacked  = 0;
    skb_header_release(skb);
    tcp_add_write_queue_tail(sk, skb);
    sk->sk_wmem_queued += skb->truesize;
    sk_mem_charge(sk, skb->truesize);
    if (tp->nonagle & TCP_NAGLE_PUSH)
    tp->nonagle &= ~TCP_NAGLE_PUSH;

    }

  • 相关阅读:
    Eclipse的安装
    为Eclipse绑定Tomcat
    CHIL-SQL-快速参考
    CHIL-SQL-FORMAT() 函数
    CHIL-SQL-NOW() 函数
    CHIL-SQL-ROUND() 函数
    CHIL-SQL-LEN() 函数
    CHIL-SQL-MID() 函数
    【PAT A1060】Are They Equal
    vector
  • 原文地址:https://www.cnblogs.com/wangfengju/p/6172395.html
Copyright © 2011-2022 走看看