說來慚愧,打算寫關於網路方面的知識很久了,結果到今天才正式動筆,好了,廢話不多說,寫一些自己能看懂的入門知識,對自己來說是一種知識的總結,也希望能幫到一些想瞭解網路知識的童鞋。 萬事開頭難,然後中間難,最後結尾難。。。哈哈,不扯這種心靈砒霜了,講講我這個小菜鳥是如何從對網路一竅不通到現在可以完整的說 ...
說來慚愧,打算寫關於網路方面的知識很久了,結果到今天才正式動筆,好了,廢話不多說,寫一些自己能看懂的入門知識,對自己來說是一種知識的總結,也希望能幫到一些想瞭解網路知識的童鞋。
萬事開頭難,然後中間難,最後結尾難。。。哈哈,不扯這種心靈砒霜了,講講我這個小菜鳥是如何從對網路一竅不通到現在可以完整的說出一個報文是如何轉發的初級水平,先看一下TCP/IP的介紹:
Transmission Control Protocol/Internet Protocol的簡寫,中譯名為傳輸控制協議/網際網路互聯協議,又名網路通訊協議,是Internet最基本的協議、Internet國際互聯網路的基礎,由網路層的IP協議和傳輸層的TCP協議組成。TCP/IP 定義了電子設備如何連入網際網路,以及數據如何在它們之間傳輸的標準。協議採用了4層的層級結構,每一層都呼叫它的下一層所提供的協議來完成自己的需求。通俗而言:TCP負責發現傳輸的問題,一有問題就發出信號,要求重新傳輸,直到所有數據安全正確地傳輸到目的地。而IP是給網際網路的每一臺聯網設備規定一個地址。
如此深奧的解釋,相信沒幾個人能看的懂。。。,其實你可以簡單理解為,互聯網傳輸是分層的,就像蓋房子一樣,一層累一層。
舉個簡單的例子,就拿我們平時最常見的上網,打開瀏覽器,輸入www.baidu.com,瀏覽器上就會顯示百度的界面,可能一秒都不到的時間,事實上我們的報文已經走了個來回。這麼說還是有點抽象,但是要給大家講的一點就是,在互聯網的世界,一切的數據都是以報文的形式傳送的,而這份報文,大致是長這樣的:
你可能過會說,這是什麼玩意,但事實上報文就是這麼的不講道理,如果你面對的是這樣一個個十六進位的字元,恐怕會瘋的,因為你根本無從下手,所以我們需要分層次清晰得劃分一下報文的結構,劃分的層次如下:
那為什麼要叫TCP/IP協議棧內,這些協議和棧有什麼關係呢,大家應該都知道棧是一種先進後出的數據結構,那這和TCP/IP協議有什麼關係呢?我們就拿一個HTTP報文來說吧,HTTP報文屬於應用層協議的報文,我們輸入網址,首先會調用到DNS協議(功能變數名稱協議,後面會講到),然後把我們輸入的網址轉換為IP地址,這個IP地址大致就相當於現實生活中每個人的身份證一樣,是每個網頁唯一的標識,關於IP地址,後續我會詳細介紹,IP協議屬於網路層的協議。
我們先將HTTP報文壓入一個棧中(就好像是在分裝報文),然後是IP,不對,我們貌似漏了一個傳輸層啊,別急別介,HTTP報文在傳輸層用的是TCP協議,好,我們把TCP壓入棧中,再講IP層也壓入棧中,至於鏈路層的話,就用最常見的乙太網就OK了,好了,現在我們的棧裡面從頭至尾依次是以太幀頭-IP協議-TCP協議-HTTP協議,然後我們先忽略最底層的物理層,假設這個封裝好的棧一樣的報文漂洋過海,來到了它的目的地(至於怎麼過來的,我們後續也會講到),當對端收到這個報文以後,也就是我們封裝好的這個棧一樣的東西以後該怎麼辦呢?
會不會也是先拿HTTP呢?因為這個報文是我們構造的一個棧,所以說它的順序肯定也是棧,因此拿取的順序就是以太幀頭-IP協議-TCP協議-HTTP協議,發現沒,最先被封裝入的HTTP報文是最後才被拿出來的,這中間的細節如果能全部掌握,那基本商就算是入門了,關於這部分東西,我會在後面詳細介紹,現在有這個概念就可以了。
回顧一下,寫的有點亂,總結起來就是互聯網是分層的,協議是如何層層遞進封裝和解分裝的,記得大學里電腦網路是自頂向下,也就是先從應用層講起,我覺得這樣不太好,所以我會從底層講起,也就是自底向上的學習順序,一步步解開網路的神秘面紗!