故事:唐三藏西行之網絡原理通信全過程
貞觀元年,玄奘結侶陳表,東土大唐的國王(指瀏覽器)讓唐三藏(指要傳輸數據報文)西行求取真經(指目標 IP 地址)。
這時,唐三藏只要自己的任務是取得真經,但是不知道取經具體的位置。于是唐三藏拿出了手寫薄的,手寫薄上很清晰的表明了地名對應的經緯度。
經過一番查閱后(指DNS查詢),原來取經的地方叫做天竺國(指域名),在北緯 xxx 東經 xxx 處(指IP地址)。
既然唐三藏決定西行了,不得不收拾一下行李準備出發。東土大唐的國王跟唐三藏交代了一封信(指應用層中的數據報文信息),如果取到了真經,千萬不要忘記把本王交給你的這封信親自傳遞給西方的那位長老。
但是為了怕這封信丟失,所以將這封信縫到了他的身上,保證唐三藏在路上不會被偷走(指采用了 HTTPS 協議進行傳輸)。
同時這封信的封面會有部分的說明,比如誰才能看這封信以及寫信人是誰(這里指 HTTP 頭部對報文內容的一些說明信息)。
隨后,將唐三藏派到了運輸部門(指傳輸層),讓其選擇西行的方式,運輸部部長問到,長老選擇是步行(指UDP),還是騎馬呢(指TCP)?
步行的話不能確保你能順利走到目的地(UDP 是無狀態連接協議),如果你半路失蹤了,我們會繼續重新派人去西行(指重新發送數據包)。
如果你選擇騎馬的話,會給你一匹上好千里馬,可以保證你能夠順利的達到目的地(TCP是面向連接的,穩定性好)。
同時,這些馬匹都是受過訓練的,到了那里會知道從哪個門(指端口號)進入院子,找到該寺廟的長老,不然走錯了寺廟或者大門,都無法準確的將這封信帶到。
唐三藏心想,去一趟西行不容易,自己走丟了還不說,別把國王交給我的信弄丟了。還是騎馬比較穩定,選擇了一匹靈性十足的馬,起名小白龍。
此時唐三藏打算開始從東土大唐騎著馬開始準備出行,但是遇到一個問題,手寫薄上雖然有著精確的經緯度,但是這個地址是是在本地還是在國外呢(指在本網絡還是其他局域網)?
最后詢問了一下東土大唐的國王,國王派信使去閱庫查了查玄奘給的經緯度標識信息(指IP地址頭部),嗯~ 這個地址是在國外的,并告知需要經過很多個國家(指路由/網關)才能到達。
這一路西行,要經過很多個國家和村落,寶象國,烏雞國,車遲國,西梁女國,祭賽國,朱紫國,獅駝國,比丘國,滅法國,鳳仙郡,玉華州,金平府等十幾個國家。
國家與國家之間的國王是相互聯系和商業上的交往的(指有路由表),當唐三藏來到一個國家不知往哪走了,此時國王會告訴他如何到達下一個國家,比鄰國之間國王是比較熟悉的。
這些國家的經緯度(指網關的 IP 地址)都是聯合國(指 DHCP 協議)同一發放的。國家又分為很多個小城鎮,每個小城鎮經緯度(指局域網中主機的 IP地址)這些都是由每個國家進行分配的。
如果國王想知道某個經緯度是哪個小城鎮,就會派出多個信使(指ARP協議)去各個小城鎮詢問。此時高老莊的豬八戒回應,我老豬家的經緯度和你詢問的這個經緯度(IP地址)是一樣的,但是我老豬家真正的地名叫做高老莊(指MAC 地址)。
唐三藏和三個徒弟來到了寶象國(碗子山波月洞黃袍怪),參見寶象國的國王之后。
唐僧問到:“貧僧自動土大唐而來到西天取經的,路過本地,可知下一步往哪走?”
國王回答:“先坐下來用齋住宿一晚再出發也不遲呀,正好我也幫你問問鄰國的其它國王(指查路由表),自然而然知道下一步往哪走了。”
于是國王派守城的門衛去給臨國的國王飛鴿傳書(指路由協議 OSPF/BGP),問一下去西天取經是否經過你們那里。
雖然各個國家都是由聯合國分配經緯度(IP 地址)的,但是在國家之間的交易中,通常使用的帶有唯一標識的國家標識(指 MAC 地址)來辨認對方是哪個國家的商人來進行交易的。
隨后師徒四人先后經過了烏雞國,車遲國,西梁女國,祭賽國,朱紫國,最后來到了天竺國,見到天竺國的國王,又是一句老臺詞 “貧僧是自東土大唐而來到......”。雖然師徒四人來到了最終的取經的國家(指目標地址的網關),但是不知道要到哪個具體地方(指目標服務器)求取真經。
于是天竺國的國王派出很多信使,問問到底哪個小城鎮可以取得真經。這時,有位寺廟主持回應道,可以來我這里取得真經,我的 MAC 地址是靈山雷音寺,最后師徒四人來到了靈山雷音寺,本以為很快可以取得真經,但是萬萬沒想到的是....
“你們這幾個人除了這個和尚,人不是人,鬼不像鬼的,是不是真的從東土大唐而來必須經過檢驗才能給你換的真經”,寺廟的老和尚說。
此時玄奘拿出路上記錄的艱難險阻的文卷以及穿在袈裟等東西都要驗證是否為真玄奘(指目標服務器開始在網絡五層協議的每一層拆分報文判斷信息的正確性)。
將袈裟交給了裁縫看,裁縫看后,這是真的。隨后把記錄的文卷交給文部查看,沒錯,也是對的,最后將化齋的金箔交給了商部檢驗,沒錯,是塊好金,最終才確定是他真的唐三藏,最后取得真經后,唐三藏找到了該寺廟的老和尚,將國王的信親手交給了他,老和尚表示非常的感激。
其實上述過程在網絡中可以解釋為以下過程。
報文信息到達目標服務器后,首先取出以太網協議 MAC 頭部,判斷是否和自己的 MAC 地址是否相同。
如果相同,然就交給上層的網絡層取出 IP 頭部,判斷 IP 地址和目標服務器是否正確,發現正確無誤。
最后,將 TCP 頭部取出,交給了傳輸層,嗯,沒錯,包括端口號什么都是對應正確無誤的 ,將報文的信息通過端口傳給相應的應用程序。
這一路上,師徒四人路上經歷的九九八十一難,唐三藏并沒有被妖怪吃掉,國王的信封也沒有丟失,才保證了整個通信中數據包的完整性。
萬一被妖怪吃了唐僧肉或者在女兒國出嫁、過河掉入河里,整個網絡通信過程數據包就此丟失了,只能重新派人去西天取經。
后記
其實玄奘還沒有完成最后的任務,因為東土大唐的老百姓還不知玄奘是否活著,所以唐三藏不得不走原來的路,再回到東土大唐,百姓們,我回來了!看我給你們帶什么回來了,是幾百本文卷哦!
本文為了通俗易懂,可能兼顧不到里邊很多的細節,主要為了讓剛剛接觸到網絡原理的人對網絡通信有一個大概的認識,后邊學習來就相對較輕松一些,后續會繼續寫一些具體網絡協議的文章。