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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

网络协议栈11:Connect函数分解之TCP层

發布時間:2025/4/16 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 网络协议栈11:Connect函数分解之TCP层 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Connect函數之分解1.

首先,connect函數從參數獲得遠端的IP,把這個地址賦值給對應的sock結構體的對應變量,并設置了sock結構體中的一些其他變量后,首先分配(skb_buff+用戶空間)大小內存,這兩部分是通過調用kmalloc(sizeof(struct skb_buff)+size,priority)來分配的,分配后兩個數據塊是連續的地址;分配后的內存如下

?

接下來,就是初始化這個剛剛分配好的skb_buff結構體的一些指針成員,之后,把整個數據空間的首地址返回給一個skb_buff指針,以后對skb結構體的操作,就通過這個指針來完成了。接著,把skb_buff跟sock關聯起來,即把skb_buff的成員sk設置為對應的sock,路由指向本地路由,就開始配置通信數據了。

?

第一步,把指針指向skb_buff空間的數據空間,即skb_buff的成員data所指向的地址(上圖 5)。

第二步(上圖 1),設置以太網頭部(本地MAC地址6字節+遠端MAC地址6字節+數據幀類型2字節),把本地MAC地址復制到數據空間的開始處,本地的MAC地址,是從本地路由中獲得,而目的MAC地址一般為NULL,如果為NULL,則需要設置skb_buff成員arp為0,表示遠端MAC地址(或者下一跳MAC地址)并不知道,需要在發送數據之前使用ARP來查找,數據幀可以選擇:

#define ETH_P_LOOP? 0x0060?????????? /* Ethernet Loopback packet? */

#define ETH_P_ECHO? 0x0200?????????? /* Ethernet Echo packet??????? */

#define ETH_P_PUP???? 0x0400?????????? /* Xerox PUP packet??????????? */

#define ETH_P_IP 0x0800?????????? /* Internet Protocol packet??? */

#define ETH_P_ARP???? 0x0806?????????? /* Address Resolution packet */

#define ETH_P_RARP????? 0x8035????????? /* Reverse Addr Res packet?? */

#define ETH_P_X25???? 0x0805?????????? /* CCITT X.25???????????????????? */

#define ETH_P_ATALK 0x809B????????? /* Appletalk DDP????????? */

#define ETH_P_IPX????? 0x8137?????????? /* IPX over DIX????????????????? */

#define ETH_P_802_3?? 0x0001?????????? /* Dummy type for 802.3 frames? */

#define ETH_P_AX25?? 0x0002?????????? /* Dummy protocol id for AX.25? */

#define ETH_P_ALL???? 0x0003?????????? /* Every packet (be careful!!!) */

#define ETH_P_802_2?? 0x0004?????????? /* 802.2 frames ?????????? */

#define ETH_P_SNAP? 0x0005?????????? /* Internal only???????????? */

?

第三步,指針跳過以太網首部14字節,指向IP首部(上圖 2),跟著就是數據空間初始化IP首部,IP首部的數據基本上在sock結構體中都有用,現在只是從sock結構體復制過來,初始化完后,在skb_buff中還有一個專門的指針指向數據空間的IP首部的地址的成員ip_hdr,此時也初始化一下。

?

第四步,指針跳過IP首部,指向TCP首部(上圖 3),跟著初始化數據空間的tcp首部,tcp首部一些是從sock結構體中復制的,一些是在這里第一次被賦值的,注意tcp首部不包含tcp選項部分,因此,需要把指針跳過tcp首部后,指向tcp的選項部分,進行初始化,才算把tcp初始化完成(把MSS賦值到選項部分)(上圖 4)。

?

到此,我們就把數據空間初始化完,我們在開始時分配數據空間大小為44+18,現在使用的是14(MAC)+20(TCP)+20(IP)+4(MSS),也就用完了,從這里,我們看到,connect函數發送的數據,都是本地的一些信息,包裝到MAC,TCP,IP等結構體中,目的是告知遠端本地的一些情況的信息,以后通信時,就按照現在發送的規格進行了,而真正的數據部分是沒有的。

?

最后,就是把數據發送的網絡層,進行排隊了。

轉載于:https://www.cnblogs.com/image-eye/archive/2012/01/11/2319798.html

總結

以上是生活随笔為你收集整理的网络协议栈11:Connect函数分解之TCP层的全部內容,希望文章能夠幫你解決所遇到的問題。

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

主站蜘蛛池模板: 日韩中文字幕视频在线观看 | 91国偷自产一区二区三区老熟女 | 一区二区三区在线免费观看视频 | 天天天av| 自拍欧美日韩 | 亚洲玖玖玖 | 久久伊人中文字幕 | 国产精品日韩一区二区 | 少妇伦子伦精品无吗 | 欧美啪啪一区 | 国产成人av影院 | 国产九九在线 | 名校风暴在线观看免费高清完整 | 久久99精品久久久久久水蜜桃 | 国产精品无码一区二区无人区多人 | 欧美精品一区二区三区四区 | 久久噜噜噜 | 日韩精品一区二区三区不卡在线 | 麻豆影视av | 欧美激情久久久 | 爱爱小视频免费看 | 成人综合区 | 精品国产18久久久久久二百 | 欧美视频一区在线 | 国产一级免费视频 | 激情欧美综合 | 天堂影院一区二区 | 韩日免费av | 亚洲欧美激情小说另类 | 国产精品伦理一区 | 影音先锋国产 | 亚洲人一区二区三区 | 日韩精品中文字幕在线 | 熟妇高潮精品一区二区三区 | 亚洲成av人片在www色猫咪 | a视频 | 日韩高清二区 | 女优色图 | 亚洲色图 一区二区 | 性自由色xxxx免费视频 | 噼里啪啦国语高清 | 亚洲精品国产精品乱码不99按摩 | free性护士vidos猛交 | 超碰成人久久 | 欧美日韩高清在线观看 | hd极品free性xxx护士 | 日本一区二区高清视频 | 亚洲国产日韩在线 | 精品人妻一区二区三区日产乱码 | 国产精品久久久久三级 | 天天狠天天操 | 麻豆网站免费看 | www.精品一区 | 午夜激情在线播放 | 国产高清在线观看视频 | 特大巨交吊性xxxx | 激情噜噜 | 久操av在线| 中文字幕高清 | 99热偷拍| 人人免费操 | 成人一二区 | 色中色在线视频 | 久久久久久久久久久久久久免费看 | 国产无套精品一区二区三区 | 国产精品白丝喷水在线观看 | 在线观看国产欧美 | 两根大肉大捧一进一出好爽视频 | 国产 欧美 日韩 在线 | 97久久久久久久 | 国产乱淫av公 | 午夜国产| www.色悠悠| 熟妇高潮喷沈阳45熟妇高潮喷 | 亚洲天堂av线| 神马影院一区二区三区 | 婷婷天堂网 | 少妇中出视频 | 精品国产不卡 | 91九色高潮 | 国产jizz18女人高潮 | 日日干日日操 | 激情青青草 | 日本bbwbbw| xxx69美国| 精品国产免费人成在线观看 | 欧美日韩一区二区三区免费 | 婷婷中文字幕 | 又紧又大又爽精品一区二区 | 国产激情在线 | 丰满大肥婆肥奶大屁股 | 精品国产www | 亚洲吧| 亚洲成人77777 | 亚洲天堂不卡 | 亚洲高清天堂 | 色婷婷国产| 国产做爰全免费的视频软件 | 日韩中文字幕网 |