乙個前輩寫的網路協議學習方法
網路這東西就是乙個靠實踐的東西,只靠看書是不行的。當年在學校還上過史美林教授
/張公忠教授所講的計算機網路體系結構課,用的是
tanabaum
寫的那本,考試還得了九十多分,可實際還是連
tcp和
udp有什麼區別都分不清,就是死記背,到畢業的時候基本上是忘光了,工作後等於重新來過。
上班了要在
linux
做一些底層的網路處理,不得不從頭來學
linux
和網路,程式設計部分
主要看richard stevens的那幾本書:
apue
、unp
、tcp/ip illustraion
等,學linux
則看得很雜,市面上各種
linux
入門書大都翻了一遍,俺是習慣在書店裡看書,愛看書而不愛買書,汗,,然後就是去各大
bbslinux
的操作。
學網路協議剛開始也是看書,但看了之後沒多少印象,那些東西靠死記真是沒法記的,後來找到乙個好辦法,就是自己寫個
sniffer
,自己寫個協議分析器,先學怎麼抓包,就看
tcpdump
的原始碼,然後看
libpcap
的原始碼,知道了什麼是網絡卡的混雜模式,很快就能抓到網絡卡上包的。
接下來就是對包進行分析,就看作
tcp/ip illustraion
,從以太頭、
等這麼一點一點、乙個字段乙個字段分析下來,很快就明白了所謂
tcp/ip
到底是怎麼回事。另外為了
學tcp
狀態轉換表
,根據所抓的包的
tcp標誌分析通訊雙方當前是什麼狀態,剛開始還只能從頭一方發
syn包開始分析,到後來是可從連線中間包如手就能逐漸判斷雙方的
tcp狀態,
基本上是徹底搞清楚了
tcp的狀態轉移是怎麼回事
,後來再理解防火牆的狀態檢測原理就很容易了。另外在分析過程中,為徹底掌握
ip碎片,還特地
ping
大包來抓,把抓上來的包自己重組,搞明白了
ip頭的碎片
offset
欄位是怎麼用的。
能抓包後進而又開始學
如何自己構造包
來「干擾」正常通訊了,開始是學怎麼發tcp
的rst
包來切斷乙個正常的
tcp連線,就的學會如何計算
ip頭校驗和,
tcp校驗和,知道了算
tcp校驗和時必須加
ip偽頭資料,然後是正確計算序列號和確認號,知道了原來
syn和
fin標誌也是算一位的,最重要的是理解了什麼是網路序什麼是主機序,現在基本把
ntohs(l),htons(l)
處理都成了一種程式設計的本能意識了。學會用
rst切斷
tcp後,進一步實現了直接發乙個頁面資訊告訴客戶端訪問了非法資訊,也就是以後實現
url過濾時客戶端顯示的拒絕畫面。後來也學發
arp資訊胡亂通告
mac位址,也就是以前寫的那篇
arp攻擊的由來。
後來俺寫的這個
協議分析器
逐步完善,能解析的就解析,不能解析的就列印出
16進製制數,可列印字元也列印出來,對
這些文字協議幾乎就一下看明白了,對於非文字協議,如
dns,也根據協議解析了出來,而且解析
dns時不得不用了我一向不愛用的遞迴方法來程式設計。隨著網路應用的增加,在用到前都先作協議解析,除了各種
tcp、
udp的協議,還增加了
bpdu
、pppoe
、ospf
、esp、ah
、ike
等的解析處理,現在俺的協議分析器也可以分析上百種協議,平時抓包就只用俺這個,
tcpdump
基本不再用了,畢竟自己寫的自己更清楚,如果有不能解析的再現加進去。現在學新協議時,往往先抓包看看協議的基本資料格式,再看
rfc了解細節。
學協議剛開始是看書,到後來要更深入了解或追詢最新發展情況就只能看
rfc了,畢竟網路的東西變化太快,書的東西只能算入門,說不定很快就出新的了,到現在也看了數百篇的
rfc了。
通過程式設計分析來學協議,慢是慢了點,花了乙個多月的時間,但感覺學得紮實,正所謂磨刀不誤砍柴功,而且一通百通。到現在雖然已經好幾年了,
ip頭,
tcp頭有哪些字段還是一下就可以說得出來,對理解各種網路攻擊原理從而進行防範更是有幫助,我覺得對我來說這種方法是很有效,如果哪位覺得有更有效的學習方法,可以共同交流一下。
深度學習網路學習筆記(一)
定義 全連線層 fc 在整個卷積神經網路中起到 分類器 的作用。如果說卷積層 池化層和啟用函式層等操作是將原始資料對映到隱層特徵空間的話,全連線層則起到將學到的 分布式特徵表示 對映到樣本標記空間的作用。在實際使用中,全連線層可由卷積操作實現 對前層是全連線的全連線層可以轉化為卷積核為11的卷積 而...
如何學習網路安全
從98年開始接觸網路安全技術到現在已經10多年了,那時候的個人電腦的系統基本都是win98,伺服器基本是winnt,上網都是通過貓撥號上網,記得上網一小時4.2元。攻擊方法基本就是遠端控制,遠端藍屏,暴力破解密碼,拒絕服務攻擊等,還沒有出現sql注入和社工,安全書籍中的文章大多數都是對一些軟體的使用...
Linux學習 網路
1.ip基礎知識 1.1 ipv4 2進製32位 10進製 172.25.0.10 255.255.255.0 172.25.0.10 ip位址 255.255.255.0 子網掩碼 子網掩碼255位對應的ip位為網路位 子網掩碼0對應的ip位為主機位 2.配置ip 2.1 圖形化方式 nm con...