Linux的ip_conntrack半景

ip_conntrack內建於Linux協議棧的Netfilter架構,其實現比較複雜,然而其邏輯卻很簡單。ip_conntrack追蹤每一個流,一個流由五元組來定義,五元組這個網路基本術語就不解釋了。因此ip_conntrack必然能對“哪裡是一個流的開始”做出判斷,雖然這種判斷不總是精確的,詳見《linux之ip_conntrack容易混淆的問題點滴》。  ip_conntrack會為每一個到來的包綁定一個流,如果找不到遵照五元組可以綁定的流,則會認為這是個流頭,那麼就會根據該包所攜帶的五元

使用linux的幾個需要注意的問題(後續增補)

一.vim編輯檔案時可以實現單詞自動補全嗎?vim自動補全的功能請嘗試ctrl-n二.vim編輯器可以開啟多個視窗嗎?vim在終端中執行,並且在執行時獨佔整個終端,但是在vim內部,你卻可以使用:new name/:vnew name/:split name等命令來將vim“視窗”進行分割,實現windows文檔-視圖結構的多個平鋪視窗的效果,若干個vim分割視窗將永遠平分一個shell,“視窗”之間不會留下任何間隙,你可以通過ctrl-w w來實現視窗焦點切換,用:res

linux分類驅動對字元裝置架構壓力的卸載

2.6核心引入了input字系統,usb子系統,misc子系統等一系列字元裝置子系統,在熟練掌握這些子系統之後,我們來看一下linux核心設計這麼些子系統的意義何在?可以串連的裝置越來越多,這些裝置的種類也越來越雜,傳統的字元裝置/塊裝置的分類已經不能滿足要求,以字元裝置為例,現在的linux字元裝置體系已經不能代表所有支援的字元裝置的最小交集,況且,在隨著裝置的增多,越來越長的線性裝置鏈表給管理帶來了諸多不便,因此“需要增加一個層”來給字元裝置體系卸載一些壓力了,於是就將所有的“一類”裝置總結

Linux中檔案執行中的鎖定的怪現象

本來今天不準備開電腦了,太困了,想睡覺,然而一哥們兒簡訊都發過來了,要問個問題,於是還是開啟了電腦,沒想到是一個很有代表性的問題,順便也牽扯了前些天我的工作中的一個bug,值得記錄下來。問題如下:linux下,一個可執行檔exe1正在執行中,rm –f可以將其刪除,mv可以將其移除,mv $other exe1也可以將其替換,但是cp $other

從Linux協議棧代碼和RFC看西廂計劃原理

終於搞定了西廂計劃的方案,由於一直無法下載那個核心模組,於是也就只能自己寫了,在理解了西廂計劃的原理之後,寫這個模組並不很費事(其實為了簡單不是寫模組,而是直接修改核心協議棧代碼),下面先說一下原理,然後再說一下關於核心修改的建議。序.西廂計劃所謂西廂計劃是一個借用曆史小說而命名的欺騙GfW的方案,有很多的實現。說實話我真的不知道《西廂記》中的那傢伙翻牆到底有何與眾不同,有時間一定看一下。而西廂計劃無非就是利用了防火牆的一些弱點而瞞天過海的一個方案。本質上作者是利用對TCP協議規範以及防火牆本身

linux終端閑談

為何向ssh之類的終端裝置檔案必須成對出現,而諸如tty或者串口或者slip之類的終端只有一個裝置檔案即可,這不得不從終端的本質說起,其實像串口或者s符合lip規程之類終端和tty/console終端本質是一樣的,只不過tty的裝置線路是用pci,agp之類的匯流排串連,其終端裝置就是鍵盤,顯示器/印表機之類的,而串口串連的終端是通過諸如RS232之類的介面串連的,這類終端只是延長了鍵盤,顯示器而已,後來的X

linux關於tcp協議ack的實現–總結和公平性問題

tcp是一個可靠串連的協議,但不要指望它是什麼理論的實現,它是實踐的東西,任何實踐的東西背後都不是一個理論,而是一大堆理論,tcp正是單一停等,GBN(回退N)以及SR(選擇重傳)的結合體,單一停等是最原始的理論,但是頻寬利用率太低了,後面的GBN實現了流水線式的資料發送和確認,可靠串連的根本就在於確認-ack,而GBN的ack完全是基於接收方的,接收方很簡單的只發送最後一個按序到達的報文的序號最為確認號,而發送端收到以後將重傳該確認號之後的所有報文,這樣實現很簡單,要考慮的事情也不多,但是可能

linux之ip_conntrack容易混淆的問題點滴

文章目錄 例子1:例子2:例子3:例子4:例子1的解釋:例子2的解釋:例子3的解釋:例子4的解釋: 《再次深入到ip_conntrack的conntrack

linux網路設定和防火牆配置一例

網路拓撲如下:hostA/B/C處於同一個區域網路:hostA:eth0:192.168.0.2----------------------hostB:eth0:192.168.0.1eth1:10.0.0.1----------------------hostC:eth0:192.168.0.3eth1:10.0.0.3----------------------hostA-route10.0.0.0/24(-net)

linux關於tcp協議ack以及亂序報文暫存的實現–立即ack/延遲ack/捎帶ack

tcp需要ack,可是為了效率,並不是每發送一個資料都要等待ack,而是儘可能利用視窗機制,積累發送ack的,當然在某些特殊情況下還是需要馬上發送ack的,比如接收到亂序的資料,這種情況下,雖然接收端可以將亂序的資料包暫存,但是接收方必鬚髮送一個ack號為按序的期望的序號的ack給發送端,另外就是接收視窗需要調整,此時就要立刻發送ack,否則則可以延遲發送ack,看一下linux的這方面的代碼:static void __tcp_ack_snd_check(struct sock *sk,

linux核心netfilter之ip_conntrack模組的作用舉例–ftp為例

很多協議的控制資訊在應用程式層資料中被包含,這些資訊直接影響到了鏈路的建立,比如ftp協議就是這樣,ftp分為port模式和pass模式,port模式中,起初client串連server的21連接埠,然後當需要傳輸data的時候,client發送一個控制包給server,包中包含client端開啟的連接埠和自己的ip地址,server收到之後用自己的20連接埠去串連client控制包中建議的ip和連接埠,在這種情況下,如果client在nat後面使用私網地址,那麼server將無法串連clien

Linux Stateless無狀態NAT-使用TC來配置

如果想在Linux上配置NAT,那麼大家眾所一言的就是使用iptables的NAT表來配置,iptables提供了靈活豐富的配置來配置SNAT和DNAT,然而我們知道iptables的NAT依賴了ip_conntrack,也就是說,凡是一個命中了NAT表規則的流就會有一條串連追蹤產生,由於ip_conntrack追蹤了所有的資料包,因此當有大量串連經過了本地裝置時,ip_conntrack空間將被撐滿,這個在接入區特別容易重現,在骨幹網反而不容易重現,然而骨幹網卻又幾乎不可能使用Linux。  

Linux平台使用網路加速卡提高轉寄效能

一直以來,Linux給人的印象都是伺服器層級的,雖然有人拿它當案頭,也有手機使用它,但這都是少數,幾乎從來都沒有人拿它放在骨幹網上當路由器,哪怕是接入層都少到幾乎沒有人使用Linux。Netfilter機制可以改變這個事實,因為Netfilter機制太強悍了,它幾乎可以讓你完全重新定製協議棧的行為。       

linux的進程樹

linux的樹形進程結構為管理進程提供了很大的方便,不管是核心對進程的管理還是使用者對進程的管理都受惠不少,對於審計也是很有用的,不管啟動並執行什麼進程,都會有一條不會斷的線索將之綁在系統內部。整個系統的情況就是首先核心啟動,接著核心線程0派生出init,然後init派生出萬物,有點像上帝造人...不過如果你是撒旦,那麼你可以將進程脫離出這個線索,只和調度的相關鏈表或者樹聯絡,這樣你的進程就成了完全的不受控體,同時也成了真正的孤兒,再沒有人收養的孤兒。     backtrace或者gdb

不要盲目增加ip_conntrack_max-理解Linux核心記憶體

1.由ip_conntrack引出的Linux記憶體映射有很多文章在討論關於ip_conntrack表爆滿之後丟棄資料包的問題,對此研究深入一些的知道Linux有個核心參數ip_conntrack_max,在擁有較大記憶體的機器中預設65536,於是瘋狂的增加這個參數,比如設定成10000…00,只要不報設定方面的錯誤,就一定要設定成最大值。這種方式實在是將軟體看成大神了,殊不知軟體的技術含量還不如鍋爐呢!       如果考慮的再全面一些,比如經驗豐富的程式員或者網管,可能會想到記憶體的問題,

linux中的優先搜尋樹的實現–prio_tree

prio_tree在linux核心中被應用於反向記憶體映射,prio-tree是一棵尋找樹,它尋找的是一個區間,為何將之組織成tree是一個數學問題,簡單理解就是根節點包含了所有的區間,父節點代表的區間包含了子節點代表的區間,這裡的包含不是現實意義的包含,而是heap/radix意義上的包含,只要滿足heap的性質以及radix的性質即可,不過大多數情況下包含的意義就是現實意義的包含,Documentation中的prio_tree.txt中的圖示可以看一下,[4,3,7]是[5,2,7]和[6

鏈路層的網卡彙總-基於Linux bonding

linux總是可以用一種最簡單的方式實現一個很複雜的功能,特別是網路方面的,哪怕這個功能被認為只是在高端裝置上才有,linux也可以很容易的實現,以前的文章已經說了不少次了,比如vlan功能,比如進階路由和防火牆功能等等,本文著重說一下linux的bonding,也就是連接埠彙總的功能模組。不可否認,在網路裝置這個層面上上,linux搞出了兩個很成功的虛擬設備的概念,一個是tap網卡,另一個就是本文所講述的bonding,關於tap網卡的內容,請參閱之前關於OpenVPN的文章。    

RedHat.Enterprise.Linux.5 VMtools 安裝

 RedHat.Enterprise.Linux.5 VMtools 安裝  按照Readme中的安裝方法,一步步按照預設的設定下來,出現如下錯誤:What is the location of the directory of C header files that match your running kernel? [/usr/src/linux/include]The directory of kernel headers (version 2.6.18-8.el5xen) does

linux下的trap命令和SIGHUP訊號量詳解

使用者是銀行的前置機,.bash_profile中有一行trap 1 2 3,問我對系統有何影響。所以查了一些資料轉自http://www.linuxfly.org/post/404/    

如何在linux環境下輕鬆搭建CVS伺服器

CVS是一種廣泛應用的、開源的、透明於網路的版本控制系統。使用者使用CVS時,首先要架設一台CVS伺服器,在CVS伺服器上匯入項目執行個體、設定CVS項目存取控制等。而客戶則通過用戶端來訪問CVS伺服器,客戶可以取得項目最新代碼副本,提交自己修改的代碼等,而客戶可以從Internet、LAN甚至本機來訪問CVS伺服器。下面,我就帶領大家在Linux環境下架設一台CVS伺服器,希望能夠對想要學習CVS伺服器架設的朋友帶來一些協助。1、下載源碼通過搜尋引擎找到CVS的原始碼包,也可以從CVS的官方網

總頁數: 3662 1 .... 602 603 604 605 606 .... 3662 Go to: 前往

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.