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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

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

發布時間:2023/12/8 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 TCP协议发送SKB时ip_summed成员的设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
?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_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函數上。看了幾遍之后突然看到一句不起眼的代碼: /** 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中找,代碼片段如下: /** 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成员的设置的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 美国av导航| 国产午夜久久久 | av毛片一区 | 特级淫片裸体免费看 | 亚洲精品国产suv | 国产一国产二 | 久久久久成人精品无码 | 激情欧美网站 | 欧美一区二区三区不卡视频 | 亚洲天堂一级片 | 91亚洲精| 四虎影视8848hh | 人妖粗暴刺激videos呻吟 | 激情视频在线播放 | 一本色道久久88综合日韩精品 | 亚洲精品久久久狠狠狠爱 | 国产精品大屁股白浆一区 | 香港三日本8a三级少妇三级99 | 麻豆久久久9性大片 | av日韩国产| 日本精品国产 | 女人裸体免费网站 | 特黄一级视频 | 色爽交| 天天草天天射 | 少妇高潮一区二区三区69 | 国产精品日日做人人爱 | 一级全黄男女免费大片 | 天天操国产| 国产盗摄在线观看 | 成年人网站在线观看视频 | 黑人精品无码一区二区三区AV | 18+视频在线观看 | 久久久久久欧美 | 国产网站在线 | 国产黄色片网站 | 国产成人午夜精品无码区久久 | 日本偷拍一区 | 日韩av网站在线观看 | 色天堂影院 | 波多野结衣中文字幕在线播放 | 91视频免费在观看 | 久久久最新| 成年人爱爱视频 | 亚洲av无码潮喷在线观看 | 干爹你真棒插曲mv在线观看 | www日本高清 | 在线中文字幕播放 | 法国空姐在线观看免费 | 亚洲第一成网站 | 黄色一级片av | 日韩午夜一区 | 国产精品5| 欧美日韩国产精品一区二区三区 | 秋霞网一区二区 | 男人的天堂视频网站 | 中文字幕久久熟女蜜桃 | 一区二区三区免费高清视频 | 女人十八岁毛片 | 91香蕉视频在线看 | 一道本在线播放 | av片免费观看 | 五十路熟母 | 欧美日韩一区二区在线播放 | 中文在线亚洲 | 欧美黄色大片免费观看 | 最新日本中文字幕 | 影音先锋美女 | 成人 黄 色 免费播放 | 古装做爰无遮挡三级 | 深夜视频在线免费观看 | 日本理论中文字幕 | 久久影院一区二区 | 国产精品高潮呻吟av | 国精产品99永久一区一区 | 色综合久久久久综合体桃花网 | 中文字幕2018 | 久久成人黄色 | 麻豆精品自拍 | 亚洲免费黄色片 | 亚洲青涩在线 | 少妇太爽了太深了太硬了 | 国产一级免费 | 超碰免费成人 | 成人国产a | 久久只有这里有精品 | 中文在线www | 黄色大片儿. | wwwjizzzcom| 一级香蕉视频在线观看 | 欧美成人免费在线观看视频 | 波多野结衣在线免费观看视频 | 精品盗摄一区二区三区 | 九一天堂 | 桥本有菜aⅴ一区二区三区 在线午夜电影 | 精品无人区无码乱码毛片国产 | 人妻一区二区三区 | 男人在线天堂 | 国产精品日韩一区二区 |