IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類(lèi)|軟件專(zhuān)題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置:首頁(yè)操作系統(tǒng)LINUX → Linux TCP/IP協(xié)議的使用和建立

Linux TCP/IP協(xié)議的使用和建立

時(shí)間:2015/6/28來(lái)源:IT貓撲網(wǎng)作者:網(wǎng)管聯(lián)盟我要評(píng)論(0)

    linux系統(tǒng)在很多企業(yè)和公司中都作為一個(gè)主要的操作系統(tǒng)。那么在這個(gè)系統(tǒng)上如何進(jìn)行TCP IP協(xié)議棧的搭建呢?下面我們就來(lái)詳細(xì)說(shuō)一下Linux TCP IP協(xié)議棧的組件過(guò)程。

    分析tcp_v4_init,這個(gè)函數(shù)在net/ipv4/tcp_ipv4.c里面:

函數(shù)在net/ipv4/tcp_ipv4.c里面
函數(shù)在net/ipv4/tcp_ipv4.c里面

  tcp_inode當(dāng)然就是一個(gè)inode節(jié)點(diǎn)了,而tcp_socket等于tcp_inode.u.socket_i,通過(guò)一個(gè)指針?biāo)麄冎赶蛲粋(gè)內(nèi)存。tcp_socket是用來(lái)通信使用的,可以叫Linux TCP IP協(xié)議棧當(dāng)中TCP的controlsocket或者是communication

  socket,TCP IP協(xié)議棧當(dāng)中TCP的通信沒(méi)有相應(yīng)的socket的時(shí)候這個(gè)socket就充當(dāng)了socket的角色。比如在一個(gè)關(guān)閉端口上收到SYN時(shí)發(fā)送RST,或者是在三次握手的時(shí)候發(fā)送SYN(還沒(méi)有accept產(chǎn)生新的socket)

  值得注意的是ops->create函數(shù)的調(diào)用,我們前面見(jiàn)過(guò)對(duì)于AF_INET來(lái)說(shuō)這個(gè)回調(diào)函數(shù)是net/ipv4/af_inet.c的inet_create函數(shù),這個(gè)函數(shù)是用來(lái)創(chuàng)建一個(gè)socket的時(shí)候用的,由于函數(shù)比較長(zhǎng),這里先略過(guò)分析,這第一次的分析只是一個(gè)大致流程的熟悉而已。

  由于有socket創(chuàng)建和通信,所以這段代碼是協(xié)議相關(guān)的,所以把這段代碼從原來(lái)的tcp.c里面提取了出來(lái)

  下面是tcp_init函數(shù),它在net/ipv4/tcp.c里面,大體上來(lái)說(shuō)就是創(chuàng)建了幾個(gè)hash表和bucket.這段代碼創(chuàng)建了下面幾個(gè)全局對(duì)象:

全局對(duì)象
全局對(duì)象

  其中ehash代表establishedhash,bhash代表bindhash,它們當(dāng)然分別是所有的滿(mǎn)足TCP_ESTABLISHED<=sk->state

  再下來(lái)就是icmp_init函數(shù)了,在net/ipv4/icmp.c里面,事實(shí)上,如果把tcp_v4_init里面的IPPROTO_TCP替換成IPPROTO_ICMP,基本都是一樣的。剩下的proc_net_register函數(shù)前面已經(jīng)講過(guò)了,這里就不說(shuō)了。

  到這里為止,Linux TCP IP協(xié)議棧當(dāng)中IP的開(kāi)始的工作我們基本應(yīng)該有了個(gè)了解,其中有幾個(gè)關(guān)鍵的函數(shù):

  dev_add_pack:注冊(cè)一個(gè)鏈路層以上的處理函數(shù),一般是用來(lái)使用新的網(wǎng)絡(luò)層協(xié)議的,不過(guò)如果注冊(cè)時(shí)重復(fù)也是可以的,這時(shí)候系統(tǒng)會(huì)設(shè)置一個(gè)copy位。如果是ETH_P_ALL則會(huì)接收所有的數(shù)據(jù)包。加入的元素保存在ptype_all鏈表和ptype_basehash鏈表中間。

  inet_add_protocol:注冊(cè)一個(gè)建立在IP層以上的協(xié)議,例如TCP和UDP等

  proc_net_register(還有類(lèi)似的proc_register):

  在/proc/net目錄下面創(chuàng)建一個(gè)子目錄項(xiàng)來(lái)使管理者能通過(guò)文件系統(tǒng)得到統(tǒng)計(jì)信息

  現(xiàn)在迷惑的地方還有很多,一個(gè)是結(jié)構(gòu)體sk_buff的每個(gè)成員的意義,一個(gè)是結(jié)構(gòu)體sock的意義,不過(guò)這兩個(gè)問(wèn)題應(yīng)該在以后看多了就知道了。

關(guān)鍵詞標(biāo)簽:Linux,TCP/IP協(xié)議

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程使用screen管理你的遠(yuǎn)程會(huì)話(huà)使用screen管理你的遠(yuǎn)程會(huì)話(huà)GNU/Linux安裝vmwareGNU/Linux安裝vmware如何登錄linux vps圖形界面 Linux遠(yuǎn)程桌面連如何登錄linux vps圖形界面 Linux遠(yuǎn)程桌面連

相關(guān)下載

人氣排行 Linux下獲取CPUID、硬盤(pán)序列號(hào)與MAC地址linux tc實(shí)現(xiàn)ip流量限制dmidecode命令查看內(nèi)存型號(hào)linux下解壓rar文件安裝紅帽子RedHat Linux9.0操作系統(tǒng)教程Ubuntu linux 關(guān)機(jī)、重啟、注銷(xiāo) 命令lcx.exe、nc.exe、sc.exe入侵中的使用方法查看linux服務(wù)器硬盤(pán)IO讀寫(xiě)負(fù)載