最近園子裡,關于.net門檻的文章風風火火,不過這類事情每過段時間就會出來一次,是以醬油都懶的打了。
當然個人也是有想法的,特别是這兩天碰巧和一個三四年經驗的java開發者呆在一起,對方說.net就是拉拉控件時,我還是很嚴厲的批評了對方,用自己比對方更具的豐富知識,重新開機對方對.net的看法。
不知道是誰在傳播這種.net純控件論,而且這麼傳播的這個“誰",一定是個新手,是以建議新手,就不要整天跑外面亂吹了,好好學知識去吧。
對于老手,在對新手進行知識傳播時,特别是剛教授新學拉控件的時候,一定要講下.net的精深,告訴他們學的是皮毛,沒事不要亂吹自己有多厲害,做人要謙虛。
現在我們看下知識點:
現在很多開發的書,它們隻講.net的原理的開發手法,是以很多人隻局域在.net的開發,光這樣,到達100級也無法成功轉職的。
試問其它語言(java) 和.net有啥不同?
不同的隻是同樣是初級,人家比你多懂點form标簽屬性的method屬性有get、post等,action的屬性可以指定資料傳輸到哪個頁面。
而.net的新手從控件入門的不懂,其實,新手隻要順帶再學一下html,了解下基礎http協定,基本可以完勝java,是以教人控件的導師們,教的時候,除了引導學生對比檢視前後生成的html和aspx之外,form屬性,也要特别的花精力說一下。
如果你再了解一下下面的知識,就可以秒殺同級java選手了,至少不會亂吹啥.net隻是xxx。
跳出.net的領域,我們回歸一下,浏覽器輸出域名之後,發生了什麼事?
搜搜網際網路,也許同樣的标題,你可以找出的隻是後半段的事,今天這裡,給大夥補充下前半段的事:
1:浏覽器那點事:
浏覽器是什麼?其實就是一個高效的代理,負責幫使用者請求特定的網址,然後解析并呈現。
幾個必須說明的是:
浏覽器監聽的端口不是80:
通常是1024以上,而且會開好幾個,(用心想想,這麼多浏覽器,一起開的時候,都從80端口來,那不是亂套了)
是以從本機發出的請求,不是80端口,比較多是10000号以上的端口。
學會查找一個程序對應開的端口:
打開任務管理器,檢視程序對應的pid(如果預設沒顯示,在任務管理器的選項裡找,然後打勾)
tp1
接着,打開cmd:輸入netstat -nao -p tcp,往下拉:
發現找不到了,是以就不截圖了,是以這裡就得反着說了,為啥找不到了?因為浏覽器程序的端口目前沒有活動,回收了。
是以,你反過來找,通過端口找到pid,再回去找相應的程序,就一定有對應的程序。
目前階段,秋式廣告殺手在廣告屏蔽上,取了一定的成效,以最高效的方式的,屏蔽了廣告,又不影響網絡。
不過隻能處理域名方式,有些廣告是ip形式出現的,軟體暫時不能處理,這着實讓我有點想法。
是以我最近就在想,想一些網絡請求的執行流程:
當我們在浏覽器輸入一個網址的時候?發生了什麼事?
如果你去搜網絡,會告訴你一些本機之外的事情,這裡我就講一下我知道的,本機之内的事情:
1:浏覽器拿到你的域名請求,要怎麼處理,是浏覽器的事了, 不過正規的都會按以下流程辦事:
把域名解析為ip:
如何解析呢?
1:查找浏覽器自身的dns緩存表。
2:查找系統hosts檔案。
3:查詢系統緩存(不知道這個有沒有,我隻是好像大概也許可能聽說過)
4:請求本機dns指向的伺服器。
是以大夥看到,秋式廣告殺手在開啟,調整完hosts檔案之後,需要重新開機下浏覽器的原因,就是因為浏覽器自身有dns緩存表,不重新開機,指向的還是舊的ip。
每種浏覽器,都有自身一種清空dns緩存表的機制:
像ie,可以設定系統資料庫來禁止,
像chrome,可以在浏覽器通過特殊指令調出視窗,再清除。
像firefox,可以在選項裡直接設定。
不同浏覽器對于清空或禁止dns緩存表都有自己的一套,是以,秋式廣告殺手,隻處理了像ie,通過系統資料庫就可以處理的事情。
另外其它浏覽器,無法直接用代碼操作,你總不能去教使用者怎麼設定吧?還不如告訴使用者重新開機浏覽器的操作,就顯的更為簡單了。
如果選擇步驟一上攔截:那麼就得弄成浏覽器插件了, 通過寫浏覽器插件,你可以掌握到使用者第一手的請求,也可以對使用者請求後的東西進行修改再傳回;
寫浏覽器插件,應該是最理想的做法,但是你得懂一點浏覽器插件語言的東西,學一學新的知識。美中不足的是,寫出來的軟體,隻适用這單獨的一種浏覽器。
如果要全面有效,還得不停的針對浏覽器寫插件,然後再告訴使用者,每種浏覽器都給我裝上一個,這樣就ok了。。。。
再不成,就自己寫個浏覽器了,浏覽器,不用内置的ie元件,自己能不能寫?
能寫,有個三五年經驗的人都能寫,别說自己不會(現有的網際網路,技術都是散落的,就怕你組合)
但寫出來考慮的因素特多:效率、性能、呈現、解析、速度,綜合起來,估計就得是千年老龜。。。
是以。。。自己玩玩,算是一種技術研究學習,倒也沒啥不可。。。
正如上面四個步驟,hosts是排在第二位的,不過hosts隻能一條一條的寫入,好在要攔截的并不多。
對于步驟三,基本是沒想啥法,作業系統緩存,目前還沒意圖。
對于通過修改本機dns指向自己的伺服器,這樣一來,的确可以做很多事,不過對于本人這點資金實力,往後期想,也負擔不起這種責任。
因為所有的請求都會到你伺服器,你要負責所有的解析,要是自己伺服器挂了,累大夥上不了網,不被罵死也被口水淹死。
說了這麼多,一來是要告訴大夥,軟體為什麼選擇了hosts方式。
從一講到四,都是說域名,那ip咋攔截?
這裡又得給大夥講點我所知道的網絡知識:
1:ip包 先查路由表(找到資料要發送到哪個ip(網關))。
2:再查arp表(要把ip換成mac位址)。
3:實體硬體把資料傳到網關(把資料送到mac位址上去)
4: 到了網關(開包,然後循環123找下一個發送點)
除了以上的,還有好多通過設定是可以阻止ip請求的,這些設定,具體是1234的前中後,哪一步攔截的?
留給大夥想。
如果我們要阻止某個ip的請求,我們可以怎麼做?
1:修改路由表,把指定的id,忽悠到一個不存在的網關去,這樣ip送不出去,自然就實作了屏蔽的功能。
2:修改arp表,把網關的位址,忽悠一個不存在的位址,這樣,恭喜,你斷網了。。哈哈。
3:攔截網卡的資料,資料總是要從一個網卡跳到另一個網卡的,通過攔截網卡的資料,這就回到了上面說的全局攔截了。
4:網關攔截(這通常就是路由器了,除了特定的路由器提供攔截設定外,哥們也掌控不到)
這裡就得說了,你要開了規則限制,等于全局攔截檢測了,網速難免會慢一些的,雖然路由器的算法很高效。
是以,下一次增加的功能,應該會從路由表出發,限制特定的ip,到鬼門關去,讓它回不來。
另外要說一下的,經常電信或其它寬帶會彈廣告,我們習慣性的會說,是dns攔截彈的廣告。。
我就在想啊。。這dns攔截,這dns攔截,最多也就指向新的ip,也不至于能修改資料吧,總不能dns伺服器,還負責幫你請求資料,再插入廣告吧?
是以哥是這樣想的:能攔截請求的,隻有電信或其它寬帶網關(它才是資料進進出出的視窗,隻有這裡攔截,傳回時再插入廣告)
是以dns攔截彈廣告,是不是錯誤的讓人以為,dns也能是實作廣告傳回?
如果dns真能修改請求後的資料,插入廣告,那軟體回歸dns攔截,不是更爽朗。。。。
是以是不是應該換個名,叫電信網關攔截彈廣告之類的。。。。
本人非網絡專業,以上對網絡的忽悠及見解,純屬個人認知,不代表權威,若有錯誤的,歡迎批評指正。
版權聲明:本文原創發表于部落格園,作者為路過秋天,原文連結:http://www.cnblogs.com/cyq1162/archive/2012/11/25/2787770.html