日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

TCP协议发送SKB时ip_summed成员的设置 http://blog.csdn.net/justlinux2010/article/details/8508455

發布時間:2023/12/8 linux 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP协议发送SKB时ip_summed成员的设置 http://blog.csdn.net/justlinux2010/article/details/8508455 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?

TCP協議發送SKB時ip_summed成員的設置

分類:?Linux內核?1457人閱讀?評論(0)?收藏?舉報 ?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代碼如下: [cpp]?view plaincopy
  • /*?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_summed?==?CHECKSUM_PARTIAL)?{??
  • ????????th->check?=?~tcp_v4_check(len,?inet->saddr,??
  • ?????????????????????inet->daddr,?0);??
  • ????????skb->csum_start?=?skb_transport_header(skb)?-?skb->head;??
  • ????????skb->csum_offset?=?offsetof(struct?tcphdr,?check);??
  • ????}?else?{??
  • ????????th->check?=?tcp_v4_check(len,?inet->saddr,?inet->daddr,??
  • ?????????????????????csum_partial(th,??
  • ?????????????????????????th->doff?<<?2,??
  • ?????????????????????????skb->csum));??
  • ????}??
  • }??
  • 在這個函數中可以看到第7行中已經開始使用skb->ip_summed來做比較,那也就是說skb->ip_summed肯定在之前已經初始化過,反反復復地仔細閱讀tcp_send_ack和tcp_transmit_skb函數都沒有發現初始化的地方,真的是很奇怪。因為之前我看過alloc_skb的實現,而且又看了一次,沒看到在哪個地方“明顯地”初始化了ip_summed成員。 只能全文搜索ip_summed的所有設置的地方,看了半天還是沒有找到在tcp_send_ack到tcp_transmit_skb之間的地方有初始化ip_summed的操作,最后還是把目光鎖定在alloc_skb函數上。看了幾遍之后突然看到一句不起眼的代碼: [cpp]?view plaincopy
  • /*?
  • ?????*?Only?clear?those?fields?we?need?to?clear,?not?those?that?we?will?
  • ?????*?actually?initialise?below.?Hence,?don't?put?any?more?fields?after?
  • ?????*?the?tail?pointer?in?struct??
  • ?????*/??
  • ????memset(skb,?0,?offsetof(struct?sk_buff,?tail));??
  • ????skb->truesize?=?size?+?sizeof(struct?sk_buff);??
  • ????atomic_set(&skb->users,?1);??
  • 看到第6行代碼,才恍然大悟,原來是在這個地方把skb從head成員到tail的所有成員都初始化為0,當前ip_summed也在這個范圍內,也就是說ip_summed的值為0,對應的就是CHECKSUM_NONE。哎,只怪自己粗心大意,看的不夠仔細!
    tcp_v4_send_check中第7行if?(skb->ip_summed?==?CHECKSUM_PARTIAL),判斷ip_summed是否等于CHECKSUM_PARTIAL,那在什么是否會將ip_summed置為CHECKSUM_PARTIAL呢?這個答案要在tcp_sendmsg中找,代碼片段如下: [cpp]?view plaincopy
  • /*?
  • ?????????????????*?Check?whether?we?can?use?HW?checksum.?
  • ?????????????????*/??
  • ????????????????if?(sk->sk_route_caps?&?NETIF_F_ALL_CSUM)??
  • ????????????????????skb->ip_summed?=?CHECKSUM_PARTIAL;??

  • 也就是說如果目的路由網絡設備的特性支持NETIF_F_ALL_CSUM時,才將ip_summed設置為CHECKSUM_PARTIAL。 當然這里的討論只限于TCP協議發送SKB包,到計算校驗和的過程中ip_summed成員的變化和值。

    版權聲明:本文為博主原創文章,未經博主允許不得轉載。

    總結

    以上是生活随笔為你收集整理的TCP协议发送SKB时ip_summed成员的设置 http://blog.csdn.net/justlinux2010/article/details/8508455的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 久久精品视频免费看 | 亚洲一区二区三区久久久成人动漫 | 欧美极品少妇×xxxbbb | 国产口爆吞精一区二区 | 婷婷丁香一区二区三区 | 91九色国产 | 一级成人黄色片 | 久久久久亚洲AV成人无码国产 | 欧美一区二区三区视频在线观看 | 中文字幕黄色av | 青青青av| 国产福利社 | 欧美亚洲自拍偷拍 | 亚洲制服丝袜诱惑 | 日本a v网站 | 女女综合网 | 国产成人av一区 | 亚洲精品国产福利 | 在线免费观看一级片 | а√天堂资源在线 | 不卡视频免费在线观看 | a中文字幕| 国产乱码一区 | 青青草一区二区三区 | 成人少妇影院yyyy | 婷婷导航 | wwwxx欧美| 免费在线性爱视频 | 国产在线激情视频 | 88av在线播放 | 中文人妻av久久人妻18 | 亚洲一区,二区 | 黄黄视频在线观看 | 99热首页| 国产亚洲一区二区在线 | 男人用嘴添女人下身免费视频 | 亚洲综合日韩在线 | 欧美综合色区 | 婷婷深爱五月 | 国产www在线| 成人国产精品久久久网站 | 抽插丰满内射高潮视频 | 超碰在线超碰 | 日韩中文字幕电影 | 日韩精品视频中文字幕 | 青青草国产精品视频 | 午夜激情视频在线播放 | 视屏一区| 亚洲高清毛片 | 成人公开免费视频 | 免费一区| 亚洲精品在线观看视频 | 国产女人18水真多18精品一级做 | 国产美女明星三级做爰 | 欧美 日韩 国产 激情 | 韩日一区二区三区 | 男人天堂影院 | 日本xxxx人 | 在线中文字幕网站 | 图片区视频区小说区 | 亚洲裸体网站 | 日韩黄| 在线一级| 91华人在线 | 四虎在线免费观看视频 | 欧美日韩色视频 | 国产精品一区二 | 超碰在线人人 | 欧美另类videosbestsex日本 | 成人一级影视 | 九九三级 | 亚洲日日夜夜 | 成人激情综合 | 三级福利片 | 成人午夜视频在线免费观看 | 97黄色片| 欧美日韩一区二区三区四区 | 暖暖免费观看日本版 | 国产激情一区二区三区在线观看 | 美女脱了内裤喂我喝尿视频 | 午夜久久久久久久久久影院 | 国产精品无码一区二区三区在线看 | 欧美久久久久 | 91久久爽久久爽爽久久片 | 精品一区二区三区四 | 欧美福利小视频 | 麻豆黄色片 | 欧美日韩电影一区二区三区 | 中文人妻一区二区三区 | 少妇一夜三次一区二区 | 天天射天天拍 | 久中文字幕 | 91看片网| 国产人妖一区 | 国产美女视频免费观看下载软件 | 国产又粗又黄又爽又硬的视频 | 欧美性生活一区二区三区 | 成年人黄色一级片 | 国产高清免费在线 |