Web開發,瀏覽器通訊原理及流程那點事,你應該聽說下


題外話:

最近園子里,關於.net門檻的文章風風火火,不過這類事情每過段時間就會出來一次,所以醬油都懶的打了。

當然個人也是有想法的,特別是這兩天碰巧和一個三四年經驗的java開發者呆在一起,對方說.net就是拉拉控件時,我還是很嚴厲的批評了對方,用自己比對方更年長的知識,重新引導對方對.net的看法。

不知道是誰在傳播這種.net只是XX論,傳播的這個“誰 ", 一定是個新手:所以建議新手,就不要整天跑外面亂吹了,好好學知識去吧。

對於老手,在對新手進行知識傳播時,特別是剛教授新學拉控件的時候: 一定要講下.net的精深,告訴他們學的是皮毛,沒事不要亂吹自己有多厲害,做人要謙虛。

當下的情況:

現在很多開發的書,它們只講.net的原理的開發手法,所以很多人只局域在.net的書上講的開發,一開始經驗值會刷的很快,但很快就刷不上去了,更別說達100級轉職了。

同樣的新手,試問其它語言(java) 和.net有啥不同?

同樣是初級,人家比你多懂點form標簽屬性的method屬性有Get、Post等;action的屬性可以指定數據傳輸到哪個頁面,而.net的新手從控件入門的不懂。

其實,新手只要順帶多了下解html,簡單了解下基礎Http協議,基本也和同級java夠吹了(最好還是謙虛少吹)。

所以教人控件的導師們,教的時候,除了引導學生對比查看前后生成的html和aspx之外,form屬性,和網絡通訊基礎,也要特別的花精力說一下。

如果你再了解一下下面的知識,就可以秒殺同級java選手了,至少不會亂吹啥.net只是xxx。

 

現在回頭來看看瀏覽器通訊那點事:

 

當你在瀏覽器輸入:http://www.cyqdata.com之后發生什么事?發生的事有很多,有人說了1小部分,今天我也說一小部分,剩下的YI大部分,有待探索。。。

 

1:首先瀏覽器不是吃素的,它給你一條輸入框,用於輸入網址:

剩下的事就給它了,接下來瀏覽器要干什么,那是它的事,比如它可以不給你處理,還可以給你彈你妹的,不過通常都會走標准化流程,畢竟還是給大伙使用的。

知識點:Winform基礎:你也可以弄個TextBox,讓用戶輸入網址。 

 

2:瀏覽器拿你的輸入后:

首先它要看一下是不是網址,如果不是,給你顯示你哥的,或導航到自己搜索去。

如果它是域名網址,得把它變成IP,怎么換成IP?

知識點:注冊表里,有IE瀏覽器默認錯誤請求時的定位地址,自己喜歡可以去改下。

 

3:域名換IP的內部流程:

1:查找瀏覽器自身的DNS緩存表:(緩存是通用邏輯,有就直接拿出來,沒有就找系統要,要回來再緩存)。

知識點:涉及注冊表操作(禁用IE瀏覽器緩存或開啟)、其它瀏覽器的API(下面圖為 chrome的dns緩存清除設置)

 

2:查找系統緩存(如果沒有就找Hosts看看有沒有)

知識點:操作系統(算了,忽略) 

3:查找系統Hosts文件(如果沒有就問問DNS)

知識點:Hosts的基礎操作,涉及IO、系統權限、文件屬性等操作。 

4:請求本機DNS指向的服務器要(一般都會有,如果沒有,基本這次請求就掛菜了)。

知識點:本機DNS配置(默認路由器自動分配),網絡基本知識(IP、子網掩碼、網關、DNS)。


3:拿到IP,要發送http請求了:

這個http請求數據怎么出去?

首先要開劈端口監聽,沒端口肯定出不去,到時候還要等待回來的數據也是從這端口進來。

這端口也不會是80,因為80系統自己占了,所以隨便來個10000號以上的。

知識點:Socket通訊、TCP協議。 

 

4:有了端口,數據也發了,這數據都怎么流通的?

1:先查路由表(找到數據要發送到哪個IP,通常是網關192.168.1.1)。

知識點:winapi,路由表操作、路由表執行原理,規則、靜態和動靜區別。 

 

2:再查arp表(因為數據是要走網卡的,要把IP換成MAC地址)。

知識點:winapi,操作arp,如何發送api,讓你局域網同事朋友同學斷網。 


3:物理硬件把數據傳到網關(這中間就涉及到很多TCP協議和驅動和物理鏈接之類的知識了)

知識點:底層驅動開發,這個領域不在行。 

4:到了網關。。。再根據路由表,找下一級網關傳輸數據。

知識點:路由器的路由表維護。。。 

 

 

好,之后瀏覽器接收回來做了些什么事的小部分故事,有人講了,就不重復了。

 

總結:

上面的原理,每一步都涉及到很多知識,特別是要用代碼去操控或攔截它們的時候,你就知道,原來這么給力,原來還有我不會的。。。。

 

題內話:

每當我寫完一個軟件,剛發布的時候,總有一群源碼蟲跑來要源碼,我的原則都是,先分享思想,原理,最后才是源碼,學習思想很重要。

沒事別看源碼,除非你要做的事和源碼相關的。

需要開發相關的功能時:不要先看,先F5運行,再局部調試去看碼源。

其實你好好看看我的博客,提供的源碼不計其數,每一個作品,幾乎都會搭配源碼,認真學習過的,消費為已用的,估計都月收入過萬了!!!

正如我寫秋式廣告殺手,如果不懂這些原理,不懂的分析在合適的地方的攔截處理,怎么能折騰的出來呢? 


上面說的,如果你覺的有點收獲。。。 。請點點點點。。。。右邊那個。。推薦。。。。

原文地址:http://www.cyqdata.com/cyq1162/article-detail-54283 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM