多多色-多人伦交性欧美在线观看-多人伦精品一区二区三区视频-多色视频-免费黄色视屏网站-免费黄色在线

國內最全IT社區平臺 聯系我們 | 收藏本站
阿里云優惠2
您當前位置:首頁 > 服務器 > linux與freebsd中tcp協議棧實現之比較

linux與freebsd中tcp協議棧實現之比較

來源:程序員人生   發布時間:2014-05-22 03:59:04 閱讀次數:3226次
建站學院(liehuo.net)文檔 作為兩個最有名的開源操作系統,Linux和FreeBSD是網管們的首選。Linux以開放性和眾多的驅動支持著稱,而FreeBSD有著優良的UNIX傳統,是公認的最穩定的操作系統。那么,在這兩個操作系統間,該如何選擇呢?幸好,我們有源碼,可以從協議棧的實現中尋找答案。

TCP/IP協議棧是網絡中廣泛使用的事實網絡通信標準。最初的TCP實現源自4.4BSD lite,在Linux興起后,也不可避免得支持它。但Linux的實現自成體系,僅與傳統實現保持接口上的兼容,下面我們將針對源碼級的實現,來分析一下兩者的異同。但是,對于Linux和FreeBSD這樣優秀的系統來說,已經無所謂何優何劣,有的僅僅是實現策略與側重點上的不同而已。

從進程的角度上講,可以調用send,sendto,sendmsg來發送一段數據,來可以使用文件系統中的write和writev來發送數據。同理,接收數據可以使用相應的recv,recvmsg,recvfrom,也可以使用文件系統提供的read,readv來接收一段數據。對于接收來說,這是異步進行的,也就是說,這是中斷驅動的,在以后的分析中,我們要注意這點。為簡單起見,同時不失一般性,我們將分析TCP協議的輸入輸出全過程,并以已對LINUX及FreeBSD的實現作一對比。

首先我們來看FreeBSD上的協議實現,這也是最正統的實現。下面是完整的輸入輸出路徑。

linux與freebsd中tcp協議棧實現之比較 - aaron - 終南余雪的博客

首先來看左邊的輸出,不管應用程序調用哪個輸出函數,最終都要調用sosend來完成輸出。Sosend將從用戶空間把數據復制進內核管理的m_buf數據結構,m_buf是FreeBSD的TCP實現使用的數據緩沖結構。在sosend完成數據復制后,將調用TCP的輸出函數,tcp_output要做的事情是分配一個新的m_buf來保存tcp頭,并計算相應的數據校驗碼,在下一步的ip_output中,同樣也要進行數據校驗工作,并進行數據路由選擇。最終ether_output將通過if_start來調用具體的硬件驅動程序來完成數據發送。在某個網卡的驅動中,ex_start將負責將數據從內核的m_buf緩沖復制進硬件自己的緩沖區,以完成數據發送工作。在這整個過程中,數據被復制兩次,并且也被遍歷兩次(計算校驗碼),這也是主要的影響效率的地方。

生活不易,碼農辛苦
如果您覺得本網站對您的學習有所幫助,可以手機掃描二維碼進行捐贈
程序員人生
------分隔線----------------------------
分享到:
------分隔線----------------------------
關閉
程序員人生
主站蜘蛛池模板: 黄色毛片视频网站 | 酒色成人网 | 中文字幕第一页在线播放 | 我想看一级毛片 | 亚洲欧美日韩天堂 | 国产精品久久久久无码av | 中文字幕在线永久在线视频2020 | 91亚洲精品国产第一区 | 男女性高清爱潮视频免费观看 | 亚洲国产综合精品中文第一区 | 免费的爱爱视频 | 武则天一级淫片免费放 | 欧美亚洲综合另类在线观看 | 免费网站看v片在线香蕉 | 中文亚洲欧美 | 91精品国产福利在线观看性色 | 国产丝袜一区二区三区在线观看 | 性欧美欧美 | 欧美做爰gif动态图一区二区 | 国产精品成人观看视频网站 | 亚洲乱码中文 | 亚洲最新黄色网址 | 综合欧美日韩一区二区三区 | 亚洲一区二区久久 | 一区二区三区四区在线 | 日韩欧美中文字幕一区二区三区 | 免费理论片在线观看 | 国产成人系列 | 综合久久久久久久 | 国产一区二区三区在线免费观看 | 免费国产片| 国产精品嫩草影院视频 | 麻豆va一区二区三区久久浪 | 综合久青草视频 | 国产日韩一区二区三区 | 永久免费看片 | 久久 精品 一区二区 | 羞羞免费观看网站 | 国产成人激情视频 | 全国男人的天堂网 | 国产亚洲一级精品久久 |